×
单片机 > 单片机程序设计 > 详情

基于ARM9内核和嵌入式Linux的网络投影仪系统设计

发布时间:2020-06-11 发布时间:
|

投影仪网络正在成为投影仪发展的重要趋势。通过标准的有线和无线网络接口或可选的网络适配器,用户可以更轻松地通过计算机将显示控制信号传输到投影机。显示输出内容,通过计算机监视和管理投影机。

设计并开发了一套用于投影仪的嵌入式远程监控系统。使用Internet,通过底层设备驱动程序的编程以及上位软件系统的设计和开发,客户端可以通过浏览器访问嵌入式系统的嵌入式http服务器以转换投影仪。相关参数显示在Web上直观,实时地显示页面,可以实现投影机现场相关显示参数的设置。


  1 嵌入式计算机系统的特点

  嵌入式计算机系统同通用型计算机系统相比具有以下特点:

  (1) 嵌入式系统通常面向特定应用。与通用型系统的最大不同是嵌入式CPU 大多工作在为特定用户群设计的系统中, 它通常具有低功耗、体积小、集成度高等特点, 能够把通用CPU 中许多由板卡完成的功能集成在芯片内部, 从而有利于嵌入式系统设计趋于小型化, 移动能力大大增强, 与网络的耦合也越来越紧密。

  (2) 嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。

  (3) 嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余, 力争在同样的硅片面积上实现更高的性能, 这样才能在具体应用中对处理器的选择更具有竞争力。

  (4) 嵌入式系统与具体应用有机结合, 它的升级换代也是与具体产品同步进行的, 因此嵌入式系统产品一旦进入市场, 一般具有较长的生命周期。

  (5) 为了提高执行速度和系统可靠性, 嵌入式系统中的软件一般都固化在存储器芯片或单片机中, 而不是存储于磁盘等载体中。

  (6) 嵌入式系统本身不具备自举开发能力, 设计完成以后用户通常不能对其中的程序功能进行修改, 必须有一套开发工具和环境才能进行开发。

  2 嵌入式投影机系统的组成

  本系统采用目前比较流行的ARM 处理器和嵌入式Linux 操作系统平台, 对投影机进行信息采集, 并向局域网中的投影机发出控制命令。在ARM 处理器的NANDFlash 中, 固化了嵌入式Linux 操作系统和http 服务器,可以将投影机的投影信息及时地传输给用户, 同时用户可以方便地通过浏览器修改投影机的投影参数。

  首先,用户在浏览器中输入已经联入局域网的投影机嵌入式模块的IP 地址, 向嵌入式模块的http 服务器提出连接请求,输入正确的用户名和密码之后,用户就可以登录系统进行控制。当用户登录系统之后,嵌入式模块首先会通过IPC (进程间通信) 的方式和投影机的核心模块通信,投影机设备将当前投影参数读取出来,然后将参数通过IPC(进程间通信)发送给嵌入式模块,嵌入式模块通过TCP/IP 协议栈将参数返回给浏览器, 用户则通过Web 页面直观实时地查看投影机当前的投影信息。用户也可以选择对投影机的投影信息进行修改, 如增加投影机投影亮度、对比度、选择Auto Keystone 方式等。

  系统的整体框架如图1 所示。

  

 

  图1 系统整体架构[page]

3 嵌入式投影机应用系统架构详细设计

 

  3.1 硬件平台的选择

  基于嵌入式微处理器在嵌入式系统中的核心地位,选择一款恰当的处理器非常重要。目前市场主流的32位微处理器主要有Power PC、68K、MIPS 和ARM 等。通常在选择微处理器时, 需要考虑很多因素, 如性能、功耗、价格、配套的开发工具以及市场的供货情况, 而ARM 在这些方面都具有优势。同时ARM 还具有业界领先的RISC 体系架构, 所以, 选择基于ARM 核的处理器是最理想的。

  本设计采用S3C2410 开发板为硬件平台。该平台在尽可能小的电路板面积上集成了64 M SDRAM、64 MNand 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 移植的相关资料。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 ” 命令即可,具体的配置要根据自己的软件平台以及应用程序的使用情况来确定, 内核要尽可能小, 以满足嵌入式系统资源少的特点。

[page]

(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 程序将编译生成的镜像文件烧写到嵌入式模块的存储设备中。

 

 

关键字:ARM9内核  嵌入式Linux  网络投影机

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil(MDK-ARM)系列教程(七)_菜单