1-构建嵌入式Linux开发环境6522.docx
《1-构建嵌入式Linux开发环境6522.docx》由会员分享,可在线阅读,更多相关《1-构建嵌入式Linux开发环境6522.docx(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目 录构建嵌入式式Linuux系统1.取本实实验相关的的软件包到ftp下下载以下软软件包: 文件名备注binuttils-2.166.1.ttar.bbz2 ggcc-44.0.22.tarr.bz22 gliibc-22.3.66.tarr.bz22 gliibc-llinuxxthreeads-2.3.6.taar.bzz2 liinux-2.6.15.44.tarr.bz22 linnux-llibc-headders-2.6.12.00.tarr.bz22 制作交叉编编译工具链链所需的源源码包 crossstooll-0.443.taar.gzz制作交叉编编译工具链链的脚本和和补丁 c
2、rossstooll.tarr.bz22已制作好的的交叉编译译工具链,需需要解包到到/optt目录使用用 linuxx-2.66.27.tar.bz2内核2.66.27 patchh-2.66.27-aka针对24440开发板板制作的内内核pattch zImagge已编译好的的内核,可可直接下载载到开发板板 rootffs-baasic.tar基本根文件件系统打包包,由于有有设备文件件,所以解解包需要rroot权权限 rootffs-baasic.crammfs采用craamfs文文件系统格格式的基本本根文件系系统映像,可可直接下载载到开发板板 busybbox-11.9.11.tarr.b
3、z22busybbox源码码包,嵌入入式根文件件系统基本本命令集 sqlitte-3.4.0.tar.gzsqlitte源码包包,嵌入式式数据库 libcggi-1.0.taar.gzzlibcggi源码包包,用于编编写CGII程序的C函数库 qtopiia-coore-oopenssourcce-srrc-4.2.2.tar.gzQtopiia Coore源码码包,Qtt的嵌入式式版本 2.交叉编编译工具链链要做嵌入式式Linuux开发,首首先需要有有交叉编译译工具链(cross compiling toolchain),也就是在主机(x86 PC)上可编译生成目标板可执行文件(ARM指令)
4、的编译工具。和普通的编译工具链一样,交叉编译工具链也包括编译、链接、修改目标文件的各种程序,如gcc、glibc、ld、gas、objdump、readelf等等。交叉编译工具链本身也是需要编译生成的,要得到一套完整的交叉编译工具链需要编译以下源码包: binuttils gcc glibcc linuxx(内核) linuxx-libbc-heeaderrs glibcc-linnuxthhreadds 这些源码包包具有非常常强的版本本依赖关系系,如果源源码包的版版本不匹配配,在编译译过程中会会出现各种种各样的问问题,有些些问题需要要对源码做做些修改或或者打补丁丁,有些问问题则是没没有解决办
5、办法的,只只能更换匹匹配较好的的版本。编编译的步骤骤也是比较较复杂的,主主要有以下下几步: 0. 根据目标平平台配置内内核源代码码,生成内内核头文件件 1. 编译binnutills 2. 编译器的自自举(boootsttrap),也也就是先编编译出gccc的部分分功能(没没有gliibc支持持,只有CC编译器没没有C+编译器) 3. 编译gliibc 4. 编译完整的的gcc 幸运的是,已已经有人写写出了制作作交叉编译译器的脚本本( htttp:/wwww.keggel.ccom/ccrossstooll),该脚脚本中提供供了一系列列源码包版版本的匹配配方案,使使用者需要要选择目标标平台和源
6、源码包的版版本匹配方方案,执行行该脚本会会自动从官官方网站( httpp:/wwww.ggnu.oorg/和和 htttp:/www.kernnel.oorg/)下下载源代码码,自动打打补丁,然然后自动完完成所有的的编译步骤骤。 首先从 hhttp:/ $ taar xff croosstoool-00.43.tar.gz; cd ccrossstooll-0.443现在选择一一种源码包包的版本组组合,各种种版本组合合的兼容性性可以参考考 htttp:/www.kegeel.coom/crrossttool/crossstoool-0.43/bbuilddlogss/,在此此我们选择择在arm
7、m平台上gllibc版版本较高,兼兼容性较好好的一个组组合: gcc-44.0.22 cgcc-4.0.2 glibcc-2.33.6 binuttils-2.166.1 linuxx-2.66.15.4 hdrs-2.6.12.00 修改croosstoool-00.43目目录下的脚脚本demmo-arrm.shh,取消这这一行开头头的#号注释符符: #evall caat arrm.daat gccc-4.0.2-glibbc-2.3.6.dat sh all.sh -nottest同时将原本本没有注释释的这一行行注释掉(前前面加#号): eval catt armm.datt gccc-
8、4.11.0-gglibcc-2.33.2-ttls.ddat sh aall.ssh -noteest注意该脚本本开头有 TARBAALLS_DIR=$HOMME/doownlooadsRESULLT_TOOP=/oopt/ccrossstooll这说明,该该脚本运行行时,自动动从 htttp:/wwww.gnuu.orgg/和 htttp:/www.kernnel.oorg/下下载相关的的源码包到到主目录的的downnloadds目录下下,如果你你已经下载载过这些源源码包,将将它们拷到到downnloadds目录下下就可以不不必再次下下载了。对对应于我们们选择的版版本组合,download
9、s目录下的源码包有: binuttils-2.166.1.ttar.bbz2 gcc-44.0.22.tarr.bz22 glibcc-2.33.6.ttar.bbz2 glibcc-linnuxthhreadds-2.3.6.tar.bz2 linuxx-2.66.15.4.taar.bzz2 linuxx-libbc-heeaderrs-2.6.122.0.ttar.bbz2 整个编译结结束后,交交叉编译工工具链将放放在/oppt/crrossttool目目录下,因因此脚本需需要在/oopt下建建子目录,如如果不希望望使用rooot权限限运行该脚脚本,则需需要事先给给/optt目录设置置写
10、权限: $ suudo cchmodd a+ww /oppt然后修改aarm.ddat,其其中有 TARGEET=arrm-unnknowwn-liinux-gnu这是按标准准的命名规规则为工具具链命名的的,但是通通常我们都都采用更简简单的命名名,很多软软件的Maakefiile中交交叉编译器器默认也都都采用简单单的命名,为为此我们把把它改为TTARGEET=arrm-liinux。 由于编译过过程需要用用到pattch、bisoon、flexx,确认你你的系统中中安装了这这些软件包包。 在编译过程程中可能还还会遇到脚脚本的兼容容性问题,如如果你的LLinuxx发行版将将sh指向dassh(例
11、如如Ubunntu),应应将其改指指向bassh: $ cd /binn$ suddo lnn -sff bassh shh虽然用daash执行行脚本时非非常高效并并且其实现现完全遵守守POSIIX标准,然然而现存的的很多脚本本(比如gglibcc中的脚本本)有不符符合POSSIX标准准的用法,所所以仍需改改用bassh执行。 准备就绪后后,在crrossttool-0.433目录下运运行demmo-arrm.shh脚本开始始编译。编编译完成后后,交叉编编译工具链链的可执行行文件位于于/optt/croosstoool/ggcc-44.0.22-gliibc-22.3.66/armm-linn
12、ux/bbin目录录,我们可可以把这个个路径添加加到PATTH环境变变量中,例例如将以下下命令添加加到/.bashhrc启动动脚本: exporrt PAATH=$PATHH:/oppt/crrossttool/gcc-4.0.2-gllibc-2.3.6/arrm-liinux/bin此外,网上上也可下载载到已编译译好的交叉叉编译工具具链,比如如 htttp:/www.snappgearr.orgg/snaapgeaar/doownlooads.htmll,但是使使用别人编编译好的交交叉编译工工具链有很很多限制,不不能按自己己的特殊需需要对其定定制,比如如有些项目目需要特定定版本的ggcc和
13、glibbc,再比比如需要ssoft-floaat的编译译器(生成成指令模拟拟浮点数运运算)。 以上编译步步骤需要很很长时间,也也可以直接接从ftpp下载已制制作好的交交叉编译工工具链安装装到主机: $ suudo cchmodd a+ww /oppt$ taar xff croosstoool.ttar.bbz2 -C /oopt然后在/.basshrc启启动脚本中中修改PAATH环境境变量。 3.熟悉开开发环境3.1 UU-booot的基本本使用方法法连接好开发发板的网线线和串口线线,启动mminiccom(配配置成11152000 8N11,无Floow Coontrool)。按按下开发
14、板板电源,立立刻按除回回车以外的的任意键,进进入boootloaader提提示符AKKAE24440#。如如果没来及及按键就已已经启动了了内核,可可以按开发发板上的RRESETT键重来。 注意:u-boott的终端不不能处理控控制字符,不不要用移动动光标键或或翻页键等等,退格键键可以用。按按了产生控控制字符的的键再输入入命令就会会产生错乱乱,这时可可以按下回回车输入当当前这条已已经错乱的的命令,然然后在新的的提示符下下重新键入入命令。 输入priintennv命令显显示boootloaader的的参数。 更改参数使使用命令sset或者者seteenv,如如下图所示示:上图中,setennv i
15、ipadddr 1192.1168.11.22表表示设置开开发板的IIP地址为为192.168.1.222。setennv nnetmaask 255.255.255.0表示设设置子网掩掩码为2555.2555.2555.0。setennv sserveerip 1922.1688.1.221表示设设置与开发发板相连的的PC机IP是192.168.1.211。可以根据你你的情况重重新设置。为为了统一起起见,在后后面的实验验中,我们们统一设置置为: AKAE22440 # seet ippaddrr 1922.1688.2.1100AKAE22440 # seet seerverrip 1192
16、.1168.22.21 (这一项项应该和你你的主机IIP一致)AKAE22440 # seet neetmassk 2555.2555.2555.0AKAE22440 # seet gaatewaay 1992.1668.2.21 (网关ip设置成成什么无所所谓,一般般都设为主主机ip)AKAE22440 # saavesave将将这些设定定写入fllash中中,下次开发发板上电时时仍然有效效。如果不不savee则仅改变变内存中的的参数值,reset后会恢复flash中原来的参数值。 设置完成后后在开发板板上pinng 主机机的ip地址,检检查网络是是否正常,如如下所示:AKAE22440 #
17、 piing 1192.1168.22.21host 192.168.2.211 is alivve这表示主机机能pinng通,网网络正常。如如果显示如如下:AKAE22440 # piing 1192.1168.22.21ping failled; hostt 1922.1688.2.221 iss nott aliive.这就表示主主机不能pping通通,网络异异常,需要要检查你的的网络。还有一些常常见的参数数:AKAE22440 # seet boootdeelay 3Bootddelayy设为3,表示开开发板上电电后等待33秒再启动动,这3秒时间内内按任意键键会进入uu-booot命令
18、行行状态,如如下图所示示:另外,还有有:AKAE22440 # seet boootmoode nnfs或者AKAE22440 # seet boootmoode nnandBootmmode 可以设为为nfs或者者nandd两者之一一,这个参参数表明了了u-booot启动动时,根文文件系统在在哪里寻找找,如果是是nandd表示根文文件系统保保存在开发发板本身的的flassh某个分分区中,要要到flaash上去去找;如果果是nfss则表示u-boott要去你的的PC机的nfss服务的目目录(PCC机硬盘上上)去找。在开发板bbootlloadeer输入以以下命令查查看64MM flaash是如
19、如何分区的的。 AKAE22440 # mttdparrtsDevicce naand0 . # ppartss = 44#: naame sizee offsset maskk_flaags0: u-boott 00x0011000000 0x0000200000 01: keernell 00x0022000000 0x0001000000 02: exxt2 00x0100000000 0x0003000000 03: teemp 00x02dd000000 0x0113000000 0u-booot分区保保存boootloaader程程序,Liinux内内核保存在在kernnel分区区
20、,根文件件系统会保保存到exxt2分区区, teemp分区区本实验中中没有用到到。 如果mtddpartts命令未未显示上述述图样,可可能是fllash未未作分区操操作,可以以使用mttdparrts ddefauult命令令来创建上上述那样的的默认分区区。如下图图所示: 如果要保存存新的分区区表,使用用命令saave保存存到flaash中,否否则resset后将将恢复fllash中中原来的分分区表。 下载文件到到开发板内内存中,需需要通过ttftp协协议。开发发板是tfftp客户户端,主机机是tfttp服务器器。在配置置好主机的的tftpp服务之后后,主机上上会有一个个tftpp服务的主主目
21、录/ttftprroot,我我们把要下下载到开发发板上的文文件都先拷拷贝到这个个目录中,之之后才能下下载。tfftp命令令的格式为为 tfttp 文件件名。注意意我们都是是把内核zzImagge文件下下载到0xx3000080000地址上,把把根文件系系统imgg文件下载载到0x3308000000地地址上。当我们用命命令tfttp 0xx3000080000 zImmage把把内核zIImagee下载到内内存地址00x3000080000上之后后,先使用用nandd errase kerrnel命命令擦除掉掉flassh的kernnel分区区上的数据据(否则在读读出flaash数据据时会报失
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 构建 嵌入式 Linux 开发 环境 6522
限制150内