首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

为了驱动PCF8584接口设备,需要对模块进行初始化。在通常的linux系统中,设备驱动在运行时载入和初始化,而在嵌入式linux系统中,设备驱动将在启动阶段被加载和初始化。4个模块的初始化程序被存储在“.init”段的“_init”处,由“do_initcalls()”函数在启动时调用执行。控制数据从接口模块开始,依次经内核模块、算法模块、适配器模块传送。接口模块接收应用程序的请求(open, write, read, ioctl),调用内核模块的接口程序(master_send(), master_receive(),transfer()),同时传递参数。内核模块将从地址、标记位、信息长度等数据传送到算法模块。算法模块检查I2C总线的状态和从地址,设置PCF8584的控制寄存器。最后,适配器模块从被映射到外部总线的地址空间中读写数据。


     

5.系统构建
   
        为了移植linux操作系统,我们首先在主机端安装一个交叉开发环境,然后在供测试的目标板上安装一个测试环境,测试好后,再移植到数字电视系统上。
   
        5.1安装交叉开发环境
   
        在裁减和定制Linux,运用于你的嵌入式系统之前,由于一般嵌入式开发系统存储大小有限,通常需要在强大的pc机上建立一个用于目标机的交叉编译环境。这是一套编译器、连接器和libc库等组成的开发环境。图6描述了交叉开发环境的安装过程。
   

    要制作二进制linux映像文件,首先应制作二进制连接器、汇编器和其它目标工具。然后,用 make menuconfig配置内核,此时在内核目录中将生成include/linux/version.h 和 include/linux/autoconf.h 文件。注意,由于数字电视系统的MCU只支持大端存储器格式,所以,应在内核库中做相应修改。第三步是制作交叉编译器(gcc)和c库(glibc)。由于两者是相互依赖的关系,可以先制作一个不带glibc的gcc,然后用交叉编译器创建一个glibc,再重新编译这个带glibc的gcc。第四步,由于移植好的linux运行在只读存储器中,所以需要安装用于制作二进制文件系统映像的工具(genromfs),和一个用于将elf格式(通用文件格式)转换为flt格式(扁平格式)的工具。
   
        5.2开发环境
   
        系统开发环境包括测试板的SNDS100TM(Samsung)、用于远程调试的JEENITM (Jtag EmbeddedICE Ethernet Interface)、数字电视机主板等。表1列出了开发环境的各个部分。
    表1 开发环境
     组成部分 功能
    测试板
     三星 s3c4510B (arm 7TDMI),16M字节的SDRAM, 1M字节的flashROM, LED, RJ45连接器. 网络应用开发板
    数字电视主板 三星s3c4500(arm 7TDMI),16M字节的SDRAM, 8M字节的flashROM, pcf8584, SPU (LG electronics),32M字节SDRAM. 数字处理模块
    JEENITM EPI, 两个硬件断点,以太网主机接口,内部的arm 710A高速缓冲存储器 远端调试环境
    软件
     gcc-2.95.3, glibc-2.1.3, binutils-2.12, genromfs-0.5.1, elf2flt, gdb-5.0, ADS(armTM Developer Suite),evaluation ver. 1.1 交叉开发和调试的工具
   
        在主机中制作一个二进制的linux内核映像,将其通过串口线传送到开发板上。利用JEENI来安装远端调试环境。由于flash ROM中的boot块被保护,不能修改,因此我们需要将它与数字电视主板分开,在flash ROM中烧入一个bootloader后再安装到主板上。
   
        通过这一实验,可以通过PCF8584控制音频输出。也就是说,I2C总线的从设备将数字信号转换为音频输出信号。最终,我们可以听到蜂鸣声,也可以通过数字示波器来检测I2C总线信号。
返回列表