之前博文《ARM9基础—TQ2440启动信息介绍》介绍了嵌入式Linux启动的几个组成部分,本节接着介绍各个部分的编译生成方案。

笔者说:

关于Uboot和Linux的源码如何“增添删改”后才能使用,暂时不作介绍,以后会有专题。本文主要介绍如何利用官方提供的源码,进行编译并搭建Linux平台,即先使用起来。

1. 编译uboot

从官方资料中提取Uboot源码,解压到ubuntu系统下的/opt目录。

(1)解压源码

tar xvfj u-boot-1.1.6_20120828.tar.bz2 -C /

(2)编译镜像

cd /opt/EmbedSky/u-boot-1.1.6
make EmbedSky_config
make all

编译完成后,在目录 /opt/EmbedSky/u-boot-1.1.6 下找到编译好的u-boot.bin文件,如下:

2. 编译linux源码

(1)解压源码

从官方资料中提供的Linux源码,解压到ubuntu系统下的/opt目录。

tar xvfj linux-2.6.30.4_20121214.tar.bz2 -C /

(2)参数配置

将官方提供的config_EmbedSky_xx文件另存为.config文件(根据自己的开发板选择,笔者的为4.3寸LCD屏,选择config_EmbedSky_W43)

cd /opt/EmbedSky/linux-2.6.30.4
cp config_EmbedSky_W43 .config

(3)查看配置选项

安装终端库组件:

sudo apt-get install libncurses5-dev

查看各类选项:

make menuconfig

通过界面,查看需要编译的组件,如图所示:

(4)编译镜像

make zImage

编译完成后,可在 /opt/EmbedSky/linux-2.6.30.4 下找到编译好的zImage.bin文件,如下:

若出现错误:

Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.

解决方法:

vim kernel/timeconst.pl
将第373行内容: 

    if (!defined(@val)) {

更改为:   

    if (!@val) {

如图所示:

参考来源:http://blog.csdn.net/zhengzg_6/article/details/70229045

3. 制作文件系统

(1)解压源码

解压 mkxxxximage_tools.tar.bz2 工具包及 qt源码:

sudo tar xvfj mkxxxximage_tools.tar.bz2 -C /
tar xvfj root_qtopia_2.2.0_2.6.30.4_20121214.tar.bz2 -C /

(2)生成镜像

针对开发板 flash 容量为128MB以上,需使用mkyaffs2image软件打包(笔者开发板为256MB)。

cd /opt/EmbedSky
mkyaffs2image root_qtopia_2.2.0_2.6.30.4 root_qtopia_2.2.0_2.6.30.4.bin

指令执行完成后,可在 /opt/EmbedSky 下找到编译好的root_qtopia_2.2.0_2.6.30.4.bin文件,如下:

4. 烧录镜像

通过windows下的DNW工具将编译生成的u-boot.bin、zImage.bin、root_qtopia_2.2.0_2.6.30.4.bin 烧录到开发板中即可。

下一篇:《ARM9开发—Linux内核的移植方法》

注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。 标签:S3C2440,arm920t,内核编译