400 likes | 574 Views
嵌入å¼è½¯ä»¶å¼€å‘导论. 8. BSP å¼€å‘. åŒæµŽå¤§å¦è½¯ä»¶å¦é™¢ 2006. 目录. æ¿çº§æ”¯æŒåŒ…( BSP) çš„å¼€å‘ æ ‡å‡† CETK 测试的使用. æ¿çº§æ”¯æŒåŒ…( BSP) 简介. BSP æ˜¯åœ¨æ ‡å‡†å¼€å‘æ¿ä¸Šè¿è¡Œçš„一部分软件,主è¦åŠŸèƒ½æ˜¯æ”¯æŒæ“作系统的引导与开å‘。通过 BSP 我们å¯ä»¥åœ¨å¼€å‘æ¿ä¸Šå¿«é€Ÿçš„å¯åЍæ“作系统以åŠåˆ†æžæ“作系统的性能。有了 BSP 的支æŒï¼Œå„个 OEM( åŽŸå§‹è®¾å¤‡åˆ¶é€ å•†ï¼‰åŽ‚å•†å’Œç‹¬ç«‹ç¡¬ä»¶å¼€å‘商就å¯ä»¥ç¼©çŸåŸºäºŽ Windows CE å¹³å°äº§å“的开å‘周期。. CPU 支æŒåŒ…( CSP) & OEM 抽象层( OAL). OAL : OEM 抽象层
E N D
嵌入式软件开发导论 8. BSP开发 同济大学软件学院 2006
目录 • 板级支持包(BSP)的开发 • 标准CETK 测试的使用
板级支持包(BSP) 简介 BSP是在标准开发板上运行的一部分软件,主要功能是支持操作系统的引导与开发。通过BSP我们可以在开发板上快速的启动操作系统以及分析操作系统的性能。有了BSP的支持,各个OEM(原始设备制造商)厂商和独立硬件开发商就可以缩短基于Windows CE平台产品的开发周期。
CPU支持包(CSP) & OEM抽象层(OAL) • OAL : OEM 抽象层 • 位于Windows CE 系统内核和目标板硬件之间,负责操作系统和目标板的通信。由引导程序调用,随后进行目标板的初始化工作,包括中断服务,实时时钟,内部计时器,调试部件,中断使能等等 • 由硬件 OEM厂商提供
CPU支持包(CSP) & OEM抽象层(OAL) • CSP : CPU 支持包 • 包括用以支持特定CPU和相关芯片的OEM抽象层和设备驱动,这一部分是与特定开发板无关的。 • 通常由操作系统开发商提供,Win CE操作系统是由微软公司开发的。
BSP 硬件抽象层 驱动 配置文件 引导程序 标准开发板 BSP 架构
创建BSP的两种方法 • 编写全新的BSP • 需要编写所有的部分包括 OEM抽象层, 驱动, 引导程序 • 大约消耗 20人/月工作量 • 改写现有的BSP • 对与目标板具有相似硬件组成的BSP的基础上进行某些改写,使其适用与目标板,这是最简单的方式。
BSP 向导 • 下面是创建基于Windows CE 的BSP的一般步骤,典型的情况下会产生一个 .cec w文件 • Platform -> BSP Wizard
引导程序(可选) • 如果操作系统映象可以直接引导,引导程序不是必须的 • 但通常使用一个引导程序,以便日后的扩充。另外也可以用于支持制造过程中的下载测试 • 引导程序的重要性在于可以支持开发过程中的运行时映象加载功能,也就是说在系统运行过程中,动态加载需要调试的模块
引导程序的功能 • 初始化目标设备 • 内存和中断控制器 • 设置时钟和内存管理单元 • 直接引导现存的flash 或RAM 映象 • 下载之前清空RAM • 内存读写测试 • 下载Windows CE 映象到RAM或flash: • 并口 • 网卡
引导程序的开发 • 实现OEM的应用程序接口(API). • 连接Microsoft提供的库
引导程序的任务 黑体字标识的函数需要由OEM厂商来实现.
控制流图 C:\WINCE420\PUBLIC\COMMON\OAK\DRIVERS\ETHDBG\BLCOMMON
引导程序 – StartUp函数 • 硬件复位和运行时复位需要执行的第一条指令 • 设置为超级用户模式 • 执行必须的硬件初始化: • CPU • 内存控制器 • 系统时钟 • 串口 • 缓存 • 快表 (TLBs) • 根据使用的CPU修改Startup.s
引导程序 -- EbootMain • EbootMain是C代码运行的入口 • 调用BLCOMMON库 • BLCOMMON 库 源文件在 Blcommon.c 文件中,路径为%_WINCEROOT%\Public\Common\Oak\Drivers\Ethdbg directory
引导程序 – OEMDebugInit • 用来初始化串行口,作为调试输出 • OEMDebugInit初始化完成后, 一个Windows CE的标记会出现,表示这个接口可以使用了.
引导程序 -- OEMPlatformInit • 各种OEM 硬件平台初始化函数,包括时钟, PCI接口,或者NIC接口. • NIC接口用于下载映象,另外服务于后面一些函数.
引导程序 -- OEMPreDownload • 在加载一个运行时映象时首先被BLCOMMON调用. • 查找硬件设备的IP地址,并与宿主机相连 • 如果出错返回-1
引导程序 -- OEMLaunch • OEMLaunch 是引导程序的最后一个需要运行的函数. • 负责跳转的到需要运行的映象. • 跳转到由dwLaunchAddr指定的第一条指令,这条指令在运行时映象的启动函数里.
OAL开发 • 类似于引导程序的开发 • 可以重用引导部分的代码
内核开发 黑体显示的函数需要由OEM厂商来实现
KITL • 这样的设计可以很容易加入任何调试服务功能 • 把通信协议和与之直接通信的硬件层分离开来 • 减少用户在创建硬件独立层的工作量 • 在系统映象中包含对KITL的支持
启动流程 • CPU加电,跳转到复位向量 • [可选] 引导程序从Startup()开始执行 • 执行OAL中的Startup() • KernelStart() [ KernelInitialize() For x86 ] • Kernel调用 OAL中的OEMInit() • 完成内核初始化 • 内核加载Filesys.exe • FileSys初始化注册表 • 内核加载在HKEY_LOCAL_MACHINE\Init 中列出的应用程序
驱动程序开发 • 参见前面的课程. • 利用 BSP Wizard可以添加到BSP中
我们已经学习过什么? 我们系统、完整地学习了 Windows CE 开发流程.
需要设计硬件? 设计实现你的硬件 从设备制造商得到硬件和 BSP 为硬件设计BSP 需要定制平台? 定制你的 Win CE 平台 从设备制造商处得到平台和 SDK 导出你的 SDK 编码、测试 发布产品
综述 • Windows CE 测试工具包 (CETK) • Tux “server” • Kato 日志引擎 • 设备驱动加载以及TUX扩展(DDLX) • 常规 TUX 测试
Windows CE 测试工具包 (CETK) • Microsoft 提供了自动测试体系结构 • Client/Server结构支持远端测试 • 通过 “Tux”加载自动测试 • 实际的测试是以DLLs的形式通过 TUX加载到系统中 • 通用日志引擎 “Kato” • DLL exposes C and C++ API for logging to the server • CETK Server • 利用TUX启动特定的测试 • 保存日志以及产生报告 • 运行于桌面系统以便进行远程测试
TUX Server • TUX.EXE • 监控 TUX 测试 DLLs的程序 • 实际的测试是以 DLL的形式进行的 • 通过 TUX.EXE加载测试DLL • 由远端用户界面应用程序发起运行 • 桌面系统上的CETEST.EXE • 也可以在设备上独立运行
KATO 日志引擎 • DLL :提供 API,以便将测试结果保存成日志 • C++ 类库 • C 函数 • 从TUX测试抽象出日志机制 • 本地文件 • 远端连接
设备驱动加载以及TUX扩展 (DDLX) • 允许测试 DLL加载到设备管理进程空间 • 允许对APIs和功能的测试仅仅对设备管理模块可用 • 设备管理模块直接向驱动提供 APIs • 驱动可以直接为其他驱动提供服务
常规的TUX 测试 • TUXSKEL • 微软提供的 TUX 测试构架 • 作为一个最初的 “模板”用来创建常规 TUX 测试 • IDE New Project Wizard 产生一个基于TUXSKEL 结构的常规TUX 测试 • 比手工复制和修改 TUXSKEL要简单