boot採用mcuboot,Github地址:https://github.com/runtimeco/mcuboot
zephyr(version 1.11.0),Github地址:https://github.com/zephyrproject-rtos/zephyr
由於mcuboot和zephyr是兩批人維護,所以避免不了會出現版本不同步更新的問題,更新zephyr-v1.11.0版本後,在同步更新mcuboot時,編譯mcuboot出現報錯(關於加密RSA或者ECDSA均報錯,不能編譯通過),簡單看了下代碼,但是受限於本人對python不瞭解,所以決定暫時先將mcuboot的加密判斷去掉(mcuboot編譯時去掉加密判斷,zephyr鏡像編譯時也去掉加密判斷),具體主要修改的地方如下:
1、mcuboot/samples/zephyr/Makefile 第128行附近將 --key $(SIGNING_KEY) 去掉;
2、mcuboot/boot/bootutil/src/loader.c 第624行附近將 if ((hdr->ih_magic != IMAGE_MAGIC || boot_image_check(hdr, fap) != 0))改爲if ((hdr->ih_magic != IMAGE_MAGIC)),也就是將 || boot_image_check(hdr, fap) != 0條件去掉;
通過修改以上兩個地方就可以編譯出不判斷加密的mcuboot用於引導zephyr鏡像。
2018年3月21日
找到編譯錯誤問題原因了,不是mcuboot代碼有問題,而是缺少依賴,詳細原因請見Github:
https://github.com/runtimeco/mcuboot/issues/253
https://github.com/runtimeco/mcuboot/issues/182
2018年3月21日