目前在一家公司担任软件总监,主要涉及智能手机,笔记本电脑的开发
分类: WINDOWS
2009-11-19 18:04:25
WINCE的开发工作分为三部分: BSP , OS定制 ,应用开发
BSP包括4部分, Bootloader , device driver , 配置文件,以及OAL .
其开发流程为:
1) 先clone 一个相近的BSP ,命名为ABC
clone 其实就是copy整个文件夹.
然后把PLATFORM\ABC\SRC\driver目录删除掉,修改PLATFORM\test\SRC\dirs,把driver这行删除掉(因为现在一开始要把bootloader 和OAL调试好,这样wince就可以跑起来,然后再加驱动).
New-> Project -> OS Design , 建立一个工程,Design Templates 选择Custom Device ,然后 Finish .(这样很多应用,服务 不选择,比如HTTP , Media ,这些留到OS定制的时候来选择).
然后 Build -> Build Solution ,编译完成. 发现NK.exe(内核) 76.5KB, NK.bin 2.73MB , eboot.nb0 256KB . 下面就可以去修改bootloader ,OAL了
2) 开发Bootloader
主要是修改串口,网口,Nand Flash驱动等.
然后配置eboot.bib .
这样 编译就生成了 eboot.nb0
3) 开发OAL
中断,RTC...
4) 添加其他的驱动程序
其他的显示等驱动.
5) 是否考虑电源管理部分?
6) 发布BSP
其实就是把Platform/ABC copy出来就可以了.别人要用的话,直接放在platform目录下面.
BootLoader 就是把WINCE内核加载到内存里,包括Eboot(通过以太网加载内核),还有通过串口,USB的bootloader ,它主要由4部分组成:
1) BLCommon (通用的bootloader架构,主要函数BootloaderMain,DownloadImage,VerifyChecksum等)
2) OEM 代码
3) 存储管理 ( 对Flash的读写,分区...)
4) EDBG驱动程序 (网卡的驱动)
5) Eboot 库 (实现DHCP , UDP ,TFTP )
对于用户来说,2 必须提供, 4 也许网卡不同要改动.
OEM代码包括开始启动的startup.S ,以及串口来输出打印信息的函数,显示,时钟(这个在等待的时候要用到时钟函数) 等.
然后给一定SOURCES文件编译bootloader , 另外一个BIB配置文件进行配置内存等,{BANNED}最佳后用RomImage进行打包.
OAL 就是操作系统对硬件的访问. 操作系统要运转,必须要中断处理,RTC,Timer等, 并提供oemaddrtab_cfg.inc文件,以对内存的划分进行描述.
对于驱动程序,则主要是要了解wince驱动的工作机制,了解所针对的硬件,以及驱动模型,比如网卡要实现NDIS接口.
加上其他的配置文件,比如config.bib ,platform.bib
OS定制
其实就是利用platform Builder , 根据需求,在Catalog Item里选择不同的组件.这个有点象Linux的 Make menuconfig .
然后编译成NK.bin (整个OS都在里面).
导出SDK给应用开发人员.
应用开发:
1) 安装SDK
2)和桌面开发一样,编码,并先可以用模拟器测试
3)使用 wince 设备测试
4) 发布 (.cab 文件格式)
这样这个应用程序就可以在wince里面安装了.
应用程序的开发人员可以用win32 API , MFC 或者 .net 编程 .