5 基于硬件构件的嵌入式底层软件构件的编程方法 嵌入式系统是软件与硬件的综合体,硬件设计和软件设计相辅相成
嵌入式系统中的驱动程序是直接工作在各种硬件设备上的软件,是硬件和高层软件之间的桥梁
正是通过驱动程序,各种硬件设备才能正常运行,达到既定的工作效果
1 嵌入式硬件构件和软件构件的层次模型 嵌入式软件构件(Embedded Softw are Component, ESC)是实现一定嵌入式系统功能的一组封装的、规范的、可重用的、具有嵌入特性的软件单元,是组织嵌入式系统的功能单位
嵌入式软件构件分为高层软件构件和底层软件构件(以下简称高层构件和底层构件)
高层构件与硬件无关
而底层构件与硬件密不可分,是硬件驱动程序的封装
前面提到,在硬件构件中,核心构件为MCU 的最小系统
通常,MCU 内部包含有GPIO(即通用IO)口和一些内置功能模块,可将通用I/O 口的驱动程序封装为GPIO 构件,各内置功能模块的驱动程序封装为功能构件,如芯片内含模块的功能构件有串行通信构件、Flash 构件、定时器构件等
在硬件构件层中,相对于核心构件而言,中间构件和终端构件是核心构件的“外设”
由这些“外设”的驱动程序封装而成的软件构件称为底层外设构件
注意,并不是所有的中间构件和终端构件都可以作为编程对象
例如:键盘、LED、LCD 等硬件构件与编程有关,而电平转换硬件构件就与编程无关,因而不存在相应的底层驱动程序,当然也就没有相应的软件构件
嵌入式硬件构件与软件构件的层次模型如图 4-5 所示
图 1-6 嵌入式硬件构件与软件构件的层次模型 由图 1-6 可看出,底层外设构件可以调用底层内部构件,如LCD 构件可以调用GPIO构件、PCF8563 构件(时钟构件)可以调用I2C 构件等
而高层构件可以调用底层外设构件和底层内部构件中的功能构件,而不能直接调