Part Number: AM62L
Hi,
I'm trying to write the e-fuses in an AM62L to provision an SMPK and other OTP values, but am getting a generic error back from the TISCI without any details on what is wrong.
Steps I've followed so far:
- Generate the keywriter lite blob using the key configurator from here: https://github.com/TexasInstruments/security-utils/tree/release/key_configurator
- My configuration uses multi-shot mode, and enables the mpkopts, smpkh, keycnt, keyrev, sblswrev, sysfwswrev and brdcfgswrev fields. All other fields are not enabled. I've attached the generated .c and .bin files (zipped: keywrlite.zip )
- Try to write the blob following the instructions from here (with the only change being that we're using our own hardware, so the Vpp pin 1V8 supply is enabled by other means than the I2C GPIO described in the document): https://software-dl.ti.com/processor-sdk-linux/esd/AM62LX/latest/exports/docs/linux/Foundational_Components/U-Boot/UG-Key-Writer-Lite.html
This just results in a non-specific error code, the whole log of the u-boot console is below:
=> mw 0x82000000 0 0x400
=> load mmc 0:1 0x82000000 keywrlite.bin
636 bytes read in 1 ms (621.1 KiB/s)
=> dcache flush
=> md 0x82000000
82000000: 00000001 00009045 02209012 00000100 ....E..... .....
82000010: 00000001 00000000 00000000 00004a7e ............~J..
82000020: a5a5a55a 00000000 00000000 00000000 Z...............
82000030: 00001234 5aa5a55a d87a1a6d 29f073a4 4...Z..Zm.z..s.)
82000040: ff3cf0c5 29b4cc00 25e25355 d49f83b5 ..<....)US.%....
82000050: 9e80bdbe 731a3fc1 3f7374ba 06df222b .....?.s.ts?+"..
82000060: 40f13938 57b19b9f e458e874 6127c1b2 89.@...Wt.X...'a
82000070: 16e82171 751aa386 00000000 00000000 q!.....u........
82000080: 00009ffc a5a5a5a5 00000000 00000000 ................
82000090: 00000000 00000000 00000000 00000000 ................
820000a0: 00000000 00000000 00000000 00000000 ................
820000b0: 00000000 00000000 00000000 00000000 ................
820000c0: 00000000 00000000 00000000 00000000 ................
820000d0: 00005678 a5a5a55a 00000001 00000000 xV..Z...........
820000e0: 00000000 000062c8 a5a5a55a 00000001 .....b..Z.......
820000f0: 00000000 00000000 00008bad a5a5a55a ............Z...
=> fuse writebuff -y 0x82000000
Programming fuses using a structured buffer in memory starting at addr 0x82000000
NOTICE: Writebuff version info: 0x1
ERROR: Failed to get response (-19)
ERROR: Transfer send failed (-19)
ERROR: Keywriter Lite Failed: (-19)
SMC call failed: Error code -1
ERROR
=>
Based on this thread: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1641521/am62l-am62l-secure-boot-keywriter-lite it seems possible to get logs from TISCI over WKUP_UART0, so I followed the same steps (set trace_dst_enables: 0x01 and trace_src_enables: 0x1F in board-cfg.yaml in the u-boot repo), but there is no output on WKUP_UART0 when attempting the key write. Are these config values documented somewhere? What is the baud rate of the UART (I assumed 115200)?
Tracing the error messages back through the TF-A source code, it seems like the TISCI does not ACK the message in the event that anything is wrong.
I'd like to re-iterate the comment in here https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1578568/am62l-am62l-secure-boot-keywriter-lite that I would expect some kind of useful error code from TISCI to help figure out the problem rather than just ignoring the message entirely.
Is there anything else you recommend to debug what the problem is here? Is the keywriter lite blob itself correct?
Thanks
Matt