硬汉嵌入式论坛

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

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

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
发表于 2022-5-30 01:32:52 | 显示全部楼层 |阅读模式
之前分享过SPI Flash烧写算法的文档版制作教程,但是网友反馈移植到其它单片机上不是很方便,此贴为此而生,方便大家移植到各种平台。​

SPI Flash烧写算法的应用场景:

1、IDE环境,比如MDK,可以方便的一键下载内部Flash和外部SPI Flash,在UI开发,比如字库,图库,主题或者各种大数据文件需要存储到外部SPI Flash时,用到的地方比较多。
2、批量生产脱机烧录场景,比如我们H7-TOOL,可以方便的实现内部Flash和外部Flash的1拖4,  1拖16烧录。

例子下载:

https://pan.baidu.com/s/1gvXKKidCzkD2A0yflVKyRw  提取码:xi10

视频说明:

https://www.bilibili.com/video/BV1SU4y1y7ZL




program.png






评分

参与人数 1金币 +10 收起 理由
byccc + 10 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-5-30 02:08:47 | 显示全部楼层
这次视频审核挺快。
回复

使用道具 举报

23

主题

1403

回帖

1472

积分

至尊会员

积分
1472
发表于 2022-5-30 09:11:31 | 显示全部楼层
感谢开源,开源让我的事业迎来第2春
代码不规范,亲人两行泪!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-5-30 15:19:31 | 显示全部楼层
missfox 发表于 2022-5-30 09:11
感谢开源,开源让我的事业迎来第2春

回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-5-31 14:02:52 | 显示全部楼层
有没有在G030上做成功的,我的下载时候提示 flash timeout.reset the target and try it again
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2022-5-31 17:57:02 | 显示全部楼层
mark4tomorrow
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-5-31 18:24:16 | 显示全部楼层
LeMonAudio 发表于 2022-5-31 14:02
有没有在G030上做成功的,我的下载时候提示 flash timeout.reset the target and try it again

说明SPI的通信有点小问题,没有正常通信成功。

回复

使用道具 举报

36

主题

2038

回帖

2146

积分

至尊会员

积分
2146
发表于 2022-6-1 10:10:10 | 显示全部楼层
很及时,整在做这方便东西。
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-6-2 10:54:21 | 显示全部楼层
近期再多做几个型号,助攻下,方便大家对比参考。
回复

使用道具 举报

36

主题

2038

回帖

2146

积分

至尊会员

积分
2146
发表于 2022-6-21 14:35:02 | 显示全部楼层
eric2013 发表于 2022-6-2 10:54
近期再多做几个型号,助攻下,方便大家对比参考。

做了一个,在TOOL上可以使用,MDK上使用有点问题。
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

36

主题

2038

回帖

2146

积分

至尊会员

积分
2146
发表于 2022-6-21 14:35:30 | 显示全部楼层
我再查查看是什么地方导致的。
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-6-22 01:05:48 | 显示全部楼层
byccc 发表于 2022-6-21 14:35
我再查查看是什么地方导致的。

用的那款芯片,准备再弄几个方便大家参考。
回复

使用道具 举报

36

主题

2038

回帖

2146

积分

至尊会员

积分
2146
发表于 2022-6-22 09:05:27 | 显示全部楼层
eric2013 发表于 2022-6-22 01:05
用的那款芯片,准备再弄几个方便大家参考。

解决了,程序有点问题,现在都正常了,用的F0
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-6-22 11:14:12 | 显示全部楼层
byccc 发表于 2022-6-22 09:05
解决了,程序有点问题,现在都正常了,用的F0

好的,手头有F030和F072, 后面我也整理下案例分享下。
回复

使用道具 举报

36

主题

2038

回帖

2146

积分

至尊会员

积分
2146
发表于 2022-6-22 11:41:24 | 显示全部楼层
eric2013 发表于 2022-6-22 11:14
好的,手头有F030和F072, 后面我也整理下案例分享下。

这个还是很有必要的。
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2022-7-1 11:22:20 | 显示全部楼层
第2步怎么使用生成的FLM文件,视频没有说明呀。比如我生成了FLM,然后又一个数组,怎么让FLM知道要把这个数组烧录到外部Flash。
视频例子是一个字库数组,如果使用Image2Lcd生成的多个字库数组或者生成的多个bin文件,可以弄吗?
比如我有很多字库数组,怎么让工程和FLM将这些数组烧录到外部flash。或者我将多个bin文件合成了一个bin文件,怎么使用你这个工具或者方法烧录到外部Flash。
谢谢。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-7-1 11:39:39 | 显示全部楼层
zashel 发表于 2022-7-1 11:22
第2步怎么使用生成的FLM文件,视频没有说明呀。比如我生成了FLM,然后又一个数组,怎么让FLM知道要把这个数 ...

这个做了一堆应用案例了,我分享下,有对应的教程文件说明
https://www.armbbs.cn/forum.php?mod=viewthread&tid=98429

ThreadX GUIX

image.png



emWin:

image.png
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2022-7-6 10:45:20 | 显示全部楼层
image.png
感谢,已经在我的深圳中微BAT32G135单片机(最大64M主频,8K ram,64K rom)和25Q40(512KB)上实现了。可实现一起烧录外部Spi Flash和主程序。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-7-6 11:00:09 | 显示全部楼层
zashel 发表于 2022-7-6 10:45
感谢,已经在我的深圳中微BAT32G135单片机(最大64M主频,8K ram,64K rom)和25Q40(512KB)上实现了。 ...

回复

使用道具 举报

0

主题

16

回帖

16

积分

新手上路

积分
16
发表于 2022-8-31 13:40:11 | 显示全部楼层
请问移植到Segger Embedded Studio开发环境上也可以使用么
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-9-1 11:03:57 | 显示全部楼层
zdh-kun 发表于 2022-8-31 13:40
请问移植到Segger Embedded Studio开发环境上也可以使用么

可以,也是类似的方法。
回复

使用道具 举报

0

主题

16

回帖

16

积分

新手上路

积分
16
发表于 2022-9-1 11:40:30 | 显示全部楼层
eric2013 发表于 2022-9-1 11:03
可以,也是类似的方法。

你好 最近想在这个Segger 的open flash loader  基础上实现通过mcu写入spi flash的功能 https://wiki.segger.com/Open_Flashloader

我使用的是TI AM3357 用了链接里面的Cortex-A project
不太清楚相关的spi操作的代码在哪里可以找到 是starterware里面会有么
谢谢
回复

使用道具 举报

0

主题

16

回帖

16

积分

新手上路

积分
16
发表于 2022-9-1 15:24:21 | 显示全部楼层
还有一点想问的是 我如果用jtag连接的话需要做特别的更改么  还是无法使用
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

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

没玩过SEGGER的算法制作方式。
只倒腾过MDK和STM32CubeProg的算法文件制作,SEGGER的问题,你可以上他们论坛咨询他们解决下:

SEGGER - Forum
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2022-9-2 07:31:03 | 显示全部楼层
首先感谢硬汉哥无私分享,我在H750 H743和H7B0上移植各种容量的都是OK的。
最近要移植到G071RBT6上,用的官方nucleo_G071的板子,把宏旺的芯片换成W25Q128JV
折腾3天了就是不行,总是一样的问题

在G0上移植遇到问题

我严格按照您B站上的教程操作的,
1、内部时钟,把cubeMX点灯的时钟代码直接copy过来的
2、改引脚,这也应该没问题
3、把HAL库都改成G0xx.h
4、改FlashDev.c文件,名称、地址为0x90000000、容量16M

5、keil里面改device为G071RBTx
6、TargetLin文件没改,也不会改

生成算法文件后在我的工程里面改分散加载文件
在G0上移植遇到问题

请教 还应该注意些啥呢?感觉这个算法就没加载进去。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-9-2 11:27:16 | 显示全部楼层
cuiwenchi 发表于 2022-9-2 07:31
首先感谢硬汉哥无私分享,我在H750 H743和H7B0上移植各种容量的都是OK的。
最近要移植到G071RBT6上,用的 ...

先不做成算法文件,直接工程测试这个驱动是否正常。
回复

使用道具 举报

0

主题

16

回帖

16

积分

新手上路

积分
16
发表于 2022-9-2 13:13:00 | 显示全部楼层
eric2013 发表于 2022-9-1 17:25
没玩过SEGGER的算法制作方式。
只倒腾过MDK和STM32CubeProg的算法文件制作,SEGGER的问题,你可以上他们 ...

感谢分享和回复。其实之前询问过segger的技术人员。
他们的回答是不提供测试板以外自制板的支持,flash loader的支持也不提供
如果让他们帮忙写的话要4000 dollor......

您这个写法对我启发很大 这就去再试试
回复

使用道具 举报

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2022-10-17 13:58:24 | 显示全部楼层
markdown!!
回复

使用道具 举报

4

主题

29

回帖

41

积分

新手上路

积分
41
发表于 2022-10-20 22:05:00 | 显示全部楼层
按硬汉模板修改,用于GD32F303 spi0 W25Q128下载。总是出现AlgoRamSize too small, out of memory错误,请问如何修改。谢谢!
image.png

W25Q128_Frontv51_GD303_H7.rar

536.26 KB, 下载次数: 7

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-10-21 01:17:56 | 显示全部楼层
njsssmq 发表于 2022-10-20 22:05
按硬汉模板修改,用于GD32F303 spi0 W25Q128下载。总是出现AlgoRamSize too small, out of memory错误,请问 ...

应该跟这个坛友的问题一样。

H7-TOOL 下载算法显示内存不够
https://www.armbbs.cn/forum.php? ... 5915&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

4

主题

29

回帖

41

积分

新手上路

积分
41
发表于 2022-10-21 21:09:11 | 显示全部楼层
谢谢硬汉。调整算法内存后,问题解决。
现将调试好的GD32F303 SPI0挂W25Q128的算法工程分享给需要的坛友

还有一个问题,就是如何将W25Q128内的数据读出保存。

W25Q128_GD303_H7.rar

605.46 KB, 下载次数: 19

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-10-22 13:13:35 | 显示全部楼层
njsssmq 发表于 2022-10-21 21:09
谢谢硬汉。调整算法内存后,问题解决。
现将调试好的GD32F303 SPI0挂W25Q128的算法工程分享给需要的坛友
...

谢谢分享。TOOL上位机可以在这里直接读取。每次读取别太大,太大容易失败。
操作前先执行一次前面的一键下载。目的是保证相关的配置信息下载到TOOL的eMMC里面了

image.png


回复

使用道具 举报

4

主题

29

回帖

41

积分

新手上路

积分
41
发表于 2022-10-23 17:34:12 | 显示全部楼层
我的需求是:在W25Q128中建little filesystem。出厂前需要存放很多小文件,但我并不清楚little files是如何组织数据的。我是在一块板子中,通过CAN 下载这些文件。在下载完成后,想通过H7 TOOLS将这些数据读出来用于生产时烧写。STM32 ST-LINK Utility有这个功能,但不想再去调试一块MCU了。

估计许多小白都会用到这个功能。

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-10-23 19:07:29 | 显示全部楼层
njsssmq 发表于 2022-10-23 17:34
我的需求是:在W25Q128中建little filesystem。出厂前需要存放很多小文件,但我并不清楚little files是如何 ...

没问题,TOOL是直接读取并以bin文件方式存储到电脑的。
回复

使用道具 举报

4

主题

29

回帖

41

积分

新手上路

积分
41
发表于 2022-10-23 23:04:58 | 显示全部楼层
为什么我的不行呢?
下载成功
image.png

点“读芯片”,点下载LAU(不烧录),只加载内部flash算法,SIP flash算法没有被加载

下载成功load "GD32F30x_HD_256K.lua" ok
dofile :         0:/H7-TOOL/Programmer/Device/GigaDevice/Lib/GD32F10x_Lib_M3.lua
load "GD32F10x_Lib_M3.lua" ok
load "fix_data.lua" ok. version =         1.5
load "prog_lib.lua" ok. version =         3.2
load "machine_if.lua" ok. version =         1.8
检测烧录接口板:
--CH2电压: 0.00V
--

将基地址改为0xC0000000,点“读取1K”,提示“error”。

读MCU内部flash没问题
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-10-24 02:18:46 | 显示全部楼层
njsssmq 发表于 2022-10-23 23:04
为什么我的不行呢?
下载成功

没问题,这个是你前面31楼做SPI Flash算法文件读函数不行。

下面这个是我们做的,给我们V7板子做的SPI Flash算法读取里面数据操作。
image.png


回复

使用道具 举报

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2022-11-9 10:42:01 | 显示全部楼层
本帖最后由 gua 于 2022-11-9 16:39 编辑

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
 楼主| 发表于 2022-11-10 09:15:34 | 显示全部楼层

忘了及时回复了,你把问题改了?
回复

使用道具 举报

0

主题

14

回帖

14

积分

新手上路

积分
14
发表于 2022-11-15 09:52:17 | 显示全部楼层
你好我想搞个F1的SPIFLASH加载算法 算法是生成了,然后下载程序的时候,一直下载不进去,0XC0000000可以加载,到0x0800 0000这部分就直接下载失败,不知道什么原因,硬汉可以指点下不
回复

使用道具 举报

0

主题

14

回帖

14

积分

新手上路

积分
14
发表于 2022-11-15 09:58:25 | 显示全部楼层
eric2013 发表于 2022-5-30 02:08
这次视频审核挺快。

这个是F103的算法工程,SPI通信那块没问题,单独测SPIflash的读写函数也是正常的,就是生成了算法之后,F103在下载0X0800 0000那部分的时候直接下载失败,有空帮忙看看谢谢

F103SPI_FLASH算法.zip

13.88 MB, 下载次数: 17

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 13:38 , Processed in 0.732224 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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