APP下载

基于S3C2410的嵌入式Linux开发环境的搭建

2013-02-26

兵器装备工程学报 2013年5期
关键词:源码编译器开发板

朱 黎

(陕西工业职业技术学院,陕西咸阳 712000)

由于嵌入式产品的大量应用和由于Linux具有良好的可裁剪性与可移植性,而且代码完全公开,具有丰富的网络资源及有力的技术支持和众多的研发力量。因此,嵌入式Linux系统的开发得到广泛的重视,成为越来越多的嵌入式系统选择和开发热点。一个完整的嵌入式Linux系统通常由由Bootload、内核、文件系统3部分组成,目标板上电后由Bootload初始化硬件,引导内核和文件系统,从而启动Linux。

嵌入式Linux开发环境的搭建主要包括:编译生成Bootloader、裁剪、配置和编译Kernel Image和Root File System,并将它们烧写到Flash中。

1 建立Linux交叉编译环境

本系统开发环境是在宿主机的vmware虚拟机中安装Linux操作系统实现的。其中Linux操作系系统的开发版本为 RedHat4.0,内核版本为 Linux2.6.24。此外,还需要在宿主机上配置IP地址并关闭防火墙、相关的网络服务,如NFS网络文件系统、TFTP服务、Samba服务。而对应的ARM开发板通常称为目标板。GNU编译器的开发流程如图1所示。

图1 GNU编译器的开发流程

图2 用gcc编译程序流程

2 Boot1oader

Bootloader芯片复位后进入操作系统之前执行的一段程序,其作用与PC机上的BIOS类似。Bootloader主要是为运行操作系统提供基本的运行环境,如CPU、SDRAM、Flash、串行口等进行初始化,也可以下载文件到系统板,对Flash进行擦除与编程。

2.1 U-Boot移植步骤

1)建立目录并解压u-boot源码

2)进入解压后的目录 u-boot-1.3.2,首先用 make distclean命令清除原来编译环境依赖关系

3)配置开发板,编译u-boot。编译成功后会在当前目录下生成u-boot二进制文件。

4)烧写U-Boot

将编译得到的u-boot.bin拷贝到PC机sjf2410-s.exe文件所在的路径下。连接好开发板的电源、JTAG下载线,然后打开电源。在PC机的DOS命令提示符下,进入u-boot.bin所在文件夹,运行命令烧写u-boot。

在烧写中需要做一些选择,要分别输入三次0,开始烧写,烧写完输入2推出。

2.2 测试 U-Boot

连接好开发板和主机之间的串口、网口,断开开发板的JTAG下载线,重新启动开发板。如果烧写成功,会在串口终端上出现如下内容:

3 嵌入式Linux内核的裁减和移植

3.1 内核配置

1)修改Makefile文件

在配置内核之前需要修改 linux-2.6.24.2目录下的Makefile文件,指定交叉编译器为arm-linux-编译器和使用ARM体系结构。

使用vi编辑器打开Makefile文件,作如下修改。

2)配置内核

内核源码必须先进行配置才能编译。通常内核的配置有以下4 中方法:make config、make xconfi、make menuconfig和make gconfig。

得到.config文件,运行“make menuconfig”命令打开内核配置界面如图3所示。设置S3C2410 Machines、Nand Flash、网卡、文件系统等相关配置信息。

图3 内核配置界面

3.2 内核编译

1)编译内核映像和模块

如果内核已经编译过多次,需进入内核根目录清除原先残留的.config和.o文件。然后用make命令进行编译。编译成功,在内核源码根目录的arch/arm/boot下生成zImage文件。

2)生成uImage文件

使用由u-boot生成的工具mkimage,生成uImage文件。执行脚本程序make_uImage此时会在内核源码根目录下生成uImage内核文件。

3.3 烧写Linux内核

1)配置IP地址。设置宿主机即TFTP服务器端机器IP为 setenv serverip 192.168.1.12,设置 ARM 端 U-BOOT 中网络设备 IP 地址 setenv ipaddr 192.168.1.13,saveenv保存设置。

2)将生成的uImage文件拷贝到tftpboot目录下

3)下载到SDRAM。运行tftp 0x30008000 uImage命令,将uImage文件下载到ARM开发板的SDRAM中0x30008000开始的空间中。

4)擦除NANDFLASH空间,写入Nand Flash。

3.4 引导内核

重启ARM开发板,执行命令“bootm”,实现U-BOOT引导内存中的内核。启动后液晶屏左上角出现小企鹅图案。

4 文件系统

Root Filesystem(根文件系统)是ARM Linux正常运行的必要组成部分。创建文件系统后,应用程序对Nand-Flash存储设备的读写操作就好像对MS-DOS文件系统的磁盘设备操作一样。目前Linux支持多种文件系统,主要包括Romfs、Cramfs、JFFS和 JFFS2等。

4.1 建立根文件系统

1)创建根文件目录rootfs

2)使用busybox工具创建文件系统

a)将已有的busybox-1.12.2压缩包拷贝到根目录下并解压

b)修改Makefile文件,支持交叉编译

修改该目录下Makefile文件中的ARCH和CROSS_COMPIL,指定交叉编译器和目标系统,与本机的路径一致。

c)编译busybox

执行命令make menuconfig进入busybox如图4所示配置界面设置相关选项并保存。

图4 busybox的配置界面

d)用make,make install进行编译生成_install目录

至此busybox工具编译完成,生成了文件系统需要的相关命令和工具在_install目录下。用户也可以根据需要,在busybox中添加删除相关命令和工具。

创建根文件系统的其它目录结构,如 etc、dev、lib、mnt等,并添加相关配置文件与设备节点。也可直接解压rootfs压缩包,生成rootfs根目录树。

3)复制_install文件夹内容

将“/home/uptech/rootfs/busybox-1.12.2/_install”的全部内容复制到“/home/uptech/rootfs”中。

4)使用mkcramfs工具将rootfs文件系统目录制作成CRAMFS根文件系统映像生成root.cramfs根文件系统文件。

4.2 烧写根文件系统

1)将生成的根文件系统文件root.cramfs到宿主机TFTP服务器下载目录/tftpboot

2)配置宿主机和目标机的网络IP,启动ARM设备,进入U-Boot控制台

3)下载到SDRAM

4.3 启动LINUX系统,挂载根文件系统

在U-BOOT中输入boot目录引导系统。

输入root用户名称,系统顺利引导运行起来了。

5 结束语

本章主要设计完成系统设计所需要的开发环境的搭建。首先给出了嵌入式Linux开发环境主要过程。其中介绍了GNU编译器和gcc编译工具的基本结构及gcc编译程序的基本能流程。然后详细的介绍了Bootloader操作模式、启动过程和U-Boot移植、测试。此外介绍Linux内核的裁减、配置、编译和烧写,及根文件系统建立、编译、配置和烧写过程。

[1] 高强,郑晓庆,陈敏.嵌入式Linux的家用无线远程监控系统[J].自动化与仪表,2010(5):47 -50.

[2] 吕盛林,林子杰,陈立定.基于ARM9的无线环境监控系统的实现[J].信息技术,2009(12):17-20.

[3] 何永琪.嵌入式Linux系统实用开发[M].北京:电子工业出版社,2010:13 -24.

[4] 杨宗德.嵌入式ARM系统原理与实训开发[M].第2版.北京:电子工业出版社,2010.

[5] 华清软件嵌入式培训中心.嵌入式Linux应用程序开发标准教程[M].第2版.北京:人民邮电出版社,2010:109-114.

[6] 薛园园.21天学通Linux嵌入式开发[M].北京:电子工业出版社,2010:51 -52.

[7] 杨水清,张剑,施云飞.ARM嵌入式Linux系统开发技术详解[M].北京:电子工业出版社,2010.

[8] 韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2009.

(责任编辑杨继森)

猜你喜欢

源码编译器开发板
GUI 源码自动生成研究综述
基于词嵌入的源码相似度研究
国内一站式工程设备租赁平台众能联合完成C2、C3两轮融资
面向理想性能空间的跨架构编译分析方法
企业如何保护源码
基于STM32H7的FDCAN通信系统设计与实现∗
基于相异编译器的安全计算机平台交叉编译环境设计
运行速度大突破华为《方舟编译器》详解
浅析单片机开发板的设计与制作
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证