基于数字电视系统的嵌入式linux操作系统实现

欢迎进入IT技术社区论坛,与200万技术人员互动交流 >>进入 1.简介: 数字电视是在电视信号产生后的处理、传送、接收、记录等过程都采用数字技术的电视。在设计数字电视系统时,应用于传统模拟电视系统中的硬件,不能满足音频、视频和数据处理等功能的需要,因此,数字电视系统需要更高性能的处理器和大规模的存储器。嵌入式操作系统可以有效的管理这些硬件资源。 本文将嵌入式linux操作系统移植到一个数字电视上,使其能够接收数字广播节目。为了将操作系统移植到数字电视系统上,需要修改内核和交叉开发环境,重新设计基本的设备驱动,配置系统的存储器映像以便加载内核到主存储器中,并且设计一个总线接口设备的驱动程序来控制整个系统。2.数字电视操作系统 数字电视比模拟电视能够提供更优质的电视图像和更多的视频服务。它采用改进的扫描线和水平清晰度获得高质量的视频效果,同时采用AC3或MPEG2压缩技术来获得高质量的音频效果。数字电视的节目不但便于存储,而且还可以通过众多的媒介进行传播。因此,数字电视系统需要处理大量的数据。如在EPG(电子节目指南)服务中,被提取出来的数据被修改并存储后作为一个画面打印至OSD(屏幕菜单式调节)界面,在这个过程中需要靠操作系统来不断地接收到被筛选、存储后的信号,同时产生屏幕画面。 市场上的数字电视系统包括如pSOSTM (Windriver Inc.)等的商业操作系统,这些系统具有高可靠性和最优化的特点,但要支付昂贵的版税。如果在数字电视系统中使用嵌入式linux操作系统,则不用支付版税费用。嵌入式linux操作系统还有其他一些优点,如有开放源代码的设备驱动程序及应用程序的存在,大大缩短了开发时间;利用shell、文件系统及模块功能方便了开发环境的配置;许多问题可以在开源社区得到快速解决等。3.商业数字电视系统 数字电视的结构 数字电视系统包括数字处理模块、视频处理模块、射频模块、LCD驱动模块和模拟输出模块,其结构如图1所示。

数字处理模块负责控制其它模块和执行程序。它由MCU、SDRAM、FLASH存储器、UART、I2C总线接口构成。视频处理模块把从射频模块捕获的数据解码生成视频、音频和文本消息。它由一个信号处理单元(SPU)和一个SDRAM构成,SDRAM中包含被显示的数据帧。射频模块接收数字广播信号,并且将该信号解调成数据流。LCD驱动模块控制LCD面板。模拟输出模块控制视频-音频信号输出和输出信号。数字处理模块通过I2C总线,控制射频模块、LCD模块和模拟输出模块,同时通过DMA控制视频处理模块。 硬件构成 在数字电视系统中,数字处理模块的核心是arm7TDMITM,它不包括MMU(存储器管理单元)。在数字电视系统中MCU只支持大端格式[5],存储器映射由MCU内的系统管理寄存器来配置,在系统运行之前,嵌入式linux内核运行在flashROM中,当系统运行时,内核被拷入ram中。除了ROM和RAM外,外设也经常被使用。这些设备被映射到一个线性存储器映射单元,且可以按同样的方式寻址。。MCU的中断控制器包括21个中断资源(其中17个来自内部设备,4个来自外部设备)。数字处理模块中的定时器是一个32位的间隔模式定时器。在系统中用串口设备如UART(通用异步收发器)来打印启动过程中的消息和程序出错信息,由于射频模块、LCD驱动模块、模拟输出模块都是由MCU通过I2C总线控制,因此,在MCU和I2C串行总线之间需要一个接口。在这里使用PCF8584 (Philips Inc.)。图2描述了MCU和I2C总线之间的连接。

图2 MCU和I2C总线之间的连接

4.linux系统移植 在这一部分中,我们将解释linux操作系统的移植顺序。包括修改内核初始化代码和编写设备驱动程序。 4.1重建内核初始化代码 为了将linux内核加载到嵌入式系统中,有必要修改与硬件相关的内核初始化代码。这个过程包括设置存储器映射以便加载内核映像,以及为支持内核的运行而修改设备驱动程序。 4.1.1设置存储器映射 Linux内核映像是一种压缩文件,存放在flash存储器中,执行时被拷贝到SDRAM中并解压。图3描述了内存映像的加载顺序。

系统复位时,CPU只能接受flash ROM空间的代码,同时执行位于flash ROM底层的bootloader,它负责从主机端下载代码并且将代码存储到flashROM中。 1)bootloader将主机的linux内核拷贝到数字处理模块上的SDRAM中。 2)SDRAM中被下载的linux内核映像被存储在flash ROM中位于bootloader顶层的空间中。 3)系统初始化,同时,bootloader调用linux映像内的一段执行代码(head.o),将全部flash ROM空间中的内容拷贝到SDRAM中。 4)CPU利用系统管理寄存器,将flash ROM中的初始地址空间与SDRAM的初始地址空间相交换。当flash ROM中的映像被加载到SDRAM之后,无需改变程序计数器就可以执行代码(head.o)。图4中显示了最终的存储器映射。

拷贝到SDRAM中的linux映像可解压执行,为了完成释放功能,需要一些存储器空间,例如符号开始段、用户堆栈、分配的内存等。在这些空间中,一个压缩的linux内核映像被解压工具释放出来,被释放的代码位于被分配的内存空间的下一地址。 4.1.2 内核需要的设备 内核需要的基本设备包括中断控制器、定时器和控制台设备。这些设备被映像到MCU的内部寄存器中,通过修改内部寄存器而提供必要的功能。 4.2设备驱动的设计 数字电视系统包括视频处理设备和模拟输出设备以及内核所必须的设备,本文为I2C总线接口(PCF8584)设计一个设备驱动。PCF8584设备驱动包括接口模块、内核模块、算法模块、适配器模块,如图5所示。 接口模块提供设备驱动程序与应用程序之间的接口,定义设备文件操作(open, read, write, ioctl,release)以及初始化设备文件(/dev/i2c0);内核模块用来增加或移除适配器、定义I2C总线的功能以及初始化包含系统信息的文件系统(/proc);算法模块用来初始化PCF8584设备以及定义PCF8584的函数(i2c_start,i2c_stop(), wait_for_pin());适配器模块通过被映射到MCU的存储器地址将数据传送到MCU。

[1][2]

含泪播种的人一定能含笑收获。

基于数字电视系统的嵌入式linux操作系统实现

相关文章:

你感兴趣的文章:

标签云: