Zephyr應用筆記:iMXRT1050evk下載固件到Hyper Flash

本方法受到@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已經成功,可能你在測試的時候不是特別順利,但是這條路已經是通的,祝好運!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章