嵌入式软件设计层级划分概念
设计过程中体会的细化更新部分:
层级 | 描述 | 备注 |
应用层 | 直接控制应用,比如led_light_on(),led_light_off() |
|
器件层(如果操作复杂可进一步划分为器件应用层和器件驱动层) | 比如:实现led_light_on |
|
封装一层led 调用I2C的专用接口,这样不同器件单字节/多字节读写,模式较清晰 |
| |
中间控制层 | 比如设备的唤醒/休眠处理,单独开关某一设备,是硬件性的控制, timer,power,gpio,led,i2c,uart,等等,之所以置于硬件驱动上一层,同时在各设备的小分立应用中,也可能被调用到; | 特殊情况或设备: 很多设备的电源控制,其实是使用IO管脚控制,这类的开关可以归到IO_ctrl层(或者叫做misc_pin_ctrl 层),而power管理这种一部分由SDK给出,处于调用层级最底层,设计层级时无所谓归到哪一层。 |
通用接口层 | 比如I2C的调用,实际将SDK驱动封装一层,便于直观管理 |
|
驱动层 |
| 调用MCU SDK ,尽量避免更改, 管脚定义除外 |
原文部分:
以I2C为例
应用层,控制键盘灯,RTC,按键信号,以实现具体的表现,这些器件都使用I2C接口
器件层,如上描述,drv_key_board_led, drv_rtc, drv_key_board, drv_xxx_sig,等等
通用接口层,bsp_i2c
驱动层,比如芯片cc2640_launchpadXXX, I2C, I2CCC26XX
层级 | 描述 | 备注 |
应用层 | 直接控制应用,比如led_light_on(),led_light_off() |
|
器件层(如果操作复杂可进一步划分为器件应用层和器件驱动层) | 比如:实现led_light_on |
|
封装一层led 调用I2C的专用接口,这样不同器件单字节/多字节读写,模式较清晰 |
| |
通用接口层 | I2C的调用 |
|
驱动层 |
| 调用MCU SDK ,尽量避免更改, 管脚定义除外 |