首页 X86架构下VxWorks快速启动分析与实现

X86架构下VxWorks快速启动分析与实现

举报
开通vip

X86架构下VxWorks快速启动分析与实现X86架构下VxWorks快速启动分析与实现 架构下 快速启动分析与实现 X86 VxWor ks 前吴晓李长德吴勇英王 , , , 西北工业大学 计算机学院陕西 西安 ( , 710072) 摘要一次引导启动可大大缩短 架构下 的启动时间却面临引导映像大小受限的问题采用程序: X86 VxWorks , 。 动态加载的方法使得系统映像和普通应用模块相分离从而有效控制了引导映像大小实现紧急任务 依次启动, , , , 在 中的快速启动VxWorks 。 关键词体系结构一次引导动态加载: VxWorks; ...

X86架构下VxWorks快速启动分析与实现
X86架构下VxWorks快速启动分析与实现 架构下 快速启动分析与实现 X86 VxWor ks 前吴晓李长德吴勇英王 , , , 西北工业大学 计算机学院陕西 西安 ( , 710072) 摘要一次引导启动可大大缩短 架构下 的启动时间却面临引导映像大小受限的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 采用程序: X86 VxWorks , 。 动态加载的方法使得系统映像和普通应用模块相分离从而有效控制了引导映像大小实现紧急任务 依次启动, , , , 在 中的快速启动VxWorks 。 关键词体系结构一次引导动态加载: VxWorks; X86 ; ; 文章编号: 1000- 7180( 2007) 07- 0197- 04 中图分类号文献标识码: : A TP31 Analysis and Implementation of Time Restr icted Star t- up for VxWor ks Based on X86 Ar chitectur e WANG Qian, WU Xiao, LI Chang-de, WU Yong-ying ( )College of Computer, Northwestern Polytechnical University, Xi′an 710072, ChinaAbstr act : One - step boot can greatly reduce the time which spend on start - up of VxWorks, but it faced the problem that the size of boot- image is confined. Using the method of dynamic task loading, boot- image and usual task module could be separated and individual start- up is realized to control the size of boot- image. The time restricted start- up was implemented. ; ; ; Key wor ds: VxWorksX86 architectureone- step bootdynamic load 只能段即处于实模式实模式的显著特点就是 引言。CPU 1 访问 的内存大小考虑到内存空间 在我国军事航空航天等高精尖技术及实时1MB ,0x0A0000~ 、、 此时为 使用系统引导映 0xFFFFF BIOS 。VxWorks 架构有着广泛的应用范性要求极高的领域中X86 , 像 就 限 定 在 这 大 小 的 0x008000 ~0x097FFF 575kB 围因此 体系架构下 的快速启动就具 , X86 VxWorks 空间内。 有重要意义。 启动加载阶段此过程分为两种 ( 3) VxWorks /: 情况一次引导启动和二次引导启动, 。 二次引导启动二次引导启动顾名思义就是把 : 启动过程分析2 VxWor ks 启动加载阶段再分为两个阶段引导 VxWorks /: BSP 对于 体系结构程序存放在硬盘中X86 , , CPU [1][1]映像启动阶段和 系统映像加载和启动 VxWorks 不能直接从这样的存储器中取指令执行而需要 , 阶段。 的辅助将启动盘的引导扇区复制到主 BIOS 。BIOS 引导映像即 为 上 步 加 载 的 引 导BSP VxWorks 内存空间再跳转到内存的给定地址执行其启动 , 。 过程包括以下 个步骤3 : 阶段主要为初始化 及周边设 ( 1) BIOS : CPU 映像文件只是它仅包含一个基本功能的 VxWorks。 , 备并向后提供硬件接口, 。 其主要为启动此基本功能的 系统挂载设VxWorks 、 引导映像加载阶段( 2) VxWorks ( bootrom.sys) : 备为下一步 系统映像的加载做准备, VxWorks 。 主引导记录程序通过 功能调用由辅 ( vxld ) BIOS , 系 统 映 像 包 含 了 全 功 能 的 VxWorks VxWorks 助存储器拷贝 引导映像至内存给定地址 VxWorks 系统系统映像加载后抛弃上步启动的基 , VxWorks 架构下此地址一般为 ( X86 0x08000) 。 本 系统而重新启动此全功能 供 VxWorks , VxWorks 用户使用体 系 结 构 由 于 向 下 兼 容 的 考 虑 在 。 X86 CPU , 启动初期一般处于实模式工作 环 境 阶CPU , BIOS 引导映像作用一是可 以 避 开 实 模 式 对BSP , 引导映像大小的限制二是通过引导方便VxWorks 。 收稿日期: 2006- 08- 13 控制第二次加载映像的位置及方法这样就可以很。 基金项目国家自然科学基金项目: ( 60573161) 方便地修改第二步的 映像所以二次引导疑会延长VxWorks , 。 启动大多用于调试和系统可在线升级的应用中但 在实际应用中对时间要求严格的应用一般只 。, 占系统很小一部分比如飞控系统为了防止飞机 由于存储设备的挂载需要较多的时间且整个过程 。: ; 启动了两次 系统二步引导启动的速度显 在天上忽然断电姿态控制任务必须尽快启动以恢 VxWorks , , 得过于漫长其典型启动方式为 复对飞行姿态的控制而对于诸如通信等任务来说 。bootrom+VxWorks, 。 其过程如图 所示其对启动速度的要求就不是那么严格1 。 。 在以上 个启动阶段中阶段由硬件厂商3 , BIOS 实 现 能 通 过 工 作 减 少 启 动 时 间 的 阶 段 只 有, , 加载阶段和 启动加载阶段为bootrom.sys VxWorks 。 了减少时间选择一次引导启动并且要尽量减小 , 文件大小缩减 的文件大小 bootrom.sys , bootrom.sys 主要是为了满足 的实模式下的加载限制同 575kB , 时 一 个 小 的 启 动 映 像 也 能 有 效 地 缩 减 bootrom.sys 的加载时间。 缩减 映像文件的大小有两种方法bootrom.sys : 定制系统对 按需要进行裁减分离 , VxWorks ; Vx- 一次引导启动一次引导启动去除了二次引导 : 系统文件和具体应用模块实现应用程序的Works , 启动中的 引导映像的加载即主引导记录直接 BSP , 动态加载由此提出下面解决方案系。: VxWorks_rom 加载 系统映像如图 所示从图 中可 VxWorks ( 2 ) 。2 统映像只包括一些比较重要的对速度比较敏感的 , 以看出此时的 系统映像几乎和二次引导 VxWorks 紧急任务如飞行姿态控制而其他对时间不太敏 ( ) , 启动中的 引导映像完全相同确实如此只是BSP , , 感的普通任务作为一个单独模块于紧急任务启动 后动态加载另外对 按具体要求定制甚 。VxWorks , 系统映像为全功能系统映像并增加了应VxWorks , 至可以裁减掉与紧急任务不相关但普通任务需要, 用模块而已由于一次引导启动去除了 引导映。BSP 像其启动速度是最快的但显然面临了映像大小 , , 以尽可能减小映像大小裁 系统模块的 , VxWorks , 受限的问题其典型启动方式为 。VxWorks_rom。 除掉而普通模块需要的系统模块同普通模块一起 加载。 程序动态加载3 执行文件格式3.1 AOUT 架构下 仅 X86 VxWorks AOUT ( Assembly out) 执行文件格式头文件中申明的数 , tornado 据结构和宏函数描述了系统上可执行机器码文件 格式可执行文件格式由可选的 个部分组 。AOUT 7 成如表 所示, 1 。 表 文件格式1 AOUT 符号 Text Data AOUTTEXTDATA符号表 选择一次引导启动无疑能使 启动速VxWorks 串表 头段段Reloc Reloc 度达到最快但系统快速启动的目的主要是为了应 , 头由 个四字节参数组成内核使用这AOUT : 8 , 用软件能够快速恢复工作仅启动一个裸系统没有 , 些参数将执行文件加载到内存中并执行链接程序 , 任何意义这样就要求应用模块要和 系统 。VxWorks 使用这些参数将一些二进制目标文件组合成一个 合为一个模块同时加载前面已经指出一次引导启 。可执行文件这是唯一必要的组成部分。。 动其启动映像大 小 受 到 限 制 而 默 认 配 置 的 , Vx- 段和 段为程序执行时被加载到内存 Text data 系统映像为 左右 下包括 基Works 520kB ( 486 C++ 中的执行代码和相关数据。 工程下可的记录数据在组合二进制目标文件时用于定位代 下有两种系统裁减方法, Tornado2.x : 码段或数据段中的指针和地址这样链接程序就知 , 视化操作和直接修改 手工定制这里由于config.h 。 道了应当向何处补写符号的值。 速度上的考虑需要修改 各组件的启动次 VxWorks 符号表同样含有供链接程序使用的记录数据, 序即紧急任务用不着的各种初始化操作一律放在 , 用于在二进制目标文件之间对命名的变量和函数 紧急任务之后启动使用 文件做映像主 。usrConfig.c 符号进行交叉引用字符串表含有与符号名相对 ( ) 。程序便于启动顺序的优化这样一来就不能通过工 , 应的字符串程的方法可视化的定制系统直接修改 根 。 。config.h, 据具体项目需要添加或删除不需要的组件此时要 , 特别注意组件间的依赖关系可以通过察看 , Torna- 动态加载的设计思想3.2 目 录 下 的 文 件 来 获 do\target\src\config usrDepend.c 动态加载的应用模块一般为未完全链接的不 取各组件的依赖关系。 可执行文件加载必须对其进行重定位和符号解析 , [2] 操作。 目标模块创建起始地址为 然而目标模块并添加动态加载支持组件组件0, ( 2) 修改 添加 不能加载到此位置重定位就是按照指定加载位置 config.h, #include INCLUDE_SYM_ , 调整代码和数据的过程比如如果程序实际被加 实现。, TBL 载到位置 即段基址为 那么文件中对 0x5000, 0x500, /* initialize hash table pack- hashLibInit ( ) ; 段基址 的引用将会重定位为 由于程序 0x12 0x512。age */ 作为一个整体被重定位的段内偏移量不会改变, , symLibInit ( ) ; /* initialize symbol table 所以加载器不需要修正除段基址之外的其他内容。 package */ 同时目标模块中存在大量对各种外部变量外、 添加 实现#include INCLUDE_LOADER : 部函数或共享库的引用编译时外部引用地址全部 , moduleLibInit ( ) ; /* initialize module manager */ 用填充并通过 或 记录此 0 , Text Reloc Data Reloc 引用符号和待修改地址符号解析就是把这些用 。0 cplusDemanglerInit ( ) ; 另外同时把上面两组代码移动到紧急任务启 填充的地址修改为引用符号确定地址的过程。 动之后。 要完成符号解析必须要知道系统中全局符号 的具体地址系统映像为完全链接的可执行文件。, [3] 程序动态加载及运行( 3) 由于其加载地址和链接地址相同的特性系统映像 。[4]使用 函数加载系统符号表选loadModuleAt( ) , 文件中的符号表和符号串表就记录了所有的全局 取 把 所 有 全 局 符 号 填 LOAD_ GLOBAL _SYMBOL 符号以及其位于内存中的具体地址以此创建一个 。入由 初始好的空表中注意此时应选symLibInit( ) 。 哈希表记录全局符号和对应地址通过查找此表完 , 成符号解析 。 用 来禁止重定位由于符 ppt 关于艾滋病ppt课件精益管理ppt下载地图下载ppt可编辑假如ppt教学课件下载triz基础知识ppt ext=ppData=ppBss=0 , 当 动态加载目标模块时其主要步骤 VxWorks , 号表模块仅含有 头符号表和符号串表AOUT 、。 如下: char *pText = 0; 加载应用模块到内存缓冲区( 1) ; char *pData = 0; 头按照头信息为该 读取应用模块 ( 2) AOUT , char *pBss = 0; 模块分配内存空间; symFd = open( symFile, O_RDONLY, 0) ; 段和 段到已分配内存空间拷贝 ( 3) Text Data ; loadModuleAt ( symFd, LOAD_GLOBAL_SYMBOLS, 和 中记录的信 按照 ( 4) Text Reloc Data Reloc 息对 步中的数据进行重定位和符号解析操作3 ; &pText, &pData, &pBss) [4]然后使用 加载具体的应用程序loadModule( ) , 最 后 使 用 在 系 统 符 号 表 中 查 找 symFindByName( ) 出加载应用的函数入口点执行之, 。 fd = open( "/tffs0/hello.o",O_RDONLY,)0 ; testModule = loadModule( fd,LOAD_ALL_SYMBOL)S ; 将此应用模块的全局符号添加到符号表( 5) symFindByName( sysSymTbl,"_hello"(, char **) &taskEn- 中用于后续加载模块的引用或用于启动该应用 , , try,&Type) ; 模块。 taskSpawn ( "hello",100,0,1000, ( FUNCPTR) taskEntry, 0,0,0,0,0,0,0,0,0,0) ; 快速启动的实现4 VxWor ks 启动映像及符号表制作( 4) 定制系统及启动顺序优化( 1) 表 启动时间参数2 采用 工具生成 映像Tornado1.0 VxWorks_rom , 并 使 用 aoutToBinDec bootrom.sys 耗用时间( ) s 模块按启动( 命令生成 系统引导映像 bootrom.sys 。aoutToBinDec 备注 386 486 Pentium 顺序排序 )作用为提取尖括号内 格式代码的 段和 aout text da- ( )( )( )16MHz 66MHz 133MHz 段 再 使 用 ta 。 xsymDec VxWorks. 电源对速度 把 映 像 中 的 段 和 段 去 sym VxWorks_rom text data BIOS 2.60 2.63 2.55 有影响除剩下的 头及符号表和符号串表部分命名为 , aout 系 VxWorks 映像大小 为动态加载首次加载的符号表模块统映像加载0.81 0.78 0.80 VxWorks.sym( ) 左右560kB 作为系统符号表使用 。 系统启动及 至此紧急任 0.89 0.65 0.41 应用启动务启动 DiskOnChip1.20 1.13 1.05 盘挂载 普通应用模 取决于具体 块加载模块大小 结束语5 [5]文中分析比较了 的各种启动方式、VxWorks, 人民邮电出版社京 , 2004 :选择一次引导启动作为快速启动的启动方案并通 , [4] Tornado 2.0 Online Manuals [DB/OL]. WindRiver System 过组件裁减和程序动态加载的方法解决一步启动 Inc., 1999 中映像大小受限的问题但文中并未涉及具体 。CPU 岳小东基于实时嵌入式系统的 构建技术微电 . BSP [J]. [5] 架构下的具体程序的优化只是给出了 体系下 , X86 子学与计算机, 2006, 23( 5) : 105~107 一种快速启动的框架表 为此框架下测得的一些。2 具体启动时间参数。 作者简介 : 男硕士研究生研究方向为嵌入式系统王 前, ( 1983- ) , 。、 分布式计算。参考文献 : 吴 晓研究方向为嵌入式系统分布式计算 女副教授、。, , 李方敏高级程序设计 北京[1] . VxWorks [M]. : 清华大学出男博士研究生研究方向为嵌入式计算与普适计李长德 , , 版社, 2004 算。[2] John R Levine. Linkers and Loaders [M]. Morgan - Kauff- 吴勇英 女硕士研究生研究方向为嵌入式系统分布计 , , 。man, 1999 算。 陈智育温彦军陈琪程序开发 实 践 北[3] , , . VxWorks [M]. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 上接第 页 (196 ) 1995: 1~34 性构件能够和市场上存在用各种语言编写: JECM 白涛一种基于软件总线可重用构件框架的设计与实现. 的构件进行交互使得多种语言构件能够运用于同 , [2] 微电子学与计算机[J]. , 2005, 22( 1) : 47~49 一个系统中模型使用基于底 可移植性; ( 4) : JECM 编程思想 侯捷译北京机械工业出 Eckelb. Java [M]. , . : 层实现的方法来实现二进制代码的可移植性。 [3] 版社, 2002 Horstmanncs. Core Java2: volume - fundamentals [M]. [4] Prentice Hallptr, 2000 结束语5 孙巍反射机制在可重构 框架中的应用 计. Java Web [J]. 构件模型提出用嵌套有限状态机来对嵌 JECM [5] 算机工程与应用, 2005, 36: 92~94 入式构件的行为进行建模并用状态设计模式来实 , 阎宏与模式电子工业出版社. Java [M]. , 2002, 10 现有限状态机这种设计方法很大地支持了软件复 , [6] 用并参考通用构件的性能利用 语言的优势, , Java , 实现了构件的动态性持久性和交互性对 技 、, JAVA 术应用到嵌入式领域做了有益的探讨。 作者简介 : 沈 娟女硕士研究生研究方向为分布式计算, ( 1983- ) , 。 与嵌入式计算技术。 吴 晓女教授研究方向为分布式计算与嵌入式计算 , 。。参考文献 : 张成栋 男研究方向为无损检测。。[1] Steve McConnell. Coding complete [M]. Microsoft Press,
本文档为【X86架构下VxWorks快速启动分析与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_212655
暂无简介~
格式:doc
大小:33KB
软件:Word
页数:10
分类:生活休闲
上传时间:2018-01-18
浏览量:58