《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于ARM9内核和嵌入式Linux的网络投影机系统设计
基于ARM9内核和嵌入式Linux的网络投影机系统设计
来源:微型机与应用2011年第10期
章 勇, 吕俊白
(国立华侨大学 计算机学院, 福建 泉州362021)
摘要: 对嵌入式系统的基本概念、原理和基于ARM的嵌入式Linux应用系统的设计与开发作了介绍;设计开发了一套用于投影机的嵌入式远程监控系统,利用Internet,通过对底层设备驱动编程和上层软件系统的设计开发,客户端可通过浏览器访问嵌入式系统内置的http服务器,将投影机的相关参数直观实时地在Web页面上显示出来,并且可以实现对于投影机现场相关显示参数的设置。
关键词: ARM 投影机 Linux CGI S3C2410
Abstract:
Key words :

摘  要: 对嵌入式系统的基本概念、原理和基于ARM的嵌入式Linux应用系统的设计与开发作了介绍;设计开发了一套用于投影机的嵌入式远程监控系统,利用Internet,通过对底层设备驱动编程和上层软件系统的设计开发,客户端可通过浏览器访问嵌入式系统内置的http服务器,将投影机的相关参数直观实时地在Web页面上显示出来,并且可以实现对于投影机现场相关显示参数的设置。
关键词: 投影机; Linux; ARM;CGI

    投影机网络化正成为投影机发展过程中的一个重要趋势,通过标配的有线及无线网络接口或选配的网络适配器,用户可以通过计算机更方便地向投影机传送显示控制信号,在投影机上显示输出内容,可通过计算机来监控管理投影机。
1 嵌入式计算机系统的特点
    嵌入式计算机系统[1]同通用型计算机系统相比具有以下特点:
    (1)嵌入式系统通常面向特定应用。与通用型系统的最大不同是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的功能集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,与网络的耦合也越来越紧密。
    (2)嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
    (3)嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。
    (4)嵌入式系统与具体应用有机结合,它的升级换代也是与具体产品同步进行的,因此嵌入式系统产品一旦进入市场,一般具有较长的生命周期。
    (5)为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机中,而不是存储于磁盘等载体中。
    (6)嵌入式系统本身不具备自举开发能力,设计完成以后用户通常不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发[2]。
2 嵌入式投影机系统的组成
    本系统采用目前比较流行的ARM处理器和嵌入式Linux操作系统平台,对投影机进行信息采集,并向局域网中的投影机发出控制命令。在ARM处理器的NAND Flash中,固化了嵌入式Linux操作系统和http服务器,可以将投影机的投影信息及时地传输给用户,同时用户可以方便地通过浏览器修改投影机的投影参数。
    首先,用户在浏览器中输入已经联入局域网的投影机嵌入式模块的IP地址,向嵌入式模块的http服务器提出连接请求,输入正确的用户名和密码之后,用户就可以登录系统进行控制。当用户登录系统之后,嵌入式模块首先会通过IPC(进程间通信)的方式和投影机的核心模块通信,投影机设备将当前投影参数读取出来,然后将参数通过IPC(进程间通信)发送给嵌入式模块,嵌入式模块通过TCP/IP协议栈将参数返回给浏览器,用户则通过Web页面直观实时地查看投影机当前的投影信息。用户也可以选择对投影机的投影信息进行修改,如增加投影机投影亮度、对比度、选择Auto Keystone方式等。
    系统的整体框架如图1所示。


3 嵌入式投影机应用系统架构详细设计
3.1 硬件平台的选择

    基于嵌入式微处理器在嵌入式系统中的核心地位,选择一款恰当的处理器非常重要。目前市场主流的32位微处理器主要有Power PC、68K、MIPS和ARM等。通常在选择微处理器时,需要考虑很多因素,如性能、功耗、价格、配套的开发工具以及市场的供货情况,而ARM在这些方面都具有优势。同时ARM还具有业界领先的RISC体系架构,所以,选择基于ARM核的处理器是最理想的。
    本设计采用S3C2410开发板为硬件平台。该平台在尽可能小的电路板面积上集成了64 M SDRAM、64 M Nand Flash、1 M Nor Flash、RJ-45网卡、音频输入与输出、USB Host、USB Slave、标准串口、SD卡插座、,用户按键和一些用户灯等设备接口,并且引出CPU的大部分信号引脚。通过这个平台可以针对S3C2410进行系统级的硬件和软件设计,并且能够很方便地在该平台上进行相关的功能扩展,并进行所需的产品设计。

 


3.2 系统的软件实现
3.2.1开发平台宿主机的配置

    本系统的开发平台选择ubuntu 8.04 LTS。首先从网络上下载vmware workstation的体验版,在Windows XP环境下安装配置好。从网络下载ubuntu 8.04 LTS版本的ISO镜像文件,在vmware workstation虚拟机环境下安装配置好ubuntu 8.04 LTS系统,设置虚拟机中ubuntu系统的网络连接方式为Bridged,通过apt软件包管理程序可以方便地安装配置虚拟机中的ubuntu开发环境,安装系统开发所必须的程序库,如build-essential,samba以及openssh-server等。
3.2.2 开发过程
    (1)搭建交叉编译环境
    当开发嵌入式Linux软件时,一般都要经过交叉编译。如果是开发PC机上的软件,只要用Linux本身提供的强大的编译器(如GCC)直接编译即可。而一般的嵌入式设备所用的CPU和PC机上的CPU有着不同的架构,这样就要求在PC机上编译出适用于嵌入式设备CPU架构的软件,这就是交叉编译的概念。图2是交叉编译环境图示。

    (2)U-boot的移植
    嵌入式的软件系统主要由Bootloader、Kernel、嵌入式文件系统以及应用程序等组成。其中,Bootloader是介于硬件和操作系统之间的一层,其作用就好像PC机中的BIOS。系统加电运行后,由系统自动加载,通过这段程序,可以初始化硬件设备,建立内存空间的映射图,从而将系统的硬件环境引导到一个合适的状态,以便为最终调用操作系统内核准备好环境。本系统对于bootloader的选择采用Das U-boot,由于U-boot的使用范围相当广,因此很容易找到关于U-boot移植的相关资料。U-boot引导程序分为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所示。

    本文主要讨论了应用于投影机设备的嵌入式模块的设计与开发。包括开发平台的选择,配置嵌入式开发的环境,对于Kernel和文件系统的裁剪。最后通过tftp程序将编译生成的镜像文件烧写到嵌入式模块的存储设备中。
参考文献
[1] 孙琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社, 2006.
[2] YAGHMOUR K. Building embedded linux systems[M]. O′Reilly, 2008.
[3] 叶欣.嵌入式Linux环境下Web页面技术的实现[J].现代商贸工业,2009(1):356-357.
[4] HENKEL J. Software development in embedded linux[M]. Wirtschaftinformatik proceedings, 2003.
[5] 汪小燕,连晓平,董燕,等. 基于TFTP协议的嵌入式系 统开发方法设计与实现[J].武汉:华中科技大学学报
(自然科学版),2006,34(12):56-58.

此内容为AET网站原创,未经授权禁止转载。