您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

利用TriMedia注册表和成员办理器实现BSP

发布日期:2011-04-20

 

    PNXl300是Philips公司推出的,用于视频编解码的TriMedia DSP系列产品中的一种。它的内核处理惩罚器采取VLlW(超长指令字)布局,主频可以到达200 MHz。它针对数字视频和音频应用举行了布局优化,集成有视频输入(VI)和视频输出(VO)单位,音频输入(AI)和音频输出(AO)单位以及通讯线路接口等外围配置。PNXl300另有专用多媒体指令集,可以充分利用其硬件布局体系的特性,大大进步视频、音频数据的处理惩罚速率。
 
      板级支持包(BSP)属于嵌入式体系的一部分,它是运行于微处理惩罚器上的软件和外围元件(芯片)接口的软件层。一个完备的BSP必要用到TriMedia注册表和成员办理器。

      本文针对以PNXl300为内核CPU的嵌入式体系,利用TriMedia注册表和TriMedia成员办理器,实现了一种BSP函数构造及其和上层应用步伐通讯的要领。在此底子上,搭建起一个基于MPEG-4标准的网络视频编码体系。

      1 原理和要领

      在TriMedia的软件布局中,板级支持包是和硬件接口的最底层软件层,它提供TriMeclia DSP和外围元件之间的连接函数。BSP通过I2C总线对外围芯片的各个寄存器举行控制。它一方面完成外围芯片的初始化,另一方面,在必要时变化各芯片的内部设置,从而使硬件按用户的请求事变于差别的状态。

      利用BSP最大的长处是:把上层应用步伐和底层硬件退出,包管了开辟不受主处理惩罚器及外围硬件更新的影响,只需对BSP中的配置驱动步伐做大略的窜改,便可使其得当于更新的硬件。

      Trimedia的软件布局包括两个紧张的库:注册表(Registry)和成员办理器(Component Manager)。应用这两个库,可以为标准配置库创建板级支持包(BSP)。

      1.1 TriMedia注册表

      Trimedia注册表为体系提供了存储和检索信息的一样平常要领,它使得上层配置库可以找到特定板子的信息。注册表是一个分层布局的树,它由目次和数据箱构成。这些目次和数据箱都被视为入口。入口可以是字符串、整数值大概任意用户数据。

      注册表用一个字符串情势的“关键字”来存储和检索信息。

      1.2 TriMedia成员办理器

      TriMedia成员办理器为体系提供一个依赖于硬件平台将信息写入注册表的要领。可以把一段必要在主函数之前运行的软件叫做一个成员,如许定义的成员包括板、芯片、Flash内存等。一个成员可以被看作一个黑匣子,大概它的运行必要其他一些成员在它之前先运行,那么这些在它之前先运行的成员就被视为该成员的输入。一个成员大概会输出一些它本身的属性,而这些属性被视为该成员的输出。这些输入和输出都被视为标记并存储在注册表中。

      成员办理器依据成员列表、相应的输入和输出,创建一个依赖干系树,然后它根据该依赖干系树一个接着一个地运行各个成员。成员办理器可以包管在其他依赖于本成员的成员运行前,先得当的初始化该成员。大略说,TriMedia成员办理器提供了一种控制体系初始化次序的机制。

      本文中,将板级支持包作为一个成员来写入注册表。BSP是第一个要运行的成员,以是它不必要任意的输入,但是很多成员都依赖于它,因此板支持包有一个输出标记叫做“bsp/toardID”。

      2 体系软件计划及实现

      在本文中,体系软件计划采取了层型软件布局,应用步伐并不是直接通过调用BSP中的函数来对硬件举行操纵,而是通过调用多少配置库函数实现对底层硬件的操纵。体系的软件布局如图1所示。如许构造体系软件框架的长处是:使得应用步伐布局大略明白,易于步伐调试;当底层硬件必要窜改时,应用步伐险些不消做修改,只必要修改相应的BSP函数以适应新的硬件。

ic72消息中间

      本文采取TriMedia的注册表和成员办理机制来对BSP函数举行注册和办理,上层的Tri-Media配置库函数,通过检索注册表来调用某个芯片的多少底层BSP函数完成特定的成果。这就实现了BSP和上层配置库的通讯。

      BSP的实现要领如下所述。

      ①对每一个芯片定义一个函数指针表和成果布局体。在这个定义的布局体中,包括了对该芯片的初始化、配置、结束等操纵的各个函数指针。比方,对视频输入A/D转换芯片定义一个布局体变量Board_vi,在这个布局体中,包括了Board_vi_Init、Board_vi_Term、Board_vi_config等函数指针,另有为实现差别成果而对该芯片寄存器设置的函数指针,以及读取状态寄存器内容的函数指针,用于对该芯片举行全面的操纵。

      ②将BSP作为一个成员由成员办理器初始化。本文中,将BSP作为一个成员由TriMedia成员办理器控制,为了让成员办理器找到对当前板子的支持包,必须在编写BSP时间,用到如许一个由TriMedia提供的宏:TSA_COMP_DEF_()_COMPONENT(myBoard,TSA_COMP_BUILD_ARG_LIST_1("bsp/boardlD”),Board_actlvate)。这个宏可以把一个成员的输出标记导出,如许成员办理器就可以把BSP作为一个成员而找到。在这个宏中,第一个参数指的是将要被定义的成员的名字,第二个参数报告成员办理器,输出的标记叫做bsp/boardID,第三个参数是板激活函数,成员办理器通过调用这个函数初始化该成员,并注册全部BSP中支持的函数。

      ③编写板激活函数。板激活函数起首检测当前BSP是否立室当前板子,这就要通过I2C总线读取启动EEPROM,这部分代码重要用iicReadReg API函数来编写.从而读出并比较boardlD,以果断是否立室。要是立室则启用当前BSP,对BSP中全部支持的外设举行注册。倒如对上文所提到的视频输入A/D转换芯片成果的注册就通过tsaBoardRegisterVI(0,&Board_vi)API函数来完成,这里只是将布局体变量的指针在注册表中举行了拷贝,并不是布局体自身的内容。上层的TriMedia配置库函数中有同样范例的布局体变量指针,配置库函数通过在注册表中检索该布局体变量的地点,将检索到的地点再赋给配置库函数中定义的布局体变量,从而实现了BSP和上层配置库的通讯,进而实现应用步伐通过调用配置库函数来完成对底层硬件的操纵。图2给出了体系的函数调用流程图。

ic72消息中间

      利用上述原理和要领,计划搭建了一个基于MPEG-4标准的网络视频编码体系,图3是网络视频编码体系原理框图。将征求的视频信号举行MPEG_-编码,体系可以将码流畅过网络发送到远端,也可以将输入视频在本地监督器上表现。主芯片采取的是TriMedia系列芯片PNxl.300,视频输入A/D转换器采取PhiIilps公司的SAA7114,视频输出D/A转换芯片采取Phllips.公司的SAA7121。

ic72消息中间

    事变进程是:经摄像机征求的一起模仿视频输入后,由视频解码芯片SAA7114转化成数字信号并送入PNXl300的VI(Video In)单位,VI单位将视频数据分成YUV4:2:2格局分别存储在SDRAM中。PNXl300对视频数据举行MPEG-4编码后,选择网络发送大概本地表现。在该视频编码体系中,利用了上文提到的要领编写BSP。比方对视频解码芯片SAA7114,为其创建函数指针和成果布局体,利用注册表机制对其成果举行注册,并将整个BSP作为一个成员来由成员办理器初始化,应用步伐只必要调用少数TrlMedia视频配置库函数,就可以对该芯片举行打开、征求、停止、封闭等操纵。经测试,该要领可以有效的构造对各外设操纵的各个函数,并为上层软件提供接口,有利于应用步伐的开辟,使得应用步伐布局越发清楚。

      结语

      板级支持包BSP在嵌入式体系中的作用是必不可少的,它作为上层软件和底层硬件之间的接口软件层,是必要分外赐与器重的。本文提到的编写和构造BSP函数的要领,是针对TriMedia软件结会商软件开辟环境而给出的,其注册表和成员办理器机制为BSP的编写提供了极大的方便,使得BSP布局清楚,整个软件框架层次明白。本文给出构造BSP的要领也具有一样平常性,对付其他嵌入式体系采取雷同的思路来构造应用步伐、库函数和板级支持包并处理惩罚其间的相互通讯,也会获取很好的结果。