硬汉嵌入式论坛

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

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

  [复制链接]

0

主题

14

回帖

14

积分

新手上路

积分
14
发表于 2022-11-15 10:02:43 | 显示全部楼层
hello_word 发表于 2022-11-15 09:52
你好我想搞个F1的SPIFLASH加载算法 算法是生成了,然后下载程序的时候,一直下载不进去,0XC0000000可以加 ...

工程已发,在审核中
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2022-11-15 11:32:33 | 显示全部楼层
hello_word 发表于 2022-11-15 09:58
这个是F103的算法工程,SPI通信那块没问题,单独测SPIflash的读写函数也是正常的,就是生成了算法之后,F ...

下载的错误信息截图下。我看看是那方便错误。
回复

使用道具 举报

0

主题

14

回帖

14

积分

新手上路

积分
14
发表于 2022-11-15 11:45:11 | 显示全部楼层
eric2013 发表于 2022-11-15 11:32
下载的错误信息截图下。我看看是那方便错误。

1.jpg 2.jpg 3.jpg

C00000000是可以正常加载的

C00000000是可以正常加载的

到代码区域就不能正常下载了

到代码区域就不能正常下载了



单独下载程序不添加SPIFLASH算法那部分又是可以下载成功的,只要加上这个算法就不能正常下载进去
回复

使用道具 举报

0

主题

14

回帖

14

积分

新手上路

积分
14
发表于 2022-11-15 12:44:33 | 显示全部楼层
eric2013 发表于 2022-11-15 11:32
下载的错误信息截图下。我看看是那方便错误。

已回复 不过图片的评论好像审核时间比较久
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2022-11-15 14:10:56 | 显示全部楼层
hello_word 发表于 2022-11-15 12:44
已回复 不过图片的评论好像审核时间比较久

这个有点诡异,你的添加外部Flash算法,这里怎么提示的内部Flash下载校验失败(内部Flash地址时0x0800 0000开始),你的这个工程(测试工程,非FLM文件生成工程)是不是点问题。
回复

使用道具 举报

0

主题

14

回帖

14

积分

新手上路

积分
14
发表于 2022-11-15 18:38:18 | 显示全部楼层
eric2013 发表于 2022-11-15 14:10
这个有点诡异,你的添加外部Flash算法,这里怎么提示的内部Flash下载校验失败(内部Flash地址时0x0800 00 ...

测试工程,不添加那个SPIFLASH算法,是可以正常下载的,添加算法之后C000 0000 段是可以正常加载过去,但是到下载程序段时(0x0800 0000) 就出问题了 我也很奇怪
回复

使用道具 举报

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2022-11-16 09:41:07 | 显示全部楼层
eric2013 发表于 2022-11-10 09:15
忘了及时回复了,你把问题改了?

改了改了,解决了。就是用别的指令,4个 I/O 读写 会快点
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2022-11-16 14:44:38 | 显示全部楼层
gua 发表于 2022-11-16 09:41
改了改了,解决了。就是用别的指令,4个 I/O 读写 会快点

回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2022-12-8 19:48:26 | 显示全部楼层
STM32F401ccu6下载算法调用显示Cannot Load Flash Programming Algorithm!
image.png 请大家帮忙看看问题出在哪了

SPI Flash下载算法401cc_25q128.zip

1.92 MB, 下载次数: 5

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2022-12-9 10:50:10 | 显示全部楼层
阿三电饭锅 发表于 2022-12-8 19:48
STM32F401ccu6下载算法调用显示Cannot Load Flash Programming Algorithm!
请大家帮忙看看问题出在哪了

下载的时候加大这个,你的FLM算法是要加载到这个RAM空间里面的,你要保证你的程序不能超过这里设置的大小
image.png
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2022-12-9 14:27:36 | 显示全部楼层
eric2013 发表于 2022-12-9 10:50
下载的时候加大这个,你的FLM算法是要加载到这个RAM空间里面的,你要保证你的程序不能超过这里设置的大小 ...

感谢解惑
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

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

我也碰到你这个问题了,以及解决。
主要还是keil下载的算法太简陋我看了一下它给的例程 image.png 初始化没有对时钟做任何配置校验的读取没有任何延迟我这边吧spi flash算法主频改低就好了
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2022-12-21 15:03:53 | 显示全部楼层
image.png      G030  大家有遇到这个问题吗?  
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2022-12-21 15:10:38 | 显示全部楼层
xinghun_zy 发表于 2022-12-21 15:03
G030  大家有遇到这个问题吗?

这里的意思是你个地方开的RAM大小不够存储你制作的FLM算法文件。
image.png
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2022-12-21 16:39:50 | 显示全部楼层
image.png    G030  下载 一直提示 Insufficient RAM for Flash Algorithms !   大家有遇到相同问题的吗? 怎么解决的
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

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

,我单独做工程 驱动能读出flash,做成算法下载时 烧写外部Flash时 报错 ,这个需要改多大  ,在哪看算法需要多大空间
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2022-12-22 00:31:56 | 显示全部楼层
xinghun_zy 发表于 2022-12-21 17:12
,我单独做工程 驱动能读出flash,做成算法下载时 烧写外部Flash时 报错 ,这个需要改多大  ,在哪看算法 ...

看你FLM文件大小就行
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2022-12-22 14:43:12 | 显示全部楼层
hello_word 发表于 2022-11-15 18:38
测试工程,不添加那个SPIFLASH算法,是可以正常下载的,添加算法之后C000 0000 段是可以正常加载过去,但 ...

你解决了吗?  我这边 测试 F103ZE  遇到类似问题 下载没问题  但是 校验时 提示 错误  ,测试去掉校验后能正常下载 进去
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2022-12-22 14:47:08 | 显示全部楼层
本帖最后由 xinghun_zy 于 2022-12-22 14:58 编辑

image.png     image.png 我这边用F103ZE 芯片  测试,如果不加校验能正常下载进去 ,但是加校验后报错   ,有遇到这个问题的吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2022-12-23 00:19:28 | 显示全部楼层
xinghun_zy 发表于 2022-12-22 14:47
我这边用F103ZE 芯片  测试,如果不加校验能正常下载进去 ,但是加校验后报错   ,有遇到这个问题的吗

下载进去后,SPI Flash的数据正常不,如果正常的话,也可以的。
回复

使用道具 举报

16

主题

67

回帖

115

积分

初级会员

积分
115
发表于 2022-12-27 22:07:38 | 显示全部楼层
硬汉哥你好,在H7开发文档里说制作好下载算法后,还需要boot和APP程序?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2022-12-28 00:09:10 | 显示全部楼层
lihui163 发表于 2022-12-27 22:07
硬汉哥你好,在H7开发文档里说制作好下载算法后,还需要boot和APP程序?

跟boot和app基本没关系,这个算法主要是方便大家把需要的程序,图库或者字库等数据下载到SPI Flash里面
回复

使用道具 举报

16

主题

67

回帖

115

积分

初级会员

积分
115
发表于 2022-12-28 10:16:58 | 显示全部楼层
eric2013 发表于 2022-12-28 00:09
跟boot和app基本没关系,这个算法主要是方便大家把需要的程序,图库或者字库等数据下载到SPI Flash里面

用这个算法下载程序到外部flash,直接上电就可以运行外部flash的程序,这样级方便了,
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2022-12-28 11:56:55 | 显示全部楼层
lihui163 发表于 2022-12-28 10:16
用这个算法下载程序到外部flash,直接上电就可以运行外部flash的程序,这样级方便了,

没问题,这种的两种玩法
1、一种是芯片支持QSPI Flash内存映射模式(可以直接在QSPI Flash运行程序),像H7系列就是支持的,对应你看V7的QSPI Flash算法和案例即可。这些都是
https://www.armbbs.cn/forum.php?mod=viewthread&tid=86980

image.png

2、还有一种就是不支持内存映射的,你可以存到SPI Flash里面,上电后加载到内部RAM运行。

这个帖子就可以使用这种玩法。


回复

使用道具 举报

8

主题

135

回帖

159

积分

初级会员

积分
159
发表于 2023-1-1 23:29:18 | 显示全部楼层
[C] 纯文本查看 复制代码
/*
*********************************************************************************************************
*	函 数 名: bsp_spiRead0
*	功能说明: 从SPI总线接收8个bit数据。 SCK上升沿采集数据, SCK空闲时为低电平。
*	形    参: 无
*	返 回 值: 读到的数据
*********************************************************************************************************
*/
uint8_t bsp_spiRead0(void)
{
	uint8_t i;
	uint8_t read = 0;

	for (i = 0; i < 8; i++)
	{
		read = read<<1;

		if (MISO_IS_HIGH())
		{
			read++;
		}
		SCK_1();
		bsp_spiDelay();
		SCK_0();
		bsp_spiDelay();
	}
	return read;
}


为啥
if (MISO_IS_HIGH())
{
read++;
}
在 SCK上升沿的前面
回复

使用道具 举报

8

主题

135

回帖

159

积分

初级会员

积分
159
发表于 2023-1-2 00:13:27 | 显示全部楼层
image.png
看了下手册, 难道是发送地址后的第一个下降沿就输出bit7的数据?
我的理解是, 存储器是在下降沿将输出并锁定, 单片机在上升沿把MISO引脚的数据存储到单片机的移位寄存器
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-1-2 00:32:05 | 显示全部楼层
tcs_stm32 发表于 2023-1-2 00:13
看了下手册, 难道是发送地址后的第一个下降沿就输出bit7的数据?
我的理解是, 存储器是在下降沿将输出并 ...

实际上我们用的是这种模式,这种模式下,MISO上数会提前准备好,所以可先读取。

image.png


回复

使用道具 举报

16

主题

67

回帖

115

积分

初级会员

积分
115
发表于 2023-1-12 10:24:40 | 显示全部楼层
eric2013 发表于 2022-12-28 11:56
没问题,这种的两种玩法
1、一种是芯片支持QSPI Flash内存映射模式(可以直接在QSPI Flash运行程序), ...

非常感谢,有个问题,外部flash存储程序,这样keil还可以仿真调试?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-1-12 10:30:29 | 显示全部楼层
lihui163 发表于 2023-1-12 10:24
非常感谢,有个问题,外部flash存储程序,这样keil还可以仿真调试?

这两种玩法都可以仿真
https://www.armbbs.cn/forum.php?mod=viewthread&tid=86980

image.png


回复

使用道具 举报

16

主题

67

回帖

115

积分

初级会员

积分
115
发表于 2023-1-12 12:59:38 | 显示全部楼层
eric2013 发表于 2023-1-12 10:30
这两种玩法都可以仿真
https://www.armbbs.cn/forum.php?mod=viewthread&tid=86980

好的非常感谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-1-13 04:09:16 | 显示全部楼层

你先搞搞,后面有什么问题再交流
回复

使用道具 举报

16

主题

67

回帖

115

积分

初级会员

积分
115
发表于 2023-1-15 17:03:06 | 显示全部楼层
eric2013 发表于 2023-1-13 04:09
你先搞搞,后面有什么问题再交流

好的
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2023-4-10 21:13:29 | 显示全部楼层
看了一下这个确实强大,问个问题,这个算法实现之后,实际应用工程里面要怎么设置编译之后才不会报超超空间的错误
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-4-11 09:16:25 | 显示全部楼层
蜗牛snail 发表于 2023-4-10 21:13
看了一下这个确实强大,问个问题,这个算法实现之后,实际应用工程里面要怎么设置编译之后才不会报超超空间 ...

此贴方法,字体图库程序等设置分配到对应的外置Flash空间即可。

第3版emWin教程和ThreadX GUIX教程开工,双管齐下,GUIX更新至第30章,emWin更新至第57章(2022-04-04)
https://www.armbbs.cn/forum.php? ... 8429&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2023-4-11 14:08:04 | 显示全部楼层
这个算法做完,素材内容也烧录到外部flash之后,实际应用工程里面需要在对这几个模拟SPI的IO口再做初始化吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-4-11 15:26:10 | 显示全部楼层
蜗牛snail 发表于 2023-4-11 14:08
这个算法做完,素材内容也烧录到外部flash之后,实际应用工程里面需要在对这几个模拟SPI的IO口再做初始化吗 ...

你的工程应用和这个算法烧录没关系,他们是两个独立的东西。烧录的算法仅管烧录。

而你的工程,该怎么用还怎么用即可,初始化SPI Flash,读写操作等
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2023-4-11 16:37:48 | 显示全部楼层
eric2013 发表于 2023-4-11 15:26
你的工程应用和这个算法烧录没关系,他们是两个独立的东西。烧录的算法仅管烧录。

而你的工程,该怎么 ...

那就是在用到素材的是时候要通过spi去从外部读到内部ram里面。我看文档21章里面有个加载SPI FLASH中数据到动态内存,但是没看到怎么通过SPI去读。所以才有这个疑问
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-4-12 08:17:06 | 显示全部楼层
蜗牛snail 发表于 2023-4-11 16:37
那就是在用到素材的是时候要通过spi去从外部读到内部ram里面。我看文档21章里面有个加载SPI FLASH中数据 ...

这个属于GUI的玩法了,玩法很多。
1、可以一直在SPI Flash里面,向emWin这种支持直接从SPI Flash边读取边使用。
2、如果支持QSPI Flash的内存映射玩法,可以直接向SRAM一样,从里面读取使用。
3、也可以读取到动态内存,加快刷新速度。
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2023-4-12 09:19:39 | 显示全部楼层
eric2013 发表于 2023-4-12 08:17
这个属于GUI的玩法了,玩法很多。
1、可以一直在SPI Flash里面,向emWin这种支持直接从SPI Flash边读取 ...

嗯嗯,这里还是有些没搞懂,比如每张图片对应的是一个数组,按照烧录算法搞进外部FLASH里面,那每张图片的地址是怎么算的,在用到的时候要去哪个地址读取,这个过程有没有文档教程说明
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-4-12 10:29:19 | 显示全部楼层
蜗牛snail 发表于 2023-4-12 09:19
嗯嗯,这里还是有些没搞懂,比如每张图片对应的是一个数组,按照烧录算法搞进外部FLASH里面,那每张图片 ...

我建议看我前面分享你的教程,先操作熟练下
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 07:04 , Processed in 0.439791 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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