1-构建嵌入式Linux开发环境2823.docx
《1-构建嵌入式Linux开发环境2823.docx》由会员分享,可在线阅读,更多相关《1-构建嵌入式Linux开发环境2823.docx(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目 录构建嵌入式式Linnux系系统1.取本实实验相关关的软件件包到ftp下下载以下下软件包包: 文件名备注binuttilss-2.16.1.ttar.bz22 gccc-44.0.2.ttar.bz22 gllibcc-2.3.66.taar.bbz2 gliibc-linnuxtthreeadss-2.3.66.taar.bbz2 linnux-2.66.155.4.tarr.bzz2 llinuux-llibcc-heeadeers-2.66.122.0.tarr.bzz2 制作交叉编编译工具具链所需需的源码码包 crossstoool-00.433.taar.ggz制作交叉编编译工具
2、具链的脚脚本和补补丁 crossstoool.ttar.bz22已制作好的的交叉编编译工具具链,需需要解包包到/oopt目目录使用用 linuxx-2.6.227.ttar.bz22内核2.66.277 patchh-2.6.227-aaka针对24440开发发板制作作的内核核pattch zImagge已编译好的的内核,可可直接下下载到开开发板 rootffs-bbasiic.ttar基本根文件件系统打打包,由由于有设设备文件件,所以以解包需需要rooot权权限 rootffs-bbasiic.ccrammfs采用craamfss文件系系统格式式的基本本根文件件系统映映像,可可直接下下载到开
3、开发板 busybbox-1.99.1.tarr.bzz2busybbox源源码包,嵌嵌入式根根文件系系统基本本命令集集 sqlitte-33.4.0.ttar.gzsqlitte源码码包,嵌嵌入式数数据库 libcggi-11.0.tarr.gzzlibcggi源码码包,用用于编写写CGII程序的的C函数库库 qtopiia-ccoree-oppenssourrce-srcc-4.2.22.taar.ggzQtopiia CCoree源码包包,Qtt的嵌入入式版本本 2.交叉编编译工具具链要做嵌入式式Linnux开开发,首首先需要要有交叉叉编译工工具链(cross compiling too
4、lchain),也就是在主机(x86 PC)上可编译生成目标板可执行文件(ARM指令)的编译工具。和普通的编译工具链一样,交叉编译工具链也包括编译、链接、修改目标文件的各种程序,如gcc、glibc、ld、gas、objdump、readelf等等。交叉编译工具链本身也是需要编译生成的,要得到一套完整的交叉编译工具链需要编译以下源码包: binuttilss gcc glibcc linuxx(内核核) linuxx-liibc-heaaderrs glibcc-liinuxxthrreadds 这些源码包包具有非非常强的的版本依依赖关系系,如果果源码包包的版本本不匹配配,在编编译过程程中会出
5、出现各种种各样的的问题,有有些问题题需要对对源码做做些修改改或者打打补丁,有有些问题题则是没没有解决决办法的的,只能能更换匹匹配较好好的版本本。编译译的步骤骤也是比比较复杂杂的,主主要有以以下几步步: 0. 根据目标平平台配置置内核源源代码,生生成内核核头文件件 1. 编译binnutiils 2. 编译器的自自举(bboottstrrap),也也就是先先编译出出gccc的部分分功能(没没有gllibcc支持,只只有C编译器器没有CC+编编译器) 3. 编译gliibc 4. 编译完整的的gccc 幸运的是,已已经有人人写出了了制作交交叉编译译器的脚脚本( htttp:/wwww.kkegee
6、l.ccom/croossttooll),该该脚本中中提供了了一系列列源码包包版本的的匹配方方案,使使用者需需要选择择目标平平台和源源码包的的版本匹匹配方案案,执行行该脚本本会自动动从官方方网站( htttp:/wwww.ggnu.orgg/和 htttp:/wwww.kkernnel.orgg/)下下载源代代码,自自动打补补丁,然然后自动动完成所所有的编编译步骤骤。 首先从 hhttpp:/wwww.keegell.coom/ccrossstoool下下载crrossstoool-00.433.taar.ggz,在在主目录录下解包包 $ taar xxf ccrossstoool-0.443
7、.ttar.gz; cdd crrossstoool-00.433现在选择一一种源码码包的版版本组合合,各种种版本组组合的兼兼容性可可以参考考 htttp:/m/crrossstoool/ccrossstoool-0.443/bbuilldloogs/,在此此我们选选择在aarm平平台上gglibbc版本本较高,兼兼容性较较好的一一个组合合: gcc-44.0.2 cgcc-4.00.2 glibcc-2.3.66 binuttilss-2.16.1 linuxx-2.6.115.44 hdrs-2.66.122.0 修改croossttooll-0.43目目录下的的脚本ddemoo-arrm
8、.ssh,取取消这一一行开头头的#号注释释符: #evall ccat armm.daat ggcc-4.00.2-gliibc-2.33.6.datt ssh aall.sh -nnoteest同时将原本本没有注注释的这这一行注注释掉(前前面加#号): eval caat aarm.datt gccc-44.1.0-gglibbc-22.3.2-ttls.datt ssh aall.sh -nnoteest注意该脚本本开头有有 TARBAALLSS_DIIR=$HOMME/ddownnloaadsRESULLT_TTOP=/oppt/ccrossstoool这说明,该该脚本运运行时,自自动从
9、 htttp:/wwww.ggnu.orgg/和 htttp:/wwww.kkernnel.orgg/下载载相关的的源码包包到主目目录的ddownnloaads目目录下,如如果你已已经下载载过这些些源码包包,将它它们拷到到dowwnlooadss目录下下就可以以不必再再次下载载了。对对应于我我们选择择的版本本组合,downloads目录下的源码包有: binuttilss-2.16.1.ttar.bz22 gcc-44.0.2.ttar.bz22 glibcc-2.3.66.taar.bbz2 glibcc-liinuxxthrreadds-22.3.6.ttar.bz22 linuxx-2.
10、6.115.44.taar.bbz2 linuxx-liibc-heaaderrs-22.6.12.0.ttar.bz22 整个编译结结束后,交交叉编译译工具链链将放在在/oppt/ccrossstoool目目录下,因因此脚本本需要在在/oppt下建建子目录录,如果果不希望望使用rroott权限运运行该脚脚本,则则需要事事先给/optt目录设设置写权权限: $ suudo chmmod a+ww /oopt然后修改aarm.datt,其中中有 TARGEET=aarm-unkknowwn-llinuux-ggnu这是按标准准的命名名规则为为工具链链命名的的,但是是通常我我们都采采用更简简单的命
11、命名,很很多软件件的Maakeffilee中交叉叉编译器器默认也也都采用用简单的的命名,为为此我们们把它改改为TAARGEET=aarm-linnux。 由于编译过过程需要要用到ppatcch、bisson、fleex,确确认你的的系统中中安装了了这些软软件包。 在编译过程程中可能能还会遇遇到脚本本的兼容容性问题题,如果果你的LLinuux发行行版将ssh指向向dassh(例例如Ubbunttu),应应将其改改指向bbashh: $ cd /biin$ suddo lln -sf bassh ssh虽然用daash执执行脚本本时非常常高效并并且其实实现完全全遵守PPOSIIX标准准,然而而现存
12、的的很多脚脚本(比比如gllibcc中的脚脚本)有有不符合合POSSIX标标准的用用法,所所以仍需需改用bbashh执行。 准备就绪后后,在ccrossstoool-0.443目录录下运行行demmo-aarm.sh脚脚本开始始编译。编编译完成成后,交交叉编译译工具链链的可执执行文件件位于/optt/crrossstoool/ggcc-4.00.2-gliibc-2.33.6/armm-liinuxx/biin目录录,我们们可以把把这个路路径添加加到PAATH环环境变量量中,例例如将以以下命令令添加到到/.basshrcc启动脚脚本: exporrt PPATHH=$PPATHH:/oopt/
13、croossttooll/gccc-44.0.2-gglibbc-22.3.6/aarm-linnux/binn此外,网上上也可下下载到已已编译好好的交叉叉编译工工具链,比比如 hhttpp:/wwww.snnapggearr.orrg/ssnappgeaar/ddownnloaads.htmml,但但是使用用别人编编译好的的交叉编编译工具具链有很很多限制制,不能能按自己己的特殊殊需要对对其定制制,比如如有些项项目需要要特定版版本的ggcc和和gliibc,再再比如需需要sooft-flooat的的编译器器(生成成指令模模拟浮点点数运算算)。 以上编译步步骤需要要很长时时间,也也可以直直接从f
14、ftp下下载已制制作好的的交叉编编译工具具链安装装到主机机: $ suudo chmmod a+ww /oopt$ taar xxf ccrossstoool.tarr.bzz2 -C /optt然后在/.baashrrc启动动脚本中中修改PPATHH环境变变量。 3.熟悉开开发环境境3.1 UU-booot的的基本使使用方法法连接好开发发板的网网线和串串口线,启启动miiniccom(配配置成11152200 8N11,无Fllow Conntrool)。按按下开发发板电源源,立刻刻按除回回车以外外的任意意键,进进入boootlloadder提提示符AAKAEE24440#。如如果没来来及按
15、键键就已经经启动了了内核,可可以按开开发板上上的REESETT键重来来。 注意:u-booot的终终端不能能处理控控制字符符,不要要用移动动光标键键或翻页页键等,退退格键可可以用。按按了产生生控制字字符的键键再输入入命令就就会产生生错乱,这这时可以以按下回回车输入入当前这这条已经经错乱的的命令,然然后在新新的提示示符下重重新键入入命令。 输入priinteenv命命令显示示boootlooadeer的参参数。 更改参数使使用命令令sett或者seetennv,如如下图所所示:上图中,setennv ipaaddrr 1192.1688.1.22表表示设置置开发板板的IPP地址为为1922.16
16、68.11.222。setennv nettmassk 2555.2555.2255.0表示示设置子子网掩码码为2555.2255.2555.0。setennv serrverrip 1992.1168.1.221表示示设置与与开发板板相连的的PC机IP是1922.1668.11.211。可以根据你你的情况况重新设设置。为为了统一一起见,在在后面的的实验中中,我们们统一设设置为: AKAE224400 # sett ippadddr 1192.1688.2.1000AKAE224400 # sett seerveeripp 1992.1168.2.221 (这一项项应该和和你的主主机IPP一致
17、)AKAE224400 # sett neetmaask 2555.2555.2255.0AKAE224400 # sett gaatewway 1922.1668.22.211 (网网关ipp设置成成什么无无所谓,一一般都设设为主机机ip)AKAE224400 # savvesave将将这些设设定写入入flaash中中,下次开开发板上上电时仍仍然有效效。如果果不saave则则仅改变变内存中中的参数数值,rreseet后会会恢复fflassh中原原来的参参数值。 设置完成后后在开发发板上ppingg 主机机的ipp地址,检检查网络络是否正正常,如如下所示示:AKAE224400 # pinng
18、 1192.1688.2.21host 1922.1668.22.211 iss allivee这表示主机机能piing通通,网络络正常。如如果显示示如下:AKAE224400 # pinng 1192.1688.2.21ping faiiledd; hhostt 1992.1168.2.221 iis nnot aliive.这就表示主主机不能能pinng通,网网络异常常,需要要检查你你的网络络。还有一些常常见的参参数:AKAE224400 # sett boootddelaay 33Bootddelaay设为为3,表示示开发板板上电后后等待33秒再启启动,这这3秒时间间内按任任意键会会进入
19、uu-booot命命令行状状态,如如下图所所示:另外,还有有:AKAE224400 # sett boootmmodee nffs或者AKAE224400 # sett boootmmodee naandBootmmodee 可以以设为nnfs或或者naand两两者之一一,这个个参数表表明了uu-booot启启动时,根根文件系系统在哪哪里寻找找,如果果是naand表表示根文文件系统统保存在在开发板板本身的的flaash某某个分区区中,要要到fllashh上去找找;如果果是nffs则表表示u-booot要去去你的PPC机的的nfss服务的的目录(PC机机硬盘上上)去找。在开发板bboottloa
20、aderr输入以以下命令令查看664M flaash是是如何分分区的。 AKAE224400 # mtddparrtsDevicce nnandd0 . # parrts = 44#: naame siize ooffsset maask_flaags0: u-booot 0x00010000000 00x00002000000 01: keerneel 0x00020000000 00x00010000000 02: exxt2 0x00100000000 00x00030000000 03: teemp 0x002d0000000 00x01130000000 0u-booot分区区保存b
21、boottloaaderr程序,LLinuux内核核保存在在kerrnell分区,根根文件系系统会保保存到eext22分区, temmp分区区本实验验中没有有用到。 如果mtddparrts命命令未显显示上述述图样,可可能是fflassh未作作分区操操作,可可以使用用mtddparrts deffaullt命令令来创建建上述那那样的默默认分区区。如下下图所示示: 如果要保存存新的分分区表,使使用命令令savve保存存到fllashh中,否否则reesett后将恢恢复fllashh中原来来的分区区表。 下载文件到到开发板板内存中中,需要要通过ttftpp协议。开开发板是是tfttp客户户端,主主
22、机是ttftpp服务器器。在配配置好主主机的ttftpp服务之之后,主主机上会会有一个个tfttp服务务的主目目录/ttftpprooot,我我们把要要下载到到开发板板上的文文件都先先拷贝到到这个目目录中,之之后才能能下载。tftp命令的格式为 tftp 文件名。注意我们都是把内核zImage文件下载到0x30008000地址上,把根文件系统img文件下载到0x30800000地址上。当我们用命命令tfftp 0x33000080000 zzImaage把把内核zzImaage下下载到内内存地址址0x33000080000上之之后,先先使用nnandd eerasse kerrnell命令擦擦
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 构建 嵌入式 Linux 开发 环境 2823
限制150内