嵌入式系统硬件抽象层的建立及软件的可移植性设计
从图5可以看出,在基于硬件抽象层的V模式开发过程,软硬件的设计和调试具有无关性,并可完全地并行进行。硬件的错误不会影响到系统软件的调试,同样软件设计的错误也不会影响硬件的调试工作,这样就可大大缩短系统的测试周期和提高系统的可靠性。
(3)硬件抽象层的特点
硬件抽象层接口的定义和代码设计应具有以下特点:
◇ 硬件抽象层具有与硬件密切相关性;
◇ 硬件抽象层具有与操作系统无关性;
◇ 接口定义的功能应包含硬件或系统所需硬件支持的所有功能;
◇ 接口定义简单明了,太多接口函数会增加软件模拟的复杂性;
◇ 具有可测性的接口设计有利于系统的软硬件测试和集成。
3 硬件抽象层的设计示例
硬件抽象层接口的设计一般应包含以下几个步:
◇ 分析接口的数据传输特性(双向/单向数据传输,字节型/数据帧型传输模式);
◇ 分析接口配置属性;
◇ 定义接口所需的相关函数。
下面给出以字符为单位进行数据传输的UART接口硬件抽象层的接口定义内容:
◇ 设备初始化函数
BOOL InitDevice(Device_Register *regs, Device_Attribute *attr)
① 第一个参数为指向设备寄存器结构的指针,用来索引设备的相关寄存器。
② 第二个参数为一个设备属性的结构,用于描述设备初始化设置的属性(波特率、校验位等等)。
③ 函数返回一个布尔类型,用于描述初始化过程的正确性。
◇ 设备字符输入
BOOL ReadDevice(Device_Register *regs, unsigned char *c)
① 第一个参数为指向设备寄存器结构的指针,用来索引设备的相关寄存器。
② 第二个参数为指向字符的地址空间,用于保存设备输入的字符。
③ 函数返回一个布尔类型,用于描述设备字符输入的正确性。
◇ 设备字符输出
BOOL WriteDevice(Device_Register *regs, unsigned char c)
① 第一个参数为指向设备寄存器结构的指针,用来索引设备的相关寄存器。
② 第二个参数为设备所要输出的字符。
③ 函数返回一个布尔类型,用于描述设备字符输出的正确性。
◇ 设备属性设置
BOOL SetDevice(Device_Register *regs, Device_Attribute *attr)
① 第一个参数为指
《嵌入式系统硬件抽象层的建立及软件的可移植性设计(第2页)》