微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Linux QT掌上多媒体系统的设计和实现

基于Linux QT掌上多媒体系统的设计和实现

时间:10-15 来源:互联网 点击:

0 引言

随着人们生活水平的提高,消费结构发生了巨大变化,消费者用于娱乐方面的支出在总支出中所占的比例正在不断扩大。掌上多媒体系统可以满足人们对于试听以及便携的需求,另外还可以实现一些其他功能,如图片浏览、网络下载、以及影音录制等。目前市场上的掌上多媒体系统多是Windows CE、Symbian、Palm OS等商用操作系统,其开放的程序不够高,而且价格偏高,不适于第三方应用软件的移植。ARM体系作为专用嵌入式系统设计的通用处理器内核,具备高性能、低功耗、易扩展的特点。本系统基于ARM9、嵌入式Linux操作系统设计并实现了一个更为开放的嵌入式平台,来实现掌上多媒体系统的诸多功能。

1 多功能掌上媒体播放器系统的硬件设计

多功能掌上媒体播放器系统的硬件设计如图1所示。LCD采用的是Sharp的TFT屏,3.52in,分辨率240×320;音频控制器是IIS接口的音频控制器,解码芯片是UDA1314TS;另外扩展了用于视频录制的Philips的视频解码芯片SAA7113和ADI的JPEG压缩芯片。视频录制的框图如图2所示。

2 多功能掌上媒体播放器系统的软件设计

系统设计和软件设计是本系统的难点。系统软件设计的总体框架如图3所示。

2.1 嵌入式Linux操作系统

Linux最初由Linux Torvalds编写,后来在网络上被众多的Linux爱好者加以修改和维护,具有内核高效稳定、开源、可移植性强、内核可定制可裁剪、多线程多任务等特点,因此选择其作为本媒体播放器系统的操作系统。

首先定制裁剪并移植了Linux2.6的内核,然后为使各硬件能正常工作编写了键盘驱动、LCD驱动、触摸屏驱动、音频驱动、USB驱动等驱动。多功能掌上多媒体系统的正常工作首先是进入ARM-Linux操作系统,然后加载各个硬件的驱动程序并初始化各外围设备,接着就进入基于QT/Embedded库的Qtopia桌面系统编写的GUI图形界面程序的播放器,最后选择要进行的操作。

对于Linux内核的移植首先要移植bootloader,系统采用的是VIVI,其功能包括:分区管理、参数管理、启动Linux操作系统、文件系统管理、支持网络、通过串口下载程序到Flash或者RAM等。建立嵌入式开发环境,使得能够交叉编译源代码,对VIVI的源代码进行交叉编译,生成能在ARM Linux上运行的bin文件,通过开发板的JTAG口将其烧写到开发板的Flash中。

对内核的移植首先要对内核进行修改MAKEFILE文件指定编译器以及目标平台,然后配置内核,交叉编译生成内核镜像,通过UART口(串口)下载到开发板上。移植相应的文件系统。文件系统中的文件是数据的集合,不仅包含着文件中的数据,而且还有文件系统的结构,所有Linux用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。在设计过程中把文件系统设置为可读写,这样操作性强一些,在投入到生产中的时候应该把文件系统设置为只读的,这样整个掌上多功能媒体播放器的操作系统就加载好了。

2.2 驱动程序的设计

本系统共涉及到键盘驱动、触摸屏驱动、LCD驱动、音频驱动和USB驱动等驱动。因为多媒体功能是本系统的重点,所以播放器部分很重要,这里主要介绍音频驱动的编写。

目前Linux下常用的音频驱动程序主要有两种类型:OSS(Open Sound System) 和ALSA。最早出现的Linux上的编程接口是OSS,它由一套完整的内核驱动程序模块组成,可为大多数音频芯片驱动提供统一的编程接口。在嵌入式系统中,对于特定的处理器(如本系统采用的S3C2410),可以按照OSS接口标准来编写音频驱动程序,以满足Linux上的应用程序。OSS接口已经足够简单,需要完成的主要的工作就是对音频设备(本系统采用的是Philips的UDA1314TS)的read,write和ioctl等操作。

系统音频驱动主要是对UDA1314TS进行驱动编写,包括对UDA1314TS的L3接口的控制。首先初始化I/O和UDA1 314芯片,然后申请两个DMA(Direct Memory Access)通道用于音频传输(音频数据的发送和接收都通过一个先入先出的队列FIFO,但是只靠FIFO要保证音频的连续播放是很困难的,所以申请DMA通道来解决此问题)。OSS标准中由两个最基本的音频设备:混音器(Mixer)和数字信号处理器(DSP)又称编解码器,其中混音器主要用来控制输入输出音量的大小,只有open和release以及几个接管OSS标准的iotcl。而DSF设备驱动的方法比较复杂,主要包括open、release、read、write、poll、ioctl。其中主要在write和read方法中实现音频的播放和录音。以播放音频来说明DSP驱动程序的编写,对应了驱动程序中的open和write方法,它们利用DMA实现了音频的播放。在open中,首先判断设备打开的方法:读娶写入和读/

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top