嵌入式技术基础与实践 第五版¶
心得¶
-
为什么单片机可以控制灯的亮灭,通用 PC 却没办法控制灯呢?(因为没有 CPU 到 LED 的接口也没有驱动程序)
-
中断向量机制和 MIPS 采用的统一入口地址不太一样。中断向量机制硬件产生中断请求时,中断号是确定了的(通过中断控制器发送中断号),软件可以配置对应中断服务程序。而 MIPS 没有中断号的概念,通过软件检查 Stastus 寄存器,来确定是哪一个中断,跳转到对应中断服务程序。
中断向量机制的 CPU 通常需要一个中断控制器,连接在总线上。中断控制器会给 CPU 提供中断号。
-
MCU 本质就是一个微型计算机,包含 CPU,存储器,I/O 接口(控制器模块)。嵌入式开发就是要基于 MCU 搭建一个硬件系统(通过 MCU 的 I/O 接口连接各种需要被控制的外设),并逐层向上编写构件(驱动),最后基于构件编写嵌入式应用,从而完成需要的功能。
-
MCU 由于需要通用性,使得用户可以基于 MCU 去搭建自己的系统,驱动自己的外设,因此每个引脚都复用多个功能。通过配置 MCU 内对应控制器的寄存器来配置引脚的功能。
比如 MSP432 100 个引脚中有 84 个可以配置成 GPIO 引脚。只需要将 MSP432 分配的 GPIO 寄存器中的 PxSEL0, PxSEL1 寄存器(x 表示端口号,有 11 个端口 P1~P10 和 PJ)都置为 0 时,该端口的引脚即为 GPIO 功能。同样可以通过配置 GPIO 寄存器控制引脚方向作为输入还是输出,用于点亮 LED 灯或者接受开关输入。
再比如 MSP432 有 4 个增强型通用串行通信接口模块 (eUSCI),也分配了若干寄存器。通过配置寄存器可以将对应引脚配置为 UART 的引脚或 SPI 的引脚。
但是我们在 FPGA 上搭建 SoC 时,开发板上的灯、拨码开关和 FGPA 芯片的引脚是连好了的(由开发板的提供商基于 FPGA 芯片搭建),也就是说每个引脚作为输入还是输出是已经确定了的。我们能改变的只是——是否使用该外设。当然,不排除保留了一些引脚被接到扩展插口上(那一排排的黑色插孔)。因此在 FPGA 上搭建 SoC 后,实现外设驱动需要对外设的控制器进行配置。而嵌入式开发还多出了配置 MCU 内用于复用的模块寄存器。
第一章:概述¶
-
在 MCU 出现之前,人们必须使用模拟电路、数字电路实现测控系统中的大部分计算与控制功能。
在 MCU 出现后,计算与控制由软件实现,其它电子线路成为 MCU 的外围电路,承担输入、输出与执行动作等功能。
-
常用术语
-
封装 (Package),用塑料、金属或陶瓷材料将集成电路封装在其中。
-
PCB(Printed Circuit Board,印刷电路板)。电路原理图的实物化,实现各元件的布线。
-
常见存储器:RAM, ROM, PROM, EPROM, EEPROM, Flash Memory
-
几种接口发展:UART(异步串行通信接口,通用异步收发器,Universal Asynchronous Receiver Transmitters)->SPI(串行外设接口,Serial Peripheral Interface)->I2C(集成电路互联总线,Inter-Integrated Circuit)->USB(通用串行总线,Universal Serial Bus)
-
边界扫描测试协议 JTAG(Joint Test Action Group,国际联合测试行动组)。对芯片进行测试的一种方式,能够获取芯片寄存器的内容,或测试器件间引脚的连接情况。
-> SWD(Serial wire Debug,串行调试线)。使用更少针脚,是 JTAG 的高性能替代品。
-
RTOS,实时操作系统
-
看门狗,用于检查程序是否跑分。程序跑飞后,由于无法清除掉看门狗的计时器,因此会导致 CPU 复位
-
ISR(中断服务程序,Interrupt Service Routine)
-
第二章:ARM Cortex-M4F 处理器¶
- ARM Cortex 处理器分为 M、R、A 系列。A:代表应用处理器,用于手机。M 代表低功耗。
- ARM v7 是 32 位指令集,ARM v8 是 64 位。Thumb 是 ARM 中一种 16 位指令集,Thumb2 是 16/32 混合指令集
- MSP432 是 TI(德州仪器)生产的基于 Cortex-M4F 处理器的微控制器
- ARM 汇编参考《GUN 汇编语法》
第三章:存储映像、中断源与硬件最小系统¶
- MCU 的引脚包含两类,一类是为 MCU 提供服务的引脚,如电源、复位、晶振等。另一类是 MCU 对外提供服务的引脚,也称为 I/O 端口资源类引脚。
- MCU 内部包含(1)CPU;(2)SRAM、ROM 和 Flash 作为存储器;(3)I/O 接口(控制器),如 UART, I2C, SPI 通信模块,JTAG 和 SWD 的调试接口。
- MCU 已经对地址空间进行了分配。也为每个中断源分配了中断号。
- MCU 的硬件最小系统(基于 MCU 搭建的最小系统)是指可使内部程序运行的、规范的、可复用的核心构件系统。一般包含,电源,晶振,复位,写入调试器接口(如 SWD;将程序写入芯片)
第四章:GPIO 及程序框架¶
- 主要介绍了如何编写 GPIO 的构件 (gpio_init(port, pin, IN/OUT, STATUS)),再在此基础上编写控制小灯的构件 (light_init(port, pin, ON/OFF))。
- 嵌入式项目的标准结构(目录分类),CPU 有关,MCU 有关(寄存器地址映射),用户构建的电路相关 UserBoard(如将 LED 灯连接到 MCU 上),顶层应用。
- 介绍了链接脚本的内容含义。
第五章:嵌入式硬件构件与底层驱动构件基本规范¶
- 硬件构件可以分为核心构件,中间构件,终端构件。核心构件只对外提供服务如 MCU 最小硬件系统,终端构件只对外提出需求如 LED 构件。
- 嵌入式软件构件:
- 面向芯片级的硬件驱动构件。如 GPIO 构件。
- 面向实际应用硬件模块。如 Light 构件。
- 面向算法,如链表、队列、排序算法等。
第六章:串行通信模块及第一个中断程序结构¶
-
串行通信接口简称串口,UART 或 SCI(serial communication interface)。
-
空闲状态是 1,发送一个 0 表示一个字节传输开始,随后是字节数据,最后是 1 位或 2 位的停止位。开始位和停止位影响了串口的传输速率。
-
MCU 输出的是 TTL(晶体管 - 晶体管逻辑电平,Transistor-Transistor Logic),1 和 0 的特征电压值是 2.4V 和 0V。而 RS232 标准采用负逻辑(为了传输的更远),-15V 到 -3V 为 1,+3V 到 +15V 为 0。因此需要电平转换电路。
-
9 芯串行接口
- 接收线信号检测
- RxD 接收数据线
- TxD 发送数据线
- DTR 数据终端准备就绪
- SG 信号地
- DSR 数据通信设备准备就绪
- RTS 请求发送
- CTS 允许发送
- 振铃提示
常常使用精简的 RS232 通信,仅使用 RxD、TxD 和 SG。其它为进行远程传输时接调制解调器用,有的也可以作为硬件握手信号(如 RTS 和 CTS)