硬汉嵌入式论坛

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

[STM32H7] 分散加载问题求助

[复制链接]

2

主题

11

回帖

17

积分

新手上路

积分
17
发表于 2023-11-22 19:05:20 | 显示全部楼层 |阅读模式

问题背景描述
基于野火挑战者开发板,STM32H743IIT6核心板 开展的分散加载操作
具体问题:
1. 我只做了分散加载算法,可成功烧录到Flash程序
2. 按照教程对代码做了相应配置。显示少虑成功但是程序跑到外部Flash处就卡死了

代码已经上传,望大佬们帮助解决一下,困扰了两天了.... 多谢  多谢

V7-060_QSPI Flash的MDK下载算法制作.zip

8.39 MB, 下载次数: 0

下载算法

STM32H743CubeMX.zip

1.31 MB, 下载次数: 2

应用程序

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2023-11-23 08:20:41 | 显示全部楼层
看你的程序是采用的此贴混合运行方式:
https://www.armbbs.cn/forum.php?mod=viewthread&tid=101011

可以先仅设置简单的LED在外部Flash运行是否正常。
回复

使用道具 举报

2

主题

11

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2023-11-23 08:33:58 | 显示全部楼层
完全贴合的,我就是按照你的教程做的,QSPI加载算法做成功了,但是就是跑步起来,我目前就是只把一个读写铁电放在外部运行,但是走到铁电读取就卡住了...
回复

使用道具 举报

2

主题

11

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2023-11-23 08:34:49 | 显示全部楼层
我的意图是做分散加载内部FLASH和外部QSPI FLASH混合运行
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2023-11-23 08:37:43 | 显示全部楼层
凡凡的草稿本 发表于 2023-11-23 08:34
我的意图是做分散加载内部FLASH和外部QSPI FLASH混合运行

先跑个简单的,仅仅是做个GPIO翻转是否正常。
回复

使用道具 举报

2

主题

11

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2023-11-23 08:47:15 | 显示全部楼层
好的,我重新建个工程试一下,这个与初始化Cache 和 MPU有关系吗?不使能这两个有问题吗?
回复

使用道具 举报

2

主题

11

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2023-11-23 10:33:38 | 显示全部楼层
问题已解决,我大意了
主要原因是QSPI的引脚我在CubeMX配置时候没有选择高速,导致QSPI驱动失败无法加载
感谢硬汉耐心解答
附件是野火挑战者点灯驱动(实现了分散混合加载)

STM32H743LED.zip

1.1 MB, 下载次数: 3

回复

使用道具 举报

2

主题

11

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2023-11-23 14:52:38 | 显示全部楼层
硬汉老哥,请教个问题   混合加载有没有可能生成两个hex文件  然后我只烧录其中一个hex是否可行?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2023-11-23 16:08:15 | 显示全部楼层
凡凡的草稿本 发表于 2023-11-23 14:52
硬汉老哥,请教个问题   混合加载有没有可能生成两个hex文件  然后我只烧录其中一个hex是否可行?

这个帖子分享了解决办法。

成功解决内部Flash和QSPI Flash混合运行程序的批量烧录生产问题,测试ThreadX GUIX工程成功
https://www.armbbs.cn/forum.php? ... 0247&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

2

主题

11

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2023-11-23 16:43:37 | 显示全部楼层
已阅,我的意思是可以再keil里生成时候就产生两个hex文件或者bin文件然后分开烧吗? 另外一个想法就是想实现远程升级时候只对外部FLASH的代码进行升级  这样可以更快更稳定的完成升级,不知道是否可行?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2023-11-24 08:34:48 | 显示全部楼层
凡凡的草稿本 发表于 2023-11-23 16:43
已阅,我的意思是可以再keil里生成时候就产生两个hex文件或者bin文件然后分开烧吗? 另外一个想法就是想实 ...

1、MDK分别下载不方便,编译好的工程自动下载方便。
2、没问题。这种需要动态管理才好使,除非你的APP程序仅在外部Flash。
回复

使用道具 举报

2

主题

11

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2023-11-24 08:54:56 | 显示全部楼层
eric2013 发表于 2023-11-24 08:34
1、MDK分别下载不方便,编译好的工程自动下载方便。
2、没问题。这种需要动态管理才好使,除非你的APP程 ...

好的,明白了
回复

使用道具 举报

8

主题

157

回帖

181

积分

初级会员

积分
181
发表于 2023-11-24 12:52:35 | 显示全部楼层
本帖最后由 yunqi 于 2023-11-24 13:45 编辑
凡凡的草稿本 发表于 2023-11-23 16:43
已阅,我的意思是可以再keil里生成时候就产生两个hex文件或者bin文件然后分开烧吗? 另外一个想法就是想实 ...

生产是Jlink烧录?

Jlink也支持自定义算法。比如给一个合并好后的最终Hex,通过自定义算法一次性烧录。

自定义算法有个好处,做加密挺方便。比如外挂Flash的某些地址配置成加密模式。
回复

使用道具 举报

2

主题

5

回帖

11

积分

新手上路

积分
11
发表于 2023-11-26 18:53:10 | 显示全部楼层
老哥这个混合模式,能跑大型程序吗?。好像源文件变多了keil会报内存溢出问题
回复

使用道具 举报

2

主题

11

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2023-11-27 17:22:58 | 显示全部楼层
yunqi 发表于 2023-11-24 12:52
生产是Jlink烧录?

Jlink也支持自定义算法。比如给一个合并好后的最终Hex,通过自定义算法一次性烧录 ...

其实我是想远程烧录的时候可以选择烧写外部QSPI FLASH还是 内部FLASH ,我是想分开烧录,这样可能我这次只修改了外部FLASH内的代码,我就只需要远程烧录外部FLASH代码,缩短烧录时间也降低了远程烧录风险
回复

使用道具 举报

2

主题

11

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2023-11-27 17:23:53 | 显示全部楼层
m0NiSa 发表于 2023-11-26 18:53
老哥这个混合模式,能跑大型程序吗?。好像源文件变多了keil会报内存溢出问题

能跑,详细阅读硬汉的手册,如果很大就修改加载算法位置的大小,手册里有写
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 21:51 , Processed in 0.238797 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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