新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > VxWorks移植到AT91RM9200的BSP定制过程

VxWorks移植到AT91RM9200的BSP定制过程

作者:时间:2010-12-14来源:网络收藏


3.2.5 修改sysLib c

sysLib.c是初始化的核心代码。在这个文件中,必须复位所有的硬件,使其处于初始化状态,保证后面开中断后不会产生假中断。这个文件包含了由目标机体系结构决定的、与系统有关的C程序。这些C程序提供板级接口。基于这些接口,和应用程序的构造与系统无关。该文件的功能包括:定义了RRAM、SRAM、ROM、外部片选芯片的物理地址和虚拟地址;定义中断优先级寄存器中各个位对应的优先级;调用sysHwInit()初始化串口和网口,安装IRQ/SVC中断堆栈分配程序;总线中断功能等。本文件中有两个重要的函数:sysHwInit()和sysHwInit2()。sysHwInit()的代码如下:


sysHwInit2()用来连接系统中断,安装ISR,进行其他配置。它在初始化系统时钟时,由sysClkConnect()调用,主要用来初始化中断库和中断驱动,安装系统时钟和辅助时钟的中断以及串口等设备的中断。

4 编译生成映像

系统完成后,有两种编译方式:一种是在Tornado下进行编译,生成映像文件;另一种是直接用Make工具编译,但要写好脚本文件。装载到目标板中的映像取决于使用的下载方式,其中主要包括以下几种:

。这是基于RAM的映像,VxWorks需要通过目标板上的引导程序从串口或网口把它下载到目标板的RAM中运行。在Tornado开发环境下,这是一个默认选项,主要用在调试阶段。使用宿主机上的WindSh工具和符号表。
②VxWorks.st。这也是基于RAM的映像,需要通过引导ROM把VxWorks映像下载到目标机内存中才能执行。该对象文件内置符号表。
③VxWorkS_rom。这是一个非压缩、基于ROM的映像。在这个对象文件执行前,先把自己拷贝到目标机RAM中。这种类型的映像通常在启动阶段速度比较慢,因为代码在ROM中执行,但执行阶段比ROM驻留型的映像要快。
④VxWorks.st_rom。这是基于ROM压缩的VxWorks映像。它在执行前先把自己解压并拷贝到目标机RAM中执行。
⑤VxWorks.res_rom。这是ROM驻留型的非压缩VxWorks的映像。它在执行前把数据段拷贝到目标机RAM中。这种类型的映像在启动阶段比较快,但在目标机上执行的速度比基于ROM类型的映像慢(因为CPU访问ROM比访问RAM要慢)。通常在RAM空间比较小的目标机上使用这种类型的映像。

5 需要注意的问题

首先,应该避免在romInit.s中进行过多的初始化操作。该史件中只是进行必要的最小硬件初始化,大部分硬件的初始化都是在sysHwInit()中完成的。另外,romTnit.s中的代码不应当被其他模块或函数调用。

其次,应该避免sysAlib.s中工作太少。开发人员通常错误地认为在romInit.s里初始化过的设备不需要在sysAlib.s中重新初始化。实际上,VxWorks映像并不认为它是由引导映像程序引导的,因此,它必须重新设置和初始化所有它自己需要使用的设备。sysInit()是该文件中最主要的一个函数,也是第一个函数。该例程中很多工作与romInit()是相同的,目的是保证内核映像在运行与冷启动时,软硬件环境高度一致。

最后,对特定的BSF。驱动程序的修改,只能在特定的目录下。此设计中目录为target/config/integra-tor920t,不要直接在target/src/drv以及target/h/drv中修改。只有风河公司的源程序才能存放在这些目录下。

6 结论

本文在介绍BSP的概念、作用和vxWorks映像分类以及系统启动流程的基础上,以Atmel公司生产的ARM9处理器为例,重点介绍了VxWorks的BSP设计中需要修改的几个重要文件,最后提出了需要注意的问题。尽管目标板硬件不同,BSP的实现也不尽相同,但基本思想是一样的。本设计对各类开发板的系统和后续的应用程序开发有一定的参考价值。

本文引用地址:http://www.eepw.com.cn/article/151196.htm

上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭