计算机3级考试嵌入式系统开发技术知识点总结


  嵌入式系统

嵌入式系统上的软件具有结构精简,代码轻量化,占用存储资源少的特点。
   

嵌入式系统和计算机操作系统的共同特征是:引导加载程序、外设驱动程序、操作系统、文件系统、网络协议栈、图形用户界面、数据库。

嵌入式系统应用开发工具的主要目的:提高开发质量,缩短开发周期,降低开发成本。

按照软硬件技术的复杂程度进行分类,可以把嵌入式系统分为:高端系统、终端系统和低端系统三大类。
   

仿真平台指嵌入式系统开发中使用的虚拟机管理软件、仿真软件或者指令集模式器
   

对应内存容量而言1KB = 1024B,对应外存(磁盘、U盘)等容量而言,1KB=1000B
   

OS装载方式:串口、以太网和USB装载。


嵌入式应用程序经过交叉工具链生成映像文件后,需要下载到目标机进行调试。
   

调试完毕后映像文件必须有专用工具烧写到ROM中去,这种烧写工具俗称编程器!

文本根据排版格式可分为:纯文本和丰富文本。windows环境下,txt就是纯文本。相对于线性文本,超文本按着网状结构组织信息。WWW网页是最为常见超文本。

当前速度最快的CPU已经超过10GHz。


嵌套向量中断控制器缩写为NVIC


GCC是GNU套件的编译链接器,能编译C语言,汇编语言。


GDB调试下,file命令是装入需要调试的可执行文件run命令执行当前被调试的程序


源文件到可执行文件的步骤:预处理->编译->汇编->连接

前向通道和后向通道
前向通道 - 输入接口,A/D
后向通道 - 输出接口,D/A


AX88796芯片内部寄存器的地址范围:0x10000000 ~ 0x100003FF

  嵌入式系统硬件的逻辑组成

硬件主体中央处理器和存储器,他们通过IO接口或者IO设备与外部世界联系,并借助总线相互连接
   

中央处理器主要由运算器、控制器、寄存器和高速缓冲区(cache)组成

  嵌入式系统的特点


  • 专用型

  • 隐蔽型

  • 资源受限

  • 高可靠性

  • 软件固化

  • 实时性


  嵌入式系统的CPU特点

 

  • 实时处理

  • 低功耗

  • 结构特拓展性

  • 集成了测试电路

  • 4、8、16、32位字长


  CPU

嵌入式系统的CPU主要使用的有DSP、RAM以及FPGA。


DSP介绍


  • 适用于数字信号处理的微处理器(DSP并非高性能通用处理器,它是一种专用于数字信号处理的微处理器)

  • 支持单指令多数据(SIMD)并行处理的指令

  • 显著提高音频、视频等数字信号的数据处理效率

  • 手机和数码产品均有DSP


  嵌入式开发流程

需求分析和规格说明 -> 系统设计 -> 构件设计 -> 系统集成与测试


测试的目的是验证模块/系统的功能和性能,以及时发现错误


基于嵌入式WEB的应用系统中,构件设计阶段需要设计支持以太网通信的电路,包括以太网控制电路和以太网驱动电路。AX8879芯片内部寄存器的读/写地址,其首地址一般是0x1000 0000


  嵌入式开发特点


  • 宿主机 - 目标机的开发架构

  • 与底层硬件控制程序的关系密切

  • 软硬件资源受限制

  • 需要固化程序


  嵌入式系统开发调试工具


  • 在线仿真器

  • JTAG适配器

  • 示波器


  GPIO


GPIO引脚一般是多功能复用的,具有0态,1态和高阻态。


作为输入接口时一般具有缓冲功能,作为输出接口时一般具有锁存功能。


GPIO可以实现并行IO,SPI、UART、I2C都是串行。

  UART


UART由发生器、接收器、控制单元以及波特率发生器等组成。
   

可实现全双工通信!
   

RAM芯片中的UART收发信息时,可以采用FIFO,也可以采用普通模式
   

一般接收和发送缓冲区的FIFO字节数一样的,长度可编程选择4B、8B、16B、64B。
   

UART传送消息的格式是以起始位开始以停止位结束
   

UART传送信息时,一次可传输的数据位可以是5,6,7,8位,由编程决定
   

基于UART可组成RS-232接口
   

RS232 - 最远15m

RS485 - 最远1.2k

RAM实现485总线的功能,需要采用
S3C2410芯片内部的UART部件外加转换芯片等来实现。在软件设计时,初始化波特率9600bps,数据格式格式为:8位数据位,无数据检验位,1位停止位。那么1s时间内最多传输960个字节。注意计算还得加上起始位和停止位)

  CAN


  • 即: 控制器局域网

  • 能够实现多主通信

  • CAN总线的数据帧由7个不同的域组成,其中域的长度可以是0~8位

  • 采用CRC校验

  • RAM芯片内部嵌入CAN控制器



  键盘

8个GPIO脚最多构成64个按键的键盘

矩阵键盘通常有行扫描法和反转法读取按键的特征值(还有一种方法叫做中断方式)

  嵌入式处理器内核的分类

按照字长可以分为:8/16/32/64 位结构
   

按照存储可以分为:冯诺依曼和哈佛(程序和数据分开存储)结构
   

按照指令集可以分为:CISC、 RISC结构
   

CISC(complex instruction set computer 复杂指令集)
   

RISC(reduced instruction set computer 精简指令集)

  SOC片上系统

SOC已成为嵌入式处理器芯片的主流发展趋势
  

它是集成电路进入深亚微米时代的产物
   

既能把数字电路也能把模拟电路集成到单个芯片上
   

包含数字电路、模拟电路以及射频电路
   

单个芯片即可完成采集、转换、存储、处理和I/O等多种功能
   

SOC有通用SOC芯片和专用SOC芯片之分
   

专用SOC芯片按其工艺分为定制芯片和现场可编程芯片两类

  集成电路

集成电路有小规模(SSI)、中规模(MSI)、大规模(LSI)、超大规模(VLSI)和极大规模(ULSI)组成,嵌入式处理芯片一般属于VLSI和USLI
   

集成电路大多是在硅衬底上制作,硅衬底是单晶硅锭经切割,研磨和抛光而成的圆形薄片。
   

集成电路中的电路及电子元件,需要反复交叉氧化、光刻、掺杂和互连等工序才能制成。

  嵌入式最小系统组成

嵌入式系统一般包括嵌入式
处理器时钟电路电源电路复位电路存储器调试测试接口

  JTAG调试技术

JTAG标准中规定的TAP接口具有
5根信号线

构建一个宿主机 - 目标机的开发环境,若目标机是裸机,那么为了调试和下载软件需要将调试仿真器连接到目标机的
JTAG接口!
   

JATG是一种嵌入式测试技术,大多数嵌入式CPU、DSP、FPGA器件都支持JTAG
   

JTAG允许多个芯片的边界扫描寄存器BSR通过JTAG接口串联在一起,实现对多个器件的测试
  

通过JTAG可以实现在线编程功能

  主频时钟

0.01s基准定时时间选用S3C2410芯片内部的Timer0部件产生。若系统的主频参数PCLK=264MHz,分频器选择16,预分频系数选择为3,那么,Timer0的计数常数为:41250
   

计算方法:定时器输入时钟频率 = PCLK/(预分频系数+1)/(分割器值),计数常数 = 定时间间隔/(1/定时器输入时钟频率)
   

带宽 = 总线频率 × 数据线宽度 / 8 × 次数 / 周期

  板级升级包(BSP)

引导加载程序、初始化程序、设备驱动程序、配置文件


含有电路板的初始化程序
   

所有与特定电路板上硬件相关的功能都集成在板级支持包的库里
   

操作系统的上层代码通过板级支持包访问底层硬件

  ARM

单指令周期流水线技术是RAM处理器的技术特征。
   

RAM都是RISC,但是存储结构有的是哈佛结构,有的是冯诺依曼结构。
   

PowerPC、MC68K、MIPS都是RISC,哈佛结构!
   

Cortex 系列分为A-R-M ,A系列是面向尖端虚拟内存的操作系统和用户应用,R系列是针对实时系统,M系列是对微控制器。 Cortex - M3系列是哈佛结构。
   

RAM内部一般有:UART/I2C/SPI/CAN/USB/Ethernet等多个互连通信组件
  

RAM处理器共37个,包括31个通用寄存器(含PC)和6个状态寄存器


  RAM异常

将CPRS的值保存到将要执行的异常中断对应的SPSR中


设置CPSR的相应位


断点地址保存到R14


PC赋值,转入向量地址

  ADS

按照存储区域类型划分为3类,RO段,RW段,ZI段,RO段是指代码存储区和常数存储区,具有只读属性
   

可执行输出文件有3个生成目标:Debug、Release、DEbugRel
   

工程项目按照一定的逻辑来分组管理文件:
       

文件映射关系较简单时:使用编译、链接选项来确定输入文件的连接关系
       

地址映射关系较复杂时:使用scatter(分散加载)格式的文件来确定输入文件的连接关系

  RVDS

RVDS开发工具套件中,主要包括
工程管理器编译连接器调试器指令集仿真器。调试器支持硬件在线调试和软件仿真调试

  电源管理模块


  • 正常模式

  • 慢速模式

  • 休眠模式 - 仅断开RAM内核时钟FCLK,CPU处于休眠模式,仍为外围硬件组件提供时钟。

  • 掉电模式 - 切断内部电源,除非唤醒逻辑有效,否则内核不产生功耗


正常模式下,电源管理模式为内核及RAM芯片内部所有硬件组成提供时钟源,用户可以通过软件控制暂时不用的内置硬件组件处于关闭状态降低功耗。

  硬件抽象层HAL

向操作系统内核提供了访问硬件底层的函数接口
   

嵌入式软件中直接访问底层硬件的例程集合
   

增加的HAL位于硬件电路板和操作系统内核之间
   

嵌入式电路板的最基本软件
   

HAL函数是移植操作系统的基础
   

HAL**隐藏了不同硬件平台的差异性**,从而改善了操作系统的可移植性!

  AMBA总线

RAM的总线结构成为 AMBA -先进微控制器总线结构(一种开放式总线结构)
   

从1995的AMBA1.0到目前的AMBA4.0共四个版本!
   

RAM7 - AMBA1; RAM11 - AMBA2
   

按照AMBA总线规范,基于RAM内核的嵌入式处理芯片采用系统总线外围总线两层结构的方式构建片上系统
   

连接系统总线的高带宽组件(AHB接口)主要包括:电源管理和时钟控制器,测试接口JTAG),外部存储器控制接口,DMA控制器,USB主机,中断控制器。(可以看出大多数为控制器)
  

RTC是与外围总线(APB接口)连接的硬件组件


  MMU

MMU,内存管理单元,它是用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。


虚拟地址到物理地址的转换通过查找页表来完成,每次在访问内存时先插TLB,查不到再到内存中查整个页表

  ARM7 ≠ ARMv7

RAM7 - 冯诺依曼的结构。 RAM9~RAM11 采用哈佛结构!

ARMv7是一种构架。ARM7是一种处理器型号,ARM7(冯诺依曼结构)是在ARMv4构架上设计出来的处理器。RAM11(ARMv6架构)之后便是以Cortex(ARMv7架构)来命名了!

ARM7没有MMU(内存管理单元),只能叫做MCU(微控制器),不能运行诸如Linux、WinCE(大型嵌入式操作系统)等这些现代的多用户多进程操作系统,因为运行这些系统需要MMU,才能给每个用户进程分配进程自己独立的地址空间。ucOS、ucLinux这些精简实时的RTOS不需要MMU,当然可以在ARM7上运行
   

ARM9、ARM11,是嵌入式CPU(处理器),带有MMU,可以运行诸如Linux等多用户多进程的操作系统,应用场合也不同于ARM7。
   

此外,Cortex-M系列还细分为M0、M3、M4和超低功耗的M0+,用户依据成本、性能、功耗等因素来选择芯片。
   

Cortex-M系列(ARMv7架构)的指令集只有Thumb-2。


  ARM处理器 ≠ ARM处理器核


  • 处理器核:在某种架构的基础上具有取指令和执行指令的组件。

  • 处理器: 以处理器核为中心,加上MMU,中断控制器,浮点运算器,总线接口等就构成了RAM处理器。

  • 当然了,单独的处理器核也可以作为某一代RAM处理器的。


  RAM常考寄存器


  • R13 - SP (堆栈指针)

  • R14 - LR(链接寄存器)

  • R15 - PC(程序计数器)

  • xPSR - (CPSR 和 SPSR)状态寄存器


  SP寄存器

SP有两个,分别为R13(MSP)和R13(PSP)即主堆栈指针(MSP)和进程堆栈指针(PSP),但在同一时刻只能有一个可以看到,这也就是所谓的“banked”寄存器。


这些寄存器都是32位的。

  CPSR寄存器

CPSR(当前程序状态寄存器)在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。


RAM中表示程序状态的寄存器是CPSR,其中状态位T的作用是在RAM状态与Thumb状态间进行切换,当T = 1时处理器处于的状态是Thumb状态。
   

N为符号标志位 - N=1表示运算结果为负,否则运算结果为正
  

F为禁止快读中断为 - F=1表示禁止快速中断控制位,否则允许!
   

V为溢出标志位,等于1表示溢出
   

Z为全0标志,运算结果为0


  SPSR寄存器

每一种处理器模式下(看下面的其中运行模式)都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。


当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢复CPSR


由于用户模式和系统模式不是异常中断模式,所以他没有SPSR。当用户在用户模式或系统模式访问SPSR,将产生不可预知的后果。

  控制寄存器和数据寄存器

控制寄存器是4个字节,比如端口E的控制寄存器
rGPECON = 0x00005555


数据寄存器是2个字节,比如端口E的数据寄存器rGPEDAT=0x0020

关于赋值,也写一个小例子

rGPDCON = ((rGPDCON | 0x00005555) & 0xFFFF5555);//GPD0~GPD7配置为输出模式

先置位,然后再清零。

  ARM微处理器的七种运行模式


  • 用户模式:user (没有SPSR寄存器):正常程序执行的模式

  • 系统模式 – SYS (没有SPSR寄存器): 用于运行特权级的操作系统任务

  • 快速中断模式 – FIQ :用于高速数据传输和通道处理、高速中断!

  • 外部中断模式 – IRQ :用于通常的中断处理

  • 管理模式 – SVC :又称特权模式,操作系统使用的一种保护模式

  • 终止模式 – ABT :用于虚拟存储及存储保护,处理存储器故障

  • 未定义指令模式 – UND :用于支持通过软件方针硬件的协处理器


  经典RAM的七种异常


  • 复位RESET

  • 未定义指令 UND

  • 软件中断 SWI

  • 指令预取终止 PABT

  • 数据访问终止 DABT

  • 外部中断请求 IRQ

  • 快速中断FIQ


  IRQ

IRQ异常对应的异常向量地址为:
0x00000018
IRQ异常向量地址和下一个异常向量地址之间的间隔为
4