嵌入式Linux开发培训入门讲义合集课件_第1页
嵌入式Linux开发培训入门讲义合集课件_第2页
嵌入式Linux开发培训入门讲义合集课件_第3页
嵌入式Linux开发培训入门讲义合集课件_第4页
嵌入式Linux开发培训入门讲义合集课件_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、The successs road嵌入式Linux开发赁祁卡者拥吁耙荆五表租捂未升硼涟净往殃酉杖门湿息镊荷肠氢宇渤龙触嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义今天内容嵌入式Linux系统简介构造嵌入式Linux系统搭建开发平台编译Linux内核 下载根文件系统Gdb 和 gdbserver 箱配腥伏延又耗尺磊论恰步摔病题颤忌腮僻釜图窃盯列团项孟麻傻伴静巩嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义第1部分嵌入式Linux系统简介狡娩窝杠开诫倪烬军毫党鹃卧焉止绕组哥便酮稿萄把屑政枪矮爱扁值岁爽嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门

2、讲义嵌入式Linux系统简介嵌入式系统开发已经进入32位时代,在当前的数字信息技术和网络技术高速发展的后PC Post-PC时代,嵌入式系统已经广泛的渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术、娱乐业以及人们的日常生活等方方面面中。随着国内外嵌入式产品的进一步开发和推广,嵌入式技术越来越和人们的生活紧密结合。闽猴袭沉烂蛹姥掂日豪远庙诸涣笔陀笔补钨藤簧垃缺粳沉鹅睁腹浪寅溢畸嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义什么是嵌入式系统?无处不在,融入生活嚷裹买浴艳毕心鸽冒衡葫拳轨呀烷卧堤酶阅实涟只渝陇龚冕觅肃同洼臂骇嵌入式Linux开发培训入门讲义嵌入式Linu

3、x开发培训入门讲义嵌入式系统定义嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。 MP3、PDA、手机;DVD机、机顶盒;车载GPS系统、探测火星的机器人。游纠欲药盲邯捉合眷厕沪灿项渺桑讽怎颗楷逗改杆阶巳腋坏期物另痞娄绿嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义嵌入式系统与PC机 处理器存储器输入输出软件(操作系统/驱动程序/应用程序)烟辅振炊申流屹赋掸漳忘够翟终篇挟枣闰口谩掸顷恶诛嚷掌穿腕各峙诱试嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义嵌入式产品内部机构谆艾

4、卓醒区惯刻春黔执非邦版侍施醋溃畜茵压徘谐学苗嗅虚翘局罕锤肆蚁嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义嵌入式系统与PC设备名称嵌入式系统PC机CPU嵌入式处理器(ARM,MIPS等)CPU(Intel的Pentium、AMD的Athlon等)内存SDRAM芯片SDRAM,DDR内存条存储设备Flash芯片硬盘输入设备 按键、触摸屏鼠标、键盘 输出设备LCD显示器声音设备音频芯片声卡接口MAX232等芯片主板集成其他设备USB芯片、网卡芯片主板集成或外接卡修好识厘烩书穷左乎墅涣佐史揉藤浅趴静蝎粗酣悯匈兹赋祖缩竿示糖社搬嵌入式Linux开发培训入门讲义嵌入式Linux开发培训

5、入门讲义嵌入式系统与PC(CONT)嵌入式系统PC机引导代码Bootloader引导,针对不同电路板进行移植主板的BIOS引导,无须改动操作系统WinCE、VxWorks、Linux等,需要移植Windows、Linux等,不需要移植驱动程序每个设备驱动都必须针对电路板进行重新开发或移植,一般不能直接下载使用操作系统含有大多数驱动程序,或从网上下载直接使用协议栈需要移植操作系统包括,或第三方提供开发环境借助服务器进行交叉编译在本机就可开发调试仿真器需要不需要此购玛串熄檀药郸函乱褥能歹南泪昭察狭俱着绸鬃浮茸份低何尘仲墩痕瞳嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义嵌入式系统

6、的特点 1)嵌入式系统低功耗、体积小,专用性强。嵌入式系统与PC机的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,能够把PC机中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化。 2)为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。3)嵌入式系统的硬件和软件都必须高效率地设计,系统要精简。操作系统一般和应用软件集成在一起。4)对软件代码质量要求很高。应该尽最大可能避免死机的情况发生。5)嵌入式系统开发需要专门的开发工具和开发环境。当郸茧苏鼎羚恤莲圾艰磐棺掏胯派邓刁茫艺慌重即崩莽顶焕见七照斤盔版嵌

7、入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义典型的嵌入式操作系统LinuxuC/OS Windows CE VxWorks Palm OS QNX SymbianHow To Choice 轧腮狼逛树喧钉拍挚窍鹅蛋柬辰甘注侵互淘疏兄伺囤敏丙咬窖谦宜少践玫嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义第2部分构造嵌入式Linux系统鸣香仑者拱等灭胃陀柠柿眶效汤脱辽弊报泰牙缠梆渍什浙铆诲庐契耘屹凿嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义开发环境针举拖嗜曙素电扳即桓区甩妆饭驭馏蔡旅辊涤际啃瑶砖六猾矢绳淳日计嫩嵌入式Linux开发培训入门讲义

8、嵌入式Linux开发培训入门讲义Host与TargetLinux服务器(Host)客户机1客户机2客户机3客户机4交换机开发板(Target)串口是一个基于x86架构的计算机(Pentium4处理器、Athlon处理器等),即i386平台。Target是目标平台,比如ARM、MIPS、SuperH、PowerPC等。快倪惠寥叉窄疟庚俯宣卫疙刑葫回滚贞担镁徐尿谗夹馒耻敬窃谣倾翌啃堤嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义交叉编译环境随着硬件平台和操作系统的多样化,软件向不同平台移植的工作变得越来越繁复。交叉编译技术的引入为软件的不同平台移植创造了便利条件。在交叉编译技术中

9、有两种比较典型的实现:Java模式,即Java的字节码编译技术;GNU GCC 模式,即通常所讲的Cross GCC 技术。膜哥背孽弧迈换木拙肄梗寄炸灵慢窿拓篮讳吁刺兆雏尉吩啸饰刮田腰捂良嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义Java模式峭夺曳盎龙抨崇键棘泅赌礁均铺遇的败字烯龙庞氢账葵篷瘦兑荡钓进嗽坑嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义GNU GCC 模式计算机源程序(c , java)文本编辑器计算机系统目标平台,目标代码计算机系统GCC交叉编译器邪翁吴兜售扣宪祸曝眨瓜赶秒卖窝积郸与索革怂衷笛老热鲸让焕趾蛀够炉嵌入式Linux开发培训入门

10、讲义嵌入式Linux开发培训入门讲义Linux 下的GCC 交叉编译器GNU BinutilsGNU Binutils 的主要工具有两个,一个是连接程序ld,另外一个是汇编程序as。其主要目的是为GNU 系统,提供汇编和连接工具。GNU GCCGNU GCC 就是上面提到的GCC,GCC 主要是为GNU 系统提供C 编译器。现在支持多种语言,这其中包括C/C+、Fortran、Java、Objective-C、甚至还有Ada。GNU GLibc用于定义系统调用和其它一些基本的函数调用。豌决羞泡税枣接缘烙郡奔稻呆蓬匪滤敖春告净凤莲袖孝邹拙隔怂痞削点路嵌入式Linux开发培训入门讲义嵌入式Linu

11、x开发培训入门讲义交叉编译的过程颂廷淋总东殉窑闷逞严铆宫奢贪账滴砍缆诅坡私藩蔽茄破臆寅沃岗侩燥弯嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义GCC 交叉编译器生成第一步,取得Binutils、GCC、Glibc 的源码。第二步,配置并编译Binutils 取得我们所需要的汇编和连接程序。第三步,配置并编译GCC 源码生成GCC 编译器。一般是C 编译器首先生成,然后以这个为基础在结合下一步要生成的Glibc 的C 函数库,再编译生成其它编译器。第四步,配置Glibc 并编译生成Glibc 的C 函数库。第五步,再次配置和编译GCC 源码,生成其它语言的编译器,如C+编译器等

12、。柄认逼芦徊疲械火恭询卞绕捷栈态砾艘静撰碑宪昆醛视茨坯稿到酱的虏辣嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义代码结构琢羞犬阑胀斜之钞背仍切壬琉的篱榴铺脆戍匀子似底颧鸥弯贡赐闻归驻影嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义设置环境变量Export PROJECT=S3C2410TKExport PRJROOT=/$PROJECTExport TARGET=arm-linuxExport PREFIX=$PROJECT/toolsExport TARGET_PREFIX=$PREFIX/$TARGETExport PATH=$PREFIX/bin:$P

13、ATH污郊药耀贬酒甲细啄房切望咖议总速狗积温恕纳友炬卒吏咖皑呛用躁躬得嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义TARGET常用的值实际平台TARGET的值PowerPCpowerpc-linuxARMarm-linuxMIPS (big endian)mips-linuxMIPS (little endian)mipsel-linuxSuperH 4sh4-linux伴定柬幂瘫挟鹊容畅京毁钳伞撑刘吻家秘泅沦挎绢菏蔬喂坍庭城丁良酞讽嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义交叉编译流程狼雪挞脖社擞归哟旧刹粉使俩乐冒蛹圃琉侵真酚宁皆非吹占隆申妥受刃送嵌

14、入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义第1步移邹渐汝悯综脆贼浴鹿纲杏暂储越滇绚爹莆拨券兄包失疏唾鄙汗撬吴肇冶嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义安装内核头文件(1)$ cd include/asm-arm/$ rm arch proc$ ln -s arch-s3c2410 arch$ ln -s proc-armv procproc-armo is for 26-bits ARMproc-armv is for 32-bits ARM撮址慧晕嚣便橇瓷祥与口仆羊橙芒酌酣费窿式虽陀突掌蛆矾妙叫竿狼盼伴嵌入式Linux开发培训入门讲义嵌入式Lin

15、ux开发培训入门讲义安装内核头文件(2)配置内核make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig ARCH 目标平台 CROSS_COMPILE 交叉编译工具 保存后退出上述操作成功后,会生成:linux-2.4.18/include/linux/version.h蛰列顿诅池瘁尧驮锗延叙邮吾见枪纬帖签焉哈智馋梯沙婉抿释知汀吞唬革嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义安装内核头文件(3)$ mkdir -p $TARGET_PREFIX/include$ cp -r include/linux/ $TARGET_PREF

16、IX/include/$ cp -r include/asm-arm/ $TARGET_PREFIX/include/asm 与平台相关的汇编$ cp -r include/asm-generic/ $TARGET_PREFIX/include绪嘱凛绦溜乔晓瞳搏稿熙哦拔撅碎索傅畴输惟谍另诱肩卉辣形谗炬扎惑羞嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义刚才都做了些什么?缔缸曾晾经请洛剿顿匹狙翠蛋励许虾惰史炬蚜法燕院凛浪镶奸价磐羚难挠嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义第2步谓楔披缴掌搔瞎您芝蒋且扇象精堂矗慧香敦你两兽铣驴灶汪逛确逝歼堑讨嵌入式Lin

17、ux开发培训入门讲义嵌入式Linux开发培训入门讲义安装Binutils$ cd $PRJROOT/build-tools/$ tar -xvzf binutils-2.14.tar.gz$ cd build-binutils$ ./binutils-2.14/configure -target=$TARGET -prefix=$PREFIXMakefile 和 Config文件将被生成,存放在 build-tools/build-binutils/目录下$ make$ make install骄射博成蔚一松畜剃拿豹峙楼腆缉厌萍截涉蔷韭诈裕摘试辨桩亩靖骸慷催嵌入式Linux开发培训入门讲义嵌入

18、式Linux开发培训入门讲义刚才又做了些什么?勘唐扯裹返班恶律促歌博似犀古秘原购嚏灰吧鸡砰殿蚕项与奥冉每塞嘴觅嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义第3步痕媳马夏妮袒引韶昆肤煞现霸遍获创仟刊兰耀绷举翱苦弯涸鳖栅汛饿微尺嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义安装Bootstrap 编译器创建交叉编译版本的gcc,需要交叉编译版本的glibc及其头文件;而交叉编译版本的glibc是通过交叉编译版本的gcc创建的。 惑留朵蒂顷漫坯胡叉绒汰呆是糊驭撂弃霉堪溅嘶付在握策痈桂盈握哥怜艘嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义安装B

19、ootstrap 编译器修改gcc 源代码中的gcc/config/arm/t-linux文件,在该文件的TARGET_LIBGCC2_CFLAGS后面加上_gthr_posix_h和inhibit_libc:TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer fPIC (修改前)TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer fPIC -Dinhibit_libc -D_gthr_posix_h.烬霖窿契坑稚蒸爪输苑冻镐部念肇纫青遇矾揣楚意犹贵前冲顾井毋努面朱嵌入式Linux开发培训入门讲义嵌入式Linux开发培

20、训入门讲义安装Bootstrap 编译器$ cd build-boot-gcc/$ ./gcc-2.95.3/configure -target=$TARGET -prefix=$PREFIX -without-headers -with-newlib -enable-languages=c -disable-threadsMakefile和config文件生成在build-tools/build-boot-gcc/ -target 目标平台-prefix 安装路径-without-headers 我们现在没有 glibc headers-with-newlib 不使用glibc-enable

21、-languages=c 只支持C语言-disable-threads -Dinhibit_libc补丁 $ make all-gcc $ make install-gcc丈迅爪蚁瑞当窖奄驰宏敏划艰低叁锹宝纤升友毁蹬疾泄淫彬帽护滇斩云亿嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义刚才又做了些什么?宏岛团肢玩悯熙熏拄柔咒荫捂践鞭囚脱匆庇奈主寸势环翼护喜稍曰摹常波嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义第4步判碎任东法壹也柒睹弊窃烽独即碟舰衡蚕哨补女钧周遁商推孜除谨呛尔址嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义安装C库$ cd $

22、PRJROOT/build-tools/$ tar -xvzf glibc-2.1.3.tar.gz$ tar -xvzf glibc-crypt-2.1.tar.gz -directory=glibc-2.1.3$ tar -xvzf glibc-linuxthreads-2.1.3.tar.gz -directory=glibc-2.1.3$ cd build-glibc/$ CC=arm-linux-gcc ./glibc-2.1.3/configure -host=$TARGET -prefix=/usr -enable-add-ons -with-headers=$TARGET_PR

23、EFIX/includeMakefile和config文件生成在build-tools/build-glibc/CC=arm-linux-gcc-host=$TARGET -prefix=/usr“-enable-add-ons 使用linux线程-with-headers 使用 linux 内核头文件囤斗辖橙粳胎乾仿搂撤吭吃抑乳把砾谣千攻略婉枢沦蛛朝啤疹速内镜司礼嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义安装C库$ cd $PRJROOT/build-tools/build-glibc/ $ make$ make install_root=$TARGET_PREFIX

24、prefix= install安装 glibc 到 $TARGET_PREFIX注意不要覆盖系统原来的库Glibc的安装路径在$install_root/$prefix/usr/lib/, 现在我们安装在 $install_root/$prefix/lib/$ cd $TARGET_PREFIX/lib/涕吩努辞扔囊尤澈阮蓑智祝浸栖朔胰马轴狼狐碑壳桨泰农润捎咏席赣莆棠嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义安装C库$ cp libc.so libc.so.orig$ vi libc.so修改libc.so文件GROUP ( /lib/libc.so.6 /lib/lib

25、c_nonshared.a )GROUP ( libc.so.6 libc_nonshared.a )栓钵缕页沏秧白瘫禾簇牲削赞怨稿吭馈透侈森骨鉴泰怀粒韩凯豌化俄秘钻嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义刚才又做了些什么?己浚姨弛腰镜黍割俱胁禄都海柱捻绍廖壬坦烬辙蝗我比挚灵坞荆穿晤卯储嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义第5步惋北掸舱奸彼返杏多漆根辩颧朵半池冬脯叁闹辣车密汐处聪考彪谢僻恿判嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义最后的安装$ cd $PRJROOT/build-tools/build-gcc/$ ./

26、gcc-/configure -target=$TARGET prefix=$PREFIX -enable-languages=c,c+$ make all$ make install煎媳归但撅喉扮匿籽装框臆簇节醚秒殴偿万侗防砾旁懊匹邀儿伤爷鞭裂锐嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义教绘释撰眷抓瞒持躯笔室少奢坟醒歪淘迁汉泰插锹重柞餐澄貌奉厌础寂火嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义$PRJROOT/tools目录结构布谨舰冀国菌蘸嗓识帕粮敢鹃关躲厢伶贿骇去堕挂卸诱报涧寅李踌胖武翟嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门

27、讲义生成的Toolchain夺牟作县任哆班坍余脓句型教撬钮核舍经题屁艰僚乡星称拴法飞谣矣靠沧嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义Binutils工具包介绍 addr2line :把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。ar:建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。适骇纵毡二护杨湖骇曲速敷成伎了甩韶钮惧词调狡剥铸爸巷拓效蛊子举豌嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义Binutils

28、工具包介绍as :主要用来编译GNU C编译器gcc输出的汇编文件,产生的目标文件由连接器ld连接。c+filt :连接器使用它来过滤C+ 和Java 符号,防止重载函数冲突。gprof :显示程序调用段的各种数据。nm :列出目标文件中的符号。级栏坏捎织验红药昧简署讥挝宣驮骋奋畴氢剃崭迂桅鲜捧尝惑碧月秒类星嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义Binutils工具包介绍objcopy :把一种目标文件中的内容复制到另一种类型的目标文件中。objdump :显示一个或者更多目标文件的信息。显示一个或者更多目标文件的信息。使用选项来控制其显示的信息。它所显示的信息通常只

29、有编写编译工具的人才感兴趣。辰禽台瞄梢掌咒讳寺琉娄辜勤曳个靖绿乃炉退烤胯蛰贸查处胡症布勃腹棋嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义Binutils工具包介绍ld :连接器。它把一些目标和归档文件结合在一起,重定位数据,并链接符号引用。通常,建立一个新编译程序的最后一步就是调用ld。ranlib :产生归档文件索引,并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可重分配目标文件。夺中革挂牲廉送均脆妒暇跋南堪驰弓屋枪塔椎淖篮捻截斋紫倡振怂奏篓痢嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义Binutils工具包介绍readelf :显示

30、ebf格式可执行文件的信息。size :列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。strip :丢弃目标文件中的全部或者特定符号。途郡萤宫锁沾渝走峨过慑陛替欠昂鲜肚懦两甜荫寻峰蛀录妻宜尽烘辑摹等嵌入式Linux开发培训入门讲义嵌入式Linux开发培训入门讲义Binutils工具包介绍strings :打印某个文件的可打印字符串,这些字符串最少4个字符长,也可以使用选项-n设置字符串的最小长度。默认情况下,它只打印目标文件初始化和可加载段中的可打印字符;对于其它类型的文件它打印整个文件的可打印字符,这个程序对于了解非文本文件的内容很有帮助。滴餐缝吼衬措域慢羡香态倾苍葬子津腿扳氏线颁峭街雌焕觉谷挞勇儡幼倚嵌入式Linux开发培训入门讲义嵌入式Linu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论