文件WinCE系统下BootLoader的开发

wince开发  时间:2021-02-25  阅读:()

WinCE系统下BootLoader的开发目录

1定制CE操作系统的基本知识

一般来说

3编写BootLoader源程序

3. 1启动部分

3. 2主控部分

3. 3部分

3.4支持DOC

正文

摘要介绍WinCE.NET系统的旧方法说明板级支持包BSP的基本构成从开发实际出发详细阐述如何开发BSP中的重要部件--BootLoader。 关键词 WinCE.NET BSP BootLoader DOC

引言

Windows CE.NET是微软公司向嵌入式领域推出的一款操作系统。它最大程度继承了桌面版Windows操作系统的丰富功能 同时又副入了许多新特性 以适应嵌入式领域的实际情况和要求。无论是商业应用需求还是人们的多媒体消费需求都能被采用CE操作系统的设备很轻松的满足。 在实时性和稳定性上有大幅度提高开始广泛地被平板电脑、数码相机、彩屏手机、 P DA等多种高性能产品所采用。

但是 CE并不是一个通用的安装版操作系统在形形色色的嵌入式硬件设备世界里 一款CE系统通常只会针对某一种硬件平台生成。所以作为原始设备生产商必须根据自己的硬件平台和应用场合定制CE最主要的工作就是编写适合于自己的板级支持包BSP 。在BSP中包含了一个重要的组成部分——BootLoader。创建一未功能完善的BootLoader是开发WinCE系统的第一步也是极为关键的一步。本文将结合开发实例介绍如何开发适合于自己硬件的BootLoader。

1定制CE操作系统的基本知识

定制CE操作系统是采用微软的工具软件 Platform Builder

PB 。该工具能够根据用户的需求选择构建具有不同内核功能的

CE系统。 同时它也是一个集成的编译环境可以为所有CE支持的CPU目标代码编译C/C++程序。前面所说的BSP和BootLoader程序就是在该环境下编译并整合到CE系统中去的。一旦成功地编译了一个CE系统就会得到一个名为nk.b in的映像文件。只要将该文件到目标平台device端 就能够运行CE了。

2 BootLoader

BootLoader是一段单独的程序代码它存放于目标平台的非易失存储介质中如ROM或F l a sh。在开发CE的过程中它主要用于启动硬件和nk.b in到目标板上并有一定的监控作用。

图1描述了WinCE的BSP基本结构以及BootLoader所处的位置。

一般来说对于BootLoader的功能要求并不是严格定义的不同的场合区别很大。 比如在PC的硬件平台上 由于硬件启动根本就不是通过BootLoader 而是通过BIOS 所以BootLoader就不需要对CPU加电后的初始化做任何工作而在笔者的开发平台MIPS32上BootLoader是最先被执行的程序所以就必须包括加电初始化程序。通常 BootLoader必须包含CE映像文件的功能。另外管理监控硬件设备通常也是必须的 因为这可以极大地方便工程开发。 由于

BootLoader涉及到基本的硬件操作如CPU的结构、指令等 同时又涉及到以太网协议TFTP 当然也可能通过串口和策软设定的映像文件格式。因此从零实现的话会需要相当长的过程。好在微软为每种类型的CPU都提供了某种标准开发板的BootLoader例程 因此通常

的做法是从这些例程中寻找与硬件平台最接近的作为标本程序然后再从自己的硬件平台上入手做相应的改动。一些新的评估板可能会由第三方的厂商来提供Bootloader。如果硬件平台是从这样的基板设计而来的话那么最好去寻求这些厂商获取Bootloader来移植 以减少工作量。

笔者使用的硬件平台基于MIPS32架构端口采用的是以太网口同时还具备一个串口主机相连通过超级终端对该平台加以控制。该平台是参考AMD的一款标准估计板设计的 BootLoader以该板的BootLoader为参考进行了移植。

3编写BootLoader源程序

前面已经提到 由于硬件的不同 BootLoader的功能可能有多有少此处笔者以自己开发BootLoader的过程进行叙述。图2是笔者BootLoader的工程流程。

3. 1启动部分

首先要实现初台化硬件的功能。在参考板的BootLoader目录下会发现一些. s文件 这样的文件是CPU加电后最先执行的代码。 由于此处是用汇编语言编写的所以与CPU关系紧密。一般参考板的CPU与开发平台的CPU会是相同或者是同一个架构的。笔者使用的是属于同一种CPU的情况所以对寄存器的定义和初始化流程都可以不加改动。接着就是对于平台配置的分析包括平台存储空间的分配、外围设备的工作设定等。一般这里的区别是非常大的。所以必须要对CPU

寄存器的值作相应设定。这部分工作可能需要CPU提供商方面的帮助。

应该说这部分工作是BootLoader的一大重点但由于和实际的硬件非常大所以不可能做进一步的详细叙述。

3.2主控部分

从这一部分开始均用C语言编写。

为了增加BootLoader对平台的控制一般BootLoader都会设计成支持命令输入的方式通过串口来接收用户的命令。这种机制中如果参考板有Loader支持的话那么可以自己添加有实用价值的命令完成一些需要的功能。

从图2中可以看出一般在平台调试完毕后可以在不用人工干预的情况下自动加载CE 这也是BootLoader必需的功能之一 而在调试阶段基本上是通过Loader所支持的命令来进行操作的。提供足够丰富的命令能极大简化和全面测试开发平台。如表1所列是笔者Loader所提供的命令。

表1

命令说明

Help列出所有支持的命令并加以说明Eboot从开发台CE映像并加载Wri te向某一内存地址写入数据Re ad显示某一内存地址的数据Jump

跳转到某一地址执行程序Xmodem从计算机的超级终端接收以Xmodem协议传送的文件Toy测试平台CPU的计数器是否运转Flash擦除或者更新Flash中的数据Tl bread显示CPU的所有TLB表Tlbwrit设置CPU的TLBMacaddr设置CPU的MAC地址S et i设置平台的IP地址这些命令涉及到平台调试的各个方面像内存检测、 Flash操作、文件等。借助于这些命令不仅可以完成硬件平台的部分测试还完成了作为CE的BootLoader程序最为重要的一个功能——CE映像。

3.3部分

在用Platform Builder编译生成CE的映像文件后接下来就需要将该文件到目标板上。如果说硬件调试功能可以由其它的程序代替而不放入BootLoader中但是映像文件却是BootLoader必需的功能。

CE映像文件通常叫做nk.bin它是Windows CE二进制数据格式文件不仅包含了有效的程序代码还有按照一定规则加入的控制信息。当然也可以选择生成. sre格式的代码文件但是相于对前一种格式它的代码要长很多所需要的时间也更长。在这里我们以.bin格式的文件来说明的实现。

首先看一下图3所示的BootLoader部分的流程图。

通常在Platform Bui lder自带的代码中会包含完成TFTP连接的了基本的函数。

*初始化TFTP连接用函数EbootInitTFtp()和EbootInitTFtpd

 完成。

*登记解析.bin格式数据的回调函数用

EbootTFtpdServerRegister 完成。

*发出连接请求用EbootSendBootme  完成。

*接收主机端发出的数据包用EbootTFtpReceiver()完成。

在这里需要重点说明的有两点。

①对于接收数据包的函数EbootTFtpReceiver() 它只能处理已经存入内存的以太网包也就是说从以太网控制器接收数据的功能必须要用户去完成。 由于这一功能与硬件密切相关所以不能使用PB自带的函数来完成。

②函数EbootTFtpdServerRegi ster()会登记一个回调函数一般用户可以自己定义这个函数该函数用于完成 bin格式数据的解析和保存有效数据至目的地RAM。 PB有自带的例程函数可作参考。一般来说如果目的地就是RAM的话直接参考例程函数即可。但是如果目的地就是Flash不要直接存入Flash 字为单位 应先存入内存中待完毕以后再导入Flash。当然这种方法必须要有足够的内存。如果没有足够的内存也可以缓存部分数据后分段写入Flash。

3.4支持DOC

对于W inCE操作系统而言丰富的多媒体功能是其一大特点使其成为当前消费类电子产品操作系统中的一个不错选择。但是随之而来的问题是系统的容易已经大大超过出了传统嵌入式系统上百KB的数量级。一般来说如果选择了图形界面和汉语支持容量一般会超过16MB。 DOC Disk On Chip则提供了一种相对廉价的大存储容量的解决方案。

D OC本质上是一种加以软件控制的NAND格式的F l as h通过TFFS这一软件层提供对W inCE的支持。

由于DOC不能像内存一样被直接访问所以其加载Wi nCE的过程有些特殊必须要在BootLoader中加入专门的代码才能使用DOC来存放WinCE映像文件。

为了说明怎样在Loader文件中提供对DOC的支持先看一下如何采用DOC系统启动CE如图4所示。从图4可以看出 当采用DOC作为存储体的时候实际上是在启动的时候把映像文件拷贝到内存中执行。为了实现这一启动过程就必须涉及到DOC的读写操作。首先要从M-SYSTEM的网站上获取DOC的BOOT软件开发包。在这个开发包里提供了一系列DOC的操作函数。将此开发包嵌入到CE的

BootLoader中去然后按照图4的步骤调用相应的读写函数完成这一过程。对于开发包中相关函数的说明笔者就不具体介绍了可以参考开发包的说明文档。

4 BootLoader的编译、链接和

BootLoader程序可以通过PB的集成编译环境编译链接控制文件为.bib文件下面是一个简单的BootLoader的.bib文件。

M EMO RY

CLI 9fc00000 00050000 RAMIMAGE

RAM 80080000 00070000 RAM

C ONF I G

COMPRES S ION=ON

S RE=ON

ROMS TART=9 f c00000

ROMS I ZE=00020000

ROMW I DTH=32

R OMO FFE T=000000

MODULES

Nk.exe (_FLATRELEASEDIR) .exe CLI

M EMO RY部分定义了生成的映像文件的目标地址 以及程序运行可以使用的内存空间。

Budgetvm12核心 16G 500 GB SSD 或者 2 TB SATA 10GB  20 TB  99美金

Budgetvm(原EZ机房),2005年成立的美国老品牌机房,主打美国4个机房(洛杉矶、芝加哥、达拉斯、迈阿密)和日本东京机房的独立服务器和VPS业务,而且不限制流量,默认提供免费的1800G DDoS防御服务,支持IPv6和IPMI,多种免费中文操作系统可供选择,独立服务器主打大硬盘,多硬盘,大内存,用户可以在后台自行安装系统等管理操作!内存可定制升级到1536G,多块硬盘随时加,14TBSA...

Sharktech$129/月,1Gbps不限流量,E5-2678v3(24核48线程)

Sharktech最近洛杉矶和丹佛低价配置大部分都无货了,只有荷兰机房还有少量库存,商家又提供了两款洛杉矶特价独立服务器,价格不错,CPU/内存/硬盘都是高配,1-10Gbps带宽不限流量最低129美元/月起。鲨鱼机房(Sharktech)我们也叫它SK机房,是一家成立于2003年的老牌国外主机商,提供的产品包括独立服务器租用、VPS主机等,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹等,主...

提速啦(24元/月)河南BGP云服务器活动 买一年送一年4核 4G 5M

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

wince开发为你推荐
vista系统重装Vista系统的重装的步骤,有系统恢复盘spgnuxPC操作系统如何描述中国电信互联星空电信不明不白收了我200元互联星空信息费 求解bluestacks安卓模拟器BlueStacks如何安装使用?网站联盟网盟跟b2b平台有什么区别神雕侠侣礼包大全神雕侠侣手游版四重大礼包怎么得到啊?保护气球为什么会那么害怕气球雅虎天盾有没有用用雅虎天盾的啊?人人逛街人人逛街网是正品吗商标注册查询官网怎么查商标是否注册成功
域名停靠一青草视频 樊云 便宜域名 香港cdn mediafire下载 哈喽图床 表单样式 免费个人博客 刀片服务器的优势 国外代理服务器地址 中国电信宽带测速器 免费邮件服务器 全能空间 攻击服务器 存储服务器 聚惠网 windowsserver2012 美国西雅图独立 byebyelove qq空间论坛 更多