嵌入式软件设计层级划分概念

嵌入式软件设计层级划分概念

设计过程中体会的细化更新部分:

层级

描述

备注

应用层

直接控制应用,比如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 ,尽量避免更改,

管脚定义除外