本方法受到@zuozhongkai的一篇文章很大啓發,地址如下:
http://www.openedv.com/forum.php?mod=viewthread&tid=233628
根據他的文章編譯出的鏡像是可以下載到外部Hyper Flash並運行(keil已經提供了Hyper Flash的燒寫算法),將keil編譯出的可在HyperFlash文件中運行的 hello_world.bin 保存好,後邊需要用到。
下邊開始介紹如何下載zephyr鏡像到Hyper Flash
Zephyr版本v1.11.0:
https://github.com/zephyrproject-rtos/zephyr/releases/tag/zephyr-v1.11.0
該版本還沒有支持鏡像下載到HyperFlash,文檔說明中關於mimxrt1050_evk開發板的部分有詳細說明;
但是按照Zephyr的開發進度,也許v1.12.0可能會支持該版本,關於下載固件到HyperFlash的討論鏈接如下:
https://github.com/zephyrproject-rtos/zephyr/pull/6951
請按照討論的內容將需要添加的內容同步至v1.11.0版本,編譯samples/hello_world,確保能夠有下圖內容:
其中 CONFIG_FLASH_BASE_ADDRESS 與 下載固件地址和中斷向量表地址有關係;
以上內容實現了之後基本上已經完成了50%。
關於JLink的要求:
1、V9調試器,V8不能支持M7內核;
2、JLink驅動需要V6.32版本及以上,說明鏈接:https://wiki.segger.com/IMXRT105x
下載固件:
1、將boards/arm/mimxrt1050_evk/board.cmake 文件中device=Cortex-M7改爲device=MIMXRT1052xxxxA
2、boards/arm/mimxrt1050_evk/board.cmake 增加兩句話:
set_ifndef(BOARD_DEBUG_RUNNER jlink)
set_ifndef(BOARD_FLASH_RUNNER jlink)
3、make flash
效果如下圖:
至此,固件已經能夠下載到外部HyperFlash,但是還不能運行,因爲沒有正確的鏡像頭。
下面添加鏡像頭:
將鏡像偏移地址改爲0x2000,,此時編譯出來的鏡像前0x2000的內容都是0x00,
將文章開頭讓你保存的hello_world.bin的前0x2000內容替換到zephyr編程出來的zephyr.bin的前0x2000內容中,並保存,
然後在makeflash,串口打印如下圖:
至此,下載zephyr固件到I.MX RT1050 EVK開發板外部HyperFlash已經成功,可能你在測試的時候不是特別順利,但是這條路已經是通的,祝好運!