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.初始化中斷向量表的基地址

/* relocate vector table to RAM */
ldr   r0,=VTOR_REG
ldr   r1,=VTABLE
str   r1,[r0]

3.初始化用戶堆棧

 

4.關閉Watchdog

 

5.系統初始化

 

6.RAM初始化

 

7.跳轉至Main函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM