autosar mcal之启动代码

我们都知道芯片在运行应用程序指令之前,首先会对芯片做一些

硬件和系统的初始化,如堆栈指针、RAM空间、变量初始化等,这部分代码被称为启动代码。启动代码通常在芯片上电后立即执行,对 于MCAL架构来讲就是要在MCU驱动模块初始化之前完成,启动代 码要求完成芯片特殊的初始化功能,这些工作不属于任何MCAL驱动 模块,下面列出了MCAL规范对启动代码完成功能的建议。

(1)启动代码应完成中断向量表的初始化。

(2)启动代码应完成堆栈的初始化。

(3)如芯片支持Context Save操作,启动代码应完成用于Context Save操作的存储器空间。

(4)启动代码应确保MCU内部看门狗处于关闭状态,内部看门 狗的初始化应由MCAL Watchdog驱动部件完成。

(5)如MCU支持数据/代码缓存,必须在启动代码中完成初始 化。

(6)启动代码应完成MCU内部存储器相关的初始化功能,如内 存保护等。

(7)如使用外部存储器,存储器应在启动代码中初始化。

(8)启动代码应完成MCU默认时钟配置的初始化。

(9)如芯片支持,启动代码应使能特殊功能寄存器的保护机 制。

(10)启动代码应初始化必要的一次只写寄存器(Write Once Register)。

(11)启动代码应初始化RAM空间,以保证正确执行MCU驱 动。以上就是MCAL规范对于启动代码的功能建议,需要注意的是启 动代码依赖于ECU的功能及MCU的性能。接下来,具体看一下本章 使用的S32K144样例工程中启动代码都做了哪些事情。

1.初始化内核通用寄存器

mov    r0,#0
mov    r1,#0
mov    r2,#0
mov    r3,#0
mov    r4,#0
mov    r5,#0
mov    r6,#0
mov    r7,#0

2.初始化中断向量表的基地址

 

3.初始化用户堆栈

 

4.关闭Watchdog

 

5.系统初始化

 

6.RAM初始化

 

7.跳转至Main函数

上一篇:《目录索引》


下一篇:痞子衡嵌入式:知名半导体MCU大厂软件开发C代码规范