嵌入式复习总结大全(仅供参考)_第1页
嵌入式复习总结大全(仅供参考)_第2页
嵌入式复习总结大全(仅供参考)_第3页
嵌入式复习总结大全(仅供参考)_第4页
嵌入式复习总结大全(仅供参考)_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 1 部分 嵌入式系统导论1、嵌入式系统的定义l通常将嵌入式计算机系统简称为嵌入式系统。l嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。2、嵌入式计算机与通用计算机的异同特征通用计算机嵌入式系统形式和类型n看得见的计算机。n按其体系结构、运算速度和 结构规模等因素分为大、中、小型机和微机。n看不见的计算机。n形式多样,应用领域广泛,按应用来分。组成n通用处理器、标准总线和外设。n软件和硬件相对独立。n 面向应用的嵌入式微处理器, 总线和外部接口多集成在处理器内部。n 软件与硬件是紧密集成在一起的。开发方式n

2、开发平台和运行平台都是通用计算机n 采用交叉开发方式,开发平台一般是通用计算机,运行 平台是嵌入式系统。二次开发性n应用程序可重新编制n一般不能再编程3、嵌入式系统的组成嵌入式系统一般由嵌入式硬件和软件组成硬件以微处理器为核心集成存储器和系统专用的输入/输出设备软件包括:初始化代码及驱动、嵌入式操作系统和应用程序等,这些软件有机地结合在一起,形成系统特定的一体化软件。4、为什么需要嵌入式操作系统1)让应用程序脱离硬件,这样应用程序的移植性会更好;2)操作系统为复杂的系统提供管理机制。5、嵌入式系统的特点及每个特点的说明不是简答 1)嵌入式系统通常是形式多样、面向特定应用的2)嵌入式系统得到多种

3、类型的处理器和处理器体系结构的支持3)嵌入式系统通常极其关注成本4)嵌入式系统有实时性和可靠性的要求5)嵌入式系统使用的操作系统一般是适应多种处理器、可剪裁、轻量型、实时可靠、可固化的嵌入式操作系统6)嵌入式系统开发需要专门工具和特殊方法1)嵌入式系统通常是形式多样、面向特定应用的:一般用于特定的任务,其硬件和软件都必须高效率地设计,量体裁衣、去除冗余,而通用计算机则是一个通用的计算平台。 它通常都具有低功耗、体积小、集成度高等特点,能够把通用微处理器中许多由板卡完成的任务集成在芯片内部。嵌入式软件是应用程序和操作系统两种软件的一体化程序。2)嵌入式系统得到多种类型的处理器和处理器体系结构的支

4、持:通用计算机采用少数的处理器类型和体系结构,而且主要掌握在少数大公司手里。嵌入式系统可采用多种类型的处理器和处理器体系结构。在嵌入式微处理器产业链上,IP 设计、面向应用的特定嵌入式微处理器的设计、芯片的制造已相成巨大的产业。大家分工协作,形成多赢模式。有上千种的嵌入式微处理器和几十种嵌入式微处理器体系结构可以选择。3)嵌入式系统通常极其关注成本:嵌入式系统通常需要注意的成本是系统成本,特别是量大的消费类数字化产品,其成本是产品竞争的关键因素之一。嵌入式的系统成本包括:一次性的开发成本 NRE(Non-Recurring Engineering)成本产品成本:硬件 BOM、外壳包装和软件版税

5、等批量产品的总体成本=NRE 成本+每个产品成本*产品总量每个产品的最后成本=总体成本/产品总量=(NRE 成本/产品总量)+每个产品成本4)嵌入式系统有实时性和可靠性的要求:一方面大多数实时系统都是嵌入式系统。另一方面嵌入式系统多数有实时性的要求,软件一般是固化运行或直接加载到内存中运行具有快速启动的功能。并对实时的强度要求各不一样,可分为硬实时和软实时。嵌入式系统一般要求具有出错处理和自动复位功能,特别是对于一些在极端环境下运行的嵌入式系统而言,其可靠性设计尤其重要。在大多数嵌入式系统的软件中一般都包括一些机制, 比如硬件的看门狗定时器,软件的内存保护和重启动机制。5)嵌入式系统使用的操作

6、系统一般是适应多种处理器、可剪裁、轻量型、实时可靠、可固化的嵌入式操作系统:由于嵌入式系统应用的特点,像嵌入式微处理器一样,嵌入式操作系统也是多姿多彩的。大多数商业嵌入式操作系统可同时支持不同种类的嵌入式微处理器。可根据应用的情况进行剪裁、配置。嵌入式操作系统规模小,所需的资源有限如内核规模在几十 KB,能与应用软件一样固化运行。一般包括一个实时内核,其调度算法一般采用基于优先级的可抢占的调度算法。6)嵌入式系统开发需要专门工具和特殊方法:多数嵌入式系统开发意味着软件与硬件的并行设计和开发,其开发过程一般分为几个阶段:产品定义,软件与硬件设计与实现,软件与硬件集成,产品测试与发布,维护与升级6

7、、嵌入式系统的分类填空按嵌入式处理器的位数来分类:4、8、16、32、64按应用来分类:信息家电类、移动终端类、通信类、工业控制类、汽车电子类按速度分类:强实时系统、一般实时系统、弱实时系统按确定性来分类:硬实时、软实时按嵌入式系统软件结构来分类:循环轮询系统、有限状态机系统、前后台系统、单处理器多任务系统、多处理器多任务系统第 2 部分 嵌入式系统硬件设计1、嵌入式硬件系统由哪几部分组成嵌入式系统的硬件是以包含嵌入式微处理器的 SoC 为核心,主要由 SoC、总线、存储器、输入/输出接口和设备组成。2、几个基本概念:冯.诺依曼与哈佛结构、CISC 和 RISC、主存、外存、MPU、MMU、C

8、ache、TCM、Write buffer、总线、异常、交叉编译、交叉开发、寻址方式、堆栈、串行总线冯.诺依曼:将指令和数据存放在同一存储空间中,统一编址,指令和数据通过同一总线访问。哈佛结构:程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。CISC:复杂指令集RISC:精简指令集主存:主存是处理器能直接访问的存储器,用来存放系统和用户的程序和数据。大多数嵌入式系统的代码和数据都存储在处理器可直接访问的存储空间即主存中。系统上电后在主存中的代码直接运行。主存储器的特点是速度快,一般采用 ROM、EPROM、NorFlash、SRA

9、M、DRAM 等存储器件。外存:外存是处理器不能直接访问的存储器,用来存放各种信息,相对主存而言具有价格低、容量大的特点。在嵌入式系统中除部分采用硬盘外,大多数采用电子盘做外存,电子盘的主要种类有:NandFlash SD(Secure Digital) CompactFlash U 盘MPU内存保护单元:控制内存访问权限,控制内存区域的属性(cacheable, bufferable)MMU内存管理单元:具有 MPU 的所有特性,另外提供虚拟地址到物理地址的转换Cache(高速缓存):快速的本地内存,存放最近被访问过的内存的副本TCM 紧耦合内存:快速的本地内存,特定的地址范围Write b

10、uffer(写缓存区):减少了写数据到外部内存的次数总线:总线是 CPU 与存储器和设备通信的机制,是计算机各部件之间传送数据、地址和控制信息的公共通道。异常:是由内部或者外部原因引起的,当异常发生时 CPU 将暂停执行当前指令自动到指定的向量地址读取指令并且执行。交叉编译:在一个平台上生成另一个平台上的可执行代码交叉开发:主机环境下开发,目标机上运行。寻址方式:寻址方式是根据指令中给出的地址字段来实现寻找真实操作数地址的方式。堆栈:堆栈是一个按特定顺序进行存取的存储区,操作顺序为“先进后出”。串行总线:串行总线是指按位传送数据的通路。其连接线少、接口简单、成本低、传送距离远,被广泛用于嵌入式

11、系统与外设的连接和计算机网络。3、CISC 和 RISC 的异同选择题CISC:复杂指令集(Complex Instruction Set Computer) 具有大量的指令和寻址方式,指令长度可变8/2 原则:80%的程序只使用 20%的指令RISC:精简指令集(Reduced Instruction Set Computer) 只包含最有用的指令,指令长度固定确保数据通道快速执行每一条指令使 CPU 硬件结构设计变得更为简单大多数程序只使用少量的指令就能够运行。类别CISCRISC指令系统指令数量很多较少,通常少于 100执行时间有些指令执行时间很长,如整块的存储器内容拷贝;或将多个寄存器

12、的内容拷贝到存贮器没有较长执行时间的指令编码长度编码长度可变,1-15 字节编码长度固定,通常为 4 个字节寻址方式寻址方式多样简单寻址操作可以对存储器和寄存器进行算术和逻辑操作只能对寄存器进行算术和逻辑操作,Load/Store 体系结构编译难以用优化编译器生成高效的目标代码程序采用优化编译技术,生成高效的目标代码程序4、ARM 处理器的特点l集成度l体系结构:算术格式 定点运算功能单元流水线 单周期执行指令l指令集:l性能:低端 低价 低性能50MIPS中档 低功耗 150MIPS高端 高强度计算l功耗和管理降低电压 提供不同的时钟频率 关闭暂时不使用的功能块提供功耗管理机制l成本lARM

13、 内核是一种 32 位 RISC 微处理器,具有功耗低、性价比高、代码密度高等三大特色。ARM 处理器的分类结构体系版本(Architecture)ARM v4TARM7ARM9 ARM v5TEARM9 ARM10 ARM v6ARM11ARM Cortex (v7)ARM Cortex按应用特征分类应用处理器 Application Processor 特征:MMU, Cache 最快频率、最高性能、合理功耗 实时控制处理器 Real-time Controller 特征:MPU, Cache 实时响应、合理性能、较低功耗微控制器 Micro-controller 特征:no sub-me

14、mory system 一般性能、最低成本、极低功耗ARM 的异常类型及对异常的处理过程(进入异常,处理器完成那些操作;退出异常,处理器完成那些操作),异常的优先级类型:BL、软件中断 SWI、未定义指令、预取指中断、快中断、中断、数据中止、复位进入: 1.在适当的 LR 中保存下一条指令的地址,当异常入口来自:ARM 状态,那么 ARM7TDMI 将当前指令地址加 4 或加 8 复制(取决于异常的类型)到 LR 中;为 Thumb 状态,那么 ARM7TDMI 将当前指令地址加 2、4 或加 8(取决于异常的类型)复制到 LR 中;异常处理器程序不必确定状态。2.将 CPSR 复制到适当的

15、SPSR 中;3.将 CPSR 模式位强制设置为与异常类型相对应的值;4.强制 PC 从相关的异常向量处取指。ARM7TDMI 内核在中断异常时置位中断禁止标志,这样可以防止不受控制的异常嵌套。注:异常总是在 ARM 状态中进行处理。当处理器处于 Thumb 状态时发生了异常, 在异常向量地址装入 PC 时,会自动切换到 ARM 状态。退出:1.将 LR(R14)中的值减去偏移量后存入 PC,偏移量根据异常的类型而有所不同;2.将 SPSR 的值复制回 CPSR;3.清零在入口置位的中断禁止标志。注:恢复 CPSR 的动作会将 T、F 和 I 位自动恢复为异常发生前的值。异常优先级:复位、数据

16、终止、FIQ、IRQ、预取终止、未定义指令、SWI(软件中止)ARM 微处理器的编程模型支持哪些数据类型,CPU 模式,CPU 模式转变需通过什么方式, 处理器的工作状态及切换处理器状态用什么汇编指令切换及切换到何状态,寄存器及每个寄存器的作用,寄存器个数等编程模型:数据类型 最低两位字节型数据:数据宽度为 8bits半字数据类型:数据宽度为 16bits,存取式必须以 2 字节对齐的方式字数据类型:数据宽度为 32bits,存取式必须以 4 字节对齐的方式CPU 模式的转变:软件控制 异常 外部中断n处理器有两种工作状态:nARM:32 位,执行字对准的 ARM 指令nThumb:16 位,

17、执行半字对准的 Thumb 指令ARM 和 Thumb 之间状态的切换不影响处理器的模式或寄存器的内容n进入 Thumb 状态:n执行 BX 指令,并设置操作数寄存器的状态(位0)为 1。n在 Thumb 状态进入异常(IRQ, FIQ, UNDEF, ABORT,SWI etc.),当异常处理返回时自动转换到 Thumb 状态n进入 ARM 状态:n执行 BX 指令,并设置操作数寄存器的状态(位0)为 0。n进入异常时,将 PC 放入异常模式链接寄存器中;从异常向量地址开始执行也可进入 ARM 状态nARM 处理器有 37 个寄存器n31 个通用寄存器:程序计数器、堆栈指针及其他通用寄存器n

18、6 个状态寄存器n通用寄存器是 R0-R15 的寄存器,分为三类n没有对应影子寄存器的寄存器 R0-R7物理通用寄存器 中断时应注意保存n有对应影子寄存器的寄存器 R8-R14n程序计数器 R15 (或者 PC)nR8-R12 各有两组物理寄存器:一组为 FIQ 模式,另一组是除 FIQ 以外的其他模式。nR13-R14 各有 6 个分组的物理寄存器,一个用于用户模式和系统模式,其他 5个分别用于 5 种异常模式。n R13(也被称为 SP 指针)被用作栈指针,通常在系统初始化时需要对所有模式下的 SP 指针赋值,当 CPU 在不同的模式时栈指针会被自动切换成相应模式下的值。n R14 有两个

19、用途,一是在调用子程序时用于保存调用返回地址,二是在发生异常时用于保存异常返回地址。ARM7TDMIEJ,TDMIEJ 每个字母的含义Thumb 架构扩展, 提供两个独立的指令集;D:内核具有 Debug 扩展结构M:增强乘法器 (32x8) 支持 64 位结果;I:EmbeddedICE 逻辑;E: 增强的 DSP 指令集,E扩展表示在通用的 CPU 上提供 DSP 能力。J: Jazelle 扩展以支持 Java 加速技术。Cache 和 buffer 的区别Write Buffer:当数据写到 Write Buffer 后不需要 CPU 的任何干预而由 Write Buffer 控制逻辑

20、自动的将数据写到最终的地方;Cache 的回写则需要 CPU 的干预。Write Buffer 较小,通常只有几十个字节。Read Buffer:当读数据时 Read Buffer 自动多读取一些字节,但是不占用 CPU 的总线时间, 所以能加快读数据的速度;当使用 Cache 时如果要从内存中读取数据则每个数据都会占用 CPU 的时间,这是与 Read Buffer 的最大不同点。Read Buffer 较小,通常只有几十个字节。CPSR 寄存器中每一位的含义复位后,ARM 处理器执行什么操作?1.强制 CPSR 中的 M4:0变为 b10011(管理模式);2.置位 CPSR 中的 I 和

21、 F 位;3.清零 CPSR 中的 T 位;4.强制 PC 从地址 0x00 开始对下一条指令进行取指;5.返回到 ARM 状态并恢复执行 。ARM 微处理器的内存和 I/O:大小端(大端和小端如何写数据),对齐方式,CPU 和 I/O的接口信息,I/O 的映射方式,存储器映射编址和 I/O 映射编址的异同ARM 支持大端(Big-endian)(高对低低对高)和小端(Little-endian)(高对高低对低)的内存数据方式,可以通过硬件的方式设置端模式,也可以通过软件的方式来设置(V6 版本以上)大小端:大端 最高有效字节位于最低地址 最高有效字节的地址就是该 word 的地址;小端 最低

22、有效字节位于最低地址 最低有效字节的地址就是该 word 的地址;对齐方式:?nARM 的 I/O 端口都是内存映射的方式存储器映射编址I/O 映射方式优点n可采用丰富的内存操作指令访问 I/O 单元n无需单独的 I/O 地址译码电路n无需专用的 I/O 指令nI/O 单元不占用内存空间nI/O 程序易读缺点n外设占用内存空间nI/O 程序不易读I/O 操作指令仅有单一的传送指令,I/O 接口需有地址译码电路举例ARM 中,I/O 端口与内存单元统一编址Intel 80X86 系列,I/O 端口与内存单元分开编址,I/O 端口有自己独立的地址空间,其大小为 64KB总线分类,总线的主要参数分类

23、:按相对于 cpu 的位置划分:片内总线和片外总线按功能和信号类型:数据总线、地址总线和控制总线主要参数:总线宽度(总线位宽,总线同时传送数据的位数)、总线频率(总线工作速度mhz)、总线带宽(数据传送率,在一定时间内可传送的数据量)总线带宽(单位:MB/s)=(总线宽度/8) 总线频率为什么嵌入式微处理器还有多条总线(高速和低速总线)?1 数据宽度:高速总线通常提供较宽的数据连接。2 成本:高速总线通常采用更昂贵的电路和连接器。3 桥允许总线独立操作,从而使得 I/O 操作可与 CPU 并行操作。AMBA 总线及组成,AHB 的组成和 APB 的组成及每个组成部分的作用AMBA 总线组成:系

24、统总线 AHB 和桥和外部总线 APB AHB 总线组成及作用:1、主单元:只有主单元可在任何时刻使用总线。AHB 可以有一个或多个主单元。主单元可以是 RISC 处理器、协处理器以及 DMA 控制器,以启动和控制总线操作。2、从单元:可以响应(并非启动)读或写总线操作。总线的从单元可以在给定的地址范围内对读写操作进行相应的反应。从单元向主单元发出成功、失败信号或等待各种反馈信号。从单元通常是其复杂程度不足以成为主单元的固定功能块,例如外存接口、总线桥接口以及任何内存都可以是从单元,系统的其他外设也包含在 AHB 的从单元中。3、仲裁器:用来确定控制总线是哪个主单元,以保证在任何时候只有一个主

25、单元可以启动数据传输。一般来说仲裁协议都是固定好的,例如最高优先级方法或平等方法,可根据实际的情况选择适当的仲裁协议。4、译码器:总线译码器用于传输译码工作,提供传输过程中从单元的片选信号。APB 组成及功能:APB 桥和 APB 从单元APB 桥的功能APB 桥将系统总线 AHB/ASB 和 APB 连接起来,并执行下列功能:n锁存地址并保持其有效,直到数据传送完成。n译码地址并产生一个外部片选信号,在每次传送时只有一个片选信号(PSELx) 有效。n写传送(write transfer)时驱动数据到 APB。n读传送(read transfer)时驱动数据到系统总线 AHB/ASB。n传送

26、时产生定时触发信号 PENABLE。常用串行总线有哪些?I2C、SPI、USB、主存、外存,常用主存、外存有哪些? 主存:ROM 类:Nor Flash、EPROM、E2PROM、PROM 等RAM 类:SRAM、DRAM、SDRAM 等外存:NandFlashDOC(Disk On Chip) CF(Compact Flash) SD(Secure Digital) MMC(Multi MediaCard)NOR 和 NAND Flash 的异同选择嵌入式系统设计主要步骤及每个步骤的分析第一步系统需求分析;第二步规格说明,在这一步我们对需设计的系统功能进行更细致地描述,这些描述并不涉及系统的

27、组成;第三步系统结构设计,在这一阶段以大的构件为单位设计系统内部详细构造,明确软、硬件功能的划分;第四步构件设计,它包括系统程序模块设计、专用硬件芯片选择及硬件电路设计;第五步系统集成,在完成了所有构件设计的基础上进行系统集成,构造出所需的完整系统。嵌入式硬件实现流程,每个流程如何实现?芯片选择:速度够快 功耗够低 生产方便 供货持久,取决于供应商 开发容易原理图:3W 原则圆弧形或 135 度角PCB:制板:PCB 原始文件 Gerber 文件焊件与调试:由简单到复杂最小系统组成及每部分作用S3C2410+电源电路+晶振电路+复位电路+JTAG 接口+SDRAM+FLASH+其他接口嵌入式控

28、制器+时钟系统+测试调试接口+复位及配置系统+存储器系统+供电系统时钟:目前所有的微控制器均为时序电路,需要一个时钟信号才能工作。电源:为整个系统提供能量复位:负责将微控制器初始化为一个确定的状态JTAG 接口的作用通过 JTAG 接口,可对芯片内部所有部件进行访问,因而是开发调试其纳入是系统的一种简洁而高效的手段。14 针和 20 针标准在嵌入式系统中,串口的作用ARM 指令系统:ARM 寻址方式及 ARM 指令集寄存器寻址:MOVR1,R2;将 R2 的值存入 R1SUBR0,R1,R2;将 R1 的值减去 R2 的值,结果保存到 R0立即寻址:MOV R0,#0xFF000;将立即数 0

29、xFF000 装入 R0 寄存器寄存器移位寻址:MOVR0,R2,LSL #3;R2 的值左移 3 位,结果放入 R0,;即是 R0=R28ANDSR1,R1,R2,LSL R3;R2 的值左移 R3 位,然后和 R1 相;“与”操作,结果放入 R1寄存器间接寻址:LDRR1,R2 ;将 R2 指向的存储单元的数据读出;保存在 R1 中SWPR1,R1,R2;将寄存器 R1 的值和 R2 指定的存储;单元的内容交换基址寻址:LDRR2,R3,#0x0C;读取 R3+0x0C 地址上的存储单元;的内容,放入 R2 STR R1,R0,#-4!;先 R0=R0-4,然后把 R1 的值寄存;到保存到

30、 R0 指定的存储单元多寄存器寻址:LDMIAR1!,R2-R7,R12;将 R1 指向的单元中的数据读出到;R2R7、R12 中(R1 自动加 1) STMIAR0!,R2-R7,R12;将寄存器 R2R7、R12 的值保;存到 R0 指向的存储; 单元中;(R0 自动加 1)堆栈寻址块拷贝寻址:STMIA R0!,R1-R7 ;将 R1R7 的数据保存到存储器中。;存储指针在保存第一个值之后增加,;增长方向为向上增长。STMIB R0!,R1-R7 ;将 R1R7 的数据保存到存储器中。;存储指针在保存第一个值之前增加,;增长方向为向上增长。相对寻址:ARM 处理器汇编指令,要求指令能知道

31、含义第 3 部分 嵌入式软件系统几个基本概念:交叉开发、Bootloader、交叉调试交叉开发:主机环境下开发,目标机上运行。Bootloader:Bootloader 移植是在特定硬件平台上操作系统移植至关重要的一步,是引导操作系统的基础。交叉调试:被调试程序运行在具有嵌入式操作系统的目标机上,调试器运行在具有通用操作系统的主机上。嵌入式软件的体系结构由哪几层组成及每层的作用驱动层:板级初始化程序n与系统软件相关的驱动n与应用软件相关的驱动操作系统层n操作系统层包括嵌入式内核、嵌入式 TCP/IP 网络系统、嵌入式文件系统、嵌入式GUI 系统和电源管理等部分。n其中嵌入式内核是基础和必备的部

32、分,其他部分要根据嵌入式系统的需要来确定。中间件层n目前在一些复杂的嵌入式系统中也开始采用中间件技术,主要包括嵌入式 CORBA、嵌入式 Java、嵌入式 DCOM 和面向应用领域的中间件软件。n如基于嵌入式 CORBA 的应用于软件无线电台的应用中间件 SCA(SoftwareCoreArchitecture)等。应用层n应用层软件主要由多个相对独立的应用任务组成n每个应用任务完成特定的工作,如 I/O 任务、计算的任务、通信任务等,由操作系统调度各个任务的运行。嵌入式操作系统的特点n可固化n可配置、可剪裁n独立的板级支持包,可修改n不同的 CPU 有不同的版本应用的开发需要有集成的交叉开发

33、工具嵌入式软件的运行流程及每步的功能上电复位、板级初始化阶段:嵌入式系统上电复位后完成板级初始化工作。系统引导/升级阶段:根据需要分别进入系统软件引导阶段或系统升级阶段。系统初始化阶段:在该阶段进行操作系统等系统软件各功能部分必需的初始化工作,如根据系统配置初始化数据空间、初始化系统所需的接口和外设等。应用初始化阶段:该阶段进行应用任务的创建,信号量、消息队列的创建和与应用相关的其它初始化工作。多任务应用运行阶段:各种初始化工作完成后,系统进入多任务状态,操作系统按照已确定的算法进行任务的调度,各应用任务分别完成特定的功能。GCC 编译的步骤,每个步骤完成什么操作?GCC 编译 gcc opt

34、ions filenames 常用的参数选项的含义n 四个步骤- 预处理 preprocessing- 编译 compilation- 汇编 assembly- 链接 linking预处理(Pre-Processing):在该阶段,编译器分析处理源代码文件中的各种宏指 令,如include,if 等。编译(Compiling):在该阶段,GCC 首先要检查代码的规范性、是否有语法错误等,在检查无误后,GCC 把代码翻译为汇编语言。汇编(Assembling):在该阶段,编译器把编译生成的汇编代码转成二进制目标代 码。链接(Linking):在该阶段,编译器把汇编阶段生成的二进制代码、程序中用到

35、的库文件链接起来,生成可执行文件。函数库分为静态库和动态库。静态库:在链接时,静态库的文件代码会被拷贝到可执行文件中。动态库:链接时,动态库的代码不会被加入可执行文件中,而是在程序被执行的时候加载。n gcc options filenames其中,options 就是参数选项,filenames 是相关的文件名称。常用的选项有: c :只编译生成目标文件,不链接成可执行文件。 E: 只对程序进行预处理。 g: 生成调试信息,GNU 调试器可利用该信息。 l library:用来指定所使用的库文件。 i directory: 为 include 文件的搜索指定目录。 o filename: 生

36、成指定的文件名的可执行文件。交叉调试的分类,及每种调试方法的功能交叉调试的分类,及每种调试方法的功能嵌入式系统交叉调式主要分类两类:软件调试和硬件调试。软件调试:硬件调试方式相对软件调试方式,具有更加强大的调试功能,不仅能调试工作在操作系统之上的应用程序,还可以调试操作系统和引导操作系统启动的引导程序。n常见的硬件调试方式有 4 种q 1.ROM 监视器:ROM Monitorq 2.ROM 仿真器:ROM Emulatorq 3.电路内仿真器(ICE):In-Circuit Emulator 4.电路内调试器(ICD): In-Circuit Debugger采用 gdb 调试应用程序的工作

37、流程n1.建立调试器(本地 gdb)与目标操作系统的通信连接。有串口、网卡、并口等方式n2.目标机上开启 gdbserver 进程,监听对应端口n3.主机上运行 gdb 调试器, gdb 自动寻找目标机上的通信进程。即 gdbserver 所在进程n4.用户在宿主机上运行 gdb,下达调试命令,调试命令通过主机与目标机之间的通信端口传递到目标机的 gdbserver,通过 gdbserver 对目标机上的程序发出控制命令。n5.gdbserver 把应用程序的调试信息传递到主机的 gdb,并把调试信息显示出来。Makefile 的宗旨(目的)是什么?n 就是让编译器知道要编译一个文件需要依赖其

38、他的哪些文件。当那些依赖文件有了改变,根据依赖关系编译器会自动的发现那些部分需要重新编译,然后重新编译相应的模块。Linux 环境下常用的基本指令 login 登入系統 (注意大小写) logout 登出系統 dmesg 察看开机的信息 (按 shift+PageUp、Shift+PageDown 翻頁) su 切换成为 root 系统管理用户 一般使用者切换成为其他身份使用者需要輸入该使用者密碼。若是執行者為root 系統管理員的話,則不需要輸入密碼即可切換。 who 查詢目前有哪些人登入系統主機內 who whoami 查詢自己登入的帳號名稱 whoami chsh 設定或者是修改使用者所

39、使用的 shell chsh userid chfn 設定或是修改使用者資料 # chfn userid clear 清屏幕 (類似於 dos cls 指令) cd 切換目錄 只輸入 cd 或者是輸入 cd 回到家目錄(home) cat 顯示文件內容 # cat /etc/fstab # cat /var/log/messages # cat /etc/fstab /var/log/messages /tmp/text.txt cp : 複製目錄文件 cp cp r cp i mv : 移动目錄文件mv mkdir : 建立目錄 mkdir . rm : 刪除目錄 rm rm rf / ma

40、n 显示 manual 帮助手册 man ls man 热 键 h 显示帮助信息 j/k 前进/后退一行 空格或 f 向前翻页 b 向后翻页 G/g 跳转到文件的最后一行/第一行 ?或/ 向后或前搜索字符 q 退出手册 grep尋找符合的欲尋找的資料並顯示出來 grep dev /etc/fstab grep l dev *.txt find 尋找文件 find . -name readme.txt echo 顯示一行訊息 echo Hello World echo “$PATH” tar 文件打包与解压 用來打包或解压文件或目录 两种方式:gzip(.gz or .z) 及 bzip2(.b

41、z2) 选项说明: c 创建 x 提取 z 用 gzip 方式处理 j 用 bzip2 方式处理 f 表示后面是文件名 v 显示过程 示例: tar -czvf xxx.tar.gz xxx/ xxx1 xxx2 xxx3 多个待打包文件以空格分隔 tar -czvf xxx.tar.gz /home/user/xxx/ 使用绝对路径打包,解包也使用绝对路径 tar -xzvf xxx.tar.gz 按相对路径解包到当前目录下,或按绝对路径解包 tar -czvf xxx.tar.gz xxx | split -b 1m 打包后,使用 split 分割为 1m 大小的多个文件Linux 环境下

42、 Vi 编辑器的模式及模式切换方法,及文件保存退出方法nVim 常见的模式有:命令模式 、 插入模式 、 低行模式 ,另外我们也会经常用到可视模式n模式切换方法:Vim 启动时默认 命令模式 ;或者在其它模式下,按下 Esc 键,便可以回到命令模式按下 i 键,编辑器底部出现了- insert - ,您进入了插入模式在命令模式下,按下 : 键,在编辑器底部出现了一个 : ,您进入了低行模式n文件保存退出方法:在命令模式下,按一下:冒号键进入Last line mode,例如:: w filename (输入 w filename将文章以指定的文件名 filename 保存): wq (输入wq

43、,存盘并退出 vi): q! (输入 q!, 不存盘强制退出 vi)为什么要交叉编译?n标机上往往无法进行有效的本地编译目标机硬件本身在开发过程中,还不能使用或还不够稳定目标机平台上缺乏完整的本地编译工具、环境目标机系统本身性能不够,导致编译太慢n宿主机与目标及的区别体系结构的不同。宿主机和目标及通常是异构的。宿主机一般采用 x86 体系结构, 但是目标机的体系结构则可能非 x86 的,如实 ARM、MIPS、PowerPC、等各式各样。处理能力不同。通常宿主机的处理速度、存储容量等会远远大于目标机。交叉编译工具链主要包含哪些部分?1、针对目标系统的编译器 gcc2、针对目标系统的二进制工具

44、Binutils 3、针对目标系统的标准 c 库 glibc4、针对目标系统的 Linux 内核头文件5、针对目标系统的交叉调试器 gdbBootloader 的主要任务、操作模式、按功能分类nBoot Loader 是在系统启动时激活,在操作系统内核运行之前运行的一段程序,它担负着双重责任:(1) 初始化硬件设备和建立内存空间的映射图;(2)引导操作系统:将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。n操作模式:启动加载模式(无用户介入):在这种模式下,BootLoader 从目标机的某个固态存储设备上将操作系统加载到RAM 中运行。下载模式:目标机上的

45、BootLoader 通过串口或网络连接等通信手段从宿主机上下载文件。n按功能分类:n简单 Bootloaderl只具有系统引导功能n具有监控功能(Monitor)的 Bootloaderl调试支持l内存读写lFlash 烧写l网络下载l环境变量配置理解 Bootloader 严重依赖于硬件环境,每个特定系统的 bootloader 都不同的的原因nBoot Loader 的实现严重依赖于硬件环境,每一个特定系统的 Boot loader 都会有所不同:lCPU 体系结构:ARM、PPC、x86、MIPS 等l板级设备:时钟、FLASH、通讯端口lBoot Loader 的入口地址:ARM 为

46、 0x0lBoot Loader 与开发机的通讯机制 串 口 网 络 USBBootloader 两阶段分别完成什么操作n多数 Boot Loader 可分为阶段 1 和阶段 2 两个阶段:n阶段 1:实现依赖于 CPU 体系结构的代码(1)硬件设备初始化(2)为加载 Boot Loader 的 stage2 准备 RAM 空间(3)拷贝 Boot Loader 的 stage2 到 RAM 空间中(4)设置好堆栈(5)跳转到 stage2 的 C 入口点n阶段 2:实现一些复杂的功能(1)初始化本阶段要使用到的硬件设备(2)检测系统内存映射(memory map)(3)将 kernel 和根

47、文件系统映像从 flash 上读到 RAM 空间中(4)为内核设置启动参数(5)调用内核BootLoader 与主机进行文件传输的通信设备及协议nBootLoader 可通过串口与主机之间进行文件传输n传输协议l通常是 xmodemymodemzmodem 协议中的一种n可通过以太网连接并借助 TFTP 协议来下载文件l串口传输的速度是有限的l主机提供 TFTP 服务嵌入式系统中,常用的 bootloader 有哪些?nU-BootnviviBootloader 烧写有几种方式,分别是如何进行烧写的?Bootloader 的烧写有两种方式:通过 JTAG 口烧写和通过串口(或网口)烧写。n(1)裸板:在 Flash 被格式化且内存里也没有 Bootloader 的时候,此时目标板是一个完全干净的开发板,就需要通过 JTAG 口把 Bootloader 烧写到板子上n(2)bootloader:串口烧写主要用于更新和升级 Boo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论