第3章 访问硬件的设计模式
3.1 基本的硬件访问概念
嵌入式系统最明显的特征是必须直接访问硬件,软件可访问的硬件可分为四种:基础设施、通信、传感器和致动器。
基础设施硬件是指运行软件的计算机基础设施和设备,不仅包括CPU和内存,还包括存储设备、定时器、输入/输出设备、端口和中断等。
通信硬件是指在不同的计算机设备之间用于建立连接的硬件。
传感器和致动器是指用来检测和操纵物理单元的设备。
使用位域对硬件发出命令或返回数据是非常常见的。位域是可访问的内存单元中连续的比特块(如字节或字),组合在一起对硬件有一定的语义。例如,一个8位的字节可能分为四个不同的域映射到硬件设备。
0 0 0000 00
这些位表示内存映射硬件设备中的信息如下:
位域是使用C语言中的位运算符操作的,其中包括:&(按位与)、|(按位或)、~(按位非)、^(按位异或)、>>(右移)、<<(左移)。通常在C语言编程中的习惯做法是使用#define为与运算和或运算创建位掩码,并且赋予它们有意义的名字,如下:
#include <stdlib.h>
#include