硬汉嵌入式论坛

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

[SPI/QSPI] stm32H7x内部Flash和QSPI Flash混合编程无法进入主函数问题

[复制链接]

1

主题

7

回帖

10

积分

新手上路

积分
10
QQ
发表于 2023-2-21 14:34:35 | 显示全部楼层 |阅读模式
我手上有块板子,采用的是MT25QL256 QSPI NOR FLASH,自己改写了下载算法,app能正常下载。单独内部Flash boot+外部QSPI Flash app模式下能正常执行。
但是改为内部Flash和外部QSPI混合运行程序就无法正常工作,程序异常死机,主函数初始化也对QSPI进行了初始化和内存映射,程序也进行了分散加载,目前不清楚具体原因。

不知有没有大佬遇到过,能否解答一下。
运行卡死:
图片.png

下面是一些相关的配置图

图片.png

图片.png
图片.png

图片.png

图片.png




图片.png
图片.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2023-2-21 15:39:12 | 显示全部楼层
前面在内部Flash运行的代码没问题吧,然后就是执行QSPI Flash的程序时出问题?

从你的截图来看,好像还没有运行到执行QSPI Flash的程序就卡住了。
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
QQ
 楼主| 发表于 2023-2-21 15:54:07 | 显示全部楼层
单独boot或者app都没有问题,改成混合模式后程序直接卡死
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
QQ
 楼主| 发表于 2023-2-21 16:03:51 | 显示全部楼层
单独boot+app下载和运行没有问题


图片.png
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
QQ
 楼主| 发表于 2023-2-21 16:30:38 | 显示全部楼层
eric2013 发表于 2023-2-21 15:39
前面在内部Flash运行的代码没问题吧,然后就是执行QSPI Flash的程序时出问题?

从你的截图来看,好像还 ...

没有运行到主程序,一运行就跑飞了。单独的boot+app是能正常执行的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2023-2-21 16:50:31 | 显示全部楼层
summerstar666 发表于 2023-2-21 16:30
没有运行到主程序,一运行就跑飞了。单独的boot+app是能正常执行的。

可以这样测试下,先仅将一个文件设置到外部QSPI Flash里面,最好跟其它文件都没有关联的一个简单函数测试下。
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
QQ
 楼主| 发表于 2023-2-21 17:08:12 | 显示全部楼层
eric2013 发表于 2023-2-21 16:50
可以这样测试下,先仅将一个文件设置到外部QSPI Flash里面,最好跟其它文件都没有关联的一个简单函数测试 ...

删了很多,还是一运行就挂了。


图片.png
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
QQ
 楼主| 发表于 2023-2-22 10:30:11 | 显示全部楼层
eric2013 发表于 2023-2-21 16:50
可以这样测试下,先仅将一个文件设置到外部QSPI Flash里面,最好跟其它文件都没有关联的一个简单函数测试 ...

硬汉哥,不知你这边有没有其他的解决思路呢,如果只采用0x8000000下载和启动,代码运行没有任何问题。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2023-2-22 10:52:57 | 显示全部楼层
summerstar666 发表于 2023-2-22 10:30
硬汉哥,不知你这边有没有其他的解决思路呢,如果只采用0x8000000下载和启动,代码运行没有任何问题。

不用调试,直接下载运行,在几个关键点做个串口打印,看看是不是一加载QSPI Flash就死机,如果是的话
两个问题:
1、确定是否正常这部分程序到QSPI Flash了
2、可以考虑内存映射模式简单读取下看看
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
QQ
 楼主| 发表于 2023-2-25 22:15:18 | 显示全部楼层
eric2013 发表于 2023-2-22 10:52
不用调试,直接下载运行,在几个关键点做个串口打印,看看是不是一加载QSPI Flash就死机,如果是的话
两 ...

挂在了中断向量表,从代码来看中断向量表地址拷贝没有对。
正常代码应该如下:
图片.png
但是我进行分散加载后运行如下:
图片.png
这个问题困扰了好几天了,不知硬汉哥有没有其他解决思路。


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2023-2-26 00:23:16 | 显示全部楼层
summerstar666 发表于 2023-2-25 22:15
挂在了中断向量表,从代码来看中断向量表地址拷贝没有对。
正常代码应该如下:

不能调试状态看了,因为MDK在进入调试状态瞬间会有个短暂的全速运行过程,如果你的程序有问题,MDK就无法正常调试跟踪了。
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
QQ
 楼主| 发表于 2023-2-26 13:56:56 | 显示全部楼层
eric2013 发表于 2023-2-26 00:23
不能调试状态看了,因为MDK在进入调试状态瞬间会有个短暂的全速运行过程,如果你的程序有问题,MDK就无法 ...

目前问题算是找到了,我用的MDK工程树中一旦改写了分散加载,就不能正常运行,
反而在Target linker下修改.sct文件后能正常执行。代码中数据量大的基本都是字库和图形文件,是不是编译器原因还未能确定。
图片.png

图片.png


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2023-2-28 10:06:22 | 显示全部楼层
summerstar666 发表于 2023-2-26 13:56
目前问题算是找到了,我用的MDK工程树中一旦改写了分散加载,就不能正常运行,
反而在Target linker下修 ...

修改工程树,也有一个sct文件生成的,你对比下应该就能找到问题。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 01:01 , Processed in 0.316557 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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