Topic

FAQ
Login Register
为tlsr9518adk80d编译并烧录Mcuboot,看不到img的切换
Feb 27, 2024 16:15

/

A

/A

我想让我的代码由引导加载程序(bootloader)启动。

然后:

我编译了MCUboot,并烧录到了地址0x0.

west build -b tlsr9518adk80d -d build_mcuboot bootloader/mcuboot/boot/zephyr

修改的分区表:

编译了app固件,给固件签名

west build -b tlsr9518adk80d -d build-app-signed -- \ -DCONFIG_BOOTLOADER_MCUBOOT=y \ -DCONFIG_MCUBOOT_SIGNATURE_KEY_FILE=\"~/zephyrproject/bootloader/mcuboot/root-rsa-2048.pem\"


west sign -t imgtool -p ~/zephyrproject/bootloader/mcuboot/scripts/imgtool.py -d build-app-signed -- --key ~/zephyrproject/bootloader/mcuboot/root-rsa-2048.pem --pad-header --header-size 128


烧录如下:

地址0的固件为mcuboot固件

地址19000为app的固件

运行后只有mcuboot启动的打印:



请问,我需要怎加哪些配置在prj.conf,或者我在哪一步出现了问题呢?

Damien Feb 28, 2024 10:18
0
/A

Hi zm_tina,


不太确定为何设备运行卡在了 MCUboot 这里,不过建议调高其打印信息的等级,来观察是哪里出现了问题。


在 bootloader/mcuboot/boot/zephyr/prj.conf 中,将 CONFIG_LOG_DEFAULT_LEVEL 提高到3:


另外,编译了app固件时,添加 “-DCONFIG_BOOTLOADER_MCUBOOT=y \ -DCONFIG_MCUBOOT_SIGNATURE_KEY_FILE=\"~/zephyrproject/bootloader/mcuboot/root-rsa-2048.pem\”选项,便已经指示west编译工具,去生成配合 MCUBoot 的应用固件,并采用你指定的 root-rsa-2048.pem 去给生成的应用固件做签名。

将会生成未签名的 zephyr.bin 和签名后的 zephy.signed.bin,后者可以直接用来烧录的,并没有使用“west sign...”再进行签名的必要。

请尝试打开 MCUboot 的打印信息,重新编译和烧录 MCUboot 之后观察是否是 invalid image;再检查是否为因为重复签名的应用固件,导致了验证不通过问题。

4 replies
Damien Feb 28, 2024 10:18
0
/A

Hi zm_tina,


不太确定为何设备运行卡在了 MCUboot 这里,不过建议调高其打印信息的等级,来观察是哪里出现了问题。


在 bootloader/mcuboot/boot/zephyr/prj.conf 中,将 CONFIG_LOG_DEFAULT_LEVEL 提高到3:


另外,编译了app固件时,添加 “-DCONFIG_BOOTLOADER_MCUBOOT=y \ -DCONFIG_MCUBOOT_SIGNATURE_KEY_FILE=\"~/zephyrproject/bootloader/mcuboot/root-rsa-2048.pem\”选项,便已经指示west编译工具,去生成配合 MCUBoot 的应用固件,并采用你指定的 root-rsa-2048.pem 去给生成的应用固件做签名。

将会生成未签名的 zephyr.bin 和签名后的 zephy.signed.bin,后者可以直接用来烧录的,并没有使用“west sign...”再进行签名的必要。

请尝试打开 MCUboot 的打印信息,重新编译和烧录 MCUboot 之后观察是否是 invalid image;再检查是否为因为重复签名的应用固件,导致了验证不通过问题。

zm_tina [Author] Feb 28, 2024 11:16
0
/A

十分感谢,就是因为重复签名的应用固件,导致了验证不通过问题。