基于ARM9内核和嵌入式Linux的网络投影机系统设计
嵌入式的软件系统主要由Bootloader 、Kernel 、嵌入式文件系统以及应用程序等组成。其中,Bootloader 是介于硬件和操作系统之间的一层, 其作用就好像PC 机中的BIOS 。系统加电运行后, 由系统自动加载, 通过这段程序, 可以初始化硬件设备, 建立内存空间的映射图, 从而将系统的硬件环境引导到一个合适的状态, 以便为最终调用操作系统内核准备好环境。本系统对于bootloader的选择采用Das U-boot, 由于U-boot 的使用范围相当广, 因此很容易找到关于U-boot 移植的相关资料。Uboot引导程序分为stage1 和stage 2 两大部分,stage1 中主要包括设备初始化、中断设置、时钟的设置以及存储器初始化等工作, 并且采用汇编语言实现, 而一些通用功能大多采用C 语言实现, 放在stage 2 阶段执行。
修改cpu/arm920t/start.s 文件,start.s 文件是采用汇编语言编写的U-boot 程序入口代码, 完成对底层硬件的初始化。
修改board/smdk2410/nand_read.c 中的nand_read_11函数将stage 2 阶段的代码复制到ram 中。
修改U-boot 根目录下的makefile 文件完成以后, 依次在终端中执行:
Make distclean // 清除生成的链接
Make smdk2410_config
Make CROSS -COMPILE=arm-linux - 编译成功后, 将生成三个文件, 其中需要烧到开发板中的文件是二进制的u-boot.bin 文件。
(3) 裁剪Linux 内核
修改根目录下的makefile 文件, 指定目标平台为ARM,ARCH:=arm, 指定交叉编译器,CROSS_COMPILE=/usr/local/3.3.2/bin/arm-linux-gcc 内核移植完成后, 可以对内核进行配置, 一般用"make menuconfig " 命令即可,具体的配置要根据自己的软件平台以及应用程序的使用情况来确定, 内核要尽可能小, 以满足嵌入式系统资源少的特点。
(4) 文件系统的选择
cramfs 文件系统是专门针对闪存设计的只读压缩文件系统,其容量上限为256 MB,采用zlib 压缩,文件系统类型可以是EXT2 或EXT3。本系统选择的文件系统正是cramfs文件系统。可通过busybox 工具集来制作根文件系统。
(5)CGI 部分的设计
要实现网页的交互性和实时更新, 就要用到CGI 技术。公共网关接口CGI (common gateway interface ) 是一种服务器与浏览器信息交换的标准接口。从物理上看,CGI程序属于一个外部程序, 需要编译成可执行文件, 以便能够在服务器端执行, 它提供客户端页面HTML 代码的接口, 完成无法做到的交互功能。CGI 建立在C/S 机制上, 为外部扩展应用程序与Web 服务器交互提供了一个标准接口。按照CGI 标准编写的外部扩展应用程序可以处理客户端输入的工作数据, 完成客户端与服务器的交互操作。因此, 如果说CGI 是Web 能够发展如此迅猛的最大原因也不为过。本系统的CGI 部分的主函数(main) 中代码截取如图3 所示。
(6) 镜像的烧入
通过网络烧入代码可以利用tfttp 协议,在主机中开启tftp 服务, 同时指定镜像文件所在的目录, 然后利用超级终端来控制代码的烧入,打印信息。首先需要在超级终端中设置目标板的环境,包括MAC 地址、目标板的IP 地址、tftp 服务器的IP 地址,这里需要将目标板和开发主机的IP地址设置在同一个网段, 设置完成以后重启目标系统,进入待烧入模式, 通过tftpboot、erase、cp.b 等命令拷贝镜像文件到嵌入式设备存储设备中的指定地址段。
完全烧入完成后重启目标板上的Linux 系统即可。待烧入镜像在nand flash 中存放的地址空间如表1 所示。
表1 镜像文件在Nand Flash 中对应的存储位置
本文主要讨论了应用于投影机设备的嵌入式模块的设计与开发。包括开发平台的选择,配置嵌入式开发的环境,对于Kernel 和文件系统的裁剪。最后通过tftp 程序将编译生成的镜像文件烧写到嵌入式模块的存储设备中。
- 基于ARM平台的远程视频监控系统的研究(04-22)
- 基于ARM920T的红外通信系统的设计(03-11)
- 基于嵌入式ARM-Linux无线ZigBee协调器驱动设计(11-02)