基于Linux和S3C2410平台的应用程序的开发
【摘 要】随着信息化的发展,基于Linux和ARM内核的嵌入式开发平台已经成为市场主流。随着ARM技术的广泛应用,在ARM架构的嵌入式开发平台上进行应用程序的开发成为当前研究的热点问题。文章以Hello World应用程序为例,简单介绍了嵌入式系统平台上应用程序的开发。
【关键词】Linux;ARM;嵌入式开发平台;应用程序
随着信息技术的发展,嵌入式系统以其可靠性高、实时性强、系统配置低等优势,广泛应用在工业控制、消费电子、信息家电等领域,嵌入式系统的开发随之也成为当前计算机产业的关键,而基于ARM+Linux的嵌入式系统的开发也成为了研究热点。嵌入式系统是对功能、可靠性、成本、体积和功耗等方面都有严格要求的专用计算机系统,因此嵌入式系统应用程序的开发和普通的软件开发有着明显的不同。
一、嵌入式Linux系统设计
(一)搭建嵌入式的硬件开发环境
嵌入式系统的交叉开发是在宿主机和目标机上进行的,宿主机是运行Linux的PC机,目标机是S3C2410的实验设备,通过串口传输命令,以太网口或者USB传输下载文件。
(二)搭建宿主机的软件开发环境
(三)移植嵌入式Linux
标准的Linux的内核对于目标机来说功能过于强大,而我们选择的程序模块不同,编译出来的内核也有很大的差别。因此我们要将其移植到嵌入式系统上,就需要对标准Linux内核进行配置和编译,然后将编译生成Linux映像文件zImage,通过uboot的tftp命令将该文件下载到目标机并执行。
为此,我们构建了基于S3C2410芯片的嵌入式Linux系统的开发平台,构建过程中强调原理与可操作性,对于搭建嵌入式系统平台有了整体的把握和认识,对嵌入式系统的开发有十分重要的参考意义。
二、嵌入式系统应用程序的开发
嵌入式Linux系统搭建完成之后,我们就可以根据需要运行应用程序。跟普通PC机开发的应用程序相比,在嵌入式Linux上运行应用程序要复杂一些,嵌入式系统的交叉开发是在宿主机和目标机上进行的,所以应用程序的运行要考虑是否也采用交叉开发模式。据此,本文以Hello World 程序为例,简单介绍几种应用程序的开发。并通过实际的动作了解嵌入式 Linux应用程序开发和 PC机中 Linux应用程序开发的异同。
(一)Makefile的编写
Makefile文件的作用有点类似于 DOS 下的批处理文件,指明应用程序的编译器、链接器,目录等,通过编写Makefile文件,用户可以将一个很复杂的程序(可能包含上百个甚至更多的源文件或者目录)通过简单的 make 命令进行编译。
(二)在宿主机上编译并运行helloworld程序
在宿主机上输入命令编译并运行。
(三)编译在目标机运行的helloworld程序
由于编译器采用的是 arm-linux-gcc编译器,因此使用上述命令编译出来的程序只能在 ARM 处理器上运行,如果在RedHat中运行该程序将出现错误结果。
三、嵌入式系统应用程序的开发
嵌入式系统的应用程序编译完成之后,我们就该考虑如何运行这个程序,具体如下:
(一)直接下载helloworld程序到目标板中调试
在目标板中通过NFS将主机的/tftpboot/目录挂接到目标机的/mnt/nfs目录中,将编译好的程序helloworld拷贝到主机的/tftpboot/目录或其子目录下。
(二)将helloworld 应用程序使用 u 盘下载运行
目标板支持USB HOST,可以挂接 u 盘,因此可以将应用程序先拷贝到u 盘,然后将u 盘挂接到 JXARM9-2410中,然后运行。
(三)将 helloworld 应用程序添加到 ramdisk 并重新下载内核运行
用户可以在文件系统ramdisk.gz中加入自己的应用,首先将文件系统解压。
在/home/cvtech/jx2410/root/目录下会生成 ramdisk,ramdisk 为解开后的 Linux 的文件系统映像文件。再将 ramdisk 文件系统映像文件 mount 到新建目录 rd 中。然后将生成的 hello 加入到文件系统中并压缩。在新内核启动后,直接在命令行输入文件名即可运行。
四、结语