用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

基于PSOS的TM1300应用系统中的BSP研究

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:56:02
【本文由PB创新网为您整理】
摘要:通过在应用软件与板级支持包BSP之间加一层库函数的方法较好地解决了应用程序与板级支持包函数间的通信问题,减少了板级支持包函数的维护复杂度,从而为嵌入式系统板级支持包的实现提供了一个有价值的思路。

    关键词:PSOS;BSP;库函数

板级支持包BSP属于嵌入式系统的一部分,它相当于一个板级驱动程序,实际上也是用来描述运行于嵌入式微处理器上的软件与外围芯片之间接口的一个软件层。

本文针对基于PSOS嵌入式操作系统的PHILIPS TM1300多媒体应用系统PCI卡,提出了一种BSP 的函数组织方法。TM1300的核心是32位处理器,能够进行32位的线性寻址,寻址能力可达到4GB。TM1300核心处理器采用的是VLIW 超长指令字结构,可以在每一时钟周期内同时进行5个操作,每秒可完成70亿次指令运算。TM1300支持16kB的数据高速缓存和32kB的指令高速缓存,而且数据高速缓存是双端口的,允许同时双向接入。方便的PCI接口允许其在主机(PC)视频卡上显示图像。从TM1300来看,只有DSPCPU和ICP单元可以对PCI接口进行操作,而从PCI来看,SDRAM和绝大部分处于MMIO空间的寄存器都能够被外部PCI初始化器件所访问。图像协处理器ICP则可给活动视频提供一个用于显示支持的交迭窗口仲裁号码。TM1300使用IIC串行总线来配置其外围器件,并可以在主从两种模式下工作。此外,它还拥有一个实时多任务单(或多)处理器操作系统内核,并采用基于优先级的任务调度方式,此外,它还支持可抢占的、以及基于时间片的调度策略。

1 PSOS在系统中的地位

1.1 DEVICE LIBRARY

将PSOS的模块化技术与板级支持包BSP相结合可使BSP把上层模块及应用软件与底层硬件分开,从而保证开发不受处理器及外围硬件更新的影响,而只需对BSP 中的设备驱动程序做简单的改动即可使其适合于更新或全新的硬件。这在很大程度上减少了开发该系统多个版本的工作量。另外,由于BSP把PSOS的内核与目标机硬件隔离开来,从而使操作系统内核完全与设备无关,保证了内核的稳定性,同时提高了应用系统的可靠性。

对于视频接口中的A/D部分,SAA7114的位置可以由SAA7113来代替,这一硬件上的改动将只体现在板级支持包的变化上,而其上层应用软件不受影响。

BSP包括一个或多个例程,可用来定义特定电路板上的外围芯片,以提供针对这些芯片的基本操作功能,并完成对外围芯片的初始化及各寄存器的设置等工作,图1所示是其系统结构。图中,BSP一方面用于完成外围芯片的初始化;另一方面,在需要时改变各芯片的内部设置,从而使硬件按用户的要求工作于不同的状态。而应用程序、I/O管理器及操作系统内核则通过BSP来对PCI卡硬件进行操作。

1.2 PSOS BSP

必须清楚:PSOS BSP 与TriMedia DEVICE LI-BRARY BSP是不同的。PSOS BSP包括了设备驱动drv_conf.c只包含这些驱动的开关控制的PSOS 启动码、 PSOS 配置码和访问硬件库(例如:在系统定时及安装中断句柄时所需的库)。它们是PSOS的一部分,而不是应用程序的一部分。PSOS BSP应当适合PSOS操作系统的配置(在sys_conf.h中配置)。由于要把这些特定应用程序的配置参数编译到PSOS 内核中,所以,每次应用中都应该重新编译。而不可能用库来实现。javascript:window.open(this.src);" style="cursor:pointer;"/>

2 BSP的编写及实现

一般情况下,BSP对板卡中每个芯片的操作都通过多个函数来完成。如果应用程序对板卡的操作都直接通过调用BSP中的函数来完成,那将很不利于源程序的调试。更重要的是,应用程序的可移植性会降低,如果硬件作了修改,应用程序可能也得做一定的变动,这样就不能达到有效使用BSP的目的。所以,本文提出把能完成某个特定功能的函数封装在一个库文件中,并放在应用程序与BSP之间。这样,应用程序通过调用少量的库函数就可控制硬件以实现不同的功能。当底层硬件变动时,只需修改底层实际执行的函数及相应的库函数,而应用程序基本不必修改,从而缩短了开发周期。

另外,BSP中有对各个外围芯片操作的多个函数。因此,针对一个可升级的系统,如何高效地管理这些函数就显得尤为重要。在SDE2.2开发环境中,它采用一个称为注册表的模块来管理这些函数。该模块的内部结构对开发人员是透明的,它的功能就是将BSP 中的函数进行注册,当其他程序需要调用这些函数时,可通过检索注册表来完成。

2.1 编写BSP函数

对每个芯片来说,都应当有初始化函数,且都有为实现不同功能而对各寄存器设置的函数及读取各状态寄存器内容的函数等。在初始化函数中,要完成对各个配置寄存器的初始化设置以使其能在缺省状态工作。根据应用程序对硬件的不同要求,配置函数应能完成各种功能,如工作方式的调整、中断设置、寄存器设置等。而状态读取函数可以获取各个芯片当前

[1] [2]  下一页

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:23,015.63000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号