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