MCAL是为控制抽象层的缩写。进一步,MCAL可以分成4个驱动组:微控制器驱动组、存储器驱动组、通信驱动组、输入输出驱动组。
之前这部分我也有一定的了解,但是都已经忘得差不多了,关键是没有理解透。其实,软件应该可以通过树状结构来一个层级的划分,后续我自己设计软件的时候确实也可以按照这个做一下分组。
- 关于控制区驱动组
- MCU驱动
- 锁相环
- RAM初始化
- MCU低功耗状态(这个我没用过)
- MCU重启模式(我似乎也没用过)
- 硬件复位源查询(沾了一点边)
- 看门狗驱动
- MCU驱动
这部分多少有点疑问,如果是有外部看门狗的话这个属于这里吗?最起码,外部看门狗不该在MCAL吧?
-
- GPT驱动
- 通用定时器
- 操作系统的定时服务
- 其他的定时服务
- GPT驱动
- 存储驱动组
- FLS驱动,主要是FLASH相关的EE模拟、BootLoader等功能。从这里的描述看,Flash的驱动确实不该写在FLASH中,而是有一个加载引导的功能。
- EEP驱动
- 主要是EEP的读写功能
- 一个小疑惑:FLASH模拟EE应该属于前者还是在这里?外置的EEPROM又是怎样的分类方式?一般的分类是按照功能来分还是按照功能块所处的位置来分?
- 通信驱动组
- SPI驱动
- LIN驱动
- CAN驱动
- FlexRay驱动(FR驱动)
- 以太网驱动(ETH驱动)
一个小疑问:没有串口、IIC之类的通信吗?会明确到这样的程度吗?
- 输入输出驱动组
- PORT驱动
- 主要的功能是进行哥哥端口的配置以及初始化,在这里决定每个引脚最终配置成什么功能。
- DIO驱动
- 首先要完成PORT的功能,才会有DIO。DIO是提供对引脚读写功能的驱动。
- ADC驱动
- 应该也是建立在意PORT的基础上,提供AD采集的功能。
- PORT驱动
- PWM驱动
- 建立在PORT的基础上,提供PWM输出功能
- ICU驱动
- 建立在PORT的基础上,实现信号(PWM、脉冲计数、测量信号周期和占空比 、普通终端和唤醒终端等)。
- OCU驱动
- MCAL中没有专门的规定。