8. AUTOSAR中MCAL虽然包含各种drvier,但毕竟是AL即抽象层,不应包含architecture和device特定的信息。应该只包含模型定义,不包含实现细节。
AUTOSAR文档中的分层结构如下:
0层:
1层:
从中可以看到,Microcontroller Abstraction Layer即MCAL包含的模块为:
是否有察觉到异常?
Microcontroller Abstraction Layer为抽象层,而各个Driver必然包含很多设备相关的细节。这两个是矛盾的。
Microcontroller Abstraction Layer应该抽象出不同开发商的相同类型device产品的driver的共同点。比如有很多Can Device的开发商,他们的设备都应该符合Can协议,提供相似的操作接口。MCAL应当负责提取出这套接口,建立模型。而非具体的Driver。
如此,层级结构图变成了:
PS. 可以参考Linux kernel的实现中,有asm-generic/asm/mach相关的归类。
asm: Architecture Specific Macros
mach: Machine