Tool/software:
Hi Team,
I am working with the AM2434 board and need to implement a secure boot. My device is currently in HS-FS (High-Security Field Securable) mode, and I need to convert it to HS-SE (High-Security Secure Enforced) by flashing the key to the eFuse via the OTP keywriter as mentioned in AM243x LaunchPad Development Kit User's Guide (https://www.ti.com/lit/ug/spruj12f/spruj12f.pdf?ts=1740912264989&ref_url=https%253A%252F%252Fwww.google.com%252F) on page 9.
I would like confirmation on whether my understanding is correct:
If my understanding is correct, could you please provide guidance on:
Any official documentation, example procedures, or recommendations would be highly appreciated.
I find similar process for AM623 on below link.
Thank you for your support.
Hello,
Please go through the OTP Keywriter tool and guide available on the following secure portal:
www.ti.com/.../AM243X-RESTRICTED-SECURITY
Please request access to the portal using the following link:
www.ti.com/.../AM243X-RESTRICTED-SECURITY
Regards,
Prashant
Hi,
Thanks for sharing the link.
I have one more query -
We are developing our customized board using LP-AM243x, using IND - SDK version 9.02.00.15 https://www.ti.com/tool/IND-COMMS-SDK for EtherNET/IP application and for flashing the firmware in UART boot mode have to change this switch (flashing - 1,2,3 -ON, and for running the application 2,6 - ON)
Is there any other way to flash the firmware -
1) firmware upgrade over Ethernet. If yes then how can we do.
2) firmware upgrade over UART but without changing boot mode switch.
Because in our customized board we don't want to populate boot mode switch. It should be fixed in one position for both flashing and application running condition.
Thanks.
Hello,
The SDK does not have the support for flashing over Ethernet.
As for the bootmode switches, I believe you are using OSPI bootmode for booting your application. In that case, you should have a reliable way for switching between the bootmodes for flashing and booting at least in the development phase.
Regards,
Prashant
Hi,
I have downloaded the above mentioned tool and exe.
I am using SDK version - mcu_plus_sdk_am243x_09_01_00_41 and otp key writer version - 9.01.00.
https://www.ti.com/secureresources/AM243X-RESTRICTED-SECURITY
As mentioned in the user guide AM64X_AM243X_OTP_Keywriter_User_Guide_09_01_00.pdf I am following the steps.
During build process I am getting below error -
Boot image: am243x:r5fss0-0:nortos:ti-arm-clang C:/TI/mcu_plus_sdk_am243x_09_01_00_41/source/security/sbl_keywriter/am243x-lp/r5fss0-0_nortos/ti-arm-clang/sbl_keywriter.debug.tiimage ...
makefile:212: recipe for target 'sbl_keywriter.debug.tiimage' failed
gmake: *** [sbl_keywriter.debug.tiimage] Error 1
Could you please help me to resolve this error.
Thanks.
Hello,
Please share the build output of the make command without the "-s" flag.
Thanks!
Hi,
Please find attached file
C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang>gmake -j PROFILE=debug Generating SysConfig files ... C:/ti/sysconfig_1.18.0/nodejs/node C:/ti/sysconfig_1.18.0/dist/cli.js --product C:/TI/mcu_plus_sdk_am243x_09_01_00_41/.metadata/product.json --context r5fss0-0 --part ALX --package ALX --output generated/ ../example.syscfg Running script... Validating... info: CONFIG_UART1(/drivers/uart/uart) baudRate: Actual Baudrate Possible: 115385 (0 % error) info: /kernel/dpl/debug_log uartLog.baudRate: Actual Baudrate Possible: 115385 (0 % error) Generating Code (example.syscfg)... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_dpl_config.c... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_dpl_config.h... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_drivers_config.c... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_drivers_config.h... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_drivers_open_close.c... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_drivers_open_close.h... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_pinmux_config.c... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_power_clock_config.c... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_board_config.c... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_board_config.h... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_board_open_close.c... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_board_open_close.h... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_enet_config.c... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_enet_config.h... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_enet_open_close.c... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_enet_open_close.h... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_enet_soc.c... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_enet_lwipif.c... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_enet_lwipif.h... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\ti_pru_io_config.inc... Writing C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang\generated\linker.cmd... C:/ti/ccs1250/ccs/utils/cygwin/mkdir -p obj/debug/ Compiling: am243x:r5fss0-0:nortos:ti-arm-clang sbl_keywriter.debug.out: ../main.c C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang -c -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 -Wall -Werror -g -Wno-gnu-variable-sized-type-not-at-end -Wno-unused-function -D_DEBUG_=1 -IC:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/include/c -IC:/TI/mcu_plus_sdk_am243x_09_01_00_41/source -Igenerated -DSOC_AM243X -MMD -o obj/debug//main.obj ../main.c Compiling: am243x:r5fss0-0:nortos:ti-arm-clang sbl_keywriter.debug.out: ../keywriter_utils.c C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang -c -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 -Wall -Werror -g -Wno-gnu-variable-sized-type-not-at-end -Wno-unused-function -D_DEBUG_=1 -IC:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/include/c -IC:/TI/mcu_plus_sdk_am243x_09_01_00_41/source -Igenerated -DSOC_AM243X -MMD -o obj/debug//keywriter_utils.obj ../keywriter_utils.c Compiling: am243x:r5fss0-0:nortos:ti-arm-clang sbl_keywriter.debug.out: ../board.c C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang -c -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 -Wall -Werror -g -Wno-gnu-variable-sized-type-not-at-end -Wno-unused-function -D_DEBUG_=1 -IC:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/include/c -IC:/TI/mcu_plus_sdk_am243x_09_01_00_41/source -Igenerated -DSOC_AM243X -MMD -o obj/debug//board.obj ../board.c Compiling: am243x:r5fss0-0:nortos:ti-arm-clang sbl_keywriter.debug.out: generated/ti_drivers_config.c C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang -c -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 -Wall -Werror -g -Wno-gnu-variable-sized-type-not-at-end -Wno-unused-function -D_DEBUG_=1 -IC:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/include/c -IC:/TI/mcu_plus_sdk_am243x_09_01_00_41/source -Igenerated -DSOC_AM243X -MMD -o obj/debug//ti_drivers_config.obj generated/ti_drivers_config.c Compiling: am243x:r5fss0-0:nortos:ti-arm-clang sbl_keywriter.debug.out: generated/ti_drivers_open_close.c C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang -c -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 -Wall -Werror -g -Wno-gnu-variable-sized-type-not-at-end -Wno-unused-function -D_DEBUG_=1 -IC:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/include/c -IC:/TI/mcu_plus_sdk_am243x_09_01_00_41/source -Igenerated -DSOC_AM243X -MMD -o obj/debug//ti_drivers_open_close.obj generated/ti_drivers_open_close.c Compiling: am243x:r5fss0-0:nortos:ti-arm-clang sbl_keywriter.debug.out: generated/ti_board_config.c C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang -c -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 -Wall -Werror -g -Wno-gnu-variable-sized-type-not-at-end -Wno-unused-function -D_DEBUG_=1 -IC:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/include/c -IC:/TI/mcu_plus_sdk_am243x_09_01_00_41/source -Igenerated -DSOC_AM243X -MMD -o obj/debug//ti_board_config.obj generated/ti_board_config.c Compiling: am243x:r5fss0-0:nortos:ti-arm-clang sbl_keywriter.debug.out: generated/ti_board_open_close.c C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang -c -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 -Wall -Werror -g -Wno-gnu-variable-sized-type-not-at-end -Wno-unused-function -D_DEBUG_=1 -IC:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/include/c -IC:/TI/mcu_plus_sdk_am243x_09_01_00_41/source -Igenerated -DSOC_AM243X -MMD -o obj/debug//ti_board_open_close.obj generated/ti_board_open_close.c Compiling: am243x:r5fss0-0:nortos:ti-arm-clang sbl_keywriter.debug.out: generated/ti_dpl_config.c C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang -c -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 -Wall -Werror -g -Wno-gnu-variable-sized-type-not-at-end -Wno-unused-function -D_DEBUG_=1 -IC:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/include/c -IC:/TI/mcu_plus_sdk_am243x_09_01_00_41/source -Igenerated -DSOC_AM243X -MMD -o obj/debug//ti_dpl_config.obj generated/ti_dpl_config.c Compiling: am243x:r5fss0-0:nortos:ti-arm-clang sbl_keywriter.debug.out: generated/ti_pinmux_config.c C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang -c -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 -Wall -Werror -g -Wno-gnu-variable-sized-type-not-at-end -Wno-unused-function -D_DEBUG_=1 -IC:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/include/c -IC:/TI/mcu_plus_sdk_am243x_09_01_00_41/source -Igenerated -DSOC_AM243X -MMD -o obj/debug//ti_pinmux_config.obj generated/ti_pinmux_config.c Compiling: am243x:r5fss0-0:nortos:ti-arm-clang sbl_keywriter.debug.out: generated/ti_power_clock_config.c C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang -c -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 -Wall -Werror -g -Wno-gnu-variable-sized-type-not-at-end -Wno-unused-function -D_DEBUG_=1 -IC:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/include/c -IC:/TI/mcu_plus_sdk_am243x_09_01_00_41/source -Igenerated -DSOC_AM243X -MMD -o obj/debug//ti_power_clock_config.obj generated/ti_power_clock_config.c . Linking: am243x:r5fss0-0:nortos:ti-arm-clang sbl_keywriter.debug.out ... C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang -Wl,--diag_suppress=10063 -Wl,--ram_model -Wl,--reread_libs -Wl,-iC:/TI/mcu_plus_sdk_am243x_09_01_00_41/source/kernel/nortos/lib -Wl,-iC:/TI/mcu_plus_sdk_am243x_09_01_00_41/source/drivers/lib -Wl,-iC:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/lib -Wl,-m=sbl_keywriter.debug.map -o sbl_keywriter.debug.out obj/debug/main.obj obj/debug/keywriter_utils.obj obj/debug/board.obj obj/debug/ti_drivers_config.obj obj/debug/ti_drivers_open_close.obj obj/debug/ti_board_config.obj obj/debug/ti_board_open_close.obj obj/debug/ti_dpl_config.obj obj/debug/ti_pinmux_config.obj obj/debug/ti_power_clock_config.obj -lnortos.am243x.r5f.ti-arm-clang.debug.lib -ldrivers.am243x.r5f.ti-arm-clang.debug.lib -llibc.a generated/linker.cmd Linking: am243x:r5fss0-0:nortos:ti-arm-clang sbl_keywriter.debug.out Done !!! . C:/ti/ccs1250/ccs/utils/tiobj2bin/tiobj2bin sbl_keywriter.debug.out sbl_keywriter.debug.bin C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmofd C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmhex C:/ti/ccs1250/ccs/utils/tiobj2bin/mkhex4bin Boot image: am243x:r5fss0-0:nortos:ti-arm-clang C:/TI/mcu_plus_sdk_am243x_09_01_00_41/source/security/sbl_keywriter/am243x-lp/r5fss0-0_nortos/ti-arm-clang/sbl_keywriter.debug.tiimage ... powershell -executionpolicy unrestricted -command C:/TI/mcu_plus_sdk_am243x_09_01_00_41/tools/boot/signing/x509CertificateGen.ps1 -b C:/TI/mcu_plus_sdk_am243x_09_01_00_41/source/security/sbl_keywriter/am243x-lp/r5fss0-0_nortos/ti-arm-clang/sbl_keywriter.debug.bin -o C:/TI/mcu_plus_sdk_am243x_09_01_00_41/source/security/sbl_keywriter/am243x-lp/r5fss0-0_nortos/ti-arm-clang/sbl_keywriter.debug.tiimage -c R5 -l 0x70000000 -k C:/TI/mcu_plus_sdk_am243x_09_01_00_41/tools/boot/signing/rom_degenerateKey.pem -d DEBUG -j DBG_FULL_ENABLE -m SPLIT_MODE >> temp_stdout_debug.txt makefile:212: recipe for target 'sbl_keywriter.debug.tiimage' failed gmake: *** [sbl_keywriter.debug.tiimage] Error 1 C:\TI\mcu_plus_sdk_am243x_09_01_00_41\source\security\sbl_keywriter\am243x-lp\r5fss0-0_nortos\ti-arm-clang>
Please let me know if you are looking for this file only or anything else.
Thanks.
Hello,
It looks the issue is originating from the powershell script execution. The script execution is possibly blocked on your system.
Is there a reason for using v09_01_00?
We have the OTP Keywriter v10.00.08 as well where this should should not occur. This keywriter version is meant to be used with MCU+ SDK v10_00_00_20.
BR, Prashant