《2022年嵌入式总结 .pdf》由会员分享,可在线阅读,更多相关《2022年嵌入式总结 .pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1.嵌入式系统的定义:嵌入式系统是电脑软件与硬件的综合体,它是以应用为中心, 以计算机技术为基础,软硬件可裁剪,从而能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。嵌入式系统的组成: 嵌入式处理器、 外围设备、 嵌入式操作系统和应用软件等几部分组成。嵌入式处理器是嵌入式系统的核心,是控制、辅助系统运行的硬件单元。嵌入式处理器分成4 类:即嵌入式微处理器、嵌入式微控制器、嵌入式DSP 处理器和嵌入式片上系统。嵌入式系统的软件一般由嵌入式操作系统和应用软件组成。操作系统是连接计算机硬件与应用程序的系统程序。操作系统的概念: 操作系统是一组计算机程序的集合,用来有效的控
2、制和管理计算机的硬件和软件,即合理地对资源进行调度,并为用户提供方便的应用接口。操作系统有两个基本功能: 使计算机硬件便于使用; 高效组织和正确地使用计算机的资源。操作系统有 4 个主要任务:进程管理、进程间通信与同步、内存管理和I/O 资源管理。目前嵌入式系统的软件主要有两大类:实时系统和分时系统。实时系统的定义: 实时系统是这样一种系统,即系统执行的正确性不仅取决于计算的逻辑结果,而且还取决于结果的产生时间。实时操作系统是指具有实时性,能支持实时控制系统工作的操作系统。实时操作系统的首要任务是调度一切可利用的资源完成实时控制任务;实时系统又可以分为 硬实时系统 和 软实时系统 。硬实时和软
3、实时的区别就在于对外界的事件做出反应的时间。硬实时系统和软实时系统实现的区别主要是在选择调度算法上。对于软实时系统,选择基于优先级调度的算法足以满足软实时系统的需求,而且可以提供高速的响应和大的系统吞吐量;而对硬实时系统来说,需要使用的算法就应该是调度方式简单,反应速度快的实时调度算法。任务:任务是指一个程序分段,这个分段被操作系统当做一个基本工作单元来调度。任务是在系统运行前已经设计好的。进程:进程是指任务的一次运行过程,它是动态过程。有些操作系统把任务和进程等同看待,认为任务是一个动态过程,即执行任务体的动态过程。多用户:允许多台用户通过各自的终端使用同一台主机,同享一个操作系统及各种系统
4、资源。多任务的含义:每个用户的应用程序可以设计成不同的任务,这些程序可以并发执行。多用户及多任务系统可以提高系统的吞吐量,更有效地利用资源。实时内核的任务管理实现在应用系统中建立任务,删除任务、挂起任务,恢复任务以及对任务的响应、切换和调度等功能。ARM 处理器为 RISC 芯片,其简单的结构使ARM 内核非常小,这使得器件的功耗也非常低。它具有经典RISC 的特点:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 21 页 - - - - - - - - - ARM 处理
5、器实现加载存储 (load/store) 体系结构是典型的RISC 处理器。只有加载和存储指令可以访问存储器。数据处理指令只对寄存器的内容进行操作。ARM 处理器有三大特点:小体积、低功耗、低成本而高性能;16/32 位双指令集;全球的合作伙伴众多。对于一台内存为256M 的 32bit x86 主机来说,它的虚拟地址空间范围是00 xFFFFFFFF(4G),而物理地址空间范围是0 x0000000000 x0FFFFFFF(256M) 。存储器结构:哈佛结构 :程序存储器和数据存储器是相互独立的,使用各自不同的总线进行访问 . 冯*诺依曼 (Von Neumann)结构:程序存储器和数据存
6、储器合二为一,使用同样的总线进行访问 . 2CISI 与 RISC 的区别类别CISCRISC指令系统指令数量很多较少,通常少于 100 执行时间有些指令执行时间很长,如整块的存储器内容拷贝;或将多个寄存器的内容拷贝到存贮器没有较长执行时间的指令编码长度编码长度可变,1-15 字节编码长度固定,通常为4 个字节寻址方式寻址方式多样简单寻址操作可以对存储器和寄存器进行算术和逻辑操作只能对寄存器对行算术和逻辑操作, Load/Store体系结构编译难以用优化编译器生成高效的目标代码程序采用优化编译技术,生成高效的目标代码程序3.RISC 特点如下:指令规整、对称、简单。指令小于100 条,基本寻址
7、方式有23种。单周期指令。指令字长度一致,单拍完成,便于流水操作; ARM7 三级流水线:取指、译码、执行;ARM9 五级流水线;ARMl0 六级流水线。大量的寄存器。寄存器不少于32 个。数据处理器的指令只对寄存器的内容操作。只有加载存储指令可以访问存储器。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 21 页 - - - - - - - - - 项目ARM7 ARM9 ARM10 ARM11 流水线3 5 6 8 典 型频率(MHz)80 150 260 335 功
8、耗(mW/MHz )0.06 0.19(+cache)0.5 (+cache )0.4 (+cache)性能MIPS*/MHz 0.97 1.1 1.3 1.2 架构冯诺伊曼哈佛哈佛哈佛注意: ARM 核 并不是芯片, ARM 核与其它部件如RAM 、ROM、片内外设组合在一起才能构成现实的芯片。ARM7TDMI 支持 32位寻址范围,并弥补了ARM6 不能在低于 5V 电源电压下工作的不足。 ARM7TDMI 的后缀意义为:ARM7TDMI 处理器使用了冯 诺依曼(Von Neumann)结构,指令和数据共用一条 32 位总线。 只有装载、存储和交换指令可以对存储器中的数据进行访问。ARM
9、处理器支持下列数据类型:字节8 位半字16 位(必须分配为占用两个字节)字32位(必须分配为占用4 各字节)注意:V4 版本之后的 ARM 结构都支持这 3 种结构(包括 V4 版本) ,而以前的版本只支持字节和字;当数据类型定义为无符号型时, N 位数据值使用正常的二进制格式表示范围为 02N-1 的非负整数;当数据类型定义为有符号型时, N 位数据值使用 2 的补码格式表示范围为-2N-1+2N-1-1 的整数注意:所有数据操作,例如ADD ,都以字为单位;装载和保存指令可以对字节、 半字和字进行操作, 当装载字节或半字时自动实现零扩展或符号扩展;ARM 指令的长度刚好是1 个字(分配为占
10、用4 个字节) ,Thumb 指令的长度刚好是半字(占用2 个字节) 。ARM7TDMI 处理器内核使用 V4T 版本的 ARM 结构, 该结构包含 32 位 ARM指令集和 16 位 Thumb 指令集。因此 ARM7TDMI 处理器有两种操作状态:ARM 状态: 32 位,这种状态下执行的是字方式的ARM 指令;Thumb 状态: 16 位,这种状态下执行半字方式的ARM 指令。注意:两个状态之间的切换并不影响处理器模式或寄存器内容。使用 BX 指令将 ARM7TDMI 内核的操作状态在ARM 状态和 Thumb 状态之间进行切换(详见第4 章) ,程序如下所示 。7.Arm 状态与 Th
11、umb 状态的转换;从 Arm 状态切换到 Thumb 状态名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 21 页 - - - - - - - - - LDR R0,=Lable+1 BX R0 ;从 Thumb 状态切换到 ARM 状态LDR R0,=Lable BX R0 处理器模式说明备注用户(usr) 正常程序执行模式不能直接切换到其它模式系统(sys) 运行操作系统的特权任务与用户模式类似,但具有可以直接切换到其它模式等特权快 中 断(fiq) 支持高速数据传
12、输及通道处理FIQ 异常响应时进入此模式中断(irq) 用于通用中断处理IRQ 异常响应时进入此模式管理(svc) 操作系统保护模式系统复位和软件中断响应时进入此模式中止(abt) 用于支持虚拟内存和/或存储器保护在 ARM7TDMI没有大用处未 定 义(und) 支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式除用户模式外,其它模式均为特权模式。ARM 内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
13、- - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 21 页 - - - - - - - - - 在 ARM7TDMI 处理器内部有 37 个用户可见的寄存器。在不同的工作模式和处理器状态下,程序员可以访问的寄存器也不尽相同。这五种模式称为 异常模式 。它们除了可以通过程序切换进入外,也可以由特定的异常进入。 当特定的异常出现时, 处理器进入相应的模式。每种异常模式都有一些独立的寄存器, 以避免异常退出时用户模式的状态不可靠。用户和系统这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。系统模式是特权模式, 不受用户模式的限制。操作系统在该模式下访
14、问用户模式的寄存器就比较方便, 而且操作系统的一些特权任务可名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 21 页 - - - - - - - - - 其中 R0R7 为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32 位物理寄存器。所有的 37个寄存器,分成两大类:31个通用 32位寄存器;6个状态寄存器。在汇编语言中寄存器R0R13为保存数据或地址值的 通用寄存器 。 它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用
15、寄存器的指令。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 21 页 - - - - - - - - - 寄存器 R8R14为分组寄存器 。它们所对应的物理寄存器取决于当前的处理器模式, 几乎所有允许使用通用寄存器的指令都允许使用分组寄存器寄存器 R8R12有两个分组的物理寄存器。一个用于除 FIQ模式之外的所有寄存器模式,另一个用于 FIQ模式。这样在发生 FIQ中断后,可以加速 FIQ的处理速度。名师资料总结 - - -精品资料欢迎下载 - - - - - - -
16、- - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 21 页 - - - - - - - - - 寄存器 R13、 R14分别有 6个分组的物理寄存器。一个用于用户和系统模式,其余 5个分别用于 5种异常模式。寄存器 R13常作为 堆栈指针 (SP ) 。在ARM 指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb 指令集中存在使用 R13的指令。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
17、 8 页,共 21 页 - - - - - - - - - 异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。正常操作时,从 R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上 8 个字节(两条 ARM 指令的长度)。由于 ARM 指令总是以字为单位,所以 R15 寄存器的最低两位总是为0。R14为链接寄存器 (LR) ,在结构上有两个特殊功能:在每种模式下, 模式自身的 R14版本用于保存子程序返回地址;当发生异常时, 将R14对应的异常模式版本设置为异常返回地址 (有些异常有一个小的固定偏移量) 。
18、寄存器 R15为程序计数器 (PC) ,它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 21 页 - - - - - - - - - ARM7TDMI 内核包含 1 个 CPSR和 5 个供异常处理程序使用的SPSR 。 CPSR反映了当前处理器的状态,其包含:4 个条件代码标志(负 (N)、零(Z)、进位 (C)
19、和溢出 (V) ) ;2 个中断禁止位,分别控制一种类型的中断;5 个对当前处理器模式进行编码的位;1 个用于指示当前执行指令(ARM 还是 Thumb)的位。每个异常模式还带有一个程序状态保存寄存器(SPSR ) ,它用于保存在异常发生之前的CPSR。CPSR和 SPSR通过特殊指令( MRS、MSR)进行访问大多数 数值处理指令 可以选择是否影响条件代码标志位。通常如果指令带 S 后缀,则该指令的执行会影响条件代码标志;但有一些指令的执行总是会影响条件代码标志。N、 Z、 C 和 V 位都是条件代码标志。算术操作、逻辑操作、MSR或者 LDM 指令可以对这些位进行设置。所有ARM 指令都可
20、按条件来执行,而 Thumb 指令中只有分支指令可按条件执行。各标志位的含义如下:N 运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时 N=1,结果为正数或零时N=0;Z 指令结果为 0 时 Z=1(通常表示比较结果 相等 ) ,否则 Z=0;各标志位的含义如下:C 当进行加法运算 (包括 CMN 指令),并且最高位产生进位时C=1,否则 C=0。当进行减法运算 (包括 CMP 指令),并且最高位产生借位时C=0,否则 C=1。对于结合移位操作的非加法/减法指令, C 为从最高位最后移出的值,其它指令C 通常不变;V 当进行加法 /减法运算,并且发生有符号溢出时V=1,否则
21、V=0,其它指令 V 通常不变。CPSR 的最低 8 位为控制位,当发生异常时,这些位被硬件改变。当处理器处于一个特权模式时,可用软件操作这些位。它们分别是:中断禁止位;T 位;模式位。中断禁止位包括 I 和 F 位:当 I 位置位时, IRQ 中断被禁止;当 F 位置位时, FIQ 中断被禁止。T 位反映了正在操作的状态:当 T 位为 1 时,处理器正在 Thumb 状态下运行;当 T 位清零时,处理器正在ARM 状态下运行。模式位包括 M4、M3、M2、M1 和 M0,这些位决定处理器的操作模式。注意:不是所有模式位的组合都定义了有效的处理器模式,如果使用了错误的设置,将引起一个无法恢复的
22、错误。4进入 /退出异常进入异常在异常发生后, ARM7TDMI 内核会作以下工作:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 21 页 - - - - - - - - - 在适当的 LR 中保存下一条指令的地址,当异常入口来自:ARM 状态,那么 ARM7TDMI 将当前指令地址加4 或加 8 复制 (取决于异常的类型)到LR 中;为 Thumb状态, 那么 ARM7TDMI 将当前指令地址加 2、 4或加 8 (取决于异常的类型)复制到LR 中;异常处理器程序不
23、必确定状态。2.将 CPSR复制到适当的 SPSR中;3. 将 CPSR模式位强制设置为与异常类型相对应的值;4.强制 PC从相关的异常向量处取指。ARM7TDMI 内核在中断异常时置位中断禁止标志, 这样可以防止不受控制的异常嵌套。注:异常总是在 ARM 状态中进行处理。当处理器处于Thumb 状态时发生了异常,在异常向量地址装入PC 时,会自动切换到ARM 状态。退出异常当异常结束时,异常处理程序必须:1.将 LR( R14 )中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同;2.将 SPSR的值复制回 CPSR;3.清零在入口置位的中断禁止标志。注:恢复 CPSR的动作会将 T
24、、F 和 I 位自动恢复为异常发生前的值。5.ARM7TDMI 处理器可以将存储器中的字以下列格式存储:大端格式( Big-endian)小端格式( Little-endian)存储器系统有两种映射机制:小端存储器系统:在小端格式中,高位数字存放在高位字节中。因此存储器系统字节0 连接到数据线 70(低位对齐 )。大端存储器系统:在大端格式中,高位数字存放在低位字节中。因此存储器系统字节0 连接到数据线 3124(高位对齐 ) 。在 ARM 指令集中不包含任何直接选择大小端的指令,但是一个同时支持大小端模式的 ARM 芯片可以通过硬件配置(一般使用芯片的引脚来配置)来匹配存储器系统所使用的规则
25、。ARM 结构使用单个平面的232个 8 位字节地址空间。字节地址按照无符号数排列,从0 到 2321。地址空间可以看作是包含230 个 32 位字,或 231 个 16 位半字。如果地址向上或向下溢出地址空间,通常会发生翻转。基于 ARM 内核的芯片具有许多的外设,这些外设访问的标准方法是使用存储器映射的 I/O,为外设的每个寄存器都分配一个地址。通常,从这些地址装载数据用于读入,向这些地址保存数据用于输出。有些地址的装载和保存用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11
26、 页,共 21 页 - - - - - - - - - 于外设的控制功能,而不是输入或输出功能。三级流水线ARM7TDMI 处理器使用流水线来增加处理器指令流的速度。这样可使几个操作同时进行, 并使处理和存储器系统连续操作,能提供 0.9MIPS/MHz 的指令执行速度。 (MIPS 每秒百万条指令 ) ARM7TDMI 的流水线分 3 级,分别为:取指-译码-执行MMU 的功能1、将虚拟地址映射为物理地址2、提供硬件机制的内存访问授权程序是为完成特定任务、用某种语言编写的一组指令的集合。指一段静态的代码。进程是程序的一次执行过程,是系统进行调度和资源分配的一个独立单位。线程是比进程更小的执行
27、单位。一个进程在其执行过程中,可以产生多个线程,形成多条执行线索。每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。一个线程有它自己的入口和出口,以及一个顺序执行的序列线程不能独立存在,必须存在于进程中。线程 轻量级的进程?系统负担小,主要是CPU 的分配。多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况。多线程 实现 单个进程中的并发计算。各线程间共享进程空间的数据, 并利用这些共享单元来实现数据交换、实时通信与必要的同步操作。多线程的程序能更好地表述和解决现实世界的具体问题,是计算机应用开发和程序设计的一个必然发展趋势。多线程的作用: 资源负载均衡 (充分利用
28、资源, 不要让一个线程霸占所有资源)任务的定义有多种提法,常用的有以下几种:- 一个可调度的单元- 可获得处理器的实体- 并发系统中互相竞争资源的单个执行体-可以与其它计算序列并发执行的计算序列。具有独立功能的无限循环的程序段的一次运行活动不同的内核实现对任务状态的定义不尽相同,但是都可以概括为以下三种状态:-执行态 E 当前占有 CPU 的任务状态-就绪态 R 一旦获得 CPU 就能执行的任务状态-阻塞态 B 由于资源条件未满足,没有资格竞争CPU 的任务状态任务的上下文记录了该任务的执行环境(如,寄存器的内容)。针对不同体系结构的处理器,任务的上下文有不同的定义。任务的上下文切换表示当前执
29、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 21 页 - - - - - - - - - 行任务在将处理器的控制权交给即将运行的任务之前,把它的执行环境(该任务的上下文)保存到相应的数据结构中,用即将运行任务的上下文重新布置执行环境。任务响应是指从任务就绪到它真正开始运行这一过程。任务响应时间又称调度延迟( scheduling latency ) ,表示完成这一过程需要的时间。任务调度就是从就绪状态的任务中,挑选一个任务到处理器上运行。操作系统中负责任务调度的程序
30、称为任务调度程序(scheduler)或任务调度器(dispatch ) 。8.基于优先级调度算法有哪两种?简述其算法思想?基于优先级调度算法:(1) 非抢占式调度系统中,一旦某个任务占有了处理器就一直运行下去,直到该任务由于自身的原因 (如等待事件 )自愿放弃处理器,任务调度程序才按优先级进行重调度,让其它任务运行。任务在运行过程中只能被中断打断(抢占)。(2) 强占式调度任何时刻都严格按照高优先级任务在处理器上运行的原则进行任务调度,或者说,在处理器上运行的任务永远是就绪任务中优先级最高的任务6.优先级反转及如何避免优先级反转优先级反转是一种不确定的延迟形式,经常出现于存在共享资源的多任务
31、、可抢占的执行体中。当高优先级任务企图访问已被某低优先级任务占有的共享资源时,就会引起优先级反转。 高优先级任务必须等待直到低优先级任务释放它占有的资源。解决优先级反转问题的常用算法有优先级继承和优先级天花板。优先级继承是将低优先级任务的优先级抬升到等待它所占有的资源的高优先级任务的优先级。 每当高优先级任务由于等待资源被阻塞,此资源的拥有者的优先级将会被抬升。优先级天花板算法是将申请某资源的任务的优先级抬升到可能访问该资源的所有任务中最高优先级任务的优先级。这个优先级称为该资源的优先级天花板。互斥信号量的优先级天花板在它被创建时指定。中断是对内部、外部事件立即做出响应的一种机制,由外设或者机
32、器指令触发,不受调度程序支配。用于处理某一中断的程序称为该中断的服务程序或者处理程序(ISR) 。中断的处理包括以下三部分:前导部分保存中断现场,通知系统进入中断处理。用户的 ISR 这部分由用户提供,完成对中断的处理,包括使用一些系统调用,与任务通信与同步。用户ISR 与普通的函数(无参数和返回值)具有完全相同的模式。后续部分恢复中断现场,通知系统退出中断处理程序。最后一级中断退出时,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 21 页 - - - - - - -
33、 - - 产生调度,返回到优先级最高的任务,否则退出到上一级被中断的中断处理程序。中断延迟时间定义为中断发生到开始执行ISR 第一条指令之间的时间。 即中断延迟时间 = 最大关中断时间+ 硬件开始处理中断到开始执行ISR 第一条指令之间的时间。中断响应时间是实时系统重要的性能指标。它被定义为从中断发生到开始执行用户中断服务程序的第一条指令之间的时间。根据内核是可抢占内核还是不可抢占内核,中断响应时间的内容不同。- 不可抢占内核中断响应时间= 中断延迟时间+ 中断现场保存时间。- 可抢占内核处理中断时先要做一些处理, 确保中断返回前调度器能正常工作。这些处理包括通知内核处于中断处理中、 保存中断
34、嵌套计数器, 以便中断解除嵌套后允许重调度的发生。所以,中断响应时间= 中断延迟时间+ 中断现场保存时间+ 内核所做处理的时间。中断恢复时间中断恢复时间的定义为用户中断服务程序结束到返回被中断的代码之间的执行时间。根据内核是否可被抢占中断恢复时间的内容不同。- 不可抢占内核中断恢复时间= 中断现场恢复时间+ 中断返回指令之前的执行时间。- 可抢占内核因包括重调度在内,所以中断恢复时间= 中断现场恢复时间+ 重调度时间+ 中断返回指令之前的执行时间。时基的时间长度= 时钟中断的个数* 脉冲序列的个数* 脉冲周期。1.预处理 ,生成.i 的文件 预处理器 cpp 2.将预处理后的文件编译 ,生成文
35、件 .s编译器 egcs 3.有汇编变为目标代码 (机器代码 )生成.o 的文件 汇编器 as 4.连接目标代码 ,生成可执行程序 链接器 ld GCC 是 GNU Compiler Collection. gcc常用选项选项含义-o file将经过 gcc 处理过的结果存为文件file,这个结果文件可能是预处理文件、 汇编文件、目标文件或者最终的可执行文件。假设被处理的源文件为source.suffix,如果这个选项被省略了,那么生成的可执行文件默认名称为a.out;目标文件默认名为source.o ;汇编文件默认名为source.s ;生成的预处理文件则发送到标准输出设备。名师资料总结 -
36、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 21 页 - - - - - - - - - gcc常用选项选项含义-c 仅对源文件进行编译, 不链接生成可执行文件。 在对源文件进行查错时,或只需产生目标文件时可以使用该选项。-ggdb 在可执行文件中加入调试信息,方便进行程序的调试。如果使用中括号中的选项, 表示加入 gdb 扩展的调试信息,方便使用 gdb来进行调试-O0、1、2、3 对生成的代码使用优化,中括号中的部分为优化级别,缺省的情况为 2 级优化, 0 为不进行优化。注意
37、,采用更高级的优化并不一定得到效率更高的代码。-Dname=definition将名为 name的宏定义为 definition,如果中括号中的部分缺省,则宏被定义为1 gcc常用选项选项含义-Idir在编译源程序时增加一个搜索头文件的额外目录dir,即 include 增加一个搜索的额外目录。-Ldir在编译源文件时增加一个搜索库文件的额外目录dir-llibrary在 编译链 接文 件时 增加 一 个额 外的 库, 库名 为library .a -w 禁止所有警告-Wwarning允许产生warning 类型的警告, warning 可以是:main、unused 等很多取值,最常用是 -
38、Wall,表示产生所有警告。如果warning 取值为 error,其含义是将所有警告作为错误( error) ,即出现警告就停止编译。gcc文件扩展名规范扩展名类型可进行的操作方式.c c 语言源程序预处理、编译、汇编、链接.C,.cc,.cp,.cpp,.c+,.cxx c+语言源程序预处理、编译、汇编、链接.i 预处理后的 c语言源程序编译、汇编、链接名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 21 页 - - - - - - - - - .ii 预处理后的
39、c+语言源程序编译、汇编、链接.s 预处理后的汇编程序汇编、链接.S 未预处理的汇编程序预处理、汇编、链接.h 头文件不进行任何操作.o 目标文件链接更实用的 Makefile 文件1 OBJS = greeting.o my_app.o 2 CC = gcc 3 CFLAGS = -Wall -O g 4 my_app:$OBJS 5 $CC $OBJS -o my_app 6 greeting.o:functionsgreeting.c functionsgreeting.h 7 $CC $CFLAGS -c functionsgreeting.c 8 my_app.o:my_app.c
40、functionsgreeting.h 9 $CC $CFLAGS -c my_app.c -Ifunctions gdb 常用的调试命令命令含义file 指定需要进行调试的程序step 单步(行)执行,如果遇到函数会进入函数内部next 单步(行)执行,如果遇到函数不会进入函数内部run 启动被执行的程序quit 退出 gdb调试环境print 查看变量或者表达式的值break 设置断点,程序执行到断点就会暂停起来shell 执行其后的 shell命令list 查看指定文件或者函数的源代码,并标出行号1、从文本源代码到可执行文件,gcc可以对哪些步骤进行控制?名师资料总结 - - -精品资料
41、欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 21 页 - - - - - - - - - 2、编一个简单的 helloworld 程序,利用 gcc 控制程序生成的四个步骤。3、简述 gcc的用法和常用参数的含义。4、上机查找 gcc利用的库文件和头文件都放在什么路径下?5、make工具如何使用? Makefile 的基本格式是什么?6、简述 gdb的用法和常用命令的含义。内核的编译1、 make clean 这条命令是在正式编译你的内核之前先把环境给清理干净。有时你也可以用make realcl
42、ean 或 make mrproper 来彻底清除相关依赖,保证没有不正确的.o 文件存在。2 、make dep 这条命令是编译相关依赖文件。3 、make zImage 这条命令就是最终的编译命令。 有时你可以直接用 make(2.6.X 版本上用 )或 make bzImage(给 PC 机编译大内核时用)熟悉并掌握以下 Linux 基本命令:ls、pwd、cd、mkdir、chmod、rmdir、cp 、rm、mv、cat 、chmod、ln、find、grep、sort等目录文件命令2.3.1 ls 句法: ls OPTION. FILE. 功能: 列出一个或多个FILE 文件(缺省
43、为当前目录下 )的信息 . 按字母顺序排序。OPTION 参数: -a, -all:列出目录下所有的文件,包括文件名以.开头的隐藏文件。 -A, -almost-all:几乎列出目录下的所有文件,包括文件名以.开头的隐藏文件,但 .和.这两个文件除外。文件 .是指当前目录,文件 .是指当前目录的父目录。 -full-time :列表中显示每个文件的完全日期和时间 -h, -human-readable : 以人们易读的格式显示文件大小 (比如 1K 234M 2G) -l:使用长列表格式 -R, -recursive:递归列出子目录中的内容 -S:按文件大小排序列表 -t:按文件的最后修改时间
44、排序列表2.3.2 pwd 句法: pwd 功能: 打印当前工作目录的全路径名 (绝对路径)。bambooredhat bamboo$ pwd /home/bamboo 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 21 页 - - - - - - - - - 2.3.3 cd 句法: cd dir 功能: 改变当前目录为 dir。 若 dir 缺省则改变当前目录为 $HOME 变量的值,其中$HOME 变量存放着当前用户的主目录,即该用户刚登录后所在的目录。 若 d
45、ir 为 . ,则当前目录改为当前目录的父目录。 若 dir 以字符 / 开头,则 dir 指出的是绝对路径;否则dir 指出的是相对路径,目录应改为从当前目录开始的dir 目录。2.3.4 mkdir 句法: mkdir OPTION DIRECTORY . 功能:创建一个或多个目录。 其中子目录名为最多255 个任意字符(除了字符 / )的字符串。 -m, -mode=MODE 设置许可模式(形式如 chmod,而不是 umask 中的 rwxrwxrwx ) -p, -parents : no error if existing, make parent directories as n
46、eeded -v, -verbose :为每个创建的目录显示一条消息。chmod who opt mode who: u:文件所有者g:同组用户o:其它用户a:所有用户opt :+、-、= mode:r 、w、 x 如:mkdir m=g+w test 2.3.5 rmdir 句法: rmdir OPTION. DIRECTORY . 功能: 删除一个或多个空的目录。任何一个DIRECTORY 参数必须 是 一 个 空 目 录 , 否 则 命 令 会 指 出 这 不 是 一 个 空 目 录 。DIRECTORY 参数支持通配符。 OPTION 参数: -ignore-fail-on-non-e
47、mpty: 如果一个 DIRECTORY 参数不是一个空目录,命令就忽略它,继续删除下一个DIRECTORY 而不报错。 -p 或-parents:删除 DIRECTORY 之后,试图删除 DIRECTORY 的每一个分量。比如: rmdir -p a/b/c 就相当于 rmdir a/b/c a/b a 文件操作命令2.4.1 ls(略) 2.4.2 cp 句法: cp OPTION. SOURCE DEST cp OPTION. SOURCE. DIRECTORY 功能:复制一个或多个文件或目录。 若命令的最后一个参数名是一个已存在的目录,cp 把每个 SOURCE 文件复制到 DIREC
48、TORY 目录下 (保持原来的文件名不变)。否则,如果在命令中只给出两个文件,则将第一个文件复制成第二个文件。如果命令的最后一个参名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 21 页 - - - - - - - - - 数名不是一个目录,而且非选项参数不止两个, 那么命令执行出错。该命令默认时不复制目录,复制目录要用-R 或recursive选项。2.4.3 rm 句法: rm OPTION. FILE. 功能:删除命令中所列出的每个文件。 默认时,该命令不删除目录
49、。其中 FILE 是要删除的文件 OPTION 参数: -f:强制删除,不出现确认信息。 -r 或-R 或-recursive:以递归方式删除目录中内容。2.4.4 mv 句法: mv OPTION. SOURCE DEST mv OPTION. SOURCE. DIRECTORY 功能:移动或更名文件或目录。 若命令的最后一个参数名是一个已存在的目录,则将在SOURCE 中指定的文件移动到该目录下;否则,mv 命令将 SOURCE 文件改名为 DEST 2.4.5 cat 句法: cat OPTION FILE. 功能: 在屏幕上显示文件的内容2.4.6 chmod 句法: chmod OP
50、TION. MODE | -reference=FILE FILE. OPTION: -v, -verbose :对每个文件的任何处理(动作或不动作)都给出描述-R, -recursive:以递归方式来改变目录和目录下文件的许可模式。who: u:文件所有者g:同组用户o:其它用户a:所有用户opt :+、-、= mode:r 、w、 x chmod v u+x,g+wx bbb chmod v 755 a* (755 实际为 0755:000111101101) 2.4.7 chown 句 法 : chown OPTION. NEW-OWNER | -reference=FILE FILE.