ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

DriverInitList 为什么要分阶段?MCAL 和 BSW 初始化顺序怎么决定

DriverInitList 为什么要分阶段?MCAL 和 BSW 初始化顺序怎么决定 上一篇已经把 EcuM 从main()到 RUN 的启动过程串起来了。真正落到工程里,还会遇到一个很实际的问题:为什么有些模块在 StartOS() 之前初始化, 有些模块却要等到 StartOS() 之后? 为什么 Mcu、Port、Can、CanIf、PduR、Com 不能随便调整初始化顺序?这背后就是 EcuM 启动过程中很重要的一块:DriverInitList不同 AUTOSAR 版本、不同供应商的工程里,具体名字可能不完全一样,例如:DriverInitZero DriverInitOne DriverInitTwo DriverInitThree但真正需要理解的,并不是 Zero、One、Two 分别固定放哪些模块。核心原则只有一个:初始化顺序不是按模块名字排,也不是简单按照 MCAL、BSW 分层排,而是由模块之间的依赖关系决定。一、为什么初始化不能一次全部做完先看一条最容易理解的 CAN 通信链路:Mcu ↓ Port ↓
返回列表