首 页 用户登录 | ![]() |
|||
|
|||
按字母检索 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
按声母检索 | A | B | C | D | E | F | G | H | J | K | L | M | N | O | P | Q | R | S | T | W | X | Y | Z | 数字 | 符号 |
|
![]() |
您的位置: 5VAR论文频道 → 论文中心 → 理工论文 → 电子通信 |
|
|||||
Bootrom功能改进经验谈 | |||||
收集整理:佚名 来源:本站整理 时间:2009-01-10 23:52:33 点击数:[] ![]() |
|||||
[本篇论文由上帝论文网为您收集整理,上帝论文网http://paper.5var.com将为您整理更多优秀的免费论文,谢谢您的支持] 关键词:Bootrom 嵌入式实时操作系统 FTP VxWorks是美国WindRiver System公司于1983年设计开发后个运行在目标机上的高性能、可裁减的嵌入式实时操作系统(RTOS)。它是一种功能强大而且比较复杂的操作系统,包括了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几部分。VxWorks为程序员提供了高效的实时多任务调度、中断管理、实时的系统资源以及实时的任务间通信。其核心功能主要有微内核、任务间通信机制、网络支持、文件系统和I/O管理、POSIX标准实时扩展以及C++等其他标准支持。在各种CPU平台上提供了统一的编程接口和一致的运行特性,尽可能地屏蔽不同CPU之间的底层差异。应用程序员可以将尽可能多的精力放在应用程序本身,而不必关心系统资源的管理。VxWorks以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精类技术及实时要求极高的领域中,如卫星通信、弹道制导、飞机导航等。 设计师通常利用VxWorks开发Bootrom代码。Bootrom相当于PC机中的BIOS,它完成对加载过程中所需设备的初始化及驱动;然后,通过某种可选择的通信手段(如网口、串口),将VxWorks内核加载。VxWorks内核相关于PC机上的操作系统,如Linux、Windows。此外,Bootrom还提供了一些辅助功能,如地址内容查看、地址内容修改和Bootrom菜单显示信息控制等功能。但是,在实际应用中,这些功能不够丰富,便利性不足。本文介绍了几点笔者在工作中行之有效的改进Bootrom功能的经验。 Bootrom一般以二进制文件的方式保存在非易失怀存储介质,例如Flash、CF卡、EPROM中。通常需要仿无休止器、烧结器或JTAG工具等才能将代码烧入这类介质,在实际应用中非常不便。以Flash为例介绍如何在线更新Bootrom。 首先,为了做到故障保护,防止在更新过程中发生更新文件出错、断电等灾难性故障,Bootrom的数据必须在更新之前备份在Flash的另一区域。因此,Flash中必须存在两片物理区域,暂且命名为PA和PB,每片512KB(假设Bootrom文件小于512KB)。两片物理区域的起始地址可以互换,其中一片区域的起始地址必须为系统的上电启动地址,这个地址因处理器而异,例如,PowerPC体系结构的处理器的启动地址一般是0xfff00100,而MIPS体系结构的处理器的启动地址是0xbfc00000。在逻辑上,以启动地址开始的区域为主Boot区,另一片区域为备Boot区。 为了实现地址互联换,在CPU模块和Flash芯片之间,增加了一片CPLD(可编程逻辑器件)和一个跳线或拨号开关,开关信号JP输入到CPLD。CPU访问Flash的地址信号和片选信号经过CPLD进行地址互换,再到Flash芯片。如果不跳线(默认情况),JP信号为高,则PA的起始地址为启动地址,PA为主Boot区,PB为备Boot区;否则,JP信号为低,PB的起始地址为启动地址,PB为主Boot区,PA为备Boot区。默认情况下,PA为主Boot区。如图1。 如果系统中有两片Flash芯片,可以不用CPLD,选用另一种地址互换方式,如图2。两个二选一逻辑实现两片Flash片选信号(CS)的互换,从而实现了地址的互换。 地址互换机制屏蔽了PA和PB实际物理位置的差别,给底层软件提供了一个统一的接口,带来的好处不言而喻。Bootrom数据总线是从主Boot区备份到备Boot区,系统总是从主Boot区启动。 其次,编写Flash擦写驱动函数。Flash是一种读写非对称器件,读数据与普通器件一样,比较简单;而写必须根据芯片厂商提供的算法,先擦除欲写入数据的区域,以扇区(Sector)为单位,然后写入数据。函数flashUpdate(char *sourceAddr,char *destAddr,int Length)集成了擦除和写入两个步骤。 再次,在文件bootConfig.cr Bootrom操作接口函数bootCmdLoop()中增加新命令“u”(update的编写)。 switch(*(pLine++)){ …… case 'u'; /*更新Bootrom*/ …… /*下载更新代码并更新*/ break; …… } “u”命令的实现流程如图3。除了flashUpdate()之外,其它函数都由VxWorks本身提供。如果更新挫败,则改变JP设置,从备份Bootrom启动,再次更新Bootrom或运行应用软件。 VxWorks的Bootrom用户命令缺少重启功能,给调试和实际应用带来诸多不便。与Bootrom在线更新方法相同,增加这项功能其实并不难,只要在函数bootCmdLoop()中增加新命令“r”(reset的缩写),在命令中调用系统重启函数sysReboot()即可。SysReboot()由设计师根据系统的不同自行编写。 Switch(*(pLine++)){ …… case 'r'; /*重启系统*/ sysReboot(); break; …… } 举一反三,还可以根据需要在Bootrom中增加许多自己的命令。完成之后,不要忘了在Bootrom命令解释函数bootHelp()中添加新增命令的用途、用法等帮助信息。 3 自动运行应用软件 在实际应用中,一般将上层软件和VxWorks映象链接在一起,暂且称之为应用程 Tags: |
提供人:佚名 | |
【返回上一页】【打 印】【关闭窗口】 |
![]() |
5VAR论文频道 |
![]() |
5VAR论文频道 |
![]() |
关于本站 -
网站帮助 -
广告合作 -
下载声明 -
网站地图
Copyright © 2006-2033 5Var.Com. All Rights Reserved . |