我想让我的代码由引导加载程序(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,或者我在哪一步出现了问题呢?
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;再检查是否为因为重复签名的应用固件,导致了验证不通过问题。
通过如下这条指令编译应用固件会的到zephyr.signed.bin和zephyr.mcuboot.bin
west build -b tlsr9518adk80d -d build_mcuboot bootloader/mcuboot/boot/zephyr
请问下zephyr.mcuboot.bin和我单独编译mcuboot固件得到的bin文件有哪些差异?两个文件我烧录到地址0x0都能启动bootloader
@Damien
十分感谢,问题就是重新签名了应用固件,导致验证不通过的问题。
@Damien
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;再检查是否为因为重复签名的应用固件,导致了验证不通过问题。
通过如下这条指令编译应用固件会的到zephyr.signed.bin和zephyr.mcuboot.bin
west build -b tlsr9518adk80d -d build_mcuboot bootloader/mcuboot/boot/zephyr
请问下zephyr.mcuboot.bin和我单独编译mcuboot固件得到的bin文件有哪些差异?两个文件我烧录到地址0x0都能启动bootloader
@Damien
十分感谢,问题就是重新签名了应用固件,导致验证不通过的问题。
@Damien
十分感谢,就是因为重复签名的应用固件,导致了验证不通过问题。