硬汉嵌入式论坛

 找回密码
 立即注册
查看: 15173|回复: 41
收起左侧

[BOOT/IAP] 基于V7开发板使用外部QSPI Flash运行代码的源代码来了!

  [复制链接]

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
发表于 2020-2-21 23:56:40 | 显示全部楼层 |阅读模式
友情提示:这个帖子的实现是坛友做的,安富莱官方版已经发布

STM32H7花式玩转QSPI Flash教程更新完毕,MDK下载算法制作(HAL库版,大家修改非常方便),MDMA方式,内存映射方式,程序执行等全部集齐(2020-11-09)
http://www.armbbs.cn/forum.php?mod=viewthread&tid=101064

QQ截图20201120163407.png




疫情特殊时期,严禁扎堆,直接步入正题。

1. 首先将STM32H743_V7_W25Q256.FLM下载算法文件复制进Keil安装目录下【D:\Keil_v5\ARM\Flash】,根据Keil的安装目录不同而不同,自己根据自己的安装目录复制即可,这样使用Keil才能进行下载与调试。如果需要使用J-Flash软件进行下载,则根据第二步进行操作,否则跳到第三步。
2.1 首先将STM32H743_V7_W25Q256.FLM下载算法文件复制进J-Flash安装目录下【D:\SEGGER\JLinkARM_V654a\Devices\ST】,根据Keil的安装目录不同而不同,自己根据自己的安装目录复制即可,这样使用J-Flash软件进行下载。
2.2 然后找到 JLinkDevices.xml 文件,使用文本编辑器打开,在1476行(根据J-Flash版本不同,可能会有差异,请自行查找)后面追加如下代码后保存即可(非必须在1476行,这样做比较规整,方便后期修改与维护):
<Device>
   <ChipInfo Vendor="ST" Name="STM32H743_V7_W25Q256" Core="JLINK_CORE_CORTEX_M7" WorkRAMAddr="0x24000000" WorkRAMSize="0x80000" />
   <FlashBankInfo Name="QSPI Flash" BaseAddr="0x90000000" MaxSize="0x02000000" Loader="Devices/ST/STM32H743_V7_W25Q256.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" />
</Device>
2.3 打开J-Flash软件,操作步骤同使用内部Flash,只是选择Device的时候选择STM32H743_V7_W25Q256即可。
3. 将BOOT固件下载进以地址0x08000000开始的内部Flash。
4. 将目标APP固件使用Keil或者J-Flash软件下载进以地址0x90000000开始的外部Flash。【注意:APP工程设置需要与下图保持一致】
2.jpg 1.jpg

V7_W25Q256 XIP.rar (10.14 MB, 下载次数: 1431)

大家使用过程中有什么问题,楼下留言即可,看到会尽力解决。

免责声明:
1.本代码未经过严格测试,只作为交流学习之用。
2.对于不当转载或引用本代码内容而引起的民事纷争、行政处理或其他损失,本网站及本人不承担法律责任。


评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 赞一个!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2020-2-22 00:06:48 | 显示全部楼层
非常感谢楼主分享。
太给力了
回复

使用道具 举报

2

主题

569

回帖

575

积分

金牌会员

积分
575
发表于 2020-2-22 02:31:25 | 显示全部楼层
太给力了+1
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
发表于 2020-2-22 11:05:56 | 显示全部楼层
厉害,学习到了~
回复

使用道具 举报

3

主题

1228

回帖

1237

积分

至尊会员

积分
1237
发表于 2020-2-22 16:28:09 | 显示全部楼层
给力,点赞!

这里主要还是STM32H743_V7_W25Q256.FLM这个文件的作用吧, MDK的工程没有什么特别要注意的地方吧?
回复

使用道具 举报

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
 楼主| 发表于 2020-2-23 00:34:26 | 显示全部楼层
morning_enr6U 发表于 2020-2-22 16:28
给力,点赞!

这里主要还是STM32H743_V7_W25Q256.FLM这个文件的作用吧, MDK的工程没有什么特别要 ...

MDK工程需要设置中断向量,然后按照图片设置即可。
回复

使用道具 举报

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
 楼主| 发表于 2020-2-23 00:34:26 | 显示全部楼层
morning_enr6U 发表于 2020-2-22 16:28
给力,点赞!

这里主要还是STM32H743_V7_W25Q256.FLM这个文件的作用吧, MDK的工程没有什么特别要 ...

MDK工程需要设置中断向量,然后按照图片设置即可。
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
发表于 2020-2-23 07:50:38 | 显示全部楼层
按照楼主的步骤来,提示错误:No Algorithm found for: 09000000H - 090018BFH
请问有碰到吗?
回复

使用道具 举报

3

主题

1228

回帖

1237

积分

至尊会员

积分
1237
发表于 2020-2-23 10:12:17 | 显示全部楼层
回复

使用道具 举报

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
 楼主| 发表于 2020-2-23 11:01:35 | 显示全部楼层
guoxiang 发表于 2020-2-23 07:50
按照楼主的步骤来,提示错误:No Algorithm found for: 09000000H - 090018BFH
请问有碰到吗?

KEIL设置务必要与帖子一致
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
发表于 2020-2-23 17:13:39 | 显示全部楼层
sanit 发表于 2020-2-23 11:01
KEIL设置务必要与帖子一致

我的QSPI的IO和FLASH型号跟你有差别
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
发表于 2020-2-23 17:52:24 | 显示全部楼层
sanit 发表于 2020-2-23 11:01
KEIL设置务必要与帖子一致

可以加你QQ或者WX吗,直接请教下
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
发表于 2020-2-23 23:39:44 | 显示全部楼层
基本搞定,主要是晶振的大小不一样,不能直接套进去~
回复

使用道具 举报

0

主题

14

回帖

14

积分

新手上路

积分
14
发表于 2020-2-23 23:53:21 | 显示全部楼层
太厉害了,学习下。
回复

使用道具 举报

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
 楼主| 发表于 2020-2-24 00:16:08 | 显示全部楼层
guoxiang 发表于 2020-2-23 23:39
基本搞定,主要是晶振的大小不一样,不能直接套进去~

嗯,解决就行
回复

使用道具 举报

2

主题

31

回帖

37

积分

新手上路

积分
37
发表于 2020-2-28 12:49:50 | 显示全部楼层
楼主分享的压缩文件我怎么下载不了的,速度非常慢啊,我下载其他的文件很快的,不知道为啥
回复

使用道具 举报

2

主题

31

回帖

37

积分

新手上路

积分
37
发表于 2020-2-28 12:58:18 | 显示全部楼层
今天试了好像你们论坛里所有文件下载都很慢啊,几乎就无法下载啊,我的网络是没啥问题的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2020-2-28 13:27:37 | 显示全部楼层
aming882046 发表于 2020-2-28 12:58
今天试了好像你们论坛里所有文件下载都很慢啊,几乎就无法下载啊,我的网络是没啥问题的

对,最近论坛下载比较慢,获取下载地址后,迅雷慢慢下就行。
回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2020-2-28 13:45:02 | 显示全部楼层
给楼主点赞
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2020-4-29 09:59:03 | 显示全部楼层
本帖最后由 jielunzhou 于 2020-5-9 11:59 编辑

为什么没有删除自己回帖的功能。。。
3EA22D92-30DA-4497-AA36-A8315EA4507C.png
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2020-4-29 10:05:38 | 显示全部楼层
本帖最后由 jielunzhou 于 2020-5-9 11:58 编辑

12345678910
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2020-4-29 10:33:12 | 显示全部楼层
本帖最后由 jielunzhou 于 2020-5-9 11:59 编辑

为什么没有删除自己回帖的功能。。。
3EA22D92-30DA-4497-AA36-A8315EA4507C.png
回复

使用道具 举报

0

主题

17

回帖

17

积分

新手上路

积分
17
发表于 2020-5-18 09:25:31 | 显示全部楼层
我的V7开发板下入附件的程序,怎么APP没有运行起来?
回复

使用道具 举报

5

主题

22

回帖

37

积分

新手上路

积分
37
发表于 2020-6-16 13:40:53 | 显示全部楼层
楼主你的代码在V7板上不能运行,有问题;内存映射数据位会出错;
回复

使用道具 举报

0

主题

15

回帖

15

积分

新手上路

积分
15
发表于 2020-6-17 09:05:50 | 显示全部楼层
shuangbang 发表于 2020-6-16 13:40
楼主你的代码在V7板上不能运行,有问题;内存映射数据位会出错;

如果发现进入内存映射后,存在数据错位,例如:0x90000000 00 01 02 03....,变成了 0x90000000 01 02 03。可以尝试更改进入内存映射代码的 DummyCycles 。
  1. QSPI_CommandTypeDef cmd;
  2.     QSPI_MemoryMappedTypeDef mem;

  3.     cmd.InstructionMode = QSPI_INSTRUCTION_4_LINES;
  4.     cmd.Instruction = W25X_FastRead;

  5.     cmd.AddressMode = QSPI_ADDRESS_4_LINES;
  6.     cmd.AddressSize = QSPI_ADDRESS_24_BITS;

  7.     cmd.DataMode = QSPI_DATA_4_LINES;

  8.     cmd.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;

  9.     cmd.DummyCycles = 8;
  10.     cmd.DdrMode = QSPI_DDR_MODE_DISABLE;
  11.     cmd.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
  12.     cmd.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;

  13.     mem.TimeOutActivation = QSPI_TIMEOUT_COUNTER_DISABLE;
  14.     mem.TimeOutPeriod = 0;
复制代码


回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2020-6-17 09:09:48 | 显示全部楼层
先检查一下内存映射模式配置成功了吗
回复

使用道具 举报

0

主题

15

回帖

15

积分

新手上路

积分
15
发表于 2020-6-17 09:16:55 | 显示全部楼层
shuangbang 发表于 2020-6-16 13:40
楼主你的代码在V7板上不能运行,有问题;内存映射数据位会出错;

如果在进入内存映射后,发现存在数据错位,例如:0x90000000 00 01 02 03... 变成了 0x90000000 01 02 03 04... 可以尝试修改进入内存映射时的 DummyCycles 。



  1.     QSPI_CommandTypeDef cmd;
  2.     QSPI_MemoryMappedTypeDef mem;

  3.     cmd.InstructionMode = QSPI_INSTRUCTION_4_LINES;
  4.     cmd.Instruction = W25X_FastRead;

  5.     cmd.AddressMode = QSPI_ADDRESS_4_LINES;
  6.     cmd.AddressSize = QSPI_ADDRESS_24_BITS;

  7.     cmd.DataMode = QSPI_DATA_4_LINES;

  8.     cmd.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;

  9.     cmd.DummyCycles = 8;
  10.     cmd.DdrMode = QSPI_DDR_MODE_DISABLE;
  11.     cmd.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
  12.     cmd.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;

  13.     mem.TimeOutActivation = QSPI_TIMEOUT_COUNTER_DISABLE;
  14.     mem.TimeOutPeriod = 0;
复制代码


回复

使用道具 举报

610

主题

3062

回帖

4912

积分

至尊会员

积分
4912
发表于 2020-6-17 17:30:40 | 显示全部楼层
这个必须的使用带有 xip 模式的 芯片才能够实现吗 ?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2020-6-17 17:51:56 | 显示全部楼层
hpdell 发表于 2020-6-17 17:30
这个必须的使用带有 xip 模式的 芯片才能够实现吗 ?

是的。
回复

使用道具 举报

610

主题

3062

回帖

4912

积分

至尊会员

积分
4912
发表于 2020-6-17 21:05:39 | 显示全部楼层

受教了啊,我之前以为只要是 qspi 的芯片都可以,原来是自己 愚昧了啊
回复

使用道具 举报

4

主题

16

回帖

28

积分

新手上路

积分
28
发表于 2020-10-18 22:06:15 | 显示全部楼层

有个疑问。为什么这里一定要设置为0x24000000呢?

回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2020-10-19 15:21:49 | 显示全部楼层
我也有相同的疑问.
我刚开始学习使用外部flash,我的理解是把通过下载算法把程序下载到外部flash里,然后通过一个boot loader让程序跳转到外部flash地址,程序执行。
那么其中的RAM for algorithm 0x24000000参与了哪些作用,为什么原来keil是 0x20000000。
回复

使用道具 举报

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2020-10-30 20:02:24 | 显示全部楼层
同问为什么要设置成0x24000000?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2020-10-30 21:10:22 | 显示全部楼层
样时代 发表于 2020-10-18 22:06
有个疑问。为什么这里一定要设置为0x24000000呢?

不限制。H7系列RAM空间很多,那块都行,只要够加载FLM算法即可。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2020-10-30 21:10:27 | 显示全部楼层
huiji 发表于 2020-10-30 20:02
同问为什么要设置成0x24000000?

不限制。H7系列RAM空间很多,那块都行,只要够加载FLM算法即可。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2020-10-30 21:10:35 | 显示全部楼层
cxdistance 发表于 2020-10-19 15:21
我也有相同的疑问.
我刚开始学习使用外部flash,我的理解是把通过下载算法把程序下载到外部flash里,然后 ...

不限制。H7系列RAM空间很多,那块都行,只要够加载FLM算法即可。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2020-11-20 16:03:54 | 显示全部楼层
大佬,求指教。我用正点的板子,stm32h743iit6,卡在跑马灯程序烧录这一步。弹出对话框:“FLASH Timeout. Reset the Target and try it again".
Build output打印如下信息:
Erase Failed!
Error: Flash Download failed  -  "Cortex-M7"
Flash Load finished at 15:57:07
Load "F:\\BaiduNetdiskDownload\\stm32H7XX_boot\\sanit_V7_W25Q256 XIP\\V7_W25Q256 XIP\\V7-001_跑马灯V1.6.0\\Project\\MDK-ARM(uV5)\\Objects\\output.axf"
Erase Failed!
Error: Flash Download failed  -  "Cortex-M7"
Flash Load finished at 16:02:17

请问如何解决?
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2020-11-20 16:04:51 | 显示全部楼层
Erase Failed!
Error: Flash Download failed  -  "Cortex-M7"
Flash Load finished at 15:57:07
Load "F:\\BaiduNetdiskDownload\\stm32H7XX_boot\\sanit_V7_W25Q256 XIP\\V7_W25Q256 XIP\\V7-001_跑马灯V1.6.0\\Project\\MDK-ARM(uV5)\\Objects\\output.axf"
Erase Failed!
Error: Flash Download failed  -  "Cortex-M7"
Flash Load finished at 16:02:17

我用的是正点的h743板子,烧录跑马灯试验的下载文件失败。请问如何解决?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2020-11-21 09:31:38 | 显示全部楼层
hj3622003 发表于 2020-11-20 16:03
大佬,求指教。我用正点的板子,stm32h743iit6,卡在跑马灯程序烧录这一步。弹出对话框:“FLASH Timeout.  ...

这个是坛友做的,楼主位已经补上我们自己的了。
回复

使用道具 举报

610

主题

3062

回帖

4912

积分

至尊会员

积分
4912
发表于 2021-3-12 15:41:07 | 显示全部楼层
你好,这个直接把程序丢到外部 qspi flash 里面运行,这个 qspi 你目前使用的是 4线还是8线 ?? 另外运行速度慢不慢啊 ?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 17:04 , Processed in 0.518566 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表