嵌入式Linux开发环境及其在ARM上的移植PPT格式课件下载.ppt
- 文档编号:14648618
- 上传时间:2022-10-23
- 格式:PPT
- 页数:60
- 大小:978KB
嵌入式Linux开发环境及其在ARM上的移植PPT格式课件下载.ppt
《嵌入式Linux开发环境及其在ARM上的移植PPT格式课件下载.ppt》由会员分享,可在线阅读,更多相关《嵌入式Linux开发环境及其在ARM上的移植PPT格式课件下载.ppt(60页珍藏版)》请在冰豆网上搜索。
GNUBinutils是一组开发工具,包括连接器、汇编器和其他用于目标文件和档案的工具。
Binutils工具包,Binutils工具集里主要包含以下一系列的程序:
addr2line、ar、as、c+filt、gprof、ld、nm、objcopy、objdump、ranlib、readelf、size、strings和strip,它包含的库文件有:
libiberty.a、libbfd.a、libbfd.so、libopcodes.a和libopcodes.so。
Binutils工具包,
(1)GNU汇编器asas工具主要用来将汇编语言编写的源程序转换成二进制形式的目标代码。
(2)GNU链接器ldld可以将多个目标文件链接成为可执行程序,同时指定了程序在运行时是如何执行的。
(3)GNU库管理器arar将多个可重定位的目标模块归档为一个函数库文件。
6.1.1交叉编译工具介绍,2gcc编译器GUNcc(GUNCCompiler,简称gcc)是GUN项目的C编译器套件,能够编译用C、C+、ObjectiveC编写的程序。
gcc编译器是基于命令行的。
gcc的主要目的是为32位GNU系统提供一个好的编译器,其最终输出的是汇编语言源程序。
想要进一步编译成所需要的机器代码,需要引入一些新的工具,比如汇编程序等。
gcc编译器,
(1)gcc的基本用法在使用gcc编译器的时候,通常后面跟一些选项和文件名。
gcc命令的基本用法如下:
gccoptionsfilenames,Gcc选项,gcc编译器,(3)函数库和包含文件如果需要链接不在标准目录下的函数库或包含(include)文件,可使用-LDIRNAME和-IDIRNAME选项指定文件所在的目录,以确保该目录的搜索顺序在标准目录之前。
gcc编译器,(4)gcc的执行过程使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历4个相互关联的阶段。
预处理(预编译,Preprocessing)编译(Compilation)汇编(Assembly)链接(Linking),6.1.1交叉编译工具介绍,3Make命令与Makefile文件利用make程序的这种自动编译可大大简化开发工作,避免不必要的重新编译。
make工具通过makefile的文件来完成并自动维护编译工作。
在默认情况下,GNUmake工具在当前工作目录中按如下顺序搜索makefile:
GNUmakefileMakefileMakefile,Make命令与Makefile文件,
(1)Makefile基本结构Makefile中一般包含如下内容:
需要由make工具创建的项目,通常是目标文件和可执行文件;
要创建的项目所依赖的文件;
创建每个项目时需要运行的命令。
Make命令与Makefile文件,
(2)Makefile变量GNU的make工具除了提供建立目标的基本功能之外,还有许多便于表达依赖性关系以及建立目标命令的特色,其中之一就是变量或宏的定义能力。
如果用户要以相同的编译选项同时编译多个C源文件,且为每个目标的编译指定冗长的编译选项的话,利用简单的变量定义,可简化makefile文件,避免这种乏味的工作。
Make命令与Makefile文件,(3)GNUmake的主要预定义变量GNUmake有许多预定义变量,这些变量具有特殊的含义,可在规则中使用。
在一般情况下,make所预定义的内部规则可以满足大多数应用要求,如果程序员认为哪个内部规则还不能满足他的特殊要求,那么可以通过修改或自定义新的内部规则使用的变量或者相关的命令来改变,称为隐含规则。
Make命令与Makefile文件,(4)隐含规则隐含规则是指由make自定义的规则,这些规则定义了如何从不同的依赖文件建立特定类型的目标。
GNUmake支持以下2种类型的隐含规则:
后缀规则(SuffixRule)模式规则(PatternRules),Make命令与Makefile文件,(5)Make选项,6.1.1交叉编译工具介绍,4glibc库glibc是提供系统调用和基本函数的C库,所有动态连接的程序都要用到它,是编译Linux系统程序很重要的组成部分。
5.gdb调试工具gdb是一个用来调试C和C+程序的调试器。
gdb的功能主要是监视程序中变量的值,设置断点以使程序在指定的代码行上停止执行,以及支持单步执行等。
主要内容,6.1嵌入式Linux开发环境6.1.1交叉编译工具介绍6.1.2交叉编译环境的建立6.2嵌入式Linux在ARM平台上的移植6.2.1Linux内核源代码的基本组织情况6.2.2嵌入式Linux内核裁剪方法6.2.3嵌入式Linux内核定制过程6.2.4内核编译及装载6.2.5文件系统及其实现,6.1.2交叉编译环境的建立,在建立交叉编译环境之前,当然首先要在一台PC机(宿主机)上安装Linux操作系统。
一般情况下用定制方式进行完全安装,即在选择软件包(Package)时选择最后一项完全安装(everything)。
然后再配置好网络、TFTP服务(为下载烧写所用)和NFS服务(为交叉开发时mount所用)。
6.1.2交叉编译环境的建立,匹配Binutils、gcc和glibc的版本,ARMV4T平台工具链常用版本,6.1.2交叉编译环境的建立,构建交叉编译环境通常有3种方法:
方法1:
分步编译和安装交叉编译环境所需要的库和源代码,最终生成交叉编译环境。
方法2:
通过Crosstool脚本工具来实现一次编译生成交叉编译环境。
方法3:
使用开发平台供应商提供的开发环境安装套件建立交叉编译环境,这是最常用的方法。
1.分步建立交叉编译环境,1.分步建立交叉编译环境,建立交叉编译环境可以分为5个步骤:
做好准备工作:
下载工具源码包和补丁,准备内核头文件,创建工作目录等;
编译、安装Binutils;
编译辅助编译器(bootstrapgcc);
建立glibc库,这里要使用交叉编译工具链,例如arm-linux-gcc等;
编译生成完整的编译器(fullgcc),重新配置gcc功能,使其支持C、C+等语言。
2.制作交叉调试器,
(1)编译交叉调试器对于交叉调试器,并不是工具链必需的工具,但是它是与工具链配套使用的。
GDB的调试能力和BUG的修正也因为版本的不同而不同。
(2)编译gdbserver目标板还需要gdbserver工具为目标板交叉编译gdbserver。
主要内容,6.1嵌入式Linux开发环境6.1.1交叉编译工具介绍6.1.2交叉编译环境的建立6.2嵌入式Linux在ARM平台上的移植6.2.1Linux内核源代码的基本组织情况6.2.2嵌入式Linux内核裁剪方法6.2.3嵌入式Linux内核定制过程6.2.4内核编译及装载6.2.5文件系统及其实现,6.2.1Linux内核源代码的基本组织情况,嵌入式Linux内核按照功能可分为进程管理、内存管理、文件系统、设备控制和网络。
进程管理内存管理文件系统设备控制网络,嵌入式Linux内核功能结构图,Linux内核源代码树的组织,Linux内核源代码包括多个目录。
主要内容,6.1嵌入式Linux开发环境6.1.1交叉编译工具介绍6.1.2交叉编译环境的建立6.2嵌入式Linux在ARM平台上的移植6.2.1Linux内核源代码的基本组织情况6.2.2嵌入式Linux内核裁剪方法6.2.3嵌入式Linux内核定制过程6.2.4内核编译及装载6.2.5文件系统及其实现,6.2.2嵌入式Linux内核裁剪方法,对Linux操作系统的移植工作主要分为2个方面:
一方面是针对硬件特点对源代码的修改,比如内核的启动部分、存储设备的大小、具体的驱动问题等;
另一方面是功能模块的裁剪,主要是对内核功能的配置,包括支持的文件类型、外设模块等。
针对硬件的修改,总体上讲,针对硬件的修改有2种方法:
对一种全新的硬件平台开展移植工作时,需采用“自底向上”的设计方法从头设计,即从硬件的需求考虑逐步地采用分析、设计、编码和测试。
大多数情况下,是在前人工作的基础上修改已有的代码。
Linux已经可以在多种体系结构中运行,可以参考相近的体系结构的代码修改与目标硬件平台不同的部分即可。
针对硬件的修改,Linux内核支持很多的硬件体系结构,如X86、ARM、PowerPC、M68Y等,但由于新的硬件平台不断出现,根据新的硬件平台移植内核是嵌入式系统构建的必须工作。
幸运的是,对于大多常用的ARM处理器,这一方面的大部分工作已经由相应的ARM处理器补丁来完成了。
针对硬件的修改,
(1)内核的启动部分
(2)arch目录下相关文件(3)arch/arm/boot目录(4)entry-armv.S文件,针对硬件的修改,在Linux内核移植的初始阶段应尽可能暂时屏蔽不相关的设备驱动以及内核功能配置选项,使内核支持的选项尽可能少,先构造最小内核。
对内核的修改也要尽可能得小,因为对内核不正确的修改会引起系统崩溃。
在确保已经进行的内核移植操作正确的情况下,再逐步添加相应的硬件支持和功能支持。
功能模块的裁剪,嵌入式Linux内核功能模块的裁剪主要有3种方法:
使用Linux自身的配置工具,编译定制内核。
修改内核源代码,进行内核裁剪。
基于系统调用关系,进行内核裁剪。
功能模块的裁剪,Linux操作系统将它的组件分为直接的核心组件和运行时可装载组件。
Linux操作系统的基本组件包括根文件系统、IDE/MEM驱动程序、内存管理、进程和调度管理以及一些必要的I/O子系统。
可裁剪的组件主要包括文件系统、网络协议、设备驱动程序、各种网络设备部件等。
主要内容,6.1嵌入式Linux开发环境6.1.1交叉编译工具介绍6.1.2交叉编译环境的建立6.2嵌入式Linux在ARM平台上的移植6.2.1Linux内核源代码的基本组织情况6.2.2嵌入式Linux内核裁剪方法6.2.3嵌入式Linux内核定制过程6.2.4内核编译及装载6.2.5文件系统及其实现,功能模块的裁剪,使用L
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 Linux 开发 环境 及其 ARM 移植