wm第三篇:WINDOWS MOBILE的OEM层应该如何开发
2010-05-17 09:50
288 查看
前面说了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主板的初始化。
在第三篇,详细描述一下那么了微软的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主板的初始化。
相关文章推荐
- iOS 开发中的争议(一)类的成员变量应该如何定义?
- 在Windows Mobile和Wince(Windows Embedded CE)下进行WTL开发,如何加入超链接(HyperLink)
- 开发网络爬虫应该如何选择爬虫框架?
- 开发餐饮小程序应该注意要点:如何吸引更多顾客
- 在Windows Mobile和Wince(Windows Embedded CE)下进行Native C++开发,如何取出资源文件中的版本信息
- Windows Mobile下使用Native C++(WTL, MFC, Win32)开发,如何为对话框加入菜单
- iOS 开发中的争议(类的成员变量应该如何定义?)
- 应该如何在小,中,大型应用开发中组织前端js代码?
- Androidndk开发打包时我们应该如何注意平台的兼容(x86,arm,arm-v7a)
- 软件开发人员应该如何发展
- 高性能web开发 如何加载JS,JS应该放在什么位置?
- 在Windows Mobile和Wince(Windows Embedded CE)下如何使用.NET Compact Framework开发进程管理程序
- Androidndk开发打包时我们应该如何注意平台的兼容(x86,arm,arm-v7a)
- 如何在WES 7的开发工具ICE里面添加OEM客户信息
- 在Windows Mobile和Wince(Windows Embedded CE)下进行Native C++开发,如何取出当前执行文件的路径和调用模块的路径
- findlibrary returned null产生的联想,Android ndk开发打包时我们应该如何注意平台的兼容(x86,arm,arm-v7a)
- 高性能web开发 - 如何加载JS,JS应该放在什么位置?
- 高性能web开发 - 如何加载JS,JS应该放在什么位置?
- Unity开发项目应该一开始规划好哪些内容?如何避免后期巨坑?
- 项目经理应该知道的97件事--如何发现优秀的IT开发人员