您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于LPC2210的嵌入式Linux开发平台构建 正文
基于LPC2210的嵌入式Linux开发平台构建

基于LPC2210的嵌入式Linux开发平台构建

点击数:7415 次   录入时间:03-04 12:01:58   整理:http://www.55dianzi.com   嵌入式系统-技术

     摘要:本文描述了ARM7 与uCLinux 操作系统的特点,详细讨论了基于ARM7 与uCLinux开发的平台构建过程。利用构建好的开发平台,通过示例来说明了基于NFS 方式的嵌入式Linux 的应用程序开发流程,该开发平台将进一步应用于放射性气体气溶胶连续监测系统的数据采集。

  0 引言

  随着网络、通信、多媒体和信息家电时代的到来,嵌入式系统在经历了近 20 年的发展历程之后,进入了一个全新的发展阶段。Linux 操作系统以其稳定性好、可靠性高、源代码公开、可裁剪等优点已成为嵌入式领域的一股新兴力量,具有巨大的市场潜力和商业价值。而ARM 处理器是目前应用的最为广泛的嵌入式处理器架构。因此,将Linux 操作系统移植到ARM 处理器平台上并应用于实际的产品是最为流行的嵌入式产品解决方案。

  放射性气体气溶胶监测系统的数据采集与处理一般是以 8 位单片机作为控制核心,直接导致硬件电路复杂、设计和调试难度加大、集成度低、稳定性差、系统升级难度较大等缺点。因此,本文采用LPC2210+uCLinux 的开发模式来设计整个监测系统的数据采集与处理模块,能够很好的提升整个系统的稳定性和可操作性。其中LPC2210 是基于32 位ARM7TDMI 内核的处理器,uCLinux 操作系统是开放源代码的嵌入式Linux 的典范之作,主要针对没有MMU(存储器管理单元)的处理器,具有良好的可移植性和优秀的网络功能。

  1 硬件平台介绍

  硬件平台采用 LPC2210 为系统硬件核心开发板,系统框图如图1 所示。主要包括:存储系统、系统接口、用户接口3 个部分。LPC2000 系列ARM7 处理器I/O 口供电电源为3.3V,内核及片内外设供电电源为1.8V,所以,系统设计为3.3V 应用系统。该系列的处理器可以使用外部时钟源,内部PLL 电路可调整系统时钟,使系统运行速度更快(CPU 最大操作时钟为60MHz)。

  该硬件平台扩展了2MB NOR Flash 和8MB PSRAM。为了方便程序调试以及最终代码的固化应用,使用LPC2210 外部存储器接口的Bank0 和Bank1 地址空间。在使用uCLinux操作系统时,NOR Flash 用来存放bootloader 程序,以便于加载并引导放在NAND Flash 中的uCLinux 内核。

  LPC2210 具有外部总线接口,设计电路为16 位总线方式对网卡芯片RTL8019AS 进行访问,即数据总线D0~D15 与网卡芯片的SD0~SD15 连接,由于RTL8019AS 工作电压是5V,而LPC2210 的I/O 电压是3.3V,故需在总线上串接470 欧的保护电阻。网卡芯片的Vih 最小值为2.0V,故与LPC2210 连接时不需要加电平转换芯片。


图 1 系统结构框图

  2 嵌入式Linux 开发平台的构建

  本研究采用在宿主机上编写程序,然后通过交叉编译生成目标平台上可以运行的可执行文件,最后下载到目标板的特定位置运行的方法构建平台,即通常称为的“宿主机+目标板”的开发模式,如图2 所示。目标板分别通过RS-232 串口和RJ-45 以太网接口与宿主机连接。

  宿主机上需要运行 2 个窗口,即宿主机本机操作窗口和串口终端窗口。宿主机操作窗口可以是本机的操作终端,也可以是通过远程登录登录到Linux 服务器的操作界面。串口终端窗口可以是Linux 下的minICom,也可以是windows 下的超级终端。目标板可以看成一台计算机,串口终端就相当于这台计算机的显示器,作为人机交互界面。在宿主机编译、链接后得到的可执行文件下载到目标板上运行。

 

图2 嵌入式Linux 交叉开发环境

www.55dianzi.com

  2.1 uCLinux 操作系统的移植

  在开始移植操作系统之前,先准备好移植所需要的软件包,主要包括:交叉编译所需的编译工具包、uCLinux 源码包、完整的bootloader 程序及根文件系统。上述二种工具包都有众多版本,本文分别选择的是uCLinux-dist-20040408.tar.gz、arm-elf-tools-20040427.sh。整个移植工作分为三步:建立交叉编译环境;编译配置内核;bootloader 及根文件系统的移植。

  2.1.1 建立交叉编译环境

  将工具包 arm-elf-tools-20040427.sh 拷贝到目录/usr/SRC 下,为其增加可执行权限(#chmod755 arm-elf-tools-20040427.sh);然后安装arm-elf-gCC(# ./ arm-elf-tools-20040427.sh),安装完毕后查看/usr/LOCal/bin 目录下是否存在arm-elf-gcc 等文件,如存在,表明交叉编译器安装成功;最后是添加交叉编译的路径,这一步在安装过程会自动执行和保存,并在下次启动之后仍然有效(#export PATH=$PATH:/usr/local/arm-elf/bin)。至此,交叉编译环境已经建立完毕。

  2.1.2 交叉编译uCLinux 内核

  在交叉编译内核之前,首先要对编译选项进行配置。为了配置过程的直观性,一般选择“make menuconfig”命令,进入uCLinux v3.1.0 Configuration 界面,主要是设置嵌入式处理器的型号以及操作系统的版本,然后选择Default all settings 后进行编译即可。交叉编译工作一次由以下命令完成:

  #cd /usr/src/uCLinux-dist // uCLinux-dist 为uCLinux 源代码所在目录

  #make distclean // 清除上一次编译所产生的辅助文件和目标文件

  #make menuconfig // 通过文本菜单方式配置uCLinux

  #make dep // 建立源代码文件的依赖关系

  #make //编译内核

  编译结束之后会在 uCLinux 安装目录下建立romfs 和images 两个目录。其中romfs 为romfs 文件系统的临时存放目录;images 为生成的目标代码目录,其中romfs.img 为romfs文件系统的映像文件,image.bin 为文件系统和内核代码的目标文件。

  2.1.3 bootloader 及根文件系统的移植

  通过 RS-232 串口将完整的bootloader 程序下载到目标板的NOR Flash 中。主要工作是在WinXP 下设置超级终端,波特率38400、8 位数据位、1 位停止位、无奇偶校验位、无流控制。通过运行下载程序,可以将bootloader 下载到NOR Flash 中。

  建立 uCLinux 超级终端,设置波特率为115200、8 位数据位、1 位停止位、无奇偶校验位、无流控制。命名为uCLinux。然后启动开发板,在超级终端中也即嵌入式开发板的“显示器”中,可以看到bootloader 的启动界面,通过FlashFXP 软件可以将目录bin、boot、etc下的文件下载到开发板。

  2.1.4 uCLinux 的启动

  通过 bootloader 转载和引导刚刚生成的内核和文件系统。bootloader 引导内核的方式是:将内核影像文件和根文件系统下载至PSRAM 中直接启动,而不是从NAND Flash 中读入PSRAM,这种方法不需要烧写Flash。如图3 是uCLinux 操作系统启动后的界面。


 


图3 uCLinux 操作系统的启动界面

  2.2 NFS 辅助开发环境的建立

  网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。因此,通过建立NFS,把Linux 宿主机上的特定分区共享到待调试的目标板上,就可以直接在目标板上操作Linux 宿主机的特定分区,同时可以在线对程序进行调试和修改,大大方便了软件的开发。故NFS 是嵌入式Linux 开发的一个重要组成部分,下面详细说明如何建立NFS 辅助开发环境。

  2.2.1 宿主机端NFS 服务器的配置

  以 root 身份登录Linux 服务器,编辑/etc 目录下的共享目录配置文件exports,指定共享目录及权限等。

  执行如下命令编辑文件 /etc/exports:

  #vi /etc/exports

  在该文件中添加如下内容:

  /home/work 192.168.0.* (rw, sync, no_root_squash)

  然后保存退出。

  添加的内容表示允许 IP 地址范围在192.168.0.*的计算机以读写的权限来访问/home/work 目录。

  其中,/home/work 也称为服务器输出共享目录;rw 读写权限;sync 数据同步写入内存和硬盘;no_root_squash 为NFS 服务器共享目录用户的属性,如果用户是root,那么对于这个共享目录来说就具有root 权限。

  接着执行如下命令,以启动端口映射:

  #/etc/rc.d/init.d/portmap start

  最后执行如下命令启动 NFS 服务,此时NFS 就会激活守护进程,然后开始*client 端的请求:

  #/etc/rc.d/init.d/nfs start

  在 NFS 服务器启动后,还需检查Linux 服务器的防火墙等设置(一般需要关闭防火墙服务),确保没有屏蔽掉NFS 使用的端口和允许通信的主机,主要是检查Linux 服务器iptables,ipchains 等选项的设置,以及/etc/hosts.deny,/etc/hosts.allow 等文件。

  到此,宿主机端 NFS 服务器配置完成。

  最后在宿主机上进行 NFS 服务器的回环测试,验证共享目录是否能够被访问。在宿主机上运行如下命令:

  # mount –t nfs –o nolock 192.168.0.10:/home/work /mnt

[1] [2]  下一页


本文关键字:嵌入式  Linux  开发平台  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术