
汽車電子嵌入式(公眾號/CSDN)開始更新全新的AUTOSAR項目實戰(zhàn)專欄內(nèi)容,從0到1搭建一個AUTOSAR工程,內(nèi)容會覆蓋AUTOSAR通信協(xié)議棧、存儲協(xié)議棧、診斷協(xié)議棧、MCAL、系統(tǒng)服務、標定、Bootloader、復雜驅(qū)動、功能安全等所有常見功能和模塊,全網(wǎng)同步更新開發(fā)設計文檔(后期也會更新視頻內(nèi)容)。本文為功能安全系列之Retention Ram的具體實現(xiàn),需要達到的目的為:
1)變量成功定義到預期的RetentionRam的Ram段(Section)。
2)存放在Retention Ram的變量在軟件復位后(Mcu_PerformReset)還保持軟件復位前的值。
3)存放在Retention Ram的變量在芯片進入到Standby狀態(tài)被喚醒后還保持軟件復位前的值。
在《如何監(jiān)控TC3xx芯片PFlash的ECC錯誤》《TC3xx芯片RAM的錯誤檢測》等多篇功能安全相關的文章中我們都提到了Retention Ram,因為MCU監(jiān)控到異常事件后需要立馬復位,來不及將異常時的上下文信息保存到NvM,所以只能將異常時的上下文信息保存到Retention Ram中,這樣MCU執(zhí)行復位后可以再次讀取到異常信息方便開發(fā)分析定位問題。
由以上內(nèi)容我們知道了什么是Retention Ram, 滿足以下要求的RAM我們稱之為Retention RAM:
RetentionRam中存放的變量在MCU軟件復位或者進入到Standby狀態(tài)被喚醒后依然保持復位或者Standby前的值,有這樣特性的RAM我們稱之為Retention RAM.
那么該怎么具體實現(xiàn)Retention RAM了,這就是本文要介紹的內(nèi)容。
AUTOSAR BSW Tool:Vector
AUTOSAR MCAL Tool:EB
Hardware Platform: Infineon Tricore TC387
Build Tool: Tasking
Debug Tool: UDE
通過配置,進入到Standby Mode后依然能夠保持供電也就能保存數(shù)據(jù)的的RAM。
Standby RAM具體是那些RAM?
DLMU0的0x9000 0000 – 0x900 7FFF這前(lower half)32Kbyte是DLMU0的Standby RAM.
DLMU0的0x9001 8000 – 0x9001 FFFF這后(upper half)32Kbyte是DLMU1的Standby RAM.
其他都不是Standby RAM.

配置PMSWCR0寄存器的STBYRAMSEL位域Enable/Disable Standby RAM. 配置完后可以通過PMSWSTAT2寄存器的STBYRAM位域來檢測Standby RAM是否配置成功。