打印
[其他]

mm32-2nd-bootloader技术白皮书(6)——总结及注意事项

[复制链接]
409|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MindMotion|  楼主 | 2023-7-10 15:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 MindMotion 于 2023-7-10 16:07 编辑

总结

为了扩展微控制器可用的 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-2nd-bootloader技术白皮书系列更多内容:


使用特权

评论回复
沙发
duo点| | 2023-7-11 15:33 | 只看该作者
相当nice的技术白皮书

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:上海灵动微电子股份有限公司
简介:上海灵动微电子股份有限公司成立于 2011 年,是中国本土通用 32 位 MCU 产品及解决方案供应商。 灵动股份的 MCU 产品以 MM32 为标识,基于 Arm Cortex-M 系列内核,自主研发软硬件和生态系统。目前已量产近 300 多款型号,累计交付超 4 亿颗,在本土通用 32 位 MCU 公司中位居前列。

86

主题

104

帖子

5

粉丝