书签 分享 收藏 举报 版权申诉 / 109
上传文档赚钱

类型嵌入式操作系统课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:2314441
  • 上传时间:2022-04-01
  • 格式:PPT
  • 页数:109
  • 大小:1.44MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《嵌入式操作系统课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    嵌入式 操作系统 课件
    资源描述:

    1、嵌入式操作系统嵌入式操作系统陈香兰陈香兰助教:陈博、李春华助教:陈博、李春华GNU开发工具链介绍开发工具链介绍“工欲善其事,工欲善其事,必先利其器必先利其器” -论语论语2022-4-1Embedded Operating Systems3/107主要内容主要内容vGNU Tools简介vGNU Tools交叉开发环境及其安装2022-4-1Embedded Operating Systems4/107本地开发本地开发 vs 交叉平台开发交叉平台开发v本地开发:一般软件的开发属于本地开发,也就是说开发软件的系统与运行软件的系统是相同的。v交叉平台开发:本课程所涉及到的嵌入式系统开发属于交叉平台

    2、开发,也就是说开发软件的系统与运行软件的系统不同。2022-4-1Embedded Operating Systems5/107交叉开发平台交叉开发平台v主机:开发软件的平台,称为主机,往往是通用电脑;v目标机:运行软件的平台,称为目标机,在这里是嵌入式系统。2022-4-1Embedded Operating Systems6/107嵌入式交叉开发工具嵌入式交叉开发工具v掌握嵌入式开发工具的使用是进行嵌入式开发的前提条件之一v与主流开发工具类似,嵌入式交叉开发工具也包括1.编译器,即能够把一个源程序编译生成一个可执行程序的软件2.调试工具,即能够对执行程序进行源码或汇编级调试的软件3.软件工

    3、程工具,用于协助多人开发或大型软件项目的管理的软件2022-4-1Embedded Operating Systems7/107GNU toolsvGNU tools和其他一些优秀的开源软件可以完全覆盖上述类型的软件开发工具。为了更好的开发嵌入式系统,需要熟悉如下一些软件GCCBinutils辅助GCC的主要软件Gdbmakecvs2022-4-1Embedded Operating Systems8/107一、一、GCCv很多人认为GCC只是一个C编译器,其实GCC = GNU Compiler Collectionv目前,GCC可以支持多种高级语言,如C、C+ADAObject CJAVA

    4、FortranPASCAL2022-4-1Embedded Operating Systems9/107GCC下的工具下的工具vcpp 预处理器GNU C编译器在编译前自动使用cpp对用户程序进行预处理vgcc 符合ISO等标准的C编译器vg+ 基本符合ISO标准的C+编译器vgcj GCC的java前端vgnat GCC的GNU ADA 95前端2022-4-1Embedded Operating Systems 10/107GNU Toolsgccvgcc是一个强大的工具集合,它包含了预处理器、编译器、汇编器、链接器等组件。它会在需要的时候调用其他组件。输入文件的类型和传递给gcc的参数决

    5、定了gcc调用具体的哪些组件。v对于开发者,它提供的足够多的参数,可以让开发者全面控制代码的生成,这对嵌入式系统级的软件开发非常重要2022-4-1Embedded Operating Systems 11/107gcc使用举例(使用举例(1)源程序源程序2022-4-1Embedded Operating Systems 12/107gcc使用举例(使用举例(2)编译和运行编译和运行编译运行2022-4-1Embedded Operating Systems 13/107gcc的工作过程(的工作过程(1)v如果使用-v选项,则可以看到许多被隐藏的信息2022-4-1Embedded Oper

    6、ating Systems 14/1072022-4-1Embedded Operating Systems 15/107gcc的编译过程的编译过程v一般情况下,c程序的编译过程为1、预处理2、编译成汇编代码3、汇编成目标代码4、链接2022-4-1Embedded Operating Systems 16/1071、预处理、预处理v预处理:使用-E参数输出文件的后缀为“.cpp”gcc E o gcctest.cpp gcctest.cv使用wc命令比较预处理后的文件与源文件,可以看到两个文件的差异2022-4-1Embedded Operating Systems 17/107行数 单词数

    7、 字节数预编译2022-4-1Embedded Operating Systems 18/107v预处理文件汇编代码1)使用-x参数说明根据指定的步骤进行工作,cpp-output指明从预处理得到的文件开始编译2)使用-S说明生成汇编代码后停止工作gcc x cpp-output S o gcctest.s gcctest.cppv也可以直接编译到汇编代码gcc S gcctest.c2、编译成汇编代码、编译成汇编代码2022-4-1Embedded Operating Systems 19/107预处理文件汇编代码直接编译到汇编代码s2022-4-1Embedded Operating Sy

    8、stems 20/1073、编译成目标代码、编译成目标代码v汇编代码目标代码gcc x assembler c gcctest.sv直接编译成目标代码gcc c gcctest.cv使用汇编器生成目标代码as o gcctest.o gcctest.s2022-4-1Embedded Operating Systems 21/107汇编代码目标代码直接编译成目标代码使用汇编器2022-4-1Embedded Operating Systems 22/1074、编译成执行代码、编译成执行代码v目标代码执行代码gcc o gcctest gcctest.ov直接生成执行代码gcc o gcctes

    9、t gcctest.c2022-4-1Embedded Operating Systems 23/107目标代码执行代码直接生成执行代码2022-4-1Embedded Operating Systems 24/107gcc的高级选项的高级选项v-Wall:打开所有的警告信息2022-4-1Embedded Operating Systems 25/107根据警告信息检查源程序根据警告信息检查源程序Main函数的返回值为int在函数的末尾应当返回一个值2022-4-1Embedded Operating Systems 26/107修改源程序修改源程序2022-4-1Embedded Oper

    10、ating Systems 27/107优化编译优化编译v优化编译选项有:-O0缺省情况,不优化-O1-O2-O3等等不同程度的优化2022-4-1Embedded Operating Systems 28/107gcc的优化编译举例(的优化编译举例(1)考虑如下的源代码考虑如下的源代码不同的优化编译选项2022-4-1Embedded Operating Systems 29/107gcc的优化编译举例(的优化编译举例(2)使用使用time命令统计程序的运行命令统计程序的运行2022-4-1Embedded Operating Systems 30/107二、二、GNU binutilsvb

    11、inutils是一组二进制工具程序集,是辅助GCC的主要软件,它主要包括1.addr2line 把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。2.ar 建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。2022-4-1Embedded Operating Systems 31/1073. as 是GNU汇编器,主要用来编译GNU C编译器gcc输出的汇编文件,他将汇编代码转换成二进制代码,并存放到一个object文件中,该目标文件将由连接器ld连接

    12、4. C+filt解码C+符号名,连接器使用它来过滤 C+ 和 Java 符号,防止重载函数冲突。 5. gprof 显示程序调用段的各种数据。6. ld 是连接器,它把一些目标和归档文件结合在一起,重定位数据,并链接符号引用,最终形成一个可执行文件。通常,建立一个新编译程序的最后一步就是调用ld。2022-4-1Embedded Operating Systems 32/1077. nm 列出目标文件中的符号。8. objcopy把一种目标文件中的内容复制到另一种类型的目标文件中.9. objdump 显示一个或者更多目标文件的信息。使用选项来控制其显示的信息。它所显示的信息通常只有编写编译

    13、工具的人才感兴趣。10.ranlib 产生归档文件索引,并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可重分配目标文件。11.readelf 显示elf格式可执行文件的信息。2022-4-1Embedded Operating Systems 33/10712.size 列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。13.strings 打印某个文件的可打印字符串,这些字符串最少4个字符长,也可以使用选项-n设置字符串的最小长度。默认情况下,它只打印目标文件初始化和可加载段中的可打印字符;对于其它类型的文件它打

    14、印整个文件的可打印字符,这个程序对于了解非文本文件的内容很有帮助。14.strip 丢弃目标文件中的全部或者特定符号。2022-4-1Embedded Operating Systems 34/10715. libiberty 包含许多GNU程序都会用到的函数,这些程序有: getopt, obstack, strerror, strtol 和 strtoul.16.libbfd 二进制文件描述库.17.libopcodes 用来处理opcodes的库, 在生成一些应用程序的时候也会用到它, 比如objdump.Opcodes是文本格式可读的处理器操作指令.2022-4-1Embedded O

    15、perating Systems 35/107binutils开发工具使用举例开发工具使用举例varvnmvObjcopyvObjdumpvreadelf2022-4-1Embedded Operating Systems 36/1071、arvar用于建立、修改、提取归档文件(archive),一个归档文件,是包含多个被包含文件的单个文件(也可以认为归档文件是一个库文件)。v被包含的原始文件的内容、权限、时间戳、所有者等属性都保存在归档文件中,并且在提取之后可以还原2022-4-1Embedded Operating Systems 37/107使用使用ar建立库文件(建立库文件(1)v源程

    16、序add.c和minus.c2022-4-1Embedded Operating Systems 38/107使用使用ar建立库文件(建立库文件(2)编译成目标文件将库文件拷贝到/usr/lib目录下Ar的rv参数的说明:r:将多个文件组成一个文件v:输出信息建立库文件2022-4-1Embedded Operating Systems 39/107库文件使用举例库文件使用举例在代码中使用在代码中使用Add和和Minus函数函数2022-4-1Embedded Operating Systems 40/107在编译时指定库文件在编译时指定库文件指明将libtest.a链接进来运行结果2022-

    17、4-1Embedded Operating Systems 41/1072、nmvnm的主要功能是列出目标文件中的符号,这样程序员就可以定位和分析执行程序和目标文件中的符号信息和它的属性2022-4-1Embedded Operating Systems 42/107nm显示的符号类型显示的符号类型A:符号的值是绝对值,并且不会被将来的链接所改变B:符号位于未初始化数据部分(BSS段)C:符号是公共的。公共符号是未初始化的数据。在链接时,多个公共符号可能以相同的名字出现。如果符号在其他地方被定义,则该文件中的这个符号会被当作引用来处理D:符号位于已初始化的数据部分T:符号位于代码部分U:符号未

    18、被定义?:符号类型未知,或者目标文件格式特殊2022-4-1Embedded Operating Systems 43/107nm使用举例使用举例如果对test可执行文件使用nm,会有什么结果呢?(作业)2022-4-1Embedded Operating Systems 44/1073、objcopyv可以将一种格式的目标文件内容进行转换,并输出为另一种格式的目标文件。v它使用GNU BFD(binary format description)库读/写目标文件,通过这个BFD库,objcopy能以一种不同于源目标文件的格式生成新的目标文件v$objcopy -hv在makefile里面用-O

    19、 binary 选项来生成原始的二进制文件,即通常说的image文件2022-4-1Embedded Operating Systems 45/107Objcopy使用举例使用举例使用file命令查看文件类型生成srec格式的目标文件使用file命令查看新文件的类型2022-4-1Embedded Operating Systems 46/107文件格式文件格式v a.out:assembler and link editor output 汇编器和链接编辑器的输出 v coffcommon object file format一种通用的对象文件格式 v ELFexcutive linked

    20、fileLinux系统所采用的一种通用文件格式,支持动态连接。ELF格式可以比COFF格式包含更多的调试信息 2022-4-1Embedded Operating Systems 47/107文件格式文件格式vFlatelf格式有很大的文件头,flat文件对文件头和一些段信息做了简化uClinux系统使用flat可执行文件格式vSRECMOTOROLA S-Recoder格式(S记录格式文件) v等等2022-4-1Embedded Operating Systems 48/1074、objdumpv显示一个或多个目标文件的信息,由其选项来控制显示哪些信息。v一般来说,objdump只对那些要

    21、编写编译工具的程序员有帮助,但是我们通过这个工具可以方便的查看执行文件或者库文件的信息2022-4-1Embedded Operating Systems 49/107Objdump使用举例(使用举例(1)-f选项:显示文件头中的内容2022-4-1Embedded Operating Systems 50/107Objdump使用举例(使用举例(2)-d选项进行反汇编2022-4-1Embedded Operating Systems 51/1075、readelfvreadelf:显示一个或多个ELF格式的目标文件信息。2022-4-1Embedded Operating Systems

    22、52/107Readelf使用举例使用举例2022-4-1Embedded Operating Systems 53/107三、其他三、其他GNU工具工具vGdb调试器vGNU make软件工程工具vdiff,patch补丁工具vCVS版本控制系统2022-4-1Embedded Operating Systems 54/1071、GNU Toolchaingdb vGdb = GNU debugervGNU tools中的调试器,功能强大设置断点监视、修改变量单步执行显示/修改寄存器的值堆栈查看远程调试2022-4-1Embedded Operating Systems 55/107gdb使

    23、用举例使用举例v源代码如下编译:gcc o bug bug.c2022-4-1Embedded Operating Systems 56/107编译并运行编译并运行?编译2022-4-1Embedded Operating Systems 57/107使用使用gdb调试调试bug运行bug输入字符串hello显示出错位置能不能看到源代码呢?2022-4-1Embedded Operating Systems 58/107使用使用gcc的的-g参数参数vgcc g o bug bug.cv重新调试列出源代码2022-4-1Embedded Operating Systems 59/107?怎么修

    24、改前面的源代码呢?设置断点2022-4-1Embedded Operating Systems 60/1072、使用、使用GNU make管理项目管理项目vGNU make是一种代码维护工具,在使用GNU编译器开发大型应用时,往往要使用make管理项目。如果不使用make管理项目,就必须重复使用多个复杂的命令行维护项目和生成目标代码。vMake通过将命令行保存到makefile中简化了编译工作。vMake的主要任务是根据makefile中定义的规则和步骤,根据各个模块的更新情况,自动完成整个软件项目的维护和代码生成工作。2022-4-1Embedded Operating Systems 61

    25、/107vMake可以识别出makefile中哪些文件已经被修改,并且在再次编译的时候只编译这些文件,从而提高编译的效率Make会检查文件的修改和生成时间戳,如果目标文件的修改或者生成时间戳比它的任意一个依赖文件旧,则make就执行makefile文件中描述的相应命令,以便更新目的文件只更新那些需要更新的文件,而不重新处理那些并不过时的文件2022-4-1Embedded Operating Systems 62/107v特点:适合于支持多文件构成的大中型软件项目的编译,链接,清除中间文件等管理工作提供和识别多种默认规则,方便对大型软件项目的管理支持对多目录的软件项目进行递归管理对软件项目具有

    26、很好的可维护性和扩展性2022-4-1Embedded Operating Systems 63/107makefilevMakefile告诉make该做什么、怎么做vmakefile主要定义了1)依赖关系即有关哪些文件的最新版本是依赖于哪些别的文件产生或者组成的2)需要用什么命令来产生目标文件的最新版本3)以及一些其他的功能2022-4-1Embedded Operating Systems 64/107Makefile的规则的规则v规则一条规则包含3个方面的内容,1)要创建的目标(文件),2)创建目标(文件)所依赖的文件列表;3)通过依赖文件创建目标文件的命令组2022-4-1Embedd

    27、ed Operating Systems 65/107v规则一般形式target . : prerequisites . command . . v例如test:test.c;gcc O o test test.c2022-4-1Embedded Operating Systems 66/107一个简单的一个简单的makefileedit : main.o kbd.o command.o display.o insert.o search.o files.o utils.occ -o edit main.o kbd.o command.o display.o insert.o search.o

    28、 files.o utils.omain.o : main.c defs.hcc -c main.ckbd.o : kbd.c defs.h command.hcc -c kbd.ccommand.o : command.c defs.h command.hcc -c command.cdisplay.o : display.c defs.h buffer.hcc -c display.cinsert.o : insert.c defs.h buffer.hcc -c insert.csearch.o : search.c defs.h buffer.hcc -c search.cfiles.

    29、o : files.c defs.h buffer.h command.hcc -c files.cutils.o : utils.c defs.hcc -c utils.cclean : rm edit main.o kbd.o command.o display.o insert.o search.o files.o utils.o 2022-4-1Embedded Operating Systems 67/107Make的工作过程的工作过程vdefault goal在缺省的情况下,make从makefile中的第一个目标开始执行vMake的工作过程类似一次深度优先遍历过程2022-4-1

    30、Embedded Operating Systems 68/107Makefile 中的变量中的变量v使用变量可以降低错误风险简化makefilev例:objects变量($(objects))objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.oedit : $(objects)cc -o edit $(objects) 2022-4-1Embedded Operating Systems 69/107v有点像环境变量环境变量在make 过程中被解释成make的变量v可以被用来贮存一个文件名列表

    31、。贮存可执行文件名。如用变量代替编译器名。贮存编译器FLAG2022-4-1Embedded Operating Systems 70/107预定义变量预定义变量vMake使用了许多预定义的变量,如ARASCCCXXCFLAGSCPPFLAGS等等2022-4-1Embedded Operating Systems 71/107简化后的简化后的makefile文件文件objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.oedit : $(objects) cc -o edit $(objects)

    32、main.o : defs.h kbd.o : defs.h command.h command.o : defs.h command.h display.o : defs.h buffer.h insert.o : defs.h buffer.h search.o : defs.h buffer.h files.o : defs.h buffer.h command.h utils.o : defs.h .PHONY : clean clean : rm edit $(objects) 2022-4-1Embedded Operating Systems 72/107内部变量内部变量v $扩

    33、展成当前规则的目的文件名v $扩展成依赖列表中的第一个依赖文件v $扩展成整个依赖列表(除掉了里面所有重复的文件名) v 等等v 不需要括号括住v 例如:CC = gccCFLAGS = -Wall -O -g foo.o : foo.c foo.h bar.h $(CC) $(CFLAGS) -c $ -o $2022-4-1Embedded Operating Systems 73/107隐含规则隐含规则 (Implicit Rules)v内置的规则v告诉make当没有给出某些命令的时候,应该怎么办。v用户可以使用预定义的变量改变隐含规则的工作方式,如一个编译的具体命令将会是:$(CC)

    34、$(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $ -o $2022-4-1Embedded Operating Systems 74/107设定目标(设定目标(Phony Targets)v设定目标目标不是一个文件其目的是为了让一些命令得以执行v使用PHONY显式声明设定目标.PHONY: cleanv使用设定目标实现多个目的all: prog1 prog22022-4-1Embedded Operating Systems 75/107典型的设定目标典型的设定目标v设定目的也可以用来描述一些其他的动作。例如,想把中间文件和可执行文件删除,可以在 makefi

    35、le 里设立这样一个规则:clean:$rm *.o exec_file前提是没有其它的规则依靠这个 clean 目的,它将永远不会被执行。但是,如果你明确的使用命令 make clean , make 会把这个目的做为它的主要目标,执行那些 rm 命令2022-4-1Embedded Operating Systems 76/107Makefile中的函数中的函数 (Functions)v用来计算出要操作的文件、目标或者要执行的命令v使用方法:$(function arguments)v典型的函数$(subst from,to,text) l$(subst ee,EE,feet on the

    36、 street) l相当于fEEt on the strEEt 2022-4-1Embedded Operating Systems 77/107v$(patsubst pattern,replacement,text)$(patsubst %.c,%.o,x.c.c bar.c) 相当于x.c.o bar.ov$(wildcard pattern) $(wildcard *.c)objects := $(wildcard *.o) 2022-4-1Embedded Operating Systems 78/107makefile中的条件语句中的条件语句conditional-directiv

    37、etext-if-trueendiforconditional-directivetext-if-trueelsetext-if-falseendif2022-4-1Embedded Operating Systems 79/107四种条件语句四种条件语句vifeq.else.endifvifneqelseendifvifndefelseendif vifndef.elseendif 2022-4-1Embedded Operating Systems 80/107实际项目中的实际项目中的makefilev找到Linux或者uClinux源代码中所有的makefile,分析它们的功能、相互关系

    38、。2022-4-1Embedded Operating Systems 81/1073、GNU Toolsldld,The GNU LinkerLinux上常用的链接器vld软件的作用是把各种目标文件(.o文件)和库文件链接在一起,并定位数据和函数地址,最终生成可执行程序vgcc可以间接的调用ld,使用gcc的-Wl参数可以传递参数给ldv使用命令:ld -help可以列出ld常用的一些选项2022-4-1Embedded Operating Systems 82/107ld使用举例(使用举例(1)v源程序v编译hello.c到hello.o命令:gcc -c hello.c2022-4-1E

    39、mbedded Operating Systems 83/107ld使用举例(使用举例(2)v链接命令:ld dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o hello.o lc o hellov运行./hello2022-4-1Embedded Operating Systems 84/107目标文件目标文件vld通过BFD库可以读取和操作coff、elf、a.out等各种执行文件格式的目标文件BFD(Binary File Descriptor)v目标文件(object fi

    40、le)由多个节(section)组成,常见的节有:ltext节保存了可执行代码,ldata节保存了有初值的全局标量,lbss节保存了无初值的全局变量。2022-4-1Embedded Operating Systems 85/107v使用objdump查看目标文件的信息objdump h hello.o比较hello 2022-4-1Embedded Operating Systems 86/107链接描述文件(链接描述文件( Linker script )v可以使用链接描述文件控制ld的链接过程。链接描述文件,command file又称为链接脚本,Linker scriptv用来控制ld的

    41、链接过程描述各输入文件的各节如何映射到输出文件的各节控制输出文件中各个节或者符号的内存布局v使用的语言为:The ld command language,链接命令语言2022-4-1Embedded Operating Systems 87/107vld命令的-T commandfile选项指定了链接描述文件名如果不指定链接描述文件,ld就会使用一个默认的描述文件来产生执行文件v找到Linux或者uClinux中的链接描述文件并分析。2022-4-1Embedded Operating Systems 88/107链接描述文件的命令链接描述文件的命令v链接描述文件的命令主要包括如下几类:设置入

    42、口点命令处理文件的命令处理文件格式的命令其他2022-4-1Embedded Operating Systems 89/107常用的命令常用的命令v设置入口点格式:ENTRY(symbol)设置symbol的值为执行程序的入口点。vld有多种方法设置执行程序的入口点,确定程序入口点的顺序如下:ld命令的-e选项指定的值Entry(symbol)指定的值.text节的起始地址入口点为02022-4-1Embedded Operating Systems 90/107常用的命令常用的命令vINCULDE filename包含其他filename的链接描述文件vINPUT(file,file,)指定

    43、多个输入文件名2022-4-1Embedded Operating Systems 91/107常用的命令常用的命令vOUTPUT_FORMAT(bfdname)指定输出文件的格式vOUTPUT_ARCH ( bfdname ) 指定目标机器体系结构,例如:OUTPUT_ARCH(arm)2022-4-1Embedded Operating Systems 92/107常用的命令常用的命令vMEMORY:这个命令在用于嵌入式系统的链接描述文件中经常出现,它描述了各个内存块的起始地址和大小。格式如下:MEMORYname (attr):ORIGIN = origin,LENGTH = lenv例

    44、如:2022-4-1Embedded Operating Systems 93/107Memory举例举例2022-4-1Embedded Operating Systems 94/107SECTIONS命令命令vSECTIONS告诉ld如何把输入文件的各个节映射到输出文件的各个节中。在一个链接描述文件中只能有一个SECTIONS命令v在SECTIONS命令中可以使用的命令有三种:定义入口点赋值定义输出节2022-4-1Embedded Operating Systems 95/107定义输出节定义输出节 SECTIONS .secname : contents . v例如:2022-4-1E

    45、mbedded Operating Systems 96/107定位计数器定位计数器v定位计数器,The Location Counter一个特殊的ld变量,使用“.”表示总是在SECTIONS中使用例如:2022-4-1Embedded Operating Systems 97/107一个简单例子一个简单例子v 下面是一个简单的例子:例中,输出文件包含text,data,bss三个节,而输入文件也只包含这3个节:SECTIONS.=0 x01000000;.text:*(.text);.=0 x08000000;.data:*(.data);.bss:*(.bss);2022-4-1Embe

    46、dded Operating Systems 98/107SECTIONS举例(对应于上面的举例(对应于上面的MEMORY例子)例子)2022-4-1Embedded Operating Systems 99/107Snapgear3.4.0,arm版版linuxv链接描述文件Vmlinux:arch/$(ARCH)/kernel/vmlinux.lds制作压缩版映像时 linux/arch/arm/boot/compressed/vmlinux.lds制作bootp时linux/arch/arm/boot/bootp/bootp.lds2022-4-1Embedded Operating S

    47、ystems100/107GNU tools 交叉开发环境的安装交叉开发环境的安装v 交叉开发环境 源代码配置安装,or 直接安装二进制工具v 第一种方法比较复杂,如果有现成的二进制交叉环境,建议直接使用2022-4-1Embedded Operating Systems101/107使用源代码安装交叉开发环境使用源代码安装交叉开发环境vGNU tools的各个软件包相对独立,在选择时要注意各个软件包的版本号及其依赖关系如果全部是最新版本,也并不能保证可以配置并安装成功v在安装GNU tools交叉开发环境之前,首先必须建立本地GNU tools环境2022-4-1Embedded Opera

    48、ting Systems102/107一个可行的一个可行的GNU tools与与Linux内核之间关系表内核之间关系表2022-4-1Embedded Operating Systems103/107交叉开发环境的安装顺序交叉开发环境的安装顺序v 需要5个步骤完成整个GNU Tools的配置/编译/安装:1. 内核头文件配置2. binutils软件包安装3. Bootstrap GNU编译器(可完成基本C语言编译工作的编译器)4. C library的安装,一般是glibc5. 完整的GNU编译器安装2022-4-1Embedded Operating Systems104/107软件包安装

    49、步骤软件包安装步骤v对每个单独的软件包,一般安装过程包括下面4步下载并解压软件包配置软件包编译软件包安装软件包2022-4-1Embedded Operating Systems105/107安装现成的二进制交叉环境安装现成的二进制交叉环境v下载arm-elf-tools的最新版本或合适的版本如:arm-elf-tools-20030314.sh地址:http:/www.uclinux.org/pub/uClinux/arm-elf-tools/arm-elf-tools-20030314.sh或者:http:/ftp.snapgear.org/pub/snapgear/tools/arm-e

    50、lf/arm-elf-tools-20030314.shv安装在root权限下运行lsh ./arm-elf-tools-20030314.sh这个命令会在开发主机上自动建立一个uClinux-ARM的交叉编译环境2022-4-1Embedded Operating Systems106/107安装成功?安装成功?v检查一下(演示)对 arm-elf运用shell的tab功能可以看到一系列arm-elf打头的程序,如lbinutils系列、gcc、gdb等等运行arm-elf-gcc v2022-4-1Embedded Operating Systems107/1072022-4-1Embed

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:嵌入式操作系统课件.ppt
    链接地址:https://www.163wenku.com/p-2314441.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库