S32K118 noinit RAM

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

S32K118 noinit RAM

2,109件の閲覧回数
YuepengWang
Contributor I

Hello NXP,

I have a question when I am trying to implement bootloader of S32K118, please give me some help.

First of all, I have defined the ".noinit" section in the linker file ,from 0x200057C0 to 0x200057FF.

Then, I have defined two pointer variables(uint32_t) like this:

uint32_t * pProgrammingReqFlag = (uint32_t *)0x200057c0;
uint32_t * pApplicationValidity = (uint32_t *)0x200057c4;

And the values in these addresses will be checked after reset(you will find in "main.png").

The question is: when I downloaded this project into hardware ,it works well, but if I reset the hardware (power off and power on), it do not work any more !

How to access the .noinit section ? or is there anything else need to be modified in the linker file?

0 件の賞賛
返信
4 返答(返信)

2,076件の閲覧回数
YuepengWang
Contributor I

It is resolved by modifying the initializer of ecc-ram.

0 件の賞賛
返信

2,062件の閲覧回数
lukaszadrapa
NXP TechSupport
NXP TechSupport

Hi,

yes, ECC is the key point.

And let me share recommended procedure to retain SRAM content across reset:

SRAM retention.jpg

Regards,

Lukas

 

0 件の賞賛
返信

2,050件の閲覧回数
YuepengWang
Contributor I
Hi Lukas, thank you for your information !
0 件の賞賛
返信

2,107件の閲覧回数
YuepengWang
Contributor I

BTW, if these two variables point to any other address which is not located into the .noinit section, it works well after power on.

uint32_t * pProgrammingReqFlag = (uint32_t *)0x200027c0;
uint32_t * pApplicationValidity = (uint32_t *)0x200027c4;

0 件の賞賛
返信