空心雨毕业论文网提供毕业论文、职称论文、硕士论文、计算机论文等的代写服务,同时还提供各种期刊论文的发表。如果你有需要,请联系我们QQ:5599630;电话:13350726595;E-mail:singlehearted@vip.qq.com
RSS
 
当前位置 :空心雨毕业论文网 >> 工学论文 >> 电子机械 >> 正文

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

来源:网络转载 作者:okxy168.com 时间:2008-01-10 浏览:1 字体:【

摘要:通过在应用软件与板级支持包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中有对各个外围芯片操作的多个函数。因此,针对一个可升级的系统,如何高效地管理这些函数就显得尤为重要。在SDE2.2开发环境中,它采用一个称为注册表的模块来管理这些函数。该模块的内部结构对开发人员是透明的,它的功能就是将BSP 中的函数进行注册,当其他程序需要调用这些函数时,可通过检索注册表来完成。2.1 编写BSP函数对每个芯片来说,都应当有初始化函数,且都有为实现不同功能而对各寄存器设置的函数及读取各状态寄存器内容的函数等。在初始化函数中,要完成对各个配置寄存器的初始化设置以使其能在缺省状态工作。根据应用程序对硬件的不同要求,配置函数应能完成各种功能,如工作方式的调整、中断设置、寄存器设置等。而状态读取函数可以获取各个芯片当前的状态并返回给应用程序。由于在这些底层函数中要用到大量的位运算,所以建议在头文件中多使用宏定义以增加程序的可阅读性。为了利用上述思想,这里所有的函数名都使用函数指针变量来表示。2.2 每个芯片定义一个结构体在该结构体中,一般首先定义对该芯片操作的各函数的函数指针,再定义对应的结构体变量,然后将各函数添加到该结构体变量中。这样,关于每个芯片的函数都包含在各自的结构体中,便于程序的阅读、调试及维护。编译连接产生myboard_bsp.o文件时,可用此文件替换开发系统中Trimedia安装目录下tmconfig无扩展名文件中对BSP的指定,也可以在编译应用程序时特别指定。为了保持BSP对用户应用程序的透明性,设计时应定义相应的库函数。如打开SAA7113芯片的函数SAA7113.OPEN,关闭该芯片的函数SAA7113.CLOSE等。一般情况下,用户应用程序通过调用库函数来实现对该芯片的操作而不关心底层如何工作。因而需要在库函数中定义一个同样类型的结构体变量指针。在库函数中,应在注册表中检索前面对应的结构体重对应函数指针,并将该地址赋值给库函数中定义的该结构体的函数指针变量,这样,就可通过调用相应的BSP函数和进行必要的中断操作来完成其功能。在应用程序执行过程中,如果需要对硬件进行操作,只需调用相应的库函数即可,库函数通过BSP函数指针实现对底层函数的调用。如果有必要,底层函数执行完后可返回硬件当前的状态。这样的结构不仅可减少应用程序代码,也可使应用程序的结构更加清晰。同时还可使整个操作流程层次分明,对BSP的维护也更加方便。当系统升级时,如果需要更改硬件的部分芯片,只需修改底层函数和所更改部分的函数即可。库函数也只需很少的更改,而应用程序不用更改或只需很少量的更改,这在很大程度上提高了应用程序的可移植性。

阅读更多内容1 · 2 · 下一页>>
1
最新评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
      本站是由一个众多学科的博士群体组建而成,主要创办者为成都各重点高校博士。本论文网内理工科写手均为博士,文科类写手大部分为博士,且领域涵盖广泛,写作势力强大,若有部分专业,没有相关的写手,我们给你寻找合适的写手! 依托强大的人力资源,我们本着诚心交流的宗旨,专门为您排解写作上的难题。从在科研及实践工作中稳扎稳打的经历,我们具备了研究问题,解决问题的能力。论文写作和论文发表,作为教育体系的一个重要环节,我们确实有能力给您解决好问题,正所谓,真金不怕火来炼,请相信我们的势力,没有把握的事,我们不会做!
      本站受多家期刊委托,其中包括国家级中文核心期刊目录正刊,CSSCI目录正刊,增刊,省级以上公开出版的优秀期刊正刊,本站负责论文推荐发表,加急1个月即可发表。本站负责论文发表,不发表承诺退款!!目前主要负责法律,管理,经济,理工,农学,行政,医学,艺术,英语等类论文发表论文代写。详细期刊目录见本站相关内容。
赞助商链接