嵌入式学习——建立交叉编译环境 【1】

               在 Linux 平台下,要为开发板编译内核,图 形界面 Qtopia,bootloader,还有其他一些应用 程序,均需要交叉编译工具链。 之前的系统,要使用不同的编译器版本才能 正常编译各个部分,因此要在开发过程不断切换设置,这十分不利于初学者使用,也降低了开发的效率;自从 Linux-2.6.29 开始(本开发板所配 内核已为最新的Linux-.6.32.2),我们把交叉编 译器统一为 arm-linux-gcc-4.4.3,下面是它的安 装设置步骤。

        Step1:将光盘目录 linux\中的arm-linux-gcc- 4.4.3.tgz复制到某个目录下如\ tmp,然后进入到 该目录,执行解压命令: #cd /tmp   #tar xvzf arm-linux-gcc-4.4.3.tgz –C /   注意:C后面有个空格,并且 C是大写的,它是 英文单词“Change”的第一个字母,在此是改变 目录的意思。 执行该命令,将把 arm-linux-gcc安装到 /usr/loca/arm/4.4.3目录。解压过程如图所示:

Step2:把编译器路径加入系统环境变量,运行 命令 #gedit /root/.bashrc 编辑/root/.bashrc文件,在最后一行添加: export PATH=$PATH: /opt/FriendlyARM/toolschai/4.4.3/bin 如图,保存退出。



重新登录系统(不必重启机器,开始->logout 即 可),使以上设置生效,在命令行输入 arm-linux- gcc –v,会出现如下信息,这说明交叉编译环境 已经成功安装。



三: 解压安装源代码及其他工具
本小节将解压安装开发学习过程所用到的全部源代码以及其 他一些小工具,这包括:

- Linux内核源代码
- 嵌入式图形界面 Qropia-2.2.0 源代码(分为 x86 和 arm平台 两个版本)
- 嵌入式图形界面QtE-4.6.3 源代码(ARM 版本)
- busybox-1.13源代码
- Linux编程示例源代码(均为友善之臂自主开发并开放)
- 用以启动Linux的 bootloader 之vboot
- 其他开源的bootloader(适用于Linux)
- 其他开源软件源代码,如boa(web server), madplay(一个命 令行 mp3播放器)
- 目标文件系统目录
- 目标文件系统映象制作工具mkyaffsimage
- 图形界面的Linux logo制作工具 logomaker
1:解压安装源代码
首先创建工作目录/opt/FriendlyARM/mini2440
在命令行执行 mkdir –p
/opt/FriendlyARM/mini2440 ,如图,后面步骤的所
有源代码都会解压安装到此目录中


(1)准备好 Linux 源代码包
在 Fedora9系统中/tmp 目录中创建一个临时目录/tmp/linux #mkdir /tmp/linux 把光盘中 linux目录中的所有文件都复制到 /tmp/linux 目录中说明:这样做是为了统一下面的操作步骤,其实 你可以使用其他目录,也可以直接从光盘解压安装。
(2)解压安装 Linux 内核源代码
在工作目录/opt/FriendlyARM/mini2440中执行: #cd /opt/FriendlyARM/mini2440        

#tar xvzf /tmp/linux/linux-2.6.32.2-mini2440-20100106.tar.gz 将创建生成 linux-2.6.32.2目录,里面包含了完 整的 Linux-2.6.32.2内核源代码
说明:20100106是我们的发行更新日期标志,请以光盘中实际日期尾缀为准。
(3)解压安装嵌入式图形系统 qtopia源代码
在工作目录/opt/FriendlyARM/mini2440中执行:
#cd /opt/FriendlyARM/mini2440
#tar xvzf /tmp/linux/x86-qtopia.tgz
#tar xvzf /tmp/linux/arm-qtopia.tgz
将创建 x86-qtopia 和arm-qtopia 两个目录,并 内含相应的全部源代码。 说明:20100108 是我们的发行更新日期标志, 请以光盘中实际日期尾缀为准。
(4)解压安装嵌入式图形系统 QtE-4.6.1 源代码
在工作目录/opt/FriendlyARM/mini2440中执行:
#cd /opt/FriendlyARM/mini2440
#tar xvzf /tmp/linux/arm-qte-4.6.3-20100802.tar.gz
将创建 arm-qte-4.6.3目录,并内含相应的全部源代码。 说明: arm-qte 压缩包后面或许会有日期尾缀,它 是我们的发行或更新日期,请以光盘中实际日期尾缀为准。
(5)解压安装 busybox 源代码
Busybox是一个轻型的linux命令工具集,在此使 用的是busybox-1.13.3 版本。用户可以从其官方网站下载最新版本
(http://www.busybox.net)。 在工作目录/opt/FriendlyARM/mini2440中执行:
#cd /opt/FriendlyARM/mini2440
#tar xvzf /tmp/linux/busybox-1.13.3-mini2440.tgz
将创建 busybox-1.13.3 目录,内含相应版本的全部源代码。 说明:为了方便用户编译使用,我们做了一个缺省的配置文件fa.config。
(6)解压安装 Linux 示例程序
在工作目录/opt/FriendlyARM/mini2440中执行:
#cd /opt/FriendlyARM/mini2440
#tar xvzf /tmp/linux/examples-20100108.tgz
将创建 examples目录,并包含初学linux 编程代 码示例。 说明: 20100108是我们的发行更新日期标志,请以光盘中实际日期尾缀为准。 examples目录中的代码均为友善之臂自主开发,并全部以源代码方式提供,它们都是一些基于命令行 的小程序。
(7)解压安装 vboot 源代码
为了实现自动适应支持 64M/128M
mini2440/micro2440,我们专门为 Linux 系统设 计了一个简易的bootloader:vboot,而不再使用 以前的vivi。
在工作目录/opt/FriendlyARM/mini2440中执行:
#cd /opt/FriendlyARM/mini2440
#tar xvzf /tmp/linux/vboot-src-20100106.tar.gz
将创建vboot 目录,里面包含该bootloader 的源 代码和Makefile文件。 说明:20100106是我们的发行更新日期标志,请以光盘中实际日期尾缀为准
(8)解压安装其他其他开源 bootloader源代码
除了vboot,本开发板还提供了另外三种开源的 Bootloader(详见本手册第八章节),其 中 vivi 和 u-boot 是在Linux平台下设计编译的。 在工作目录/opt/FriendlyARM/mini2440中执行:
#cd /opt/FriendlyARM/mini2440
#tar xvzf /tmp/linux/bootloader.tgz
将创建 bootloader 目录,里面包含vivi 和 u-boot 两种 bootloader 的源代码。 说明:此处的vivi 仅适用于64M Nand Flash的 mini2440/micro2440板,u-boot是由网 友提供的,我们并没有使用过,对其功能和性能 均不了解。
2:解压创建目标文件系统
在工作目录/opt/FriendlyARM/mini2440中执行:
#cd /opt/FriendlyARM/mini2440
#tar xvzf /tmp/linux/ rootfs_qtopia_qt4-0100816.tar.gz
将创建 rootfs_qtopia_qt4目录, 该目录和目标板上使 用的文件系统内容是完全一致的。

它具有如下特性:
- 自动识别NFS启动或本地启动
- 可支持USB鼠标和触摸屏共存
- 自动识别所接的输出显示模块是否接了触摸屏,以判断 在第一次开机使用时是否要 进行校正。如果没有连接,会自动进入系统,使用鼠标即 可;否则会先校正触摸屏。
- 自动识别普通或者高速 SD卡(最大可支持 32G)和优盘
- 包含双图形系统 Qtopia-2.2.0和QtE-4.6.1
3:解压安装必要实用工具
(1)目标文件系统映象制作工具 mkyaffs2image
要把上一步中的 rootfs_qtopia_qt4 目录烧写入目标板中使 用,就需要使用相应的mkyaffs2image工具了,它是一个命令 行的程序,使用它可以把主机上的目标文件系统目录制作成 一个映象文件,以烧写到开发板中。 针对 64M 或 128M/256M/512M/1GB 的mini2440/mcro2440,分别有 2 套制作工具:
mkyaffs2image 和 mkyaffs2image-128M。其中 mkyaffs2image 是制作适用于 64M 版本文件系统映象的工 具,它沿用了以前的名字; mkyaffs2image-128M 是制作适 用于128M/256M/512M/1GB 版本文件系统映象的工具,为 了便于区分,我们把它命名为此。 在工作目录/opt/FriendlyARM/mini2440中执行:
#cd /opt/FriendlyARM/mini2440
#tar xvzf /tmp/linux/mkyaffs2image.tgz –C /
注意:C是大写的,C后面有个空格,C是改变解压安装目录的意思                  说明:以前的内核系统支持的是 yaffs 文件系统, 现在使用的是 yaffs2 文件系统,因此需要不同的 制作工具,我们在此把它称为 kyaffs2image,按 照上面的命令解压后它会被安装到/usr/sbin目录 下,并产生 2 个文件:mkyaffs2image 和 mkyaffs2image-128M。
(2)解压安装 LogoMaker
在工作目录/opt/FriendlyARM/mini2440中执行:
#cd /opt/FriendlyARM/mini2440
#tar xvzf /tmp/linux/logomaker.tgz –C /
注意:C是大写的,C后面有个空格,C是改变 解压安装目录的意思


五: 配置网络文件系统 NFS服务
如果您已经按照以上章节介绍的方法完全安装好了Fedora 9, 则 NFS 相关软件都已经缺省安装好了,请按照以下步骤建立和配置NFS服务。
1:设置共享目录
注意:要使用共享目录,必须先解压安装好 root_qtopia目标板 文件系统包。
(1)设置共享目录运行命令
#gedit /etc/exports
编辑nfs 服务的配置文件(注意:第一次打开时该文件是空的),添加以下内容:
/opt/FriendlyARM/mini2440/rootfs_qtopia_qt4
*(rw,sync,no_root_squash) 其中:
/opt/FriendlyARM/mini2440/rootfs_qtopia_qt4 表示 nfs 共享目录,它可以作为开发板的根文件系统通过nfs 挂接;
* 表示所有的客户机都可以挂接此目录
rw 表示挂接此目录的客户机对该目录有读写的权力 no_root_squash 表示允许挂接此目录的客户机享有该主机的 root 身份
2:启动 NFS 服务
可以通过命令行和图形界面两种方式启动 NFS 服务,我们建立 NFS服务的目的是通过网络对 外提供目录共享服务,但默认安装的 Fedora系 统开启了防火墙,这会导致NFS服务无法正常使 用。因此先关闭防火墙,在命令行输入“lokkit”命 令,打开防火期设置界面:


选择其中(*)Disabled,然后选择“OK”退出,这样就永久的 关闭了防火墙。
下面是启动 NFS服务的方法和步骤:
(1)通过命令启动和停止 nfs 服务
在命令行下运行:
#/etc/init.d/nfs start
这将启动 nfs 服务,可以输入以下命令检验 nfs 该服务是否 启动。
# mount -t nfs localhost:
/opt/FriendlyARM/mini2440/rootfs_qtopia_qt4   /mnt/
如果没有出现错误信息,您将可以浏览到 /mnt 目录中的内 容和/opt/FriendlyARM/mini2440/rootfs_qtopia_qt4 是一致的。
使用这个命令可以停止 nfs 服务:
#/etc/init.d/nfs stop
(2)通过图形界面启动 NFS服务
为了在每次开机时系统都自动启动该服务,可以 输入
# serviceconf
打开系统服务配置窗口,在左侧一栏找到nfs 服 务选项框,并选中它,然后点工具栏的“Enable” 启动它,如图。


3 :通过 NFS启动系统
当NFS服务设置好并启动后,我们就可以把 NFS作为根文件系统来启动开发板了。 通过使用 NFS作为根文件系统,开发板的“硬盘” 就可以变得很大,因为您使用的是主机的硬盘, 这是使用 Linux作为开发经常使用的方法,设置 目标板启动模式为Nand Flash 启动,连接好电源,串口线,网线;打开串口终端,在开机或者 复位的时候按下开发板上的 K1-K6任意按键,这样我们就进入了 vivi 模式,输入以下命令:
Supervivi>  param set linux_cmd_line “console=ttySAC0
root=/dev/nfs
nfsroot=192.168.1.111:/opt/FriendlyARM/mini2440/rootfs_qtop
ia_qt4
ip=192.168.1.70:192.168.1.111:192.168.1.111:255.255.255.0:
sbc2440.arm9.net:eth0:off"
其中 ,param  set  linux_cmd_line 是设置启动 linux 时的命令参数。其各参数的含义如下:nfsroot 是自己开发主机的 IP地址。
“ip=”后面:
第一项(192.168.1.70)是目标板的临时 IP(注意不要和局域网内 其他 IP冲突);
第二项(192.168.1.111)是开发主机的IP;
第三项(192.168.1.111)是目标板上网关(GW)的设置;
第四项(255.255.255.0)是子网掩码;

第五项是开发主机的名字(一般无关紧要,可随便填写) eth0 是网卡设备的名称。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值