NXP

Zephyr应用笔记:iMXRT1050evk下载固件到Hyper Flash

2019-07-12 12:08发布

本方法受到@zuozhongkai的一篇文章很大启发,地址如下:http://www.openedv.com/forum.php?mod=viewthread&tid=233628
根据他的文章编译出的镜像是可以下载到外部Hyper Flash并运行(keil已经提供了Hyper Flash的烧写算法),将keil编译出的可在HyperFlash文件中运行的 hello_world.bin 保存好,后边需要用到。
下边开始介绍如何下载zephyr镜像到Hyper FlashZephyr版本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=MIMXRT1052xxxxA2、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已经成功,可能你在测试的时候不是特别顺利,但是这条路已经是通的,祝好运!