OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6978|回复: 9

北极星 H750 QSPI 运行的问题

[复制链接]

4

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2012-9-13
在线时间
65 小时
发表于 2021-8-12 03:10:21 | 显示全部楼层 |阅读模式
10金钱
最近在搞 H750 的 QSPI 运行,因为原子的板子没有 跳转到 QSPI 的 boot,所以就自己写了一个,在写的过程中有些疑惑,
1、原子的下载算法里把 QSPI Flash 设置为了 QPI 模式,下载完了也没恢复到普通模式,所以在 boot 中要先恢复为 普通模式,然后才能设置 地址映射,否则映射出来的数据都不对,就不能正确跳转。
     这点跟原子例程里的注释说明有冲突,注释里说要将 Flash 设置为 QPI 模式,才能启动地址映射。  这里有点不明白。
     另外原子的内部和外部 同时运行的代码里也有设置 QSPI 内存映射的代码,设置的时候发送的命令跟 W25Q64 的手册中并不相同,但是也可以正常运行,这点也很奇怪。

2、boot 我是用 CubeMX 自动生成的代码,然后进行修改。  自动生成的编译器设置是 AC6,生成的 boot 可以读取 flash 里的数据,地址映射以后也可以使用地址读取 flash 的数据,经过比对都正确。
     问题在于 一旦跳转,就会进 MemManage 错误,不管怎么调整都不能解决,后面把 编译器改成了 AC5,就可以正确跳转了。  这里有没有大佬知道是什么原因?

3、boot 做好后,开始做 app。  CubeMX 生成的代码,加了一个亮灯测试,下载到外部 QSPI Flash,运行正确。
     接下来添加了 ThreadX 的代码,创建了一个任务,在任务里亮灯测试,下载后前半部分可以正确运行,到某个地方突然就卡住了,看了汇编,卡住的地方并不是死循环,也不是错误中断。
    修改代码后,代码量不同,卡死的地方就不一样

4、针对上面的问题,我把代码改为内部 flash运行,只是修改了链接地址,然后重新编译,并没有改任何代码。  结果在内部 flash 运行正常

5、接下来我找了原子的例程,把代码改为 外部 QSPI Flash 运行,结果也正常。  区别在于原子的例程都是 AC5 的,我的是 AC6的,难道 AC6 的代码不能用作跳转到 QSPI 的 boot, 也不能在 QSPI 中运行
    PS:因为我的代码是 CubeMX 自动生成的,尝试改为 AC5 编译,出现很多错误,编译不了,所以不能验证是不是把我的代码改为 AC5 就可以外部运行。。

6、目前仍然卡在程序跳转运行这里,跳过去了,但是运行一段之后就会卡死。  
     之前同样的程序,底层引脚分配稍有不同,在野火的 H750 板子上是可以正常跳转并运行的。     区别在于野火的板子是 W25Q256,原子的是 W25Q64

这些问题有知道的朋友,或者原子的技术人员能够解答一下吗? 卡在这里三四天了,实在是没办法了。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

456

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1072
金钱
1072
注册时间
2021-4-26
在线时间
352 小时
发表于 2021-8-12 09:46:41 | 显示全部楼层
回复

使用道具 举报

4

主题

896

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4309
金钱
4309
注册时间
2019-9-4
在线时间
896 小时
发表于 2021-8-12 10:09:18 | 显示全部楼层
CubeMX 自动生成不是可以在CubeMX里面选择AC5还是AC6版本的吗
回复

使用道具 举报

4

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2012-9-13
在线时间
65 小时
 楼主| 发表于 2021-8-12 11:00:44 | 显示全部楼层
A571157242 发表于 2021-8-12 10:09
CubeMX 自动生成不是可以在CubeMX里面选择AC5还是AC6版本的吗

CubeMX没看到可以选择 AC5 还是  AC6 的地方,但是可以选择 MDK 版本,5.32 和 5.27,不过选出来生成的工程都是 AC6 的。

也不能手动调整为 AC5,调整后很多编译错误,修改起来太麻烦,那就不如自己建工程了。
回复

使用道具 举报

3

主题

117

帖子

0

精华

高级会员

Rank: 4

积分
559
金钱
559
注册时间
2018-10-3
在线时间
107 小时
发表于 2021-8-12 15:38:34 | 显示全部楼层
如果用AC5能正常运行的话   那就可以用AC5啊。我之前 也是用H750做的项目。由于H750都是128KB FLASH,所以也用了QSPI做地址映射模式。 但是频率最高只有133MHZ,而且有时候经常出问题(可能是我没调好),调到100MHZ就正常了。然而项目要用到很多算法,速度要快,对比过在QSPI下运行和在内部FLASH运行的速度,确实慢了点,无法满足需求。 刚好后面STM代理来我们这里推了一款H723芯片。果断换了。
回复

使用道具 举报

4

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2012-9-13
在线时间
65 小时
 楼主| 发表于 2021-8-12 16:52:27 | 显示全部楼层
wklhwkl 发表于 2021-8-12 15:38
如果用AC5能正常运行的话   那就可以用AC5啊。我之前 也是用H750做的项目。由于H750都是128KB FLASH,所以 ...

不能换,换了代码无数的错误,除非全部重新手动创建工程,太麻烦了
回复

使用道具 举报

3

主题

117

帖子

0

精华

高级会员

Rank: 4

积分
559
金钱
559
注册时间
2018-10-3
在线时间
107 小时
发表于 2021-8-12 17:18:16 | 显示全部楼层
Ihavedone 发表于 2021-8-12 16:52
不能换,换了代码无数的错误,除非全部重新手动创建工程,太麻烦了

cube生成的为何会无数错误呢。是cube版本太高了吗?
回复

使用道具 举报

4

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2012-9-13
在线时间
65 小时
 楼主| 发表于 2021-8-13 14:18:38 | 显示全部楼层
回到原问题,有人在原子北极星 H750 板子上搞过 boot 跳转到 QSPI 运行吗?  能成功吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2021-8-14 01:21:37 | 显示全部楼层
你第一个大前提就错了,必须QSPI模式,才能地址映射!!
回复

使用道具 举报

3

主题

117

帖子

0

精华

高级会员

Rank: 4

积分
559
金钱
559
注册时间
2018-10-3
在线时间
107 小时
发表于 2021-8-14 09:53:23 | 显示全部楼层
Ihavedone 发表于 2021-8-13 14:18
回到原问题,有人在原子北极星 H750 板子上搞过 boot 跳转到 QSPI 运行吗?  能成功吗?

没在这个板子上搞过,在其他H750上搞过。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 05:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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