嵌入式系统安全笔记_ARM

PIC

中断:

  • 中断分组管理(快速中断屏蔽)与控制

  • 统一中断入口:根据中断标志位判断中断的类型。因为中断标志位始终会产生,所以开放中断前需要清除中断标志位。

  • 边沿触发:外部中断可以边沿选择。数字信号低电平的驱动能力比较强,下降沿(更陡峭),下降时间比较短,故从可靠性的角度下降沿触发最佳。

  • 电平变化中断:端口处有异或比较器,当变化时产生中断,从而识别边沿。

低压差稳压器(LDO):

为了支持PIC芯片的普适性,内部使用type B(降低功耗),端口使用type A(提高可靠性)。

芯片配置字:

芯片的某些引脚或硬件需要在芯片工作之前就进行配置,硬件实现。配置字中有关于复位、振荡器的规划。

PIC端口结构:

与80C51相比,引进了钳位二极管、模数选择、方向选择、上拉电阻选择.

PIC振荡器:

PIC存在内部振荡器,可以通过外部校准内部。可以控制振荡器。在响应速度、功耗和抗干扰能力三者中达到平衡。

PIC与80C51总体比较:

普适性提高,但配置比较复杂,易用性降低。

几个关键概念:

电源电压:三类(A=5V, B=3.3V, C=1.8V)。

通用端口电平要求:H≥70%Vcc L≤30%Vcc。

复位电平要求:H≥80%Vcc L≤12%Vcc。

信号上升时间:10%Vcc上升到90%VCC所需要的时间。

信号下降时间:90%Vcc下降到10%VCC所需要的时间。

信号上升时间一般比信号下降时间长。好的信号要求信号上升时间与下降时间≤信号周期*4%。可以通过降低频率(周期变长)来实现。

功耗控制:P=K*F,分部件控制时钟(降低功耗且躲避干扰)。

看门狗与可靠性:硬件看门狗发现软件的问题,产生复位。错误不可避免。每种复位不同,因此便于软件处理,恢复到之前状态。

推挽输出与OC(OD)输出:频率高,更有利于提高速度。内部推挽输出OC,板外输出一般为OD。

ARM架构

1. ARM 体系结构

ARM系列微处理器扩展命名扩展符号:

T 16位Thumb指令集:硬件扩展为ARM指令集,因此为压缩指令集,不占用芯片运行的时间。

版本:ARMv4T、 ARMv5T和ARMv6T。

代码尺寸:Thumb指令编译其长度只占ARM指令的65%左右。带来功耗上的优势。但时间上会差一些,增加了指令解压以及需要比ARM更多的指令执行。在异常中断的低级处理时,还是需要使用ARM指令。如果主导因素是空间则选择Thumb性能则ARM与Thumb指令集2者的平衡。

D 片上调试 debug:响应调试强求暂停

M 支持增强型乘法器32位32位得到64位。ARMV4版本以后,M变种已为标准配置。增加2条AKM指令:长乘法操作和长乘加操作。有时有乘法没除法。

I 嵌入式ICE部件:提供断点调试点

E 增强DSP指令:(1)增加16位乘法和乘加。(2)实现饱和的带符号数的加减法操作的指令。溢出时,使用最大或最小值。因此代码不需要判断溢出。

J Java加速器Jazelle:提高Java代码的运行速度,最高可达到8倍,功耗降低80%

S 可综合:提供VHDL或Verilog HDL硬件描述语言设计文件。

ARM架构的版本:

更新:(1)不断创新提升性能(2)向下兼容保护软件投入

  • ARMv4T架构:每条指令1.5个时钟周期。
  • ARMv6架构:Thumb-2指令集。
  • ARMv7架构:A系列(支持大型嵌入式操作系统)、R系列(实时性)和M系列(单片机/MCU,追求低成本低功耗)。
  • ARM Cortex系列,全部采用ARMv7架构。

三种总线:

ARM的总线体系结构是AMBA。存在对总线的控制。

  • AHB:连接高性能系统模块。支持突发数据传输(例如DMA)。支持单个数据传输。支持分离式总线事务处理。

  • ASB:连接高性能系统模块。支持突发数据传输。

  • APB:简单接口。支持低性能外围接口。

ARM工作模式:

用户模式(usr)、快速中断模式(fiq)、外部中断模式(irq)、管理模式(svc)、指令/数据访问终止模式(abt)、系统模式(sys)和未定义指令终止模式(und)。

工作模式可通过软件控制改变,也可通过外部中断或异常处理改变。

程序代码角度:ARM状态和Thumb状态。

ARM处理器核在上电或复位并开始执行程序代码时,处于ARM状态。利用指令CODE 16/32进行切换。

内部寄存器:

37个32位寄存器,分为通用寄存器(31)和状态寄存器(6)。

未分组寄存器(R0R7)和分组寄存器(R8R14)。程序计数器PC(R15)。程序状态寄存器CPSR(R16)。(中断禁止位、T标志位(Thumb)和工作模式位)

其中,Thumb只用到了R0~R7、R13和R14。

异常:

复位、未定义指令异常、软件中断异常、指令预取中止、数据中止、IRQ和FIQ(中断)。异常向量是异常服务程序的入口。

存储器:

支持大端存储和小端存储。ARM默认为小端存储格式。可以通过硬件输入引脚或配置字来配置。对存储单元的访问需要适当地对齐。使用存储器映射方式实现I/O端口地访问(因此没有in/out指令,统一指令实现)。

2. ARM 存储器

存储器分类:

  • 主存储器:内存。只读存储器(ROM)、随机存储器(RAM)。
  • 辅存储器:外设。硬盘。

访问速度:寄存器>cache>SRAM>DRAM>ROM

辅助存储器:Flash技术。CF卡、SD卡。

NAND Flash:为单位读和编程操作和以为单位进行擦除。

K8F1208芯片:4096个Block,每个Block有32个Page,每个Page有528字节,512字节存储+16字节校验位。因此,对NAND Flash操作的地址分为3部分:块地址、页地址和页内地址。

存储系统机制:

存储管理单元(MMU):主要用来完成虚实地址和物理地址之间的转换。访问权限控制。MMU管理方式:段式、页式和段页式

3. ARM 时钟及电源管理

S3C2410时钟结构:

不同总线对应有不同时钟。提供给CPUFCLK、提供给AHB总线设备的HCLK和提供给APB总线设备的PCLK

2个锁相环(PLLs):外部输入低频,利用闭环倍频。低频比较精准,高频不够精准。软件可以控制是否提供锁相环给某个设备,可以关闭锁相环,从而分级控制,降低功耗,规避干扰。1个是提供总线时钟,1个是提供USB时钟

S3C2410电源管理模式:

电源管理模式(模式管理):

  • 空闲模式(停止供给CPU核时钟)
  • 正常模式(可软件控制)
  • 低速模式(无PLL模式)
  • 休眠/掉电模式(外部中断EINT[15:0]或RTC报警,唤醒逻辑独立供电)

内核提供1.8V电压,处理器端口和存储端口提供3.3V电压。休眠模式也有1.8V。内部设备用电的电压一致,实际用电有上电延时,确保不同引脚都上电后,才进行初始化、配置和运行。

PS:主要思想是硬件上尽可能实现灵活性软件工具包实现易用性。将复杂的更高层次的开发发展为软件的开发和移植。

4. ARM 定时技术

定时器是嵌入式系统重要的部件。

定时部件3类:看门狗、RTC部件和Timer部件。

  • 看门狗定时器:当程序“跑飞”时,恢复系统的运行,即监视并恢复程序正常运行。时钟(PCLK)。可能会有专用的内部振荡器。2个功能(定时器功能和复位功能)。组成部分(预分频器、再分频器、WTDAT数据寄存器、WTCNT计数器、WTCON控制寄存器和复位信号发生器)。先赋值,再启动。

  • RTC部件:实时时钟,软件编程支持。有的有独立时钟,有的有独立电源。存在数据失联问题(例如,读时间时,高位年月或日改变,导致数据错误实联),因此数据需要多次读确保数据不失联。报警功能可以提供闹钟功能。时钟精度要求高

  • Timer部件:主要是脉宽调制(PWM)。任何模拟信号都可以使用PWM来实现,数字信号生成模拟信号。具有死区管理的功能。Timer0可以用于控制大功率设备。支持DMA的请求模式。DMA和CPU共同使用时,都需要控制总线,因此DMA的加入一定会影响CPU的总线执行的时序。如果需要精确的软件延时(循环实现),又要使用DMA,则计时会不准确。

5. ARM 中断

对于设备的访问有:程序查询方式(效率比较低)、中断方式和DMA方式。

特点:(1)实时性能好(2)调试较复杂(中断嵌套)

可以处理难以预料的故障。

DMA方式与中断方式相比:

  • 中断方式,MPU需要执行多条指令,占用一定的时间;DMA 传送1字节只占用1个总线周期,占用MPU时间少。
  • DMA的响应速度比中断快。中断需要执行完当前指令并保护现场,而DMA请求在总线周期执行完就可响应。
  • 对于快速的I/O设备,中断无法满足要求,必须采用DMA的方式。

中断向量:

ARM可以由软件配置使用独立中断向量或可变中断向量设计。可进行中断向量的分组。

中断类别:

中断主要分为普通中断(IRQ)和快速(异常)中断(FIQ)。

中断管理:

主要通过模式、屏蔽、优先级和挂起(标志)来实现。快速中断没有优先级的判断。

ARM拥有独立的中断向量和分组的中断向量(根据优先级)。

FIQ快速异常中断的执行优先级更高。

6. ARM DMA

定义:
DMA技术是一种高速的数据传输方式,允许在外部设备和存储器之间、存储器与存储器之间等直接传输数据。

哪些部件可以作为源与目的的?

外部DMA请求:

  • 单服务请求(突发单字节的传输)
  • 单服务握手
  • 全服务握手

DMA的知识点:

  • 优先级

  • 源和目的之间的关系

  • 是否支持高速的传递

  • 是否支持批量的传递

  • 是否支持突发单数据传递

  • 生成数据和数据传输完毕后,能不能产生DMA的中断

  • DMA的使用会影响CPU的时间

0%