介绍WinCE.NET系统的旧方法;说明板级支持包(BSP)的基本构成;从开发实际出发,详细阐述如何开发BSP中的重要部件--BootLoader。
关键词:WinCE.NET BSP BootLoader DOC
引言
Windows CE.NET是微软公司向嵌入式领域推出的一款操作系统。它最大程度继承了桌面版Windows操作系统的丰富功能,同时又副入了许多新特性,以适应嵌入式领域的实际情况和要求。无论是商业应用需求,还是人们的多媒体消费需求,都能被采用CE操作系统的设备很轻松的满足。最新的.NET版本较之3.0版本,在实时性和稳定性上有大幅度提高,开始广泛地被平板电脑、数码相机、彩屏手机、PDA等多种高性能产品所采用。
但是,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.bin的映像文件。只要将该文件下载到目标平台(device端),就能够运行CE了。
2 BootLoader
BootLoader是一段单独的程序代码,它存放于目标平台的非易失存储介质中,如ROM或Flash。在开发CE的过程中,它主要用于启动硬件和下载nk.bin到目标板上,并有一定的监控作用。
图1描述了WinCE的BSP基本结构以及BootLoader所处的位置。
一般来说,对于BootLoader的功能要求并不是严格定义的,不同的场合区别很大。比如,在PC的硬件平台上,由于硬件启动根本就不是通过BootLoader(而是通过BIOS),所以BootLoader就不需要对CPU加电后的初始化做任何工作;而在笔者的开发平台(MIPS32)上,BootLoader是最先被执行的程序,所以就必须包括加电初始化程序。通常,BootLoader必须包含下载CE映像文件的功能。另外,管理监控硬件设备通常也是必须的,因为这可以极大地方便工程开发。由于BootLoader涉及到基本的硬件操作,如CPU的结构、指令等,同时又涉及到以太网下载协议(TFTP,当然也可能通过串口)和策软设定的映像文件格式。因此从零实现的话,会需要相当长的过程。好在微软为每种类型的CPU都提供了某种标准开发板的BootLoader例程,因此通常的做法是:从这些例程中寻找与硬件平台最接近的作为标本程序,然后再从自己的硬件平台上入手做相应的改动。一些新的评估板可能会由第三方的厂商来提供Bootloader。如果硬件平台是从这样的基板设计而来的话,那么最好去寻求这些厂商获取Bootloader来移植,以减少工作量。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉