基于S3C2410处理器对Windows CE 5.0操作系统实现BSP移植

发布者:Ziran520最新更新时间:2023-02-08 来源: zhihu关键字:S3C2410  处理器  Windows  操作系统  BSP移植 手机看文章 扫描二维码
随时随地手机看文章

1、引言

在当今后PC时代,嵌入式系统应用得越来越广泛,嵌入式产品充斥着许多领域,日常生活的手机,MP4,PDA等都属于典型的嵌入式系统。在嵌入式系统中,微处理器和操作系统是进行应用开发的基础。在微处理器方面,S3C2410是Samsung公司推出的一款基于ARM920T内核的16/32位 RISC嵌入式CPU,主要面向手持设备以及高性价比、低功耗的应用。在操作系统方面,Windows CE 5.0是由微软提供的一款嵌入式操作系统,在Windows CE 4.2基础上,它又加入了一些新特性以满足市场需求。板级支持包 (Board Support Package,BSP)是操作系统的一个组成部分,提供对硬件的支持。BSP的开发在整个产品开发时间上占了很大比例,快速的移植满足产品需求的BSP 在竞争激烈的市场环境里显得很重要。目前已有许多关于S3C2410、Windows CE以及BSP相关的研究报道,文献[1]研究基于s3c2410的GPS通信技术及实现,文献[2]中详尽分析Windows CE的结构,文献[3]中归纳了Windows CE 4.2专用操作系统的定制和裁剪方法,文献[4]则探讨基于DSP嵌入式多媒体应用系统板级支持包的开发。目前关于Windows CE的应用主要采用Windows CE 4.2及以下版本,本文研究基于S3C2410的Windows CE 5.0 BSP移植技术。


2、 Windows CE 5.0及BSP结构分析

移植基于S3C2410的Windows CE 5.0 BSP,需要分析Windows CE 5.0 及BSP结构。Windows CE 5.0是一款开放的、可升级的32位嵌入式操作系统,具有高可靠性,是一种硬实时嵌入式操作系统,它可以在多种处理器架构(如x86、MIPS、ARM和 SH4)上运行,Windows CE支持ARM体系结构,这是基于S3C2410 处理器进行BSP移植的前提条件。Windows CE 5.0 BSP通常包含以下几部分:Bootloader,OAL(OEM adaptaTIon layer),设备驱动程序,配置文件等。


BootLoader是加电即运行的一段程序,它初始化硬件,建立系统的内存空间映射,为最终调用系统内核做准备。在Windows CE 5.0系统中,它主要用于下载和启动镜像nk.bin,也就是两种工作模式:启动加载模式:用户最终使用的产品即为该模式;下载模式:镜像首先被 bootloader下载到目标机的RAM中,然后被固化到Flash。


设备驱动程序按照导出的接口不同可分为:本机驱动程序以及流接口驱动程序。本机驱动程序有GEWS.exe加载的鼠标,键盘,触摸屏,显示驱动等。而流接口驱动程序使用一组流函数来实现,通常由Device.exe加载,如网卡,声卡,USB等。


ConfiguraTIon File里面包含的是与生成的镜像相关的配置信息。

移植Windows CE下S3C2410对应的BSP,就是修改Windows CE自带的BSP或者修改硬件平台以前版本的BSP的几个主要组成部分,使得BSP能有效支持硬件系统。


3 、BSP移植

如果从零开始开发Widows CE 5.0 BSP,则需要相当长的时间。通常的做法是:⑴将自己硬件平台基于Windows CE 4.2及以前版本的BSP移植到Windows CE 5.0系统上;⑵从Windows CE 5.0 BSP中寻找与硬件平台最接近的作为模板,然后再从自己的硬件平台上入手做相应的修改,从而得到可以在自己系统上使用的BSP。本文探讨的BSP移植属于第一种情况。


本次移植平台采用的是深圳英蓓特公司的EdukiTIII实验箱,微处理器是S3C2410,外带64M NAND Flash芯片等相关硬件资源。软件资源有:edukit2410包(Windows CE 4.2版本下的BSP)。


3.1 bootloader移植

bootloader的执行流程如下:

⑴ 执行startup.s:对CPU,内存控制器,Cache等做一些基本的初始化。

⑵ 初始化串口:调用函数OEMInitDebugSerial()来完成。

⑶ 初始化平台:调用函数OEMPlatformInit(),主要对所需硬件资源进行初始化,通常包括:以太网控制器(CS8900A)、系统时钟、存储设备以及其他一些外围设备。

⑷ 调用函数OEMPreDownload():做一些准备工作如获取IP地址,初始化TFTP连接等。

⑸ 执行函数DownloadImage():下载镜像到SDRAM中。

⑹ 调用OEMLaunch()函数启动操作映像。

其中startup.s,OEMInitDebugSerial()可以与OAL共享使用,两函数的修改在OAL移植过程中叙述。


Bootloader移植主要过程有:

⑴ 修改相应的dir,source文件,下面列出部分库路径:

TARGETLIBS=

$(_TARGETPLATROOT)lib$(_CPUINDPATH)csp_arm.lib

$(_COMMONOAKROOT)lib$(_CPUDEPPATH)eboot.lib

$(_COMMONOAKROOT)lib$(_CPUINDPATH)cs8900dbg.lib

其中csp_arm.lib这个库只存在于Windows CE 4.2的$(_PUBLICOAKROOT),是ARM体系结构链接库之一,在Windows CE 4.2系统下位于PUBLIC目录,而在Windows CE 5.0系统下存在于PLATFORM,导致编译系统找不到该库文件,因此,修改这个库的链接路径,使得Platform builder这个编译系统能够找到这个链接库。


⑵ 修改makefile.inc,因为该文件指定生成eboot.bin(Ethernet bootloader镜像)所需要的文件以及拷贝eboot.bin到releasedir目录,其中:

romimage $(_TARGETPLATROOT)ebootboot.bib

为生成生成eboot.bin所需要的配置文件,否则,系统通过编译却无法生成eboot.bin.

⑶ 修改boot.bib,使其不与config.bib中的内存分配造成冲突。

⑷ 改进eboot,因为eboot烧写NK.BIN(OS镜像)的时候会查找BINFS分区,然后把下载的image烧写到BINFS分区。如果没有找到现存的BINFS分区,eboot会低格NAND FLASH,并创建MBR(main boot record),在MBR中有分区表。目前最多支持4个分区,而BINFS分区的大小是以NK.BIN展开的大小按block对齐,所以会出现个问题,当修改过重新生成的NK.BIN比之前写进NAND FLASH的IMAGE大并且超出block对齐的时候,将会导致烧写新的NK.BIN失败,我们可以通过每次下载烧写NK.BIN前先低格NAND FLASH来解决这个问题,但显然这不是妥善的解决方法,增加用户使用复杂度,所以我们可以把BINFS分区的大小固定,而这个固定的大小可以参考生成 NK.BIN的config.bib中定义的ROMSIZE,这样无论NK怎么修改,BINFS一经创建无需更改,eboot把NK写进NAND FLASH之后,会把剩余的FREE空间创建一个FAT分区,如果我们要实现HIVE REGISTRY就可以把这个分区mounts成MountAsBootable。


3.2 OAL移植

OAL的移植过程中,OEM主要实现以下几个函数:Startup.s,调试串口函数,OEMInit函数,系统时钟函数,中断处理函数等。


⑴ 修改Startup.s,此函数为OS启动时第一个要调用的函数,也是OEM要实现的重要函数之一,主要完成的功能是:将CPU初试化到一种已知的状态;并调用内核初始化函数kernelstart。Startup.s需要修改,修改后的部分代码如下:

基于S3C2410处理器对Windows CE 5.0操作系统实现BSP移植

⑵ 修改串口调试函数。执行完Startup.s,系统就跳转到Kernelstart函数,位于private目录,该函数第一个任务就是初始化串调试口,否则,就无法进行后面的调试工作。其中OEMReadDebugByte, OEMWriteDebugByte, OEMWriteDebugString不用做修改,需要注意的是OEMInitDebugSerial,选UART0,UART1的寄存器配置不一样,若选用UART0,使用配置:

s2410IOP-》rGPHCON = ~((3 4) | (3 6));

s2410IOP-》rGPHCON |= ((2 4) | (2 6));

而选择UART1,则使用配置的是:

s2410IOP-》rGPHCON = ~((3 8) | (3 10));

s2410IOP-》rGPHCON |= ((2 8) | (2 10));

⑶ 实现OEMInit(),该函数将调用以下函数:OALCacheGlobalsInit(),OALIntrInit(),OALTImerInit(),OALKitlStart()来初始化Cache Global,中断,时钟,启动KITL,实现代码如下:

void OEMInit()

{

OALCacheGlobalsInit();// 初试化cache globals

if (!OALIntrInit()) {

OALMSG(OAL_ERROR, (

LERROR: OEMInit: failed to initialize interruptsrn

));

} // 初试化中断

OALTimerInit(1, S3C2410X_PCLK/2000, 0); // 初始化时钟

OALKitlStart();// 初始化KITL

}

⑷ 实现OALTimerInit(),该函数用于初始化OS TIMER,设置每毫秒产生一个System tick,为系统计数,触发进程调度。由CPU的运行主频和硬件定时器资源来确定,执行过程有:初始化时钟状态全局变量,初始化高分辨率时钟函数指针,使能TIMER。

⑸ 实现中断处理处理函数:OALIntrInit(),该函数通常先初始化中断映射表,因为WINCE为了模块化,把平台相关物理中断号和系统中断号建立映射。然后清除外部中断,内部中断等。


3.3 驱动移植

以触摸屏为例,来探讨Windows CE 5.0系统驱动程序移植。这里以三星公司ARM9内核芯片S3C2410触摸屏接口为基础,通过外接4线电阻式触摸屏构成硬件基础,整个触摸屏由横向电阻线和纵向电阻线组成。触摸屏驱动的主要函数组成有:

TSP_Poweron 该函数将执行触摸屏的一些初始化,主要是寄存器的配置。

DdsiTouchPanelEnable:使能DDSI接口,使得硬件能将流数据提供给DDSI接口,就可以实现触摸的操作了。


DdsiTouchPanelSetMode:模式设置函数,设置触摸屏是高采样率还是低采样率

DdsiTouchPanelGetPoint :触摸屏进行采样函数

TSP_CalibrationPointGet:坐标转换函数,该函数实现将从AD采样植转换成坐标。

移植主要过程:

⑴ 修改source文件,要添加如下库文件:

TARGETLIBS=$(_COMMONSDKROOT)lib$(_CPUINDPATH)coredll.lib

SOURCELIBS=

$(_COMMONOAKROOT)lib$(_CPUINDPATH)tch_cal.lib

$(_COMMONOAKROOT)lib$(_CPUINDPATH)tchmdd.lib

因为这个驱动在Windows CE 4.2下面是在Public目录,而这里将该触摸屏移到了Platform下面,在Windows CE4.2下面是没有以上三条链接库,但Platform,Public编译路径,先决条件都不同。因此引用的库不一样。

⑵ 删除如下库文件:

$(_TARGETPLATROOT)lib$(_CPUINDPATH)drvlib.lib

该库在Windows CE 4.2系统下为触摸屏与音频共用库,但在Windows CE5.0系统下,这个库已经不是必要的并且已经不存在了,所以删除掉,否则系统会出编译错误。

⑶修改platform.bib,将我们移植过来的驱动dll包含到nk.bin中

⑷修改platform.reg,其中CalibrationData是触摸屏的一个参数:

[HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPTOUCH]

MaxCalError=dword:7

portrait

CalibrationData=517,610 897,934 142,936 129,290 891,285

其他驱动的过程与触摸屏类似。


3.4 移植小结

此次移植是升级BSP,而硬件上基本没有变化,因此很多代码不需做修改即可使用,通过以上移植,不难发现此类移植BSP过程中所要做的工作主要在以下几个方面:

⑴ 修改dir文件,在dir文件中指定了当前目录哪些文件夹被系统编译,编译器根据dir层层搜索,而移植BSP不可避免的带来了目录的变化,通过修改dir来指定新的编译路径。

⑵ 修改sources文件,在sources文件中,指定了编译类型有PLATFORM,OAK;编译的时候引用的库 sourcelib,targetlib不一样,移植的时候一定得注意。目标文件类型有Library,Dynlink,program;include 字段包含的则是编译时候所需要的头文件目录。有个比较特殊的sources是位于Platform(例如smdk2410)下的sources.cmn,它包含了该平台的通用库,头文件路径,这个文件在移植过程中需要修改的,否则,编译出错。

⑶ 修改platform.bib,platform.reg等文件,因为这两个文件决定了镜像中包含哪些模块(dll)以及注册表相关信息,驱动移植的过程中,每个模块的改动都需要修改这两个配置文件。

⑷ 驱动源文件中的头文件的修改以及函数,变量修改等,这些依据编译时候出现的错误来确定。


除此之外,各部分的移植还需特别注意的地方有:

Bootloader部分:因为bootloader下载,烧写,启动镜像过程会涉及到内存地址的问题,各种入口地址不能出错误,以及内存超出范围,冲突都需要特别小心。尤其是g_oalAddressTable这个表,这个表定义了物理地址虚拟地址之间的转换以及内存的大小,如果设置不正确,将出现校验错误,下载失败或者镜像无法启动等错误。


OAL部分:startup.s以及OEMInitDebugSerial两函数需要特别注意,这两个主要是初始化硬件及串口,这是系统运行及驱动调试的基础,如果硬件配置以及调试串口有改变,则需要适当的修改。此次BSP移植,因硬件平台没有变化,因此OAL部分很多代码无须修改即可使用。


驱动部分:Windows CE4.2与Windows CE5.0的结构,库有了很大的改变,因此需要修改引用库路径,以及头文件的引用路径,大部分驱动都将会遇到这样的问题。


4 、结束语

本文创新点:通过对BSP结构分析,将具体平台的Windows CE 4.2 BSP移植到Windows CE 5.0版本,包括移植bootloader,OAL,驱动程序,使之能够通过编译并生成镜像,已经能在平台上成功运行。通过这次移植,使笔者体会到BSP 移植是一个挺复杂,烦琐的过程,因Windows CE 5.0跟Windows CE 4.2 BSP包的组织结构不同,导致很多链接库无法找到或者是这些库已经被替换,删除,只有耐心的根据这些错误提示来定位,有时候也需要去makefile里去找答案。不过移植BSP比重新开发BSP更加节省开发时间,从而缩短产品的研发。


关键字:S3C2410  处理器  Windows  操作系统  BSP移植 引用地址:基于S3C2410处理器对Windows CE 5.0操作系统实现BSP移植

上一篇:基于在S3C2410处理器平台上实现Windows CE.NET的应用设计
下一篇:采用LPC1752读取AT24C08C的原理与实现方案

推荐阅读最新更新时间:2024-11-17 02:38

联发科完成 5G 新空口二阶段测试
消息只有短短的一句话:联发科技携手华为在北京怀柔 5G 测试外场率先完成中国5G技术研发试验第二阶段 eMBB (连续广覆盖场景)与 UDN (低频热点高容量场景)下的 5G 新空口互操作性开发测试。 对于一直关注 5G 发展的专业人士来说,自然知道这条消息对于 5G 终端的技术创新、产品开发并走向商用带来的重大意义。 但很多非业内人士表示:听起来很厉害的样子,到底是什么意思呢? 别急,今天小编就来给大家解释一下这条消息到底是啥意思,为什么能让通信圈如此兴奋! 1   首先,我们要了解什么是中国5G技术研发试验第二阶段。 相信大家都知道,中国 5G 试验是全球首个由政府主导和规划的 5G 试验,由工信部主导
[半导体设计/制造]
荣耀Play5 活力版1799元起售 摄像头供应商名单解密
在手机市场有着金九银十的说法,电商时代下,踩准时间节点发布新品无疑更是各大手机品牌厂商脱颖而出的一个关键因素。 近日,荣耀通过线上形式对外发布了荣耀Play5 活力版手机,售价1799元起,由此可见,荣耀除了高端产品线以外,其正积极提升中低端手机市场的意图不言而喻。 有人士直言:“荣耀又发新机了,独立之后,步伐明显比之前快了许多,基本上每个月都有新的产品出炉,而除了荣耀Play5 活力版外,还有X30i 和 X30 Max 。” 抢在双十一之前发布新品,对于荣耀而言,这是战略中的一个重要举措,那么回归至荣耀Play5 活力版手机新品,除价格外,它究竟又会给消费者带来怎样的惊喜呢? 多家摄像头供应商均在列 在具体配置上,荣耀Play
[手机便携]
荣耀Play<font color='red'>5</font> 活力版1799元起售 摄像头供应商名单解密
海信将推出其首款具电子墨水屏5G手机海信A7
近日,海信宣布将推出其首款具有电子墨水屏的 5G 手机,海信 5G 阅读手机 A7(下简称:海信 A7)。 海信 A7 5G 将于 12 月 22 日在全球发布。但是,看起来这款手机,或称之为 5G 电子阅读器的设备将不会像海信 A5 Pro,海信 A5 Pro CC 和海信 A5C 一样采用彩色电子墨水屏。 官方发布的预热显示,它将有两款颜色-白色和黑色。其背面有一个摄像头,以及一个LED闪光灯和一个指纹扫描仪。 尽管目前没有提供屏幕尺寸,处理器,RAM 和存储等详细信息,但预计该手机将搭载 UNISOC 5G 处理器(可能是海信 T50 5G 的 Tiger T7510)。 上面的海报显示手机的底部有一个音频插孔,
[手机便携]
台积10nm明年试产,未来5年半导体年增仅3~5% 台积成长胜产业
    将在6月24日召开股东会的台积电(2330),股东会年报已先出炉,预估未来5年全球半导体市场年成长率仅3~ 5%,台积电的成长将显著超越全球半导体市场;而在高阶制程进展上,台积电也明确提到10奈米制程将于明年试产、2016年量产。 在致股东报告书中,台积电董事长张忠谋指出,相较半导体产业表现,台积电自成立27年以来,其中25年业绩成长皆显著高于整体半导体产业水准。 内容指出,2013年是台积电营收及获利再创高峰的1年。4年前,台积电洞察半导体产业将因智慧型手机与平板电脑等行动运算装置的问市,而有绝佳的成长机会,因而大笔投资于研发与资本支出,如今证明,行动运算产品果然引领潮流,触发新一波的成长动能。   28奈米市占逾8
[手机便携]
腾讯宣布开源自研的轻量级物联网实时操作系统
腾讯宣布将开源自主研发的轻量级物联网实时操作系统TencentOS tiny。相比市场上其它系统,腾讯TencentOS tiny在资源占用、设备成本、功耗管理以及安全稳定等层面极具竞争力。该系统的开源可大幅降低物联网应用开发成本,提升开发效率,同时支持一键上云,对接云端海量资源。 据权威资料显示,全球物联网市场规模发展迅猛,2018年,仅国内物联网市场容量已经超过1万亿,预计2020年国内物联网市场容量可望超过1.5万亿。作为物联网整个产业链重要一环,终端侧物联网操作系统由于直接对接底层物联网设备,已经成为构建整个物联网生态的关键。 腾讯物联网团队表示:“将腾讯自主研发的物联网操作系统TencentOS Tiny开源,不
[物联网]
腾讯宣布开源自研的轻量级物联网实时<font color='red'>操作系统</font>
华工正源:国内首个5G光模块订单已交付华为,2021达高峰
武汉是中国首批5G试点城市,目前5G产业已初现成效,一批5G应用在国内取得领先地位。 2018年9月,华工正源获得国内首个5G光模块订单。据长江日报消息,目前华工正源的国内首个5G光模块订单已交付给华为,企业正在准备扩大产能,以应对5G全面商用后的市场订单。 中国联通网络技术研究院网络技术研究部主任王光全表示,据权威机构预测,到2019年数据中心光模块销量将超过5000万只,市场规模有望在2021年达到49亿美元。 华工正源总经理胡长飞表示,今年上半年5G光模块会加大供货量,预计2021年将达到供货高峰。公司会围绕数据中心用100G、400G甚至以上继续加大研发投入,提升核心竞争力。”
[手机便携]
频谱落地加速5G商用进程:三大运营商已明确5G时间表
  7月17日消息,进入下半年以来,我国 5G 的发展速度可谓是快马加鞭,在最关键的一项用频方面,近日又有了新的利好——工信部为 5G 新增8.4 5G Hz频谱资源。截至目前,工信部共计在6GHz以下频段批复了400MHz以及在毫米波频段批复了8.25GHz频谱资源用于我国5G技术研发试验。下面就随网络通信小编一起来了解一下相关内容吧。  业内人士分析,2018年首个版本的全球5G标准将正式公布,频谱的落地将有助于我国成为全球5G标准主导者,为2020年5G网络正式商用,以及5G产业后续发展奠定基础。 频谱落地加速5G商用进程:三大运营商已明确5G时间表    5G 频谱蓝图雏形已现   2015年,ITU正式
[网络通信]
飞思卡尔在2007年Telematics Update大会上获得创新奖项
荣获行业奖项是对强大的汽车信息通讯处理器和飞思卡尔行业领先地位的肯定 德克萨斯州奥斯汀讯-2007年5月29日 -汽车行业的领先半导体供应商飞思卡尔半导体在2007年5月22日至23日举办的第七届年度Telematics Update底特律大会上荣获一项享有盛誉的国际大奖。 飞思卡尔的 MPC5200 处理器及其综合信息通讯开发环境凭借其在支持新兴车载信息通讯系统方面的超凡性能而赢得了“最佳信息通讯组件奖”。 一年一度的“Telematics Update奖”面向为信息通讯工业的进步作出杰出贡献的公司并给予肯定和表彰。获奖者由来自汽车和无线行业的评委组成的一个独立评审团进行筛选,从数百个提名中决出,并在5月22日举行的“T
[焦点新闻]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved