灵动微电子 · 2023年04月07日

灵动微课堂 |mm32-2nd-bootloader技术白皮书(6)——总结及注意事项

 总结

为了扩展微控制器可用的 Flash 空间,用户可以使用 QSPI 接口连接 QSPI Flash;为了让用户能尽量像使用片内 Flash 那样下载和运行程序,减少额外操作,需要有对应的下载算法与相应的 2nd Bootloader。

本文以 PLUS-F5270 开发板为例(该开发板搭载的 MM32F5277E9PV 微控制器具备 QSPI 接口,且板载 W25Q64JVISQ QSPI Flash 芯片),介绍了 MM32F5 系列芯片的 QSPI 引脚,以及与 QSPI Flash 通信的过程,在 MDK 平台上实现客制化的下载算法,简单的 2nd Bootloader,并以 MindSDK 的 hello\_world 样例工程为例,进行少量的修改,使其能够存储在 QSPI Flash 上,最终验证了微控制器能够运行存储在QSPI Flash 上的应用程序。

 注意事项

外置 QSPI Flash选型

在进行 QSPI Flash 的选型过程中,尤其要关注其工作电压的范围,部分 QSPI Flash 的额定工作电压为 1.8V ,若在3.3V 电压下,是无法正常工作的,反之亦然。

除了电压范围外,部分 QSPI Flash 芯片在默认情况下,处于非四线模式,原本 QSPI 的 D2 & D3 引脚会被用于写保护使能和 HOLD 使能,使能四线模式的方法,需参照使用的 QSPI Flash 芯片手册进行操作。

QSPI Flash 与微控制器连接时,为了满足阻抗匹配的要求,其信号线上需要串联22Ω或33Ω的电阻,否则,在与 QSPI Flash 通信时,会发现读到的数据与期望的数据可能不一致。

生成 FlashLoader 时出现显示路径不同的warning

在配置 FlashLoader 的 MDK 工程文件时,在 Options for Target ->  C/C++(AC6)  -> warnings 选项下,若选择 All warnings 选项,在build时会出现 warning:

  FlashDev.c(25): warning: non-portable path to file '"..\FlashOS.h"'; specified path differs in case from file name on disk [-Wnonportable-include-path]  #include "..\FlashOS.H"        // FlashOS Structures           ^~~~~~~~~~~~~~           "..\FlashOS.h"

将该配置选项修改为 AC5-like Warnings 后,样例build无问题。

  Program Size: Code=4088 RO-data=4256 RW-data=4 ZI-data=0    After Build - User command #1: cmd.exe /C copy "Objects\MM32F5270_QSPI_FlashLoader.axf" "..\MM32F5270_QSPI_FlashLoader.FLM"  已复制         1 个文件。  ".\Objects\MM32F5270_QSPI_FlashLoader.axf" - 0 Error(s), 0 Warning(s).

生成下载算法时出现 L6305 warning

查看整个下载算法工程文件,会发现当前工程中没有启动文件与主函数,默认只有几个功能函数,在这种情况下,编译会爆出下面的警告:

  L6305W: Image does not have an entry point. (Not specified or not set due to multiple choices.)

但下载算法本身是不需要启动文件和主函数的,只在下载代码时由调试器调用下载算法中的功能,因此,需忽略该 warning。选择 Options for Target ->  Linker\` -> Misc controls选项,修改该选项内容为 --diag\_suppress L6305 。

修改源文件后下载该文件出现无法加载闪存编程算法的问题

对比所生成的下载算法大小与工程文件的\`Options for Target -> Debug -> settings -> Flash Download -> RAM for Algorithm -> Size 选项下配置的算法大小,发现当前下载算法大于 Size 所配置的大小,因此,需适当调大 Size 的大小,例如由0x1000增加到0x2000。

在实现下载算法时,为了保证下载算法足够小,其代码量不要过多,需删除未使用的函数。

应用程序不能出现影响 QSPI 使用的代码

需要检查应用程序的代码,对可能影响到 QSPI 的代码进行调整,例如 GPIO 的配置,GPIO 时钟的复位,以及直接对 QSPI 的操作。

作者:灵动MM32
文章来源:灵动MM32MCU

推荐阅读

更多MM32F5系列资料请关注灵动MM32 MCU专栏。如想进行MM32相关芯片技术交流,请添加极术小姐姐微信(id:aijishu20)加入微信群。
推荐阅读
关注数
6143
内容数
276
灵动MM32 MCU相关技术知识,欢迎关注~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息