ARM9开发—基于TQ2440的Linux镜像编译方法
之前博文《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 烧录到开发板中即可。