硬汉嵌入式论坛

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

[STM32H7] 请教Bootloader引导QSPI Flash运行代码的时钟和中断问题

[复制链接]

0

主题

57

回帖

57

积分

初级会员

积分
57
发表于 2020-6-13 15:10:23 | 显示全部楼层 |阅读模式
本帖最后由 三尺长剑 于 2020-6-13 15:17 编辑

Bootloader加载运行外部QSPI Flash代码成功了,遇到两个问题但仍想了解一下问题的根源,望各位不吝赐教
Boot框架:
  • 开启MPU和I/D Cache
  • 使能串口,开启DMA和空闲中断
  • QSPI Flash挂载到BANK2上,使用4线IO,内存映射模式
  • 关闭Cache进行跳转


问题:
  • Bootloader开启了串口空闲中断,跳转前使用__set_PRIMASK(1);__disable_irq();禁用中断然后跳转APP(app中也加了开中断的代码)均失败;必须使用__HAL_UART_DISABLE_IT(&huart1, UART_IT_IDLE);禁用中断才能正常跳转。前面两个禁止中断的API不是全局有效吗?
  • Bootloader中QSPI时钟源经过如下测试发现必须选择HCLK3才能跳转成功,在H7参考手册上看到HCLK3是复位后的默认值,是这个原因吗?为何boot和app选择一样的QSPI时钟源也不能跳转呢?
  • Bootloader和APP的QSPI频率不同或者时钟源不是同一个的时候,APP运行后QSPI以那边的时钟为准呢?


qc.jpg

qspc.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2020-6-13 15:28:58 | 显示全部楼层
1、应该你的APP里面有其它开启全局中断的地方。跳转前最好清空所有中断NVIC和Pend标志。
2、这个估计是因为你的APP里面的时钟设置影响了正常运行,APP里面不要在重复的配置时钟试试,这个要排查下。
3、同上。
回复

使用道具 举报

0

主题

57

回帖

57

积分

初级会员

积分
57
 楼主| 发表于 2020-6-13 16:20:20 | 显示全部楼层
eric2013 发表于 2020-6-13 15:28
1、应该你的APP里面有其它开启全局中断的地方。跳转前最好清空所有中断NVIC和Pend标志。
2、这个估计是因 ...

1. APP是用cube生成的,只控制了io,中断的话应该只有systick。还是把中断都清空安全一些
2. 测试表格里7、8项BL与APP时钟源保持一致,第9项直接没开启QSPI,都引导失败了。
上面这几个问题可能是要等调好直接用IDE仿真下载才好找根本原因
回复

使用道具 举报

26

主题

70

回帖

148

积分

初级会员

积分
148
发表于 2022-1-8 08:29:44 | 显示全部楼层
我现在也遇到你问题3那样的情况, 做了跟你一样的各种测试, 选用HCLK3时是可以的,
跳转到APP的main()前还有个SystemInit()函数会恢复时钟配置, 会不会是因为这里恢复后导致Qspi停止了就程序崩溃呢???

你最后找到原因了吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 01:32 , Processed in 0.283162 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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