你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

通过 KEIL 制作 QSPI 接口的外部 Flash 下载算法

[复制链接]
STMCU小助手 发布时间:2023-2-19 18:00
1. 引言
, v1 {# w5 y+ z" i* c

4 k5 d* K- O* Q' z随着用户的应用越来越复杂以及 GUI 等需要大存储空间的需求越来越多,很多时候我们需要将代码或数据放在外扩的 Flash 存储空间。但是这样存在一个外部 Flash 烧写的问题,尤其是在应用调试时,需要将代码或数据烧录到外部 Flash。如果调试工具不能够一键烧录,势必会给调试带来诸多的麻烦。本文以 STM32H750 芯片为例,介绍通过 KEIL制作 QSPI 接口的外部 Flash 下载算法的方法。& l) |% t, O+ C" a0 [
: M6 t3 B7 ~% z1 R) N
! U, n5 g- X( h4 P% R5 o, q
2. MDK 下载算法基础知识
3 ^/ J# B- J& zFLASH 编程算法是一种用于擦除应用程序或将应用程序下载到 Flash 的程序代码。MDK 本身支持的各种器件都自带下载算法,存放在 MDK 各种器件的软件包里面,以STM32H7 为例,算法存在于 Keil\STM32H7xx_DFP\2.6.0\CMSIS\Flash(软件包版本不同,数字 2.6.0 会不同)。但是,只有 STM32 官方部分开发板提供了算法工程,大多数用户开发板都需要自己编写下载算法。不同的 QSPI-FLASH 的驱动略有差别,因此下载算法也不同。所以,掌握通用的下载算法制作步骤很重要。7 U1 f- O* X+ B
MDK 通过创建一批与地址信息无关的函数,实现的功能主要有初始化,擦除,编程,读取,校验等,然后在 MDK 调试下载阶段,会将算法文件加载到芯片的内部 RAM 里面(加载地址可以通过 MDK 设置),然后 MDK 通过与这个算法文件的交互,实现程序下载,调试阶段数据读取等操作。8 K4 v# i) J/ X6 p$ X/ D
1 h9 [9 \# O* c% b

9 S6 i5 e: _* t8 Y$ q! `* A3. 程序擦除操作执行流程
2 M! P$ l  Z8 e. r& V8 F如图 1所示,可以看出 Flash 的擦除过程包括以下几个步骤:
( H, O! z. U9 {) a" b' I$ r0 s+ G/ pa) 加载算法到 RAM(一般指片内 SRAM)- z; f! P, O& K' `
b) 执行初始化函数 Init
4 S! f. l/ G" e; Cc) 执行擦除操作,根据用户的 MDK 配置,这里可以选择整个芯片擦除或者扇区擦除。
$ M8 t2 D4 |( x8 c; Cd) 擦除操作结束后执行 Uninit 函数) X1 j( u) j+ Y6 E

) \$ N7 m# m+ ?0 E& }, A0 q

8 s8 L5 E" c. o( E4 _ XCJEENEDBQY6B8TF)IX}F00.png ' j7 z8 z" U9 |6 M) Z. u
# [" Z3 h1 L: u- t% C; p9 {9 U
. d8 r8 u1 v' `# [
4. 程序烧录操作执行流程
& r, ]5 g8 I& a# m如图 2所示,程序烧录执行流程包括以下步骤:
! P/ b7 d1 s  ba)对所有的 AXF 文件做 init 初始化(AXF 是 MDK 生成的可执行文件,也就是需要烧录和调试的代码)
. J" k! ~; b4 Vb)查看烧写算法 FLM 文件是否存在,如果不存在,则操作结束;如果存在,则继续
+ d- Z  U+ k2 Nc)加载算法文件到 RAM 中
5 X: d1 Y0 m3 @3 A2 g4 td)执行初始化函数 Init' ^) }9 x+ v" d3 P* m  A
e)加载用户程序代码至 RAM 中) b# i! k5 ?( D
f)执行写入编程函数 Program Page7 p$ k4 ^. [+ O
g)执行 Uninit 函数
7 {( i; z" `+ c' W% U/ f, ph)操作结束
0 m7 O. @- M8 m/ U, p, M
$ g3 d" U% |8 q
7 t4 T2 b3 }/ B, y- D8 H' r
SSJ2A0W(RPPS$R}$PN]K6$K.png
  k+ K% q8 i1 {, x% O
. N# f0 H1 f5 S$ M
2 `- }9 Q3 A; L, u" g0 B6 R. A
从以上操作过程中可以看出,我们的用户代码是先放在 RAM 中缓存的,然后 IDE 通过调用 RAM 中的 FLASH 写入函数 Program Page 将代码写入到 Flash 中,完成代码的烧录
! x, q. B) u# }5 {( m1 |
& ~+ `# p9 E8 w" N) G) s6 r4 |
4 q2 s& I5 z" S( U8 N& e
完整版请查看:附件 通过KEIL制作QSPI接口的外部Flash下载算法.pdf (1.75 MB, 下载次数: 157)
赞 收藏 评论0 发布时间:2023-2-19 18:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版