PMP系统简介
便携式多媒体播放器"title="便携式多媒体播放器">便携式多媒体播放器(PMP),也就是一般人们所说的MP4,已成为继MP3之后消费类产品的一个新热点。PMP的主要优点是:携带便捷,就能直接播放高品质音/视频文件;也可以浏览图片,以及作为联通硬碟、数字建行使用;据悉,还有FM、游戏等功能。PMP播放器除了须要对机体大小有所限制,更重要的是须要一种压缩效率更高、画面质量更高的视频压缩技术,以及相关编解码芯片。本文介绍了此PMP系统的软、硬件设计,重点在软件设计,此PMP系统方案如今早已步入量产阶段。
PMP系统的硬件设计
现阶段PMP内部核心构架,大多都是采用CPU搭配DSP的形式。其中,DSP负责编/解码工作;CPU则是针对文件管理、存取,以及使用插口、周边组件的控制等进行处理。另外,还需考虑整合硬碟、存储卡及LCD显示屏等组件,以及与外部USB插口、操控按键间的搭配等问题。
为符合上述要求linux下载工具,PMP的设计须要内建视频编/解码芯片,作为模拟与数字两种讯号间转换之用。另外,设计还须要考虑:拿来联接视频混频器与DSP的总线;LCD显示屏的驱动电路;IDE插口与硬碟控制芯片间的沟通等。
图1DM320的结布光
本系统整体方案是构建在TIDM320基础之上的。DM320是一款支持视频编/解码的带有双CPU核的处理器。针对多媒体元件做专门的处理,它可以直接支持视频输入/输出,可以便捷的扩充音频的输入/输出,支持USB,SDRAM,FLASH,CF/SD/MMC/MS/MSPro插口。DM320的结布光,如图1所示。
TIDM320将C5409与ARM926整合,正式CPU与DSP同时集成在DM320核心内。芯片采用32MB或64MB容量的SDRAM,以及4MB的闪存,用作加载与储存操作系统。DM320本身已内建LCD控制器、USB2.0OTG插口控制器,同时让CCIR-656格式讯号经由总线在视频解调芯片与DM320间传送。因为NTSC/PAL编码器也被整合在其中,因而也可直接进行复合视频输出。
图2DM320硬件系统的整体框架图
另一方面,DM320还可支持CCD/CMOS感光组件的联接,促使未来PMP要导出DSC、DV等更为容易。对于储存卡的兼容性部份,除现阶段主流的CF、SD及MMC外,还包括MemoryStick。据悉,此芯片还提供2组RS232串行端口、1组JTAG插口,能支持更多的外围设备。DM320硬件系统的整体框架图,如图2所示。
图3PMP软件设计框图
PMP系统的软件设计
由于要兼具到高质量的音视频疗效、多种外设和有限的系统资源,PMP软件系统的设计显得相对复杂。系统设计将软件分为三层结构,如图3所示。
该系统的最底层是操作系统层,其中包括bootloader引导程序,主要完成系统从FLASH的启动,LOGO的显示pc 操作系统 嵌入式操作系统对比,以及OS的引导。嵌入式Linux主要包括适宜在TIDM320上运行的Linux操作系统,以及各类外围设备的驱动程序。第2层为CODEC和MMI核层,MMI核包括第3层主GUI和各类应用程序所依赖的各类框架结构和数据结构,如窗口管理,定时器管理等。CODEC部发包括音频的编解码程序(主要由ARM实现)和图象的编解码程序(主要由DSP实现)。最下层为主GUI和各类应用程序。应用程序包括:FileManager(拿来浏览储存器中的文件),VideoPlayer(播放视频文件),AudioPlayer(播放音频文件),ImageViewer(浏览图片),FM(收音机),Games(游戏),Resumes(重新播放音/视频文件)。
嵌入式Linux操作系统
本系统采用的Linux内核是对从Internet上下载比较稳定的Arm-Linux内核进行相应的更改,并编撰相关外围设备的驱动程序,使之成为一个适宜TIDM320开发的操作系统环境。之所以称为嵌入式,是由于其操作系统运行的环境并不是普通的PC,但是嵌入在非PC架构的电子设备中。
关于内核更改Kconfig文件
Kconfig文件是拿来对你所要加载内核内容进行配置的文件。例如,当在控制台上敲入makemenuconfig,都会听到内核配置的窗口,可对其中的内容进行选择。选择[*]表示把此内容编入内核,选择[M]表示把此内容当作模块编译。Linux支持动态加载内核模块的功能,甚至可以在运行操作系统一段时间后再加载内核模块。因为DM320框架并未纳入内核中,所以我们须要把DM320框架加入内核。首先,就要在内核目录下./arch/arm/Kconfig加入DM320的配置选项,这样就能在执行makemenuconfig配置内核时见到DM320框架。更改的部份内容如下所示:
choice
prompt"ARMsystemtype"
defaultARCH_DM320_20file://在配置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"
endiffile://选择开发字符设备的驱动linux操作系统安装,而不须要声音的支持。
由于要把CODEC编入内核,所以我们还要加入支持CODEC的配置选项:
source"codecs/modules/Kconfig"
同时,假如我们要加入一个新外围设备,也须要在Kconfig文件中加入对应的内容。譬如说pc 操作系统 嵌入式操作系统对比,要加入一个三星的4英寸TFTLCD的驱动,我们可以更改./drivers/char/Kconfig文件,并加入以下内容:
configDM320_SAMSUNG_4_LCD
tristate"DM320SAMSUNG4.0inch16:9TFTLCD"
dependsonARCH_DM320_20&&BOARD_400H
defaulty
help
ThisdriverprovidessupportforSAMSUNG4.0‘16:9TFTLCDforDM320.
其中,configDM320_SAMSUNG_4_LCD表示降低一个新的配置入口。一旦这个配置选项被选中都会在./include/linux/autoconf.h:有:#defineCONFIG_DM320_SAMSUNG_4_LCD1的定义。
这样的话,我们在整个内核源码树中都可以使用CONFIG_DM320_SAMSUNG_4_LCD来进行特定的选择。
在tristate"DM320SAMSUNG4.0inch16:9TFTLCD"中,冒号里的内容为出现在配置选项中的提示文字。tristate表示三态,意思是不仅可以选择[*]、[]外,还可以选择[M],表示把当前内容当作模块编译。
dependsonARCH_DM320_20&&BOARD_400H表示假如后面配置平台框架时选择了ARCH_DM320_20,并在选择机型时选择了BOARD_400H,我们就可以看见这个对于三星4英寸TFTLCD的配置选项。
defaulty表示默认把此驱动编入内核。help的内容为当我们对内核进行配置时,选帮助所见到的内容。
Makefile文件
简单地说,Makefile是拿来进行项目配置和管理的。我们要把Linux编译、链接最后生成可执行的内核映像,Makefile文件是必不可少的。
在该PMP设计开发中,只须要把外设驱动模块加入相应的内核源码树就可以完成对Makefile文件的更改。以加入三星4英寸TFTLCD驱动为例,只须要在./drivers/char/Makefile加入如下内容即可:
obj-$(CONFIG_DM320_SAMSUNG_4_LCD)+=dm320_lcd_samsung4.o
PMP系统设计中两个必须的驱动以及要注意的问题
LCD驱动程序
在一个PMP设备中,LCD显示屏是必备的。在LCD驱动程序的设计过程中,主要是要选好时钟源、分频系数以及时钟极性。诸如在DM320中,时钟控制器有以下几个外部输入:PCLK、SYSCLK、MXI、M4848XI,其中不仅M4848XI外其余均选择27M外部晶振。LCD的时钟频度DCLK在本系统中是由VENC(VideoEncoderClock)确定,而VENC又可以通过系统的PLL分频而确定,所以说首先要选好时钟源和恰当的分频系数,之后通过设置VENC的寄存器就可以设置时钟的极性。
FrameBuffer驱动
FrameBuffer是把内存具象成一个设备,通过对这个设备的读写就等同于直接对内存进行操作。这些操作是具象的、统一的。用户毋须关心内存的化学位置、换页机制等具体细节,这种都是由FrameBuffer设备驱动程序来完成的。FrameBuffer对应的源文件在linux/drivers/video/目录下。全部的具象设备文件作为fbcon.c与各类主板驱动程序相关的源文件置于该目录下,如笔者所进行的针对DM320的FrameBuffer源文件dm320fb.c。在源文件我们要设置相应屏幕的长、宽以及每一个象素点的位数等等,还有一些与DM320OSD(On-ScreenDisplay)相关的寄存器的设置。由于涉及内容较多,在此不再赘言。
结语
本PMP方案设计的产品早已步入量产阶段,经过大量的用户测试,否认了整个设计是着力可行的。同时,其设计思路对于其他类似产品如车载GPS,都有一定的参考价值。