windowCE_BSP开发
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OAL开发 OAL开发
类似于引导程序的开发 可以重用引导部分的代码
OAL架构 OAL架构
内核开发
黑体显示的函数需要由OEM厂商来实现
内核工作流
KITL
这样的设计可以很容易加 入任何调试服务功能 把通信协议和与之直接通 信的硬件层分离开来 减少用户在创建硬件独立 层的工作量 在系统映象中包含对 KITL的支持 的支持
CETK 结构
Windows CE 测试工具包 测试工具包 (CETK)
Microsoft 提供了自动测试体系结构 提供了自动测试体系结构
Client/Server结构 Client/Server结构支持远端测试 结构支持远端测试
通过 "Tux"加载自动测试 "Tux"加载 加载自动测试
实际的测试是以 实际的测试是以DLLs的形式通过 TUX加载到系统中 的测试是以DLLs的 TUX加载 加载到系统中
引导程序 -- OEMPreDownload
在加载一个运行时映象时首先被 BLCOMMON调用 BLCOMMON调用. 调用. 查找硬件设备的IP地址 地址, 查找硬件设备的IP地址,并与宿主机相连 如果出错返回如果出错返回-1
引导程序 -- OEMLaunch
OEMLaunch 是引导程序的最后一个需要 运行的函数. 运行的函数. 负责跳转的到需要运行的映象. 负责跳转的到需要运行的映象. 跳转到由dwLaunchAddr指定的第一条指 跳转到由dwLaunchAddr指定的第一条指 这条指令在运行时映象的启动函数里. 令,这条指令在运行时映象的启动函数里.
OAL : OEM 抽象层
位于Windows 位于Windows CE 系统内核和目标板硬件之 负责操作系统和目标板的通信. 间,负责操作系统和目标板的通信.由引导程 序调用,随后进行目标板的初始化工作, 序调用,随后进行目标板的初始化工作,包括 中断服务,实时时钟,内部计时器,调试部件, 中断服务,实时时钟,内部计时器,调试部件, 中断使能等等. 中断使能等等. OAL的代码在物理上是内核的一部分 OAL的代码在物理上是内核的一部分,经编 的代码在物理上是内核的一部分, 译链接,OAL成为内核的一部分 成为内核的一部分. 译链接,OAL成为内核的一部分. OEM厂商提供 厂商提供. 由硬件 OEM厂商提供.
为驱动程序提供访问硬件的手段. 为驱动程序提供访问硬件的手段.
BSP的结构 BSP的结构
BSP主要由 部分组成:OEM抽象层 引导程序, BSP主要由4部分组成:OEM抽象层,引导程序, 主要由4 抽象层, 设备驱动程序和配置文件. 设备驱动程序和配置文件.
OEM抽象层(OAL) OEM抽象层(OAL) 抽象层
引导程序(Boot 引导程序(Boot Loader)
引导程序(Boot Loader)是在硬件开发板上执行 引导程序(Boot Loader)是在硬件开发板上执行 的一段代码. 的一段代码. 主要功能
初始化硬件 加载操作系统映像到内存 跳转到操作系统代码去执行 EBoot:Boot Loader通过以太网从工作站下载操作系统 Loader通过以太网从工作站下载操作系统 映像到目标机,然后把映像放到内存里执行,称之为 映像到目标机,然后把映像放到内存里执行, EBoot(Ethernet Boot的简称). Boot的简称 的简称)
BSP 向导
下面是创建基于Windows 下面是创建基于Windows CE 的BSP的一 BSP的一 般步骤, 般步骤,典型的情况下会产生一个 .cec w 文件 Platform -> BSP Wizard
BSP开发流程 BSP开发流程
引导程序 可选) 引导程序(可选) 程序(
如果操作系统映象可以直接引导, 如果操作系统映象可以直接引导,引导 操作系统映象可以直接引导 程序不是必须的 但通常使用一个引导程序,以便日后的 通常使用一个引导程序, 扩充. 扩充.另外也可以用于支持制造过程中 的下载测试 引导程序的重要性在于可以支持开发过 引导程序的重要性在于可以支持开发过 程中的运行时映象加载功能, 程中的运行时映象加载功能,也就是说 在系统运行过程中, 在系统运行过程中,动态加载需要调试 的模块
TUX.EXE
监控 TUX 测试 DLLs的程序 DLLs的程序
实际的测试是以 DLL的形式进行的 DLL的形式进行的
通过 TUX.EXE加载测试DLL TUX.EXE加载测试 加载测试DLL
由远端用户界面应用程序发起运行
桌面系统上的CETEST.EXE 桌面系统上的CETEST.EXE
通用日志引擎 通用日志引擎 "Kato"
DLL exposes C and C++ API for logging to the server
CETK Server
利用TUX启动 利用TUX启动特定的测试 启动特定的测试 保存日志以及产生报告 保存日志以及产生报告 运行于桌面系统以便进行远程测试
TUX Server
设备驱动程序
设备驱动程序也是BSP的一个重要组成部分, 设备驱动程序也是BSP的一个重要组成部分,支 的一个重要组成部分 持相关外围设备以及动态安装的设备. 持相关外围设备以及动态安装的设备. 对于某个特定的BSP来说,BSP当中应该包含在 对于某个特定的BSP来说,BSP当中应该包含在 来说 这块开发板上的所有的外设驱动程序. 这块开发板上的所有的外设驱动程序. 通过BSP包含的设备驱动程序操作系统能够发挥 通过BSP包含的设备驱动程序操作系统能够发挥 此开发板的最大效能. 此开发板的最大效能.
配置文件
配置文件是一些包含配置信息的文本文件. 配置文件是一些包含配置信息的文本文件. BSP中的配置文件包括文件 BSP中的配置文件包括文件
.BIB, .DB, .REG, .DAT:这些文件告诉Make Image .DAT:这些文件告诉Make 工具如何生成操作系统映像. 工具如何生成操作系统映像. Sources, DIRs:告诉构建系统如何构建代码. DIRs:告诉构建系统如何构建代码. CEC:BSP可与 CEC:BSP可与Platform Builder集成. 可与Platform Builder集成 集成.
BSP开发 BSP开发
目录
板级支持包(BSP) 板级支持包(BSP) 简介 BSP的结构 BSP的结构 开发BSP 开发BSP
板级支持包(BSP) 板级支持包(BSP) 简介
BSP是板级支持包,是介于主板硬件和操作系统之间 的一层,应该说是属于操作系统的一部分,主要目的是为 了支持操作系统,使之能够更好的运行于硬件主板. BSP与开发板一一对应
驱动程序开发
参见前面的课程. 参见前面的课程. 利用 BSP Wizard可以添加到BSP中 Wizard可以添加到 可以添加到BSP中
举例: 举例: 分析 Motorola DragonBall BSP
我们已经学习过什么? 我们已经学习过什么? 我们系统, 我们系统,完整地学习了 Windows CE 开发流程. 开发流程.
启动流程
1. 2. 3. 4. 5. 6. 7. 8. 9.
CPU加电, CPU加电,跳转到复位向量 加电 [可选] 引导程序从Startup()开始执行 可选] 引导程序从 程序从Startup()开始 开始执行 执行OAL中 执行OAL中的Startup() KernelStart() [ KernelInitialize() For x86 ] Kernel调用 OAL中 Kernel调用 OAL中的OEMInit() 完成内核初始化 完成内核初始化 内核加载 加载Filesys.exe 内核加载Filesys.exe FileSys初始化 FileSys初始化注册表 初始化注册表 内核加载在 加载在HKEY_LOCAL_MACHINE\ 内核加载在HKEY_LOCAL_MACHINE\Init 中列出的应用程序
引导程序 -- OEMPlatformInit
各种OEM 硬件平台初始化函数,包括时钟, 各种OEM 硬件平台初始化函数,包括时钟, PCI接口 或者NIC接口 PCI接口,或者NIC接口. 接口, 接口. NIC接口用于下载映象, NIC接口用于下载映象,另外服务于后面 接口用于下载映象 一些函数. 一些函数.
引导程序 – OEMDebugInit
用来初始化串行口,作为调试输出 用来初始化串行口, OEMDebugInit初始化完成后 OEMDebugInit初始化完成后, 一个 初始化完成后, Windows CE的标记会出现,表示这个接 CE的标记会出现 的标记会出现, 口可以使用了. 口可以使用了.
引导程序的功能
初始化目标设备
内存和中断控制器 设置时钟和内存管理单元 内存管理单元 直接引导现存的flash 或RAM 映象 flash RAM 下载之前清空Rห้องสมุดไป่ตู้M 内存读写测试
下载Windows CE 映象到 映象到RAM或flash: 下载 或
并口 网卡
引导程序的加载
引导菜单
引导程序的开发
需要设计硬件?
设计实现你的硬件
从设备制造商得 到硬件和 BSP 为硬件设计BSP
需要定制平台?
定制你的 Win CE 平台
从设备制造商处 得到平台和 SDK 导出你的 SDK 编码,测试
发布产品
综述
Windows CE 测试工具包 (CETK) 测试工具包 Tux "server" Kato 日志引擎 日志引擎 设备驱动加载以及TUX扩展 设备驱动加载以及TUX扩展(DDLX) 常规 TUX 测试
创建BSP的两种方法 创建BSP的两种方法
编写全新的BSP 编写全新的BSP
需要编写所有的部分包括 OEM抽象层, 驱动, OEM抽象层 驱动, 抽象层, 引导程序 20人 大约消耗 20人/月工作量
改写现有的BSP 改写现有的BSP
对与目标板具有相似硬件组成的BSP的基础上 对与目标板具有相似硬件组成的BSP的基础上 进行某些改写,使其适用与目标板, 进行某些改写,使其适用与目标板,这是最简 单的方式. 单的方式.
实现OEM的应用程序接口(API) 实现OEM的应用程序接口(API). 的应用程序接口 连接Microsoft提供的库 连接Microsoft提供的库
引导程序的任务
黑体字标识的函数需要由OEM厂商来实现.
控制流图
C:\WINCE420\PUBLIC\COMMON\OAK\DRIVERS\ETHDBG\BLCOMMON
引导程序 -- EbootMain
EbootMain是 EbootMain是C代码运行的入口 调用BLCOMMON库 调用BLCOMMON库 BLCOMMON 库 源文件在 Blcommon.c 文件中, 文件中,路径为 %_WINCEROOT%\Public\Common\Oak %_WINCEROOT%\Public\Common\ \Drivers\Ethdbg directory Drivers\
引导程序 – StartUp函数 StartUp函数
硬件复位和运行时复位需要执行的第一条 指令 设置为超级用户模式 执行必须的硬件初始化: 执行必须的硬件初始化:
CPU 内存控制器 系统时钟 串口 缓存 快表 (TLBs)
根据使用的CPU修改 根据使用的CPU修改Startup.s 修改Startup.s
它所对应的是某块具体的开发板/产品板,而不是某款CPU,也不 是某类CPU体系结构.
BSP是相对于操作系统而言的
不同的操作系统对应于不同定义形式的BSP,例如VxWorks的 BSP和Linux的BSP相对于某一CPU来说尽管实现的功能一样, 可是写法和接口定义是完全不同的,所以写BSP一定要按照该 系统BSP的定义形式来写.
BSP的编程过程大多数是在某一个成型的BSP模板上 进行修改,这样才能与上层OS保持正确的接口,良好的 支持上层OS.
板级支持包(BSP) 板级支持包(BSP) 简介
BSP的主要功能 BSP的主要功能
系统启动时,完成对硬件的初始化. 系统启动时,完成对硬件的初始化.
例如,对系统内存,寄存器,以及设备的中断进行 例如,对系统内存,寄存器, 设置. 设置.