5 bootloader程序.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
bootloader程序设计 GNU-ARM裸奔程序设计 教学回顾 嵌入式linux开发环境 交叉开发的过程 host机与target机之间的通信方式 串口 网口 USB 交叉调试 教学内容 开发工具 GNU-ARM程序设计 教学要求 了解gcc下的arm裸奔程序设计的方法 掌握链接脚本的作用 掌握开发工具中,比较常用的开发工具 嵌入式Linux系统 基本组成和开发流程图 开发工具 Linux环境下开发C/C++程序的工具主要是GNU工具,GNU工具集包括: 编译工具:把一个源程序编译为一个可执行程序 调试工具:能对执行程序进行源码或汇编级调试 软件工程工具:用于协助多人开发或大型软件项目的管理,如 make、CVS、Subvision 其他工具:用于把多个目标文件链接成可执行文件的链接器,或者用作格式转换的工具。 开发工具 本地程序开发(PC--X86) GNU工具: /usr/bin/{gcc、g++、as、ld等} 库文件: /usr/lib/lib*.so 头文件: /usr/include 交叉开发(ARM) GNU工具: /opt/crosstool/arm-2010.09/bin arm-linux-gcc arm-linux-as 库文件: /opt/crosstool/arm-2010.09/arm-none-linux-gnueabi/libc/lib 头文件: /opt/crosstool/arm-2010.09/arm-none-linux-gnueabi/libc/usr/include 开发工具 gcc所支持后缀名解释 .c C原始程序 .C/.cc/.cxx C++原始程序 .m Objective-C原始程序 .i 已经过预处理的C原始程序 .ii 已经过预处理的C++原始程序 .s/.S 汇编语言原始程序 .h 预处理文件(头文件) .o 目标文件 .a/.so 编译后的库文件 开发工具 GCC的编译流程分为四个步骤: 预处理(Pre-Processing) 编译(Compiling) 汇编(Assembling) 链接(Linking) 开发工具 cpp: 进行预处理,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析; cc1: 进行编译,生成.s为后缀的汇编文件; as: 进行汇编,汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件; ld: 进行链接,所有的目标文件被安排在可执行程序中的恰当的位置。同时,该程序所调用到的库函数也从各自所在的档案库中链接到合适的地方。 开发工具 开发工具 GNU交叉编译过程 Cpp预处理 arm-linux-cpp test.c -o test.i Cc1编译 /opt/crosstool/arm-2010.09/libexec/gcc/arm-none-linux-gnueabi/4.5.1/cc1 test.i -o test.s As汇编 arm-linux-as test.s -o test.o ld 链接 arm-linux-ld arm-none-linux-gnueabi/libc/armv4t/usr/lib/crt1.o arm-none-linux-gnueabi/libc/armv4t/usr/lib/crti.o arm-none-linux-gnueabi/libc/armv4t/usr/lib/crtn.o test.o -o test -lc -dynamic-linker arm-none-linux-gnueabi/libc/armv4t/usr/lib/ld-linux.so.3 开发工具 addr2line:把程序地址转换为文件名和行号 ar:建立、修改、提取归档文件 as:主要用来编译GNU C编译器gcc输出的汇编文件,产生的目标文件由链接器ld连接。 c++filt:连接器使用它来过滤C++ 和Java 符号,防止重载函数冲突。 ld:GNU链接器。 nm:列出目标文件中的符号。 objcopy:文件格式转换。 objdump:显示一个或者更多目标文件的信息,主要用来反编译。 ranlib:产生归档文件索引,并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可重分配目标文件。 readelf:显示elf格式可执行文件的信息。 size:列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。 strings:打印某个文件的可打印字符串。默认情况下,只打印目标文件初始化和可加载段中的可打印字符;对于其它类型的文件它打印整个

文档评论(0)

骨干 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档