We are having issues when trying to program the SB3KDK fuse in our own board with KW45. We are following the AN13883 and using Jupyter utility. But we have also tried directly from a python venv console.
The thing is that we can comunicate with our device (via UART), and we can interact using SPSDK tools. But when we try to read-fuse or program-fuse the 0x20, we allways obtain a timeout error:
" blhost -p com6 set-property 0x16 1
Response status = 0 (0x0)
Success.
blhost -p com6 fuse-read 0x0A 1
07
Response status = 0 (0x0)
Success.
Response word 1 = 1 (0x1)
Read 1 of 1 bytes.
blhost -p com6 fuse-read 0x22 16
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Response status = 0 (0x0)
Success.
Response word 1 = 16 (0x10)
Read 16 of 16 bytes.
blhost -p com6 get-property 20 1
Response status = 0 (0x0)
Success.
Response word 1 = 188281600 (0xb38f300)
Flash Access Segment Size = 179.6 MiB
blhost -p com6 get-property 21 1
Response status = 0 (0x0)
Success.
Response word 1 = 4294967295 (0xffffffff)
Flash Access Segment Count = -1
blhost -p com6 get-property 22 1
Response status = 0 (0x0)
Success.
Response word 1 = 1 (0x1)
Flash Read Margin = USER
blhost -p com6 fuse-program 0x20 [[1234567891234567891234567891234567891234567891234567891234567891]]
ERROR:spsdk.mboot.mcuboot:RX: No Response, Timeout Error ! (6170ms since start, mcuboot.py:242) McuBootConnectionError: MBoot: Connection issue -> No Response from Device
blhost -p com6 set-property 0x16 0
Response status = 0 (0x0)
Success. "
Why is this happening? Why we can fuse-read other fuses, but not the 0x20? Are we missing any step before? We cannot see the debug log indicated as there is nothing on that route. Also, we have checked the lifecycle is in OEM_OPEN
Sorry I meant the AN13883 and AN13883SW instead of the AN14003
Hi
Reviewing the information on this case, the specifications about fuses map direction in 0x20 are described in Reference Manual
Please refer to KW45RM: KW45RM
This document describes the Lyfecycle and fuses, in Table 55 say the Fuse 0x20 is an encryption key used to protect confidentiality of OEM firmware, It can't be reprogram. Only use the blhost -p COMxx get-property 0x20 0 command to get property.
Best Regards Luis
Hi,
Thank you for your response.
but according to AN14003 and their attached AN14003SW, this step is needed before sending the sb3 file.
it is also said that in the evk, this fuses are already programmed, but when new kw45 on custom bord, this needs to be done.
Also Jupyter notebook 5.3 from the AN14003, show how to do it. We are trying to set the same values as sb3kdk from nxp examples (the ones commented on the 5.3 jupyter notebook, step 3), but allways receiving timeout error.
I don 't really understand the value obtained with the command "%! blhost $UART_CONNECTION get-property 0x20 0" that you comment.
As you can see, even if trying to fuse-program the EVK SB3KDK in our own board we receive a Response Timeout.
Hi
Could you help us confirm if the board is in ISP[In-System Programming] Mode setting before running these commands?
Best Regards
Luis
Yes, otherwise I couldn't send any of the blhost commands. Am I correct?
Doing the same with the EVK we don't have any issues (by sending the same command and SB3KDK that already has). So the jupyter notebook and python environment i consider them correct.
We have made a new test, checking the State of 0x16 property before and after sending the fuse-program 0x20:
The result when applying this to our board is that the property 0x16 is 1 before sending the SB3KDK and 0 after:
While in the EVK, the value remains at 1 before and after sending the SB3KDK:
Does this indicate that the KW45 on our board is resetting? Why could be the reason of that?