Dear NXP community
I want to read the SRAM of KW41Z before the initialization of NXP flow. Is there any way to read the device SRAM with c code or with assembly? Is there a location where I can insert code in order to be executed before the initialation of NXP flow? I am using the freertos examples given from NXP.
Thanks in advance
Not sure what you mean with 'NXP flow'?
In any case: check your startup code (right after reset).
When you come out of reset, nothing has been initialized, so you could read the memory at that point.
You can inspect this with the debugger too, see https://mcuoneclipse.com/2019/02/17/debugging-the-startup-code-with-eclipse-and-gdb/
I hope this helps,
I expect you will find there is not enough entropy with that method.
Also you need to do such testing a LOT of different devices, and a future mask revision could change it all.
Not sure what you mean with 'PUF'.
>By NXP flow I mean the whole project which runs when I start the device.
Yes, this runs out of the reset vector, so you can do whatever you want in the startup code. Just add there your code.
I hope this helps,
'PUF': ? Unclonable Function.
I believe they mean they want to read the RAM before the startup code clears it, in the belief that would be a good random seed for some encryption process. I would not go that route myself.
I'm going by my knowledge of how SRAM tends to work.
I can also tell you using a real time clock is not a good encryption seed. Again it does not nave enough entropy.
The KW41Z does have a True Random Number generator that is intended for such applications.
I really would like to see some data from NXP on how it works and what tests its has passed.
What some places do is take a mediocre noise source and run it through a hash algorithm to make it appear better than it truly is. Any true random process will also make a really good thermometer.
Take a look at the Random Number section: