嵌入式系统ARM的LINUX环境构建技术
摘要:本文给出了与交叉开发环境相关的一些重要概念的解释,ARM和Linux交叉开发环境的构建,及在Windows、Linux和ARM开发板间共享数据的方法。
关键词:交叉编译 nfs服务 宿主机 目标机
1、引言
嵌入式系统随着器件技术的发展,已经出现在生活的各个领域,越来越多的人都在从事这方面的研究开发工作,对于应用型开发来说,会更多选择LINUX环境开发软件,但目前广泛使用的操作系统环境都是WINDOWS系统,基于此,本文介绍了如何在Windows操作系统下利用Linux虚拟机、针对32位ARM920T内核的S3C2410微处理器实现嵌入式Linux应用软件的交叉开发环境,给出了完整的解决方案,并成功地为S3C2410的开发板搭建了一个嵌入式应用软件开发环境。
2、软件及硬件工具的选择
2.1 ARM920内的S3C2410开发系统
文中硬件环境是选用了理工达盛的ARM860开发系统,具体包括:32位ARM920T的处理器,即三星的S3C2410芯片,两片动态存储器,每片32M字节,一片M字节的NAND_flash存储器,一个USB主接口,一个USB从接口,一个10/100M的以太网控制芯片,完成网络访问功能,一个UART接口,完成串口通信,最高波特率率为115200bps, 一个RTC实时时钟,一个5V转3.3V和1.8V的电源管理模块,一个20针的JTAG调试接口。
2.2 虚拟主机及LINUX操作系统
文中选择的软件环境:WINDOWSXP操作系统、虚拟主机vmware5.0及linux的企业版RHEL 5.6。
2.3 RPMS软件包
2.3.1 交叉编译
交叉编译其实就是在一个平台上生成能够在另一个平台上运行的代码。注意这里的平台,实际上包含两个概念:体系结构和操作系统。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。
2.3.2 交叉编译器包
交叉编译器就是一种在Linux操作系统+X86的体系结构下,编译经过移植的linux操作系统,生成内核,该内核能够在另外一种软硬件环境下运行。
文中给出的RPMS是一个用于Linux-2.4.18-rmk7-pxa1内核的交叉编译器包,它包括交叉编译、汇编、链接、二进制文件转换工具、所需要的库函数等等。
3、搭建宿主机-目标机模式的开发平台
进行项目开发前,首先要搭建一套基于Linux操作系统的应用开发环境,它是由目标板(S3C2410开发板)和宿主机(Linux虚拟机)所构成。
之所以采用这种模式,一是目标平台所需要的核心还没有建立时,需要作交叉编译。二是目标机设备不具备一定的处理器能力和存储空间,即单独在目标板上无法完成程序开发,所以只好求助宿主机。这样可以在宿主机上对即将在目标机上运行的应用程序进行编译,也就是目前嵌入式程序开发的模式。
4、Linux开发环境的搭建
第一步,要正确安装软件,在windows环境下,首先安装虚拟主机软件vmware,然后安装Linux操作系统,在安装时,特别要注意在虚拟主机中对操作系统的选择,要选择对版本,Linux的安装中,要关闭网络防火墙。
第二步,正确安装了软件后,接下来要安装交叉编译器。启动主机,必须以root用户名登录,然后将RPMS文件夹拷贝到/opt目录下,打开系统工具下的终端,此时,系统将弹出终端框,在里面改变目录到/opt/RPMS下,输入如下命令:#rpm –Uvh *.rp,会在根目录下的/opt文件夹内生成一个host文件夹,到这步,所需的交叉编译环境就搭建好了。
5、在虚拟机linux中建立nfs服务
在终端下输入minicom -s,配置minicom为波特率为115200,无奇偶校验, 8bit。之后,在minicom下,给系统上电,系统正常起来后,利用ifconfig eth0 xxx.xxx.xxx.xxx来改变实验系统的IP地址,让该地址的前三段和主机的前三段一致,最后的一段,可以选择和主机不重复的小于255的任意值。
要mount成功,首先,利用命令chmod 777/home/nfs 改变/home/nfs文件夹的属性,让其变为可读可写,如果/home目录下没有nfs文件夹,建议创建此文件夹,以后需要挂载的用于调试的驱动模块以及应用程序均放在该文件夹内。之后,在终端中,输入mount o nolock 192.168.0.1:/home/nfs/mnt/yaffs回车,即可完成把主机上的/home/nfs下的文件挂载到实验系统的/mnt/yaffs目录下。
6、编译内核
当选择采用驱动模块和应用程序利用nfs网络文件系统异地调试时,则不需要重新编译内核,仅需要使用交叉编译器编译驱动模块和应用程序,之后利用mount命令把它们所在的文件目录加载到文件系统中。然后使用相关命令进行对驱动模块的安装,调试或卸载。
当需要把驱动模块编译进内核,则应在终端的内核目录下输入make menuconfig配置命令,通过选中新加入的驱动模块,保存配置,退出,第一次需要编译,需要键入make dep命令,而后,输入make clean ,最后,输入make zImage命令,编译内核。步骤如下,在系统工具的终端下,切换目录到kernel目录下,然后输入命令:(1)make dep (该命令用于寻找各文件的依存关系);(2)make clean (该命令用于清除以前构造内核时生成的所有目标文件、模块文件和临时文件);(3)make zImage (编译内核中的文件,生成内核)。
7、结语
通过构建WINDOWS下利用虚拟主机搭建的Linux实验环境,可以充分利用多种操作系统系统的资源,从而实现了多方位的资源共享,建立的宿主机与目标机的模式,结合操作系统下的超级终端,将多个系统融为一个整体,提高了程序的开发效率。
参考文献
[1]彭浩等.基于S3C2440的嵌入式Linux根文件系统构建.《电子设计工程》,2010(6).
[2]王奔等.基于S3C2410的嵌入式Linux系统的移植构建.《信息化研究》,2009(5).
[3]刘云峰等.基于ARM9的嵌入式Linux系统移植.《工业控制计算机》,2011(6).