以下文章来源于AUTOSAR嵌入式实战 ,作者OneSong1024
专注于AUTOSAR嵌入式软件领域的知识分享与交流,包括AUTOSAR MCAL、BSW、OS、RTE介绍,工具链及源码的深入挖掘分析,代码流程及调试过程演示等
2.多核工程,存在多个中断向量表,楼主用的是芯片为3core
3.LD文件中将中断向量标定中存储的地址标号与实际函数入口地址关联
4.实际代码中入口函数
从map跟hex文件中check入口地址即为中断向量表第二个向量
二、启动相关配置如何实现:
三、调试信息:
注:调启动代码时,需要将调试器运行脚本更改中go main注释掉,否则会跳过启动段吗,直接走到main函数。
启动到Main函数之前的流程如上图,主要是进行一些栈的初始化,ROM的拷贝。
四、启动Main函数之后,进入主程序,启动交由EcuM模块接管
EcuM_Al_DriverInitOne();用户定义的初始化函数,通常包含部分硬件初始化Mcu_Init; Port_Init.工具配置如下:
五、Ecum_StartOS 接管启动,启动多核(非主核,楼主本人的例程启动core1,core2),并启动本核所在的初始化任务
注:startos启动过程中,会多次同步,Os_BarrierSynchronizeInternal
六、OS启动成功后,会调度初始化任务,Default_Init_Task进入
EcuM_StartupTwo,重新被EcuM接管。后续会EcuM及BswM会进行启动,休眠的过程管理。不在本章中描述,后续会有独立章节进行分析。
初始化Hook Thread Context结构体
将自启动任务状态设置为Ready,插入调度表中。
开启调度表进入初始化任务
已完成
数据加载中