文件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部分定义了生成的映像文件的目标地址 以及程序运行可以使用的内存空间。

iON Cloud:新加坡cn2 gia vps/1核/2G内存/25G SSD/250G流量/10M带宽,$35/月

iON Cloud怎么样?iON Cloud升级了新加坡CN2 VPS的带宽和流量最低配的原先带宽5M现在升级为10M,流量也从原先的150G升级为250G。注意,流量也仅计算出站方向。iON Cloud是Krypt旗下的云服务器品牌,成立于2019年,是美国老牌机房(1998~)krypt旗下的VPS云服务器品牌,主打国外VPS云服务器业务,均采用KVM架构,整体性能配置较高,云服务器产品质量靠...

香港服务器租用多少钱一个月?影响香港服务器租用价格因素

香港服务器租用多少钱一个月?香港服务器受到很多朋友的青睐,其中免备案成为其特色之一。很多用户想了解香港云服务器价格多少钱,也有同行询问香港服务器的租赁价格,一些实际用户想要了解香港服务器的市场。虽然价格是关注的焦点,但价格并不是香港服务器的全部选择。今天小编介绍了一些影响香港服务器租赁价格的因素,以及在香港租一个月的服务器要花多少钱。影响香港服务器租赁价格的因素:1.香港机房选择香港机房相当于选择...

DogYun(300元/月),韩国独立服务器,E5/SSD+NVMe

DogYun(中文名称狗云)新上了一批韩国自动化上架独立服务器,使用月减200元优惠码后仅需每月300元,双E5 CPU,SSD+NVMe高性能硬盘,支持安装Linux或者Windows操作系统,下单自动化上架。这是一家成立于2019年的国人主机商,提供VPS和独立服务器租用等产品,数据中心包括中国香港、美国洛杉矶、日本、韩国、德国、荷兰等。下面分享这款自动化上架韩国独立服务器的配置和优惠码信息。...

wince开发为你推荐
湖南商标注册湖南哪里有商标注册公司?无线路由器限速设置无线路由器能设置限速吗?或者说那个牌子的能。缓冲区溢出教程如何防止高手使用缓冲区溢出?依赖注入Spring 的依赖注入是什么意思?iphone越狱后怎么恢复苹果手机越狱后怎么恢复网易公开课怎么下载如何下载网易公开课腾讯文章怎么在手机腾讯网发文章奇虎论坛360有论坛中心?淘宝网页显示不正常淘宝网页不能正常显示宕机宕机是什么意思
网络域名 cn域名个人注册 ix主机 2017年万圣节 中国特价网 泉州电信 速度云 秒杀汇 phpmyadmin配置 申请免费空间和域名 美国凤凰城 永久免费空间 空间申请 测试网速命令 如何登陆阿里云邮箱 江苏徐州移动 godaddy空间 网络速度 上海联通 server2008 更多