Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Bootloader
QSPI
STM32H743
关于bootloader跳转到app,app在QSPI中运行的问题总结
发布于 2020-12-18 11:25:54 浏览:4740
订阅该版
自己手头有一块H743的开发板,外挂了一个W26Q64的FLASH在QSPI总线上。虽然H743有2MB的内部FLASH空间,但是总是垂涎于QSPI总线上那8MB的空间,人性的贪婪啊!于是乎给自己挖了一个坑,要像H750那样,将app的代码放在qspi中,通过bootloader引导到QSPI上运行。没想到这个想法就给自己挖了一个坑,还不小的一个坑,花了不少时间和精力,总算是把坑填平了,现在分享出来,希望后面的小伙伴遇到问题的时候多一个思路解决问题。 首先,参考Art_Pi的参考项目,中的simple_bootloader,自己写了一个bootloader,这个很简单的一个bootloader,就是上电初始化之后跳转到QSPI执行app。然后再写一个APP,也是很简单,就是led循环闪烁+打印消息循环打印。再准备好外部SPI下载算法。然后将生成的bin都烧录进去,走你!完蛋,完全没有反应。 仔细一查,Art_Pi上使用的是W25Q128,我的板子上用的是W25Q64,自己又懒不想去改程序配置。就又找了另外一个裸机bootloader来试。 裸机bootloader和裸机app烧录进去,成功! 裸机bootloader和rtt_app烧录进去,不成功! 这是为什么呢?参考了几篇大佬的网文,慢慢找思路 [这个很重要] (http://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=1073902&page=1&authorid=530197) [这个很重要] (http://www.armbbs.cn/forum.php?mod=viewthread&tid=98231) 下面开始分析自己的问题 STM32H743VIT6开发板自带的简单裸机bootloader的时钟配置 主频率240MHz,HCLK3 120MHz,QSPI使用HCLK3时钟  对应的代码中的QSPI初始化代码  这里的时钟应该是对应于前面main.c文件中的说明  对应的裸机app的时钟配置  从这里可以看到QSPI的频率和bootloader不一样,但不会超过bootloader的设置 实验: 1.自己建的RTTHREAD项目,如果将drv_clk.c文件中的时钟配置函数配置的和bootloader一样,则可以正常跳转到QSPI运行。  2. 自己建的RTTHREAD项目,如果将drv_clk.c文件中的时钟配置函数配置的和app一样,则可以正常跳转到QSPI运行。 3. 自己建的RTTHREAD项目,如果将drv_clk.c文件中的时钟配置函数配置的主频480MHz HCLK3240MHz,则没办法跳转到QSPI运行,会出现hardfault错误。 结合网上大佬的贴子  里面提到QSPI时钟默认选择HCLK3作为时钟源,因此bootloader跳转到app的时候,相当于一次复位操作,所以,最好就是bootloader和app都选择HCLK3作为QSPI的时钟源。应该能跳转成功。 另外再根据上面的实验,应该是app的时钟配置,最终得到的HCLK3的频率不能超过bootloader的配置。因为在app中实际上是不能去配置QSPI的,因为此时QSPI已经作为外挂FLASH来使用,跑代码。因此不能再去配置,否则可能引起错误。 但是让H743降频使用总觉得很别扭,放着480MHz不用,用240MHz,不行不行! 接下来尝试提高bootloader的时钟配置频率 现在修改bootloader的时钟配置,更改为下面的代码模式,将配置主频率为480MHz,HCLK3 240MHz QSPI还是使用HCLK3 240MHz  配置完成之后编译通过,下载后,没成功,debug一下之后发现出现hardfault 应该是此时的QSPI时钟没改,还是2分频,那就相当于是240/2=120MHz 尝试一下修改QSPI的初始化代码  改成4分频,那就是240/4=60MHz,编译通过下载,成功跑起来。此时的APP设置主频还是前面的降频使用的。 尝试提高APP的主频率  编译通过下载,成功跑起! **所以,结论就是,bootloader中设置QSPI的时钟频率是多少,要根据具体的SPI型号来定。APP中的QSPI时钟频率不能高于bootloader中的配置**。
6
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
adaphoto
这家伙很懒,什么也没写!
文章
25
回答
44
被采纳
5
关注TA
发私信
相关文章
1
Linux下通过USBTinyISP为Arduino开发板烧?写Bootloader
2
请教修改NVIC后RTT调度函数失效的问题[已解决 bootloader中打开了不必要的中断]
3
进入bootloader的方式探讨
4
求助:IAP里的APP使用的RTT,跳转后出错。[已解决]
5
有没有人在STM32F103上用UART IAP跑过RT-Thread?
6
想做网口的IAP远程升级,不知可不可行
7
IAP问题
8
[已解决]请教基于RTT的IAP程序切换到应用程序不成功的问题(基于STM32F4)?
9
stm32f4xx-----IAP移植APP程序需要注意的地方
10
在调试IAP网络升级遇到跳转之后bootloader程序网络不通
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
8
个答案
2
次被采纳
KunYi
8
个答案
1
次被采纳
三世执戟
7
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
chenyaxing
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
3
次点赞
YZRD
1
篇文章
2
次点赞
Days
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部