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

商品分类

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

基于嵌入式Linux的PMP体系筹划与实现

发布日期:2011-05-15

    本文先容了以TI的DM320为主芯片,基于嵌入式Linux的PMP体系的筹划与实现。筹划实现包括软件和硬件两个部分,此中重点在软件部分。采取本筹划方案的PMP体系可以实现高质量的音频、图像、视频结果,以及其他一些资助结果。

    PMP体系简介

   
便携式多媒体播放器(PMP),也便是通凡人们所说的MP4,已成为继MP3以后斲丧类产品的一个新热门。PMP的紧张长处是:携带方便,可以大概直接播放高风致音/视频文件;也可以欣赏图像,以及作为移动硬盘、数字银行利用;别的,另有FM、游戏等结果。PMP播放器不但须要对机体大小有所限定,更告急的是须要一种压缩屈从更高、画面质量更高的视频压缩技能,以及干系编解码芯片。本文先容了此PMP体系的软、硬件筹划,重点在软件筹划,此PMP体系方案如今已经进入量产阶段。
  
 
   PMP体系的硬件筹划

    现阶段PMP内部内核架构,大多都是采取CPU搭配DSP的要领。此中,DSP认真编/解码变乱;CPU则是针对文件办理、存取,以及利用接口、周边组件的控制等举行处理惩罚处罚。别的,还需思量整合硬盘、存储卡及LCD表现屏等组件,以及与外部USB接口、操控按钮间的搭配等标题。

    为切合上述恳求,PMP的筹划须要内建视频编/解码芯片,作为仿照与数字两种信号间转换之用。别的,筹划还须要思量:用来连接视频译码器与DSP的总线;LCD表现屏的驱动电路;IDE接口与硬盘控制芯片间的相划一。

                                                          图1 DM320的布局图

    本体系团体方案是创建在TI DM320底子之上的。DM320 是一款支持视频编/解码的带有双CPU核的处理惩罚处罚器。针对多媒体器件做专门的处理惩罚处罚, 它可以直接支持视频输入/输出, 可以方便的扩展音频的输入/输出, 支持USB ,SDRAM,FLASH,CF/SD/MMC/MS/MS Pro 接口。DM320的布局图,如图1所示。

    TI DM320将C5409与ARM926整合,即将CPU与DSP同时集成在DM320内核内。芯片采取32MB或64MB容量的SDRAM,以及4MB的闪存,用作加载与存放利用体系。DM320本身已内建LCD控制器、USB2.0 OTG接口控制器,同时让CCIR-656格局信号颠末总线在视频译码芯片与DM320间发送。由于NTSC/PAL编码器也被整合在此中,因此也可直接举行复合视频输出。


                                                          图2 DM320硬件体系的团体框架图

    另一方面,DM320还可支持CCD/CMOS感光组件的连接,使得将来PMP要导入DSC、DV等更为容易。敷衍存储卡的兼容性部分,除现阶段主流的CF、SD及MMC外,还包括Memory Stick。别的,此芯片还提供2组RS232串行端口、1组JTAG接口,能支持更多的外围配置。DM320硬件体系的团体框架图,如图2所示。


                                                                  图3 PMP软件筹划框图


    PMP体系的软件筹划

    由于要分身到高质量的音视频结果、多种外设和有限的体系资源,PMP软件体系的筹划变得相对巨大。体系筹划将软件分为三层布局,如图3所示。

    该体系的最底层是利用体系层,此中包括bootloader引导步调,紧张完成体系从FLASH的启动,LOGO的表现,以及OS的引导。嵌入式Linux紧张包括得当在TI DM320上运行的Linux利用体系,以及种种外围配置的驱动步调。第2层为CODEC和MMI核层,MMI核包括第3层主GUI和种种应用步调所依赖的种种框架结讨论数据布局,如窗口办理,定时器办理等。CODEC部分包括音频的编解码步调(紧张由ARM实现)和图像的编解码步调(紧张由DSP实现)。最上层为主GUI和种种应用步调。应用步调包括:FileManager(用来欣赏存储器中的文件),VideoPlayer(播放视频文件),AudioPlayer(播放音频文件),ImageViewer(欣赏图像),FM(收音机),Games(游戏),Resumes(重新播放音/视频文件)。

    嵌入式Linux利用体系

    本体系采取的Linux内核是对从Internet上下载比较稳固的Arm-Linux内核举行相应的修改,并编写干系外围配置的驱动步调,使之成为一个得当TI DM320开辟的利用体系环境。之以是称为嵌入式,是由于其利用体系运行的环境并不是平常的PC,并且嵌入在非PC构架的电子配置中。

   
关于内核修改Kconfig文件

    Kconfig文件是用来对你所要加载内核内容举行配置的文件。比如,当在控制表面上敲入make menuconfig,就会看到内核配置的窗口,可对此中的内容举行选择。选择[*]表现把此内容编入内核,选择[M]表现把此内容当成模块编译。Linux支持动态加载内核模块的结果,以致可以在运行利用系同一段时间后再加载内核模块。由于DM320框架并未参加内核中,以是我们须要把DM320框架参加内核。起首,就要在内核目次下./arch/arm/Kconfig参加DM320的配置选项,如许才华在实行make menuconfig配置内核时看到DM320框架。修改的部分内容如下所示:
choice
prompt "ARM system type"
default ARCH_DM320_20 file://在配置ARM体系时,默认的便是DM320框架。
source "arch/arm/mach-dm320-20/Kconfig"把DM320框架下的配置选项也引入。
  
同时,去失其他CPU框架。如:
#source "arch/arm/mach-clps711x/Kconfig"
#source "arch/arm/mach-integrator/Kconfig"
此中,“#”表现此行内容为表明内容。

着末,便是要把内核配置选项中对DM320开辟有效的项选进来。比如:
source "drivers/char/Kconfig"
if (!ARCH_DM320_20)
source "sound/Kconfig"
endif file://选择开辟字符配置的驱动,而不须要声音的支持。

由于要把CODEC编入内核,以是我们还要参加支持CODEC的配置选项:
source "codecs/modules/Kconfig"

同时,要是我们要参加一个新外围配置,也须要在Kconfig文件中参加映射的内容。比如说,要参加一个三星的4英寸TFT LCD的驱动,我们可以修改./drivers/char/Kconfig文件,并参加以下内容:

config DM320_SAMSUNG_ 4_LCD
tristate "DM320 SAMSUNG 4.0 inch 16:9 TFT LCD"
depends on ARCH_DM320_20 && BOARD_400H
default y
help
This driver provides support for SAMSUNG 4.0' 16:9 TFT LCD for DM320.

    此中,config DM320_SAMSUNG_4_LCD表现增长一个新的配置入口。一旦这个配置选项当选中就会在./include/linux/autoconf.h:有:#define CONFIG_DM320_SAMSUNG_4_LCD 1的定义。

    如许的话,我们在整个内核源码树中都可以利用CONFIG_DM320_SAMSUNG_4_LCD来举行特定的选择。

    在tristate "DM320 SAMSUNG 4.0 inch 16:9 TFT LCD"中,引号里的内容为出如今配置选项中的提示笔墨。tristate表现三态,意思是除了可以选择[*]、[ ]外,还可以选择[M],表现把当前内容当成模块编译。

    depends on ARCH_DM320_20 && BOARD_400H表现要是前面配置平台框架时选择了ARCH_DM320_20,并在选择型号时选择了BOARD_400H,我们就可以看到这个敷衍三星4英寸TFT LCD的配置选项。

    default y表现默认把此驱动编入内核。help的内容为当我们对内核举行配置时,选资助所看到的内容。

   
Makefile文件

    大抵地说,Makefile是用来举行项目配置和办理的。我们要把Linux编译、链接着末天生可实行的内核映像,Makefile文件是必不可少的。

    在该PMP筹划开辟中,只须要把外设驱动模块参加相应的内核源码树就可以完成对Makefile文件的修改。以参加三星4英寸TFT LCD驱动为例,只须要在./drivers/char/Makefile参加如下内容即可:

    obj-$(CONFIG_DM320_ SAMSUNG_4_LCD)  += dm320_lcd_samsung4.o

    PMP体系筹划中两个必须的驱动以及要过细的标题

  
  LCD驱动步调 

    在一个PMP配置中,LCD表现屏是必备的。在LCD驱动步调的筹划进程中,紧张是要选好时钟源、分频系数以及时钟极性。比如在DM320中,时钟控制器有以下几个外部输入:PCLK、SYSCLK、MXI、M48XI,此中除了M48XI外别的均选择27M外部晶振。LCD的时钟频率DCLK在本体系中是由VENC(Video Encoder Clock)确定,而VENC又可以通过体系的PLL分频而确定,以是提及紧张选好时钟源和得当的分频系数,然后通过设置VENC的寄存器就可以设置时钟的极性。

   
FrameBuffer驱动

   
FrameBuffer是把显存抽象成一个配置,通过对这个配置的读写就等同于直接对显存举行利用。这种利用是抽象的、同一的。用户不必体贴显存的物理位置、换页机制等细致细节,这些都是由FrameBuffer配置驱动步调来完成的。 FrameBuffer映射的源文件在linux/drivers/video/目次下。全部的抽象配置文件作为fbcon.c与种种显卡驱动步调干系的源文件放在该目次下,如笔者所举行的针对DM320的FrameBuffer源文件dm320fb.c。在源文件我们要设置相应屏幕的长、宽以及每一个像素点的位数等等,另有一些与DM320 OSD(On-Screen Display)干系的寄存器的设置。由于涉及内容较多,在此不再赘述。
  
    
结语

  
本PMP方案筹划的产品已经进入量产阶段,颠末大量的用户测试,证明白整个筹划是确切可行的。同时,其筹划思路敷衍其他雷同产品如车载GPS,都有肯定的参考价格。

    参考文献:

  
1. Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman,LINUX DEVICE DRIVERS. O'REILLY ,东南大学出版社(影印版),2005年6月第1版
   2.Texas Instruments, TMS320DM320 CPU and Peripherals Vol-1a
   3. 谭磊, 基于嵌入式LINUX 的智能手机体系筹划,电子技能应用,2004年第12期
   4. 倪继利,Linux内核阐发及编程 电子财产出版社,2005年9月第1次印刷