基于PSOS的TM1300应用系统中的BSP研究
发布时间:2008/5/27 0:00:00 访问次数:453
摘要:通过在应用软件与板级支持包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 内核中,所以,每次应用中都应该重新编译。而不可能用库来实现。
2 bsp的编写及实现
一般情况下,bsp对板卡中每个芯片的操作都通过多个函数来完成。如果应用程序对板卡的操作都直接通过调用bsp中的函数来完成,那将很不利于源程序的调试。更重要的是,应用程序的可移植性会降低,如果硬件作了修改,应用程序可能也得做一定的变动,这样就不能达到有效使用bsp的目的。所以,本文提出把能完成某个特定功能的函数封装在一个库文件中,并放在应用程序与bsp之间。这样,应用程序通过调用少量的库函数就可控制硬件以实现不同的功能。当底层硬件变动时,只需修改底层实际执行的函数及相应的库函数,而应用程序基本不必修改,从而缩短了开发周期。
摘要:通过在应用软件与板级支持包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 内核中,所以,每次应用中都应该重新编译。而不可能用库来实现。
2 bsp的编写及实现
一般情况下,bsp对板卡中每个芯片的操作都通过多个函数来完成。如果应用程序对板卡的操作都直接通过调用bsp中的函数来完成,那将很不利于源程序的调试。更重要的是,应用程序的可移植性会降低,如果硬件作了修改,应用程序可能也得做一定的变动,这样就不能达到有效使用bsp的目的。所以,本文提出把能完成某个特定功能的函数封装在一个库文件中,并放在应用程序与bsp之间。这样,应用程序通过调用少量的库函数就可控制硬件以实现不同的功能。当底层硬件变动时,只需修改底层实际执行的函数及相应的库函数,而应用程序基本不必修改,从而缩短了开发周期。