一、 嵌入式系统概述
1. 嵌入式系统(IEEE定义):控制、监视或辅助设备、机器以及工厂操作的装备。
2. 嵌入式系统特点:面向特定应用;将先进的计算机技术、半导体技术和电子技术等和各个行业的具体应用相结合的产物;嵌入式系统的硬件和软件都必须高效率设计,量体裁衣,去除冗余,力争实现更高的性能;嵌入式软件是实现嵌入式系统功能的关键;嵌入式系统和具体应用有机的结合在一起,其升级换代和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期;嵌入式系统本身不具备自开发能力,其开发需要特定的开发环境和工具。
3. 嵌入式系统的共性:嵌入式处理器多样化,有共性,如总线、中断机构;嵌入式软件开发人员需要关心硬件的细节;软件开发在内核层编程/外层编程;与通用软件开发人员不同,嵌入式系统开发人员,特别是系统/产品的设计师,必须掌握硬件、软件的综合知识,进行软硬系统的综合设计;嵌入式系统软件开发人员可能使用多种嵌入式操作系统平台,但总体建构较为类似;操作系统,编程语言和开发工具的多样性;根据应用选软件平台和硬件平台;嵌入式系统的开发往往需要专业人员协作完成。
4. 嵌入式处理器的特点:可以支持实时多任务能力;具有功能很强的存储区保护功能,避免存储区错误的导致系统异常;可扩展、系列化的处理器结构;功耗低,很好支持移动式嵌入式设备;高集成度,具有丰富的I/O功能和种类;更好的硬件适应性,即良好的可移植性,支持尽量多的硬件平台;体积少,占用更少的存储资源;高可靠,为应用提供良好支持;针对网络化嵌入式应用,提供网络协议支持,支持精简TCP/IP等协议;针对部分领域,提供嵌入式GUI支持;针对部分领域,要求EOS具有实时性;可裁剪性,如涉及成为内核结构和模块化结构。
二、 嵌入式系统硬件基础
1. 芯片封装:安装半导体集成电路芯片用的外壳;安放、固定、密封、保持芯片和增强电热性能;内部芯片与外部电路的连接
2. 封装考虑的因素:芯片面积与封装面积之比尽量接近1:1;基于散热的要求,封装越薄越好 ;引脚尽量短,引脚间距尽量大;要便于安装
3.
A. 三态输出
可以将信号驱动为高电压、低电压、浮动状态(高阻状态);
浮动状态即第三种输出状态,也称三态、高阻抗态;
此时既不像输出0状态那样允许电流灌入,也不象输出1状态那样向负载提供电流,处于悬浮状态;
允许多个设备驱动同一信号时,三态设备非常有用。
B. 出现的问题:如果没有驱动,信号可能高也可能低,或者处于二者之间某个状态,即可能出现浮动信号,需要安装一个辅助元件来驱动其高低->上拉电阻或者下拉电阻。
4. 双列直插式封装(Dualln-line Package,DIP):指采用双列直插形式封装的集成电路芯片,绝大多数中小规模集成电路(IC)均采用这种封装形式。
特点:适合在PCB(印刷电路板)上穿孔焊接,操作方便;芯片面积与封装面积之间的比值较大,故体积也较大;中小规模集成电路均采用这种封装形式,其引脚数一般不超过100个。
5. 薄形小外型封装:
6. 塑料引线芯片载体封装(Plastic Leaded Chip Carrier,PCLL):外形呈正方形,四周有管脚,管脚为J型;;外形尺寸比DIP小;主板的BIOS都采用该封装形式。
7. PGA插针网格阵列封装(Pin Grid Array Package):在芯片的内外有多个方阵形的插针,每个方阵形插针沿芯片的四周间隔一定距离排列;PGA插座,专门用来满足PGA封装的CPU安装和拆卸的要求。
PGA的插座 是 ZIF。
8. BGA球栅阵列封装(Ball Grid Array Package):IC频率超过100MHz时,传统封装方式可能会产生“CrossTalk”现象,且当管脚数大于208时,传统封装方式有难度;高密度表面装配封装技术,封装的底座,引脚都呈球状并排列成一个类似于格子的图案,由此命名为BGA;材料多为陶瓷;采用可控塌陷芯片焊接,可以改善电热性能;BGA一出现便成为CPU、主板上南北桥芯片等高密度、高性能、多引脚封装的选择。
9. 信号浮动:信号不受任何元件的控制,电压随时间不确定的变化,若浮动信号连接到特定元件,可能导致错误或者灾难。
10. 退偶电容的摆放原则:靠近电源的管脚,并且电容的电源走线和电线所包围的面积最小。
11. 上拉电阻:一端接正电压,另一端接信号线,当两个开放收集器输出端没有输出时,将有足够电流渡过使电压变高,避免假中断。当任一输出为低电平时,流过上拉电阻的电流很小,不足以使电压变高,产生低电压信号。同理为下拉电阻。
12. 总线竞争:两个元件同时驱动一个信号时,若驱动不一致可能导致元件被烧坏,乃至系统瘫痪。这个问题是由电路设计错误造成的。
13. 过载问题:一个元件的输出驱动能力是有限的,当一个输出对应过多元件的输入时可能导致驱动过载。 解决过载:通过增加驱动器电路达到。但是也引入了延迟。
14. 嵌入式处理器的技术指标:功能;字长;处理速度;主频;寻址能力;平均无故障工作时间;工作温度;功耗;性价比;工艺;电磁兼容性指标
15. 复位电路:用途---在系统电源建立过程中,为CPU或者某些接口电路提供一个几十毫秒至数百毫秒的复位脉冲(高或低),利用这段时间(大于芯片最小复位时间要求),系统振荡器启动并稳定下来,CPU复位内部寄存器及指针,为程序运行做准备。
16. 复位电路形式:阻容复位电路;手动复位;watchdog复位;专用复位电路;内部复位;软件复位。
17. 复位电路作用:在系统电源建立过程中,为CPU或某些接口电路提供一个几十毫秒的复位脉冲,利用这段时间,系统振荡器并稳定下来,CPU复位内部寄存器及指针,为程序
运行做准备。
18. 嵌入式系统开发是什么阻容复位电路:利用电容电压不能突变而是按指数规律上升、下降的特性,配合反相器的输入电平翻转门限产生所需的复位脉冲。复位脉冲宽度取决于电容电阻的参数。
19. 手动复位开关产生的复位信号接在复位电路上,而不是直接接在处理器复位信号输入端上,可以消除开关抖动;
抖动产生的原因:认为抖动,接触不良,干扰影响等。
20. 看门狗电路原理:正常工作的嵌入式系统的程序,可以设计成每个确定的时间必然运行其中的某一部分代码,完成看门狗复位操作;如果在一个特定最大的时间内没有运行该类代码,则认为系统故障,看门狗电路产生复位信号,使处理器强制复位,系统从复位向量处重新运行。
21. 为什么要用看门狗电路:环境恶劣时,嵌入式处理器运行过程中可能出现死机和跑飞的情况,此时需要使处理器强制复位,使用特定的电路。
22. 软件复位:通过软件设置一个特殊功能寄存器的位完成控制器的复位。结果同硬件一样。
23. 软件复位与程序重新运行:相同:两者程序都从复位向量处开始运行;不同:软件复位处理器回到初始状态,而程序重新运行方法处理器不回到初始状态。
24. I/O模块从编程结构上分为:数据输入寄存器、数据输出寄存器、控制寄存器、状态寄存器、模式寄存器
25. 定时器/计数器的功能:任务调度、软件时钟、波特率发生器、实时时钟、用于液晶刷新、监控电路、动态存储器的刷新、A/D ,D/A转换电路、用于智能芯片。
26. 定时器与计数器的区别:定时器使用系统时钟作为计数脉冲,计数器使用脉冲输入端通常来自于处理器的引脚,对外部的事件进行计数。
27. SPI(串行外部设备接口):利用3条线完成2单元间双工,高速,主从式通信:两天数据线用于收发数据,时钟线用于同步。
28. UART异步通信收发器:通用串行数据总线,用于异步通信,不需要公共时钟,双向通信,全双工收发。接受过程中科检测出3种错误:奇偶校验错;帧错误;溢出错误。
29. 嵌入式存储器设计考虑因素:尽量使用存储密度大的、考虑功耗限制、成本考虑、扩展存储器考虑。 
30. 存储器设计分为:一体化设计与分离式设计。
31. 嵌入式系统的存储器通常都是与系统主板设计在一起,而不是所谓的“内存条”形式:一方面嵌入式系统的内存通常是固定大小的;一体结构可以提高系统的可靠性。
三、 中断技术
1. 中断概念:在系统运行过程中,由于外部或内部发生的某个事件,系统暂停正在执行的操作,转而执行该事件的处理程序的机制称为中断。中断是嵌入式系统对外部和内部事件作出响应的一种能力。
2. 中断延迟:系统响应一个中断需要花费的时间。
3. 什么是context?: 程序使用的CPU寄存器,堆栈等资源
1) 中断服务程序在执行前需要保护被中断程序代码的context;
2) 中断服务程序在执行完毕返回前需要恢复被中断程序代码的context
3) 为什么为什么需要保存和恢复context?
a) 普通任务和中断服务程序共享CPU的寄存器
b) 不进行保护很容易破坏普通任务使用的数据
4) C语言程序员获得的便利
a) 保存和恢复context代码由编译器自动插入
b) 中断返回也由编译器自动插入
4. 一些常见问题:
A. 【Q】当中断产生时,CPU是如何到相应中断处理函数的?
【A】根据CPU结构不同采用不同的方法。
Intel 8051的中断处理程序放在内存空间的固定位置上,根据中断号可以计算出中断处理程序的偏移地址;
其他的一些CPU采用中断向量表(interrupt vector)的方式,表格放在内存空间某处。
B. 【Q】CPU又是如何知道中断向量表的位置呢?
【A】这个也和具体CPU结构有关系
有的CPU将中断向量表放在固定的位置,例如Intel80186将其放在0x00000处;
有的CPU提供某种方式让程序指出中断向量表存放在内存何处。
C. 【Q】CPU会在执行一条机器指令中被中断吗?
【A】一般不会。但有的指令能够将很多数据从一个位置移动到另一个位置,这种指令会被中断。
D. 【Q】一个中断请求信号能够打断一个正在执行的中断处理程序的执行吗?
【A】在大多数CPU上是可以的。这种能力称为中断嵌套(interrupt nesting)。
Intel x86 CPU如果要想获得中断嵌套的能力,中断处理程序需要手工使能中断;
其他一些CPU在进入中断时不会自动禁止所有中断,自动具备中断嵌套能力。
E. 【Q】在中断被禁止状态下,来了中断信号会怎样?
【A】多数情况下,CPU会记住产生的中断信号。当中断使能后,便会跳到相应的中断处理函数中。
F. 【Q】如果禁止中断后忘记使能中断会有什么样的后果?
【A】系统不会再对中断进行相应了。所以要小心。
5. 什么是中断禁止?:大多数I/O芯片都能进行设置为不再产生中断信号;大多数CPU都可以编程忽略中断信号
6. 为什么需要中断禁止?:
a) 当任务代码和中断程序共享变量时……
b) 任务代码正试图使用几条语句写一个变量

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。