嵌入式Linux编程基础

嵌入式Linux编程基础

ID:39587243

大小:938.51 KB

页数:143页

时间:2019-07-06

嵌入式Linux编程基础_第1页
嵌入式Linux编程基础_第2页
嵌入式Linux编程基础_第3页
嵌入式Linux编程基础_第4页
嵌入式Linux编程基础_第5页
资源描述:

《嵌入式Linux编程基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、嵌入式Linux编程基础南京邮电大学信息安全系大纲C文件到二进制文件嵌入式交叉编译环境构建嵌入式编译工具使用基础工具gcc/as/ldd/ar/gdb等使用高级工具objcopy/strip/readelf/ldd等使用Make工具及Makefile文件使用嵌入式可执行文件格式解析PARTONEC文件到二进制文件之旅面向嵌入式系统的软件开发环境(传统的开发环境)编译器汇编器liber连接器编辑环境软件设计交叉开发环境IDEDebugger(调试,跟踪)转换程序仿真器(ICE)目标板烧结程序串口,并口,以太网,USB项目管理编译

2、器和汇编器的作用编译器将C文件转换成为汇编文件汇编器将汇编文件转换成为二进制指令流*.o文件(目标文件)每个目标文件是独立编址的,也就是说每个目标文件的第一条指令都从相同的地址开始存放目标文件的结构TEXT(CODE)DATA执行代码有初值的全局变量或静态变量无初值的全局变量或静态变量RORWZI低地址高地址ARMCPU连接器的作用将多个目标文件或库文件按照各文件中段进行统一编址生成一个完整的统一的地址印象嵌入式系统中一般生成一个绝对地址印象(非PIC)在有MMU的系统中可以为每个任务单独分配一个地址空间连接器的作用ROMBa

3、sedRAMBaseRO1ZI1RO2RW2ZI2RO3RW3ZI3RO1RO2RO3RW1RW2RW3ZI1ZI2ZI3file1.ofile2.ofile3.oLinkfile.outRW1PARTTWO嵌入式交叉编译环境构建开发环境交叉编译环境随着硬件平台和操作系统的多样化,软件向不同平台移植的工作变得越来越繁复。交叉编译技术的引入为软件的不同平台移植创造了便利条件。在交叉编译技术中有两种比较典型的实现:Java模式,即Java的字节码编译技术;GNUGCC模式,即通常所讲的CrossGCC技术。嵌入式交叉编译环境嵌入式

4、交叉编译环境就是在PC机上建立基于开发板的程序编译环境,它有两个非常显著的特点第一,整套交叉编译环境建立在PC机上,它和PC机的编译环境共存;第二,利用交叉编译环境编译出来的可执行程序只能在嵌入式开发板上运行。(cont.)在linux终端下用vi建立程序exam6-1.c基于嵌入式开发板进行编译-#arm-linux-gcc–oexam6-1-2exam6-1.c基于PC机上进行编译:-#gcc–oexam6-1-1exam6-1.c在PC机上执行-#./exam6-1-1如果在PC机上执行-./exam6-1-2bash:

5、./exam6-1-2:cannotexecutebinaryfile(cont.)#objdump–dexam6-1-1#arm-linux-objdump–dexam6-1-2可以看出这两个可执行程序的汇编码并不完全相同Host与TargetLinux服务器(Host)客户机1客户机2客户机3客户机4交换机开发板(Target)串口是一个基于x86架构的计算机(Pentium4处理器、Athlon处理器等),即i386平台。Target是目标平台,比如ARM、MIPS、SuperH、PowerPC等。GNUGCC模式计算机

6、源程序(c,java…)文本编辑器计算机系统目标平台,目标代码计算机系统GCC交叉编译器PARTII嵌入式交叉编译环境-工具链构成嵌入式交叉编译环境构建-利用已有的工具链建立步骤从网上下载交叉编译工具链压缩包目前网络上主要流行下列两种类型的压缩包:cross-2.95.3.tar.bz2cross-3.3.2.tar.bz2建立目录#cd/usr/loal#mkdirarm将cross-2.95.3.tar.bz2拷贝到/usr/local/arm目录下解压缩包#tarxjvfcross-2.95.3.tar.bz2修改/et

7、c/bashrc文件编辑/etc/bashrc文件,在最后增加路径exportPATH=/usr/local/arm/2.95.3/bin:$PATH嵌入式交叉编译环境-手动创建新的工具链Linux下的GCC交叉编译器GNUBinutilsGNUBinutils的主要工具有两个,一个是连接程序ld,另外一个是汇编程序as。其主要目的是为GNU系统,提供汇编和连接工具。GNUGCCGNUGCC就是上面提到的GCC,GCC主要是为GNU系统提供C编译器。现在支持多种语言,这其中包括C/C++、Fortran、Java、Object

8、ive-C、甚至还有Ada。GNUGLibc用于定义系统调用和其它一些基本的函数调用。GCC交叉编译器生成第一步,取得Binutils、GCC、Glibc的源码。第二步,配置并编译Binutils取得我们所需要的汇编和连接程序。第三步,配置并编译GCC源码生成GCC编译器。一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。