第一章 嵌入式系统概述
1、嵌入式系统的定义及特点 定义 从广义的角度:嵌入式系统是一切非PC和大型机的计算机系统 从应用的角度:嵌入式系统是以应用为中心,以计算机技术为基础,采用可剪裁软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。 从技术的角度:嵌入式系统是一个以应用为中心、以计算机技术为基础,并融合微电子技术、通信技术和自动控制技术,而且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机系统。 特点 较长的生命周期 与具体嵌入的产品同步:导入期→成长期→成熟期→衰退期 不易垄断 将计算机技术、电子技术与各行业的具体应用相结合的产物 资金密集、技术密集、高度分散、不断创新的知识集成系统 2、嵌入式系统中使用的操作系统一般是实时操作系统 例如 VxWorks Windows CE pSOS QNX uc/OS HOPEN DeltaOS 3、嵌入式系统的硬件组成部分包括那些 嵌入式处理器(核心) 嵌入式存储器 嵌入式I/O设备 嵌入式I/O接口 4、嵌入式系统的分类:按有无操作系统及实时性分 按软件(有无嵌入式操作系统)划分 无操作系统控制的嵌入式系统 小型操作系统控制的嵌入式系统 大型操作系统控制的嵌入式系统 按实时性划分 非实时嵌入式系统 不具备实时性要求的嵌入式系统(温湿度计) 软实时嵌入式系统 外部事件在截止期限到达时偶尔未得到及时处理并不会带来致命失误的嵌入式系统(DVD播放器、机顶盒) 硬实时嵌入式系统 外部事件在截止期限到达时偶尔未得到及时处理,会带来致命失误的嵌入式系统(导弹控制系统、雷达导航系统)
5、常见的嵌入式系统应用领域 军事电子 科学探测 工业控制 智能仪表 汽车电子 路由器/交换机/防火墙 信息家电 消费电子 6、哈佛结构及冯诺依曼结构定义 指令与数据分开存储在不同的存储空间,使得指令读取和数据访问可以并行处理,显著提高了系统性能,但需要较多数量的总线。大多数嵌入式处理器都采用哈佛结构。 指令和数据不加以区分,都通过数据总线进行传输。因此,指令读取和数据访问不能同时进行,数据吞吐量低,但总线数量相对较少且管理统一。大多数通用计算机的处理器(如Intel X86)和嵌入式系统中的ARM7处理器均采用冯诺依曼结构。 7、哈佛结构及冯诺依曼结构区别 哈弗结构指令与数据分开存储在不同的存储空间,具有不同的宽度,独立编址和访问可同时读指令和数据;冯诺依曼结构指令和数据存储在同一存储空间,统一编制访问,具有相同的宽度。 哈弗体系结构总线数量较多,冯诺依曼结构总线数量相对较少。 哈弗结构相对冯诺依曼结构执行效率较高 8、嵌入式编程中为什么要加while(1) 防止程序跑飞,因为很多时候执行完某段程序后单片机的程序指针PC(就是程序指针)并不会停止,仍然会继续从ROM中读取指令并执行,这样一来可能会出现程序跑飞的情况,进而出现不确定的结果,加个while(1)就能让程序在执行完后在原地循环,相当于停在原地,防止跑飞。
第二章 嵌入式系统开发
1、嵌入式系统开发过程 第1步 嵌入式系统需求分析(前期)成果物嵌入式系统规格说明书 第2步 嵌入式系统设计(中期) 系统设计中包括体系架构设计、软硬件划分、硬件设计 第3步 嵌入式系统实现(中期) 第4步 嵌入式系统测试(中期) 第5步 嵌入式系统发布(后期) 2、嵌入式系统硬件设计包括哪些 硬件设计包含以下几个部分: 1嵌入式处理器的选择 考虑因素:处理器性能(时钟频率,寄存器大小)、功耗、成本 2外围设备的选择 考虑因素:根据嵌入式系统需求规格说明书确定相应外围设备、外设性能参数、电源电压范围 3.硬件和仿真工具的选择 选择满足处理器,外设等选择要求的集成电路芯片。如果没有,PCB自己画电路去吧。
3、嵌入式系统的软件设计包括哪些 首先进行嵌入式软件架构设计,分为有操作系统的软件架构和无操作系统的软件架构。其次再进行嵌入式软件模块的划分,如果架构是无操作系统,则进行主模块、子模块的划分,如果架构是有操作系统,择进行实时性、资源需求、任务粒度的确定。
4、嵌入式系统开发工具的组成 1.编辑器 编辑源代码 2.编译器 用于在嵌入式应用程序交叉编译阶段根据不同目标机的处理器芯片来产生运行于目标机上的目标文件。通用编译器:GNU 专用编译器:ARM,MIPS 3.链接器 把所有的目标文件和相关的库函数组合成一个可重定址的目标程序文件,该文件由txt段(代码)、data段(初始化的全局变量)和bss段(未初始化的全局变量)构成。 4.定址器 根据预设的描述各段在存储器中地址信息的脚本文件,对可重定址的目标程序文件的每个段指定物理内存地址,并输出包含二进制内存映像的可执行文件 5.调试工具 用于在嵌入式应用程序交叉调试阶段进行代码调试软件仿真器(基于宿主机的调试) ROM监控器 ROM仿真器 在线仿真器 片上调试 边界扫描寄存器JTAG
5、嵌入式系统开发环境 交叉编译环境:宿主机-仿真器-目标机
第三章
ARM Cortex-M3处理器由Cortex-M3内核和调试系统两部分组成。 1、Cortex M3的总线类型 I-CODE总线:用于从代码存储区取指令和向量 D-CODE总线:用于对代码存储区进行数据访问 系统总线:用于访问内存和外设 私有外设总线:用于访问私有外设,主要是访问调试组件。 2、Cortex M3的总线接口类型 I-CODE总线 D-CODE总线 系统总线 外部私有外设总线 调试访问端口总线 3、Cortex M3的寄存器及其作用 1.通用寄存器R0-R12:用来进行数据操作 2.堆指针寄存器R13(SP寄存器):被用作堆栈指针,用于访问堆栈。 3.链接寄存器:调用子程序时保存返回地址。 4.程序计数器:用于存放下一条执行的指令的地址。 5.特殊功能寄存器:预定义功能 4、Cortex M3的工作状态、特权分级及操作模式 特权分级:
- 用户级 不能执行特权级指令(如MSR/MRS)
- 特权级 可以执行所有指令,访问MPU限定外所有存储空间
操作模式 - 线程模式:普通应用程序的代码运行模式
- 处理者模式:中断服务程序或OS内核的代码运行模式
5、Cortex M3的中断与异常的处理过程 1异常响应 (入栈 取向量 更新寄存器) 2执行异常程序 3异常返回 6、Cortex M3的双堆栈及其作用 ARM Cortex-M3有两个堆栈:MSP主堆栈和PSP进程堆栈 双堆栈机制可防止用户程序的堆栈错误破坏os使用的堆栈 7、Cortex M3的存储映射 背书上p108页图 8、位带操作的作用 位带操作使代码量减少,防止错误写入。 9、大小端格式 小端格式:将高字节数据存放到高地址,低字节数据存放到低地址,高高低低 大端格式:将高字节数据存放到低地址,低字节数据存放到低地址,高低高低 Cortex-m3既支持小端模式,也支持大端模式,基于Cortex-m3的处理器大多数情况下使用小端模式。
第五章
1、STM32 F103系列微控制器中GPIO端口特性 总共112个多功能双向i/O引脚,每个端口有16个I/O引脚 端口号以大写字母命名,从A到G. 2、GPIO的工作模式 输入浮空 输入上拉 输入下拉 模拟输入 开漏输出 推挽输出 推挽复用功能 开漏复用功能 3、GPIO的引脚复用功能重映射 用户根据实际需要可以把某些外设的“复用功能”从“默认引脚”转移到“备用引脚”上,这就是外设复用功能的I/O引脚重映射。 4、GPIO常用库函数(引脚的选择、工作模式、速度的设置及引脚的置位、复位与数据的读取) GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHZ; GPIO_SetBits(GPIOA,GPIO_Pin_8); GPIO_ResetBits(GPIOA,GPIO_Pin_8); GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_8); GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8); GPIO初始化过程及使用方式 GPIO_Init TypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHZ; GPIO_Init(GPIOA,&GPIO_InitStructure);
|