基于数字电视系统的嵌入式linux操作系统实现
发布时间:2008/5/27 0:00:00 访问次数:518
数字电视是在电视信号产生后的处理、传送、接收、记录等过程都采用数字技术的电视。在设计数字电视系统时,应用于传统模拟电视系统中的硬件,不能满足音频、视频和数据处理等功能的需要,因此,数字电视系统需要更高性能的处理器和大规模的存储器。嵌入式操作系统可以有效的管理这些硬件资源。
本文将嵌入式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描述了内存映像的加载顺序。
数字电视是在电视信号产生后的处理、传送、接收、记录等过程都采用数字技术的电视。在设计数字电视系统时,应用于传统模拟电视系统中的硬件,不能满足音频、视频和数据处理等功能的需要,因此,数字电视系统需要更高性能的处理器和大规模的存储器。嵌入式操作系统可以有效的管理这些硬件资源。
本文将嵌入式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描述了内存映像的加载顺序。