前面说了wondows mobile的一些开发特性,这篇作为windows mobile 开篇之作,做了一个打开话题引子,对WM开发牵涉到的软件工程方面的想法进行了一个描述,第二篇,对bootloader 进行了一个框架介绍。
在第三篇,详细描述一下那么了微软的OAK代码后,在OEM层面,应该做什么开发。OEM层主要为了OEM客户提供一个手机升级下载的处理接口,一个是手机开机的处理流程。
(1)OEM层-系统内存的布局了解
在OEM层,开发设计者首先需要搞清楚的是,系统物理内存的分配布局:
%__winceroot%/platform/deviceemulator/src/inc/oemaddrtab_cfg_inc文件中,g_oaladdressTable数组,这个数组对RAM以及ROOT的使用情况做了一个很详细的描述,用户可以需要根据自己OEM的开发板情况进行一个详细修改以及配置。
(2)OEM层-startup函数
这个函数在wince启动过程中,在系统上电以及复位以后,第一条指令就是执行startup此接口。在%__winceroot%/paltform/deviceemulator/src/bootloader/eboot/source 中
targetname = eboot
targettype=program
releasetye=platform
exeentry=startup
其中startup是采用汇编进行写的,在startup.s中,此函数主要目标是给CPU准备一个合适的工作环境,比如清空TLB和cache,关闭中断,配置PLL,设置内存控制器等。
可以简单的理解,startup属于芯片级别的CPU初始化;基本上是微软自己做好的,不太建议OEM客户进行修改,为了能使的OEM客户有一个私有的开发空间,便于和自己的BB做到软件和硬件绑定,wm做了一个很好WM启动架构,STARTUP+oemPlatformIint结合。
WM在OEM层面,还提供了另外一个OEMPlatformInit的初始化函数,此函数主要是负责BB主板的初始化。