1 / 40

嵌入式软件开发导论

嵌入式软件开发导论. 8. BSP 开发. 同济大学软件学院 2006. 目录. 板级支持包( BSP) 的开发 标准 CETK 测试的使用. 板级支持包( BSP) 简介. BSP 是在标准开发板上运行的一部分软件,主要功能是支持操作系统的引导与开发。通过 BSP 我们可以在开发板上快速的启动操作系统以及分析操作系统的性能。有了 BSP 的支持,各个 OEM( 原始设备制造商)厂商和独立硬件开发商就可以缩短基于 Windows CE 平台产品的开发周期。. CPU 支持包( CSP) & OEM 抽象层( OAL). OAL : OEM 抽象层

martha
Télécharger la présentation

嵌入式软件开发导论

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 嵌入式软件开发导论 8. BSP开发 同济大学软件学院 2006

  2. 目录 • 板级支持包(BSP)的开发 • 标准CETK 测试的使用

  3. 板级支持包(BSP) 简介 BSP是在标准开发板上运行的一部分软件,主要功能是支持操作系统的引导与开发。通过BSP我们可以在开发板上快速的启动操作系统以及分析操作系统的性能。有了BSP的支持,各个OEM(原始设备制造商)厂商和独立硬件开发商就可以缩短基于Windows CE平台产品的开发周期。

  4. CPU支持包(CSP) & OEM抽象层(OAL) • OAL : OEM 抽象层 • 位于Windows CE 系统内核和目标板硬件之间,负责操作系统和目标板的通信。由引导程序调用,随后进行目标板的初始化工作,包括中断服务,实时时钟,内部计时器,调试部件,中断使能等等 • 由硬件 OEM厂商提供

  5. CPU支持包(CSP) & OEM抽象层(OAL) • CSP : CPU 支持包 • 包括用以支持特定CPU和相关芯片的OEM抽象层和设备驱动,这一部分是与特定开发板无关的。 • 通常由操作系统开发商提供,Win CE操作系统是由微软公司开发的。

  6. 板级支持包的组成

  7. BSP 硬件抽象层 驱动 配置文件 引导程序 标准开发板 BSP 架构

  8. 创建BSP的两种方法 • 编写全新的BSP • 需要编写所有的部分包括 OEM抽象层, 驱动, 引导程序 • 大约消耗 20人/月工作量 • 改写现有的BSP • 对与目标板具有相似硬件组成的BSP的基础上进行某些改写,使其适用与目标板,这是最简单的方式。

  9. BSP 向导 • 下面是创建基于Windows CE 的BSP的一般步骤,典型的情况下会产生一个 .cec w文件 • Platform -> BSP Wizard

  10. BSP开发流程

  11. 引导程序(可选) • 如果操作系统映象可以直接引导,引导程序不是必须的 • 但通常使用一个引导程序,以便日后的扩充。另外也可以用于支持制造过程中的下载测试 • 引导程序的重要性在于可以支持开发过程中的运行时映象加载功能,也就是说在系统运行过程中,动态加载需要调试的模块

  12. 引导程序的功能 • 初始化目标设备 • 内存和中断控制器 • 设置时钟和内存管理单元 • 直接引导现存的flash 或RAM 映象 • 下载之前清空RAM • 内存读写测试 • 下载Windows CE 映象到RAM或flash: • 并口 • 网卡

  13. 引导程序的加载

  14. 引导菜单

  15. 引导程序的开发 • 实现OEM的应用程序接口(API). • 连接Microsoft提供的库

  16. 引导程序的任务 黑体字标识的函数需要由OEM厂商来实现.

  17. 控制流图 C:\WINCE420\PUBLIC\COMMON\OAK\DRIVERS\ETHDBG\BLCOMMON

  18. 引导程序 – StartUp函数 • 硬件复位和运行时复位需要执行的第一条指令 • 设置为超级用户模式 • 执行必须的硬件初始化: • CPU • 内存控制器 • 系统时钟 • 串口 • 缓存 • 快表 (TLBs) • 根据使用的CPU修改Startup.s

  19. 引导程序 -- EbootMain • EbootMain是C代码运行的入口 • 调用BLCOMMON库 • BLCOMMON 库 源文件在 Blcommon.c 文件中,路径为%_WINCEROOT%\Public\Common\Oak\Drivers\Ethdbg directory

  20. 引导程序 – OEMDebugInit • 用来初始化串行口,作为调试输出 • OEMDebugInit初始化完成后, 一个Windows CE的标记会出现,表示这个接口可以使用了.

  21. 引导程序 -- OEMPlatformInit • 各种OEM 硬件平台初始化函数,包括时钟, PCI接口,或者NIC接口. • NIC接口用于下载映象,另外服务于后面一些函数.

  22. 引导程序 -- OEMPreDownload • 在加载一个运行时映象时首先被BLCOMMON调用. • 查找硬件设备的IP地址,并与宿主机相连 • 如果出错返回-1

  23. 引导程序 -- OEMLaunch • OEMLaunch 是引导程序的最后一个需要运行的函数. • 负责跳转的到需要运行的映象. • 跳转到由dwLaunchAddr指定的第一条指令,这条指令在运行时映象的启动函数里.

  24. OAL开发 • 类似于引导程序的开发 • 可以重用引导部分的代码

  25. OAL架构

  26. 内核开发 黑体显示的函数需要由OEM厂商来实现

  27. 内核工作流

  28. KITL • 这样的设计可以很容易加入任何调试服务功能 • 把通信协议和与之直接通信的硬件层分离开来 • 减少用户在创建硬件独立层的工作量 • 在系统映象中包含对KITL的支持

  29. 启动流程 • CPU加电,跳转到复位向量 • [可选] 引导程序从Startup()开始执行 • 执行OAL中的Startup() • KernelStart() [ KernelInitialize() For x86 ] • Kernel调用 OAL中的OEMInit() • 完成内核初始化 • 内核加载Filesys.exe • FileSys初始化注册表 • 内核加载在HKEY_LOCAL_MACHINE\Init 中列出的应用程序

  30. 驱动程序开发 • 参见前面的课程. • 利用 BSP Wizard可以添加到BSP中

  31. 举例:分析 Motorola DragonBall BSP

  32. 我们已经学习过什么? 我们系统、完整地学习了 Windows CE 开发流程.

  33. 需要设计硬件? 设计实现你的硬件 从设备制造商得到硬件和 BSP 为硬件设计BSP 需要定制平台? 定制你的 Win CE 平台 从设备制造商处得到平台和 SDK 导出你的 SDK 编码、测试 发布产品

  34. 综述 • Windows CE 测试工具包 (CETK) • Tux “server” • Kato 日志引擎 • 设备驱动加载以及TUX扩展(DDLX) • 常规 TUX 测试

  35. CETK 结构

  36. Windows CE 测试工具包 (CETK) • Microsoft 提供了自动测试体系结构 • Client/Server结构支持远端测试 • 通过 “Tux”加载自动测试 • 实际的测试是以DLLs的形式通过 TUX加载到系统中 • 通用日志引擎 “Kato” • DLL exposes C and C++ API for logging to the server • CETK Server • 利用TUX启动特定的测试 • 保存日志以及产生报告 • 运行于桌面系统以便进行远程测试

  37. TUX Server • TUX.EXE • 监控 TUX 测试 DLLs的程序 • 实际的测试是以 DLL的形式进行的 • 通过 TUX.EXE加载测试DLL • 由远端用户界面应用程序发起运行 • 桌面系统上的CETEST.EXE • 也可以在设备上独立运行

  38. KATO 日志引擎 • DLL :提供 API,以便将测试结果保存成日志 • C++ 类库 • C 函数 • 从TUX测试抽象出日志机制 • 本地文件 • 远端连接

  39. 设备驱动加载以及TUX扩展 (DDLX) • 允许测试 DLL加载到设备管理进程空间 • 允许对APIs和功能的测试仅仅对设备管理模块可用 • 设备管理模块直接向驱动提供 APIs • 驱动可以直接为其他驱动提供服务

  40. 常规的TUX 测试 • TUXSKEL • 微软提供的 TUX 测试构架 • 作为一个最初的 “模板”用来创建常规 TUX 测试 • IDE New Project Wizard 产生一个基于TUXSKEL 结构的常规TUX 测试 • 比手工复制和修改 TUXSKEL要简单

More Related