硬汉嵌入式论坛

 找回密码
 立即注册
楼主: eric2013
收起左侧

[脱机烧录] 【实战技能】任何支持SWD接口的单片机都可以方便移植的SPI Flash烧写算法制作,含视频说明(2022-05-30)

  [复制链接]

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2023-4-12 15:56:06 | 显示全部楼层
eric2013 发表于 2023-4-12 10:29
我建议看我前面分享你的教程,先操作熟练下

嗯,GUIX有移植到GO的模板吗,手头有GO的板子,想试着参照一些例程改动后放到板子上熟悉一下
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2023-4-12 16:01:08 | 显示全部楼层
蜗牛snail 发表于 2023-4-12 15:56
嗯,GUIX有移植到GO的模板吗,手头有GO的板子,想试着参照一些例程改动后放到板子上熟悉一下

参考这个就行,

ThreadX GUIX直驱方案搞定,任何显示屏,低资源的MCU都可以跑了,不再需要画布,附工程下载
https://www.armbbs.cn/forum.php? ... 7202&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2023-4-12 20:43:59 | 显示全部楼层
eric2013 发表于 2023-4-12 16:01
参考这个就行,

ThreadX GUIX直驱方案搞定,任何显示屏,低资源的MCU都可以跑了,不再需要画布,附工 ...

这里驱动和GUIX的接口函数没看懂。我之前做LVGL的时候,驱动跟LVGL是通过个dis_flush来实现的,只要在这个函数里面填写一个画点函数,或者是一个区域涂色函数(方便使用dma的方式)。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2023-4-12 20:55:21 | 显示全部楼层
蜗牛snail 发表于 2023-4-12 20:43
这里驱动和GUIX的接口函数没看懂。我之前做LVGL的时候,驱动跟LVGL是通过个dis_flush来实现的,只要在这 ...

GUIX一样的,也是有个专门的接口文件,这个问题就交流这么多吧,剩下自己研究下
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2023-9-21 09:43:46 | 显示全部楼层
大佬您好,我的测试工程是用标准库的,算法工程需要修改成标准库吗
回复

使用道具 举报

69

主题

173

回帖

380

积分

高级会员

积分
380
发表于 2023-12-9 17:11:46 来自手机 | 显示全部楼层
MDK工程弄的FLM和核相关吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2023-12-10 00:19:39 | 显示全部楼层
嵌入式丨小白 发表于 2023-9-21 09:43
大佬您好,我的测试工程是用标准库的,算法工程需要修改成标准库吗

不好意思,没有留意到你的问题。

直接把我的SPI操作相关代码整理到你的标准库工程就行,我这里仅仅使用GPIO操作,没有使用硬件SPI,所以移植非常方便。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2023-12-10 00:21:56 | 显示全部楼层
lindahnu 发表于 2023-12-9 17:11
MDK工程弄的FLM和核相关吗?

有,这个FLM是基于这个内核芯片的固件。比如M4F内核工程带硬件FPU操作了,M0,M3之类是不带硬件浮点了。
回复

使用道具 举报

69

主题

173

回帖

380

积分

高级会员

积分
380
发表于 2023-12-10 19:44:20 来自手机 | 显示全部楼层
eric2013 发表于 2023-12-10 00:21
有,这个FLM是基于这个内核芯片的固件。比如M4F内核工程带硬件FPU操作了,M0,M3之类是不带硬件浮点了。

能做基于cortex R系列的FLM吗?
回复

使用道具 举报

69

主题

173

回帖

380

积分

高级会员

积分
380
发表于 2023-12-12 12:12:43 | 显示全部楼层
zdh-kun 发表于 2022-9-1 11:40
你好 最近想在这个Segger 的open flash loader  基础上实现通过mcu写入spi flash的功能 https://wiki.seg ...

你好,我点击这个链接没有看到有工程模板project下载,能分享一下吗?
回复

使用道具 举报

2

主题

11

回帖

17

积分

新手上路

积分
17
发表于 2024-3-23 23:39:29 | 显示全部楼层
应用笔记很好,有文档?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2024-3-24 00:12:06 | 显示全部楼层
teddy1980 发表于 2024-3-23 23:39
应用笔记很好,有文档?

这个没做文档版,仅做了一个视频。
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 2024-4-1 17:34:06 | 显示全部楼层
这是啥问题
屏幕截图 2024-04-01 172230.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2024-4-2 07:53:58 | 显示全部楼层

截图内容没贴全,另外你这个问题和楼主位的Flash算法制作,没看出来有什么关联。
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
发表于 2024-5-13 09:21:58 | 显示全部楼层
eric2013 发表于 2022-12-21 15:10
这里的意思是你个地方开的RAM大小不够存储你制作的FLM算法文件。

大佬,G030一共也就8K的RAM,这里最大有只能设置成0x2000,而算法文件即使用LL库编译出来也超过了8K,这个咋整?
Program Size: Code=3808 RO-data=4352 RW-data=8 ZI-data=2048  
3808+4352+8=8168字节了,再加上ZI-data=2048  已经超过8k了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2024-5-13 09:32:37 | 显示全部楼层
motoedy 发表于 2024-5-13 09:21
大佬,G030一共也就8K的RAM,这里最大有只能设置成0x2000,而算法文件即使用LL库编译出来也超过了8K,这个 ...

看下map文件,那个占用比较大,优化下。
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
发表于 2024-5-13 09:47:15 | 显示全部楼层
eric2013 发表于 2024-5-13 09:32
看下map文件,那个占用比较大,优化下。

12121.png 222456.png
map文件,应该是这个数组太大了,默认配置512,
但是这个数值好像不能改,我改成256后编译出来的FLM,keil就识别不出FLM文件了

别的还有什么可以优化的?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2024-5-13 11:27:13 | 显示全部楼层
motoedy 发表于 2024-5-13 09:47
map文件,应该是这个数组太大了,默认配置512,
但是这个数值好像不能改,我改成256后编译出来的FLM, ...

优化下你的ZI data
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-5-24 10:10:05 | 显示全部楼层
motoedy 发表于 2024-5-13 09:47
map文件,应该是这个数组太大了,默认配置512,
但是这个数值好像不能改,我改成256后编译出来的FLM, ...

大佬 请问解决了吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2024-5-24 14:42:35 | 显示全部楼层
DreamLovely 发表于 2024-5-24 10:10
大佬 请问解决了吗?

只能手动优化了
回复

使用道具 举报

1

主题

24

回帖

27

积分

新手上路

积分
27
发表于 2024-6-16 23:10:54 | 显示全部楼层
谢谢硬汉的无私分享,请问在手册中提到的_Template_Flash项目是如何找到的,如何分辨它的价值?

比如这个项目,如果我们不了解,很难理解;而且这种项目连main函数都没有,和其他一般项目完全不同,这个原因是什么?

还是说我们用到什么,就从您的介绍中学习,虽然您比我们的项目层次高很多,但是如果不掌握第一首资料,是否将永远受限?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2024-6-17 08:41:47 | 显示全部楼层
wsr2580 发表于 2024-6-16 23:10
谢谢硬汉的无私分享,请问在手册中提到的_Template_Flash项目是如何找到的,如何分辨它的价值?

比如这 ...

这个咨询的非常好。

这个时候就是官方资料的重要性,自己搞的话,优先搜官方的资料。如果其他人已经找到了对应的官方资料位置,我们直接到到官方下载使用即可,如果没有,就只能自己去花时间搜索查找了。
回复

使用道具 举报

26

主题

139

回帖

217

积分

高级会员

积分
217
发表于 2024-8-27 18:02:20 | 显示全部楼层
这个帖子介绍的方法生成的下载算法是mdk和h7tool通用的吗
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2024-8-28 09:22:37 | 显示全部楼层
ifree 发表于 2024-8-27 18:02
这个帖子介绍的方法生成的下载算法是mdk和h7tool通用的吗

对,通用。
回复

使用道具 举报

1

主题

10

回帖

13

积分

新手上路

积分
13
发表于 2024-9-22 16:39:07 | 显示全部楼层
太棒了 按照教程我也成功了,分享下 我是用AT32F403A+25Q128做的
QQ图片20240922163437.png
微信截图_20240922163523.png
微信截图_20240922163853.png
回复

使用道具 举报

1

主题

24

回帖

27

积分

新手上路

积分
27
发表于 2024-10-2 16:03:20 | 显示全部楼层
硬汉哥,在使用QSPI地址映射模式和这个将数据存放到Flash中,我按照前面说的历程中将一部分数据放到了Flash中,那么我还可以使用地址映射模式直接将数据从Flash中拿到吗?

比如是gb2312.c这个文件中就一个数组存在,我配置这个文件放到0xC0000000中,但是我如果使用地址映射模式读取这个数据时,是不是就需要指定地址0x90000000的指针来读取,而不是直接读取这个数据呢?

是不是没有办法让这两个统一为一个地址呢呢?
回复

使用道具 举报

1

主题

24

回帖

27

积分

新手上路

积分
27
发表于 2024-10-3 08:55:17 | 显示全部楼层
wsr2580 发表于 2024-10-2 16:03
硬汉哥,在使用QSPI地址映射模式和这个将数据存放到Flash中,我按照前面说的历程中将一部分数据放到了Flash ...

经过测试,我按照STM32-V7开发板ThreadX GUIX教程的ThreadX GUIX 汉字显示(QSPI Flash 全字库)章节中提到的,将FLM文件工程中的起始地址从0xC0000000改为了0x900000000重新生成FLM文件给主工程使用,此时QSPI就正常传输了,并且地址映射模式也可以正常传输
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2024-10-3 09:07:13 | 显示全部楼层
wsr2580 发表于 2024-10-3 08:55
经过测试,我按照STM32-V7开发板ThreadX GUIX教程的ThreadX GUIX 汉字显示(QSPI Flash 全字库)章节中提 ...

0xC0000000 地址是我做SPI Flash算法文件时使用的,这个地址随意,因为标准SPI接口方式不支持内存映射,地址是随意指定的。
而0x900000000是我做QSP Flash的算法文件时使用的,这个支持内存映射,映射地址固定的从0x9000 0000开始
回复

使用道具 举报

1

主题

24

回帖

27

积分

新手上路

积分
27
发表于 2024-10-6 08:03:09 | 显示全部楼层
eric2013 发表于 2024-10-3 09:07
0xC0000000 地址是我做SPI Flash算法文件时使用的,这个地址随意,因为标准SPI接口方式不支持内存映射, ...

嗯嗯,我这里也是提醒后来的人,如果直接设置0x90000000可以一步到位,毕竟视频中说这个地址无所谓,是对生成FLM下载到Flash无所谓。但是如果叠加XIP等功能,就还是要注意修改的。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-10-23 15:13:29 | 显示全部楼层
大佬,我根据那篇安富莱v5的407制作了一个stm32f401ccu6的,flash是w25q64,使用keil烧录是成功的 ,使用JFLASH烧录则是
Timeout while programming sector,core does not stop.
program failed
failed to program target
可以成功擦除,就是写入总显示超时,
<Device>
                <ChipInfo Vendor="W25" Name="Flash_W25Q64" WorkRAMAddr="0x20000000" WorkRAMSize="0x40000"Core="JLINK_CORE_CORTEX_M4" />
                <FlashBankInfo Name="SPI Flash" BaseAddr="0xC0000000" MaxSize="0x00800000" Loader="Devices/W25Q64/STM32F401_SPI_W25Q64_10_22.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" />
</Device>
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2024-10-24 01:46:24 | 显示全部楼层
tianduyingcai 发表于 2024-10-23 15:13
大佬,我根据那篇安富莱v5的407制作了一个stm32f401ccu6的,flash是w25q64,使用keil烧录是成功的 ,使用JF ...

KEIL没问题就行,JFlash这个我不太清除,我现在很少用了
回复

使用道具 举报

5

主题

21

回帖

36

积分

新手上路

积分
36
发表于 2024-11-18 14:28:58 | 显示全部楼层
tianduyingcai 发表于 2024-10-23 15:13
大佬,我根据那篇安富莱v5的407制作了一个stm32f401ccu6的,flash是w25q64,使用keil烧录是成功的 ,使用JF ...

后来解决了么 我也遇到了这个问题
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2025-4-27 16:39:38 | 显示全部楼层
hello_word 发表于 2022-11-15 11:45
单独下载程序不添加SPIFLASH算法那部分又是可以下载成功的,只要加上这个算法就不能正常下载进去

哥,我用STM32F103也遇到单独可以校验成功,两个一起就校验失败的情况,你解决了吗?有解决办法吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2025-4-28 01:47:48 | 显示全部楼层
Starry_Tale 发表于 2025-4-27 16:39
哥,我用STM32F103也遇到单独可以校验成功,两个一起就校验失败的情况,你解决了吗?有解决办法吗?

你的SPI Flash算法文件里面,不要使用外部晶振,使用内部HSI做时钟,你试试是不是就好用了。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2025-4-28 13:18:54 | 显示全部楼层
eric2013 发表于 2025-4-28 01:47
你的SPI Flash算法文件里面,不要使用外部晶振,使用内部HSI做时钟,你试试是不是就好用了。

HSI是8M的,SPI Flash算法是用HSI或48M以下的HSE频率都可以校验通过,72M的HSE就会出错。
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2025-6-20 16:04:46 | 显示全部楼层
感谢,感谢!请教个问题,是否可以通过SWD来实现单片机外挂的IIC接口呢?我想在烧录的同时,对外挂的IIC进行烧写数据(数据内容可以自由定义)可以吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2025-6-21 08:35:24 | 显示全部楼层
alexwugaopei 发表于 2025-6-20 16:04
感谢,感谢!请教个问题,是否可以通过SWD来实现单片机外挂的IIC接口呢?我想在烧录的同时,对外挂的IIC进行 ...

可以,参考这个

【实战技能】简单易实现的SWD接口烧录目标板挂载的EEPROM,支持AT24C02/04/08/16/32/64/128(2024-03-06)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=123223
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2025-6-21 10:34:21 | 显示全部楼层
UP,老师请教个问题,为啥我怎么都下载不进数据到外挂FLASH呢?配置引脚都改对的了,提示这个,要怎么解决麻烦帮看一下谢谢?另外一个我没搞明白算法到底是下载到单片机里面还是,还是说至少KEIL IDE里面需要用到?
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2025-6-21 10:42:47 | 显示全部楼层
你好,您说的这个,先不做成算法文件,直接工程测试这个驱动是否正常。我的总是提示这个,也不知道是哪里问题,能否帮看看怎么解决谢谢!
Error: Flash Download failed  -  "Cortex-M3"
Flash Load finished at 09:48:46
Load "Efficient_UART\\Efficient_UART.axf"
No Algorithm found for: 08000000H - 0800024BH
Partial Erase Done (areas with no algorithms skipped!)
No Algorithm found for: 08000000H - 0800024BH
Partial Programming Done (areas with no algorithms skipped!)
Contents mismatch at: 00001000H !
Verify Failed!
Error: Flash Download failed  -  "Cortex-M3"
Flash Load finished at 10:30:22
Load "Efficient_UART\\Efficient_UART.axf"
No Algorithm found for: 08000000H - 0800024BH
Partial Erase Done (areas with no algorithms skipped!)
No Algorithm found for: 08000000H - 0800024BH
Partial Programming Done (areas with no algorithms skipped!)
Contents mismatch at: 00000000H !
Verify Failed!
Error: Flash Download failed  -  "Cortex-M3"
Flash Load finished at 10:30:45
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
 楼主| 发表于 2025-6-21 11:19:37 | 显示全部楼层
alexwugaopei 发表于 2025-6-21 10:34
UP,老师请教个问题,为啥我怎么都下载不进数据到外挂FLASH呢?配置引脚都改对的了,提示这个,要怎么解决麻 ...

你的错误信息截图没有上传成功

通过将带有初始化,擦除,编程和校验函数的算法文件加载到目标芯片内部RAM里面,然后控制芯片执行对应的函数来实现对芯片外置Flash的读写控制
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-5 07:04 , Processed in 0.484384 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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