硬汉嵌入式论坛

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

[STM32H7] STM32H7B0 片外运行代码时,低功耗模式的障碍。

[复制链接]

26

主题

23

回帖

101

积分

初级会员

积分
101
发表于 2022-4-1 09:08:12 | 显示全部楼层 |阅读模式
像H7B0  H750 之类的MCU 代码可以放片外FLASH ,内部SRAM 又够大,写软件简直可以横着走,自由多了。但最近在H7B0上发现个问题。

片内FLASH放引导程序,只设置下QSPI FLASH 为内存映射模式,然后就跳转到片外FLASH ,再也不回去了。这样简便易行。但在便携式应用中,关机需要进入低功耗模式,常常是STOP模式
如果不能给QSPI 断电或者不能停QSPI时钟,功耗就小不了。 我试过,PC跳到片外FLASH后,啥也不干,直接就进入STOP模式,耗电7.5mA。  同一块板子, 在片内FLASH上就进入STOP模式,耗电1m以内。 排除各种IO没有设置的因素, 这个耗电差别是巨大的。

似乎解决的办法是:  片内片外代码放在一个工程下编译。从片内上电运行,设置好QSPI FLASH ,PC跳到片外运行。要关机,PC先跳回片内,停掉QSPI 时钟,再进入STOP模式.  中断服务程序放片内。     可行吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106769
QQ
发表于 2022-4-1 09:59:18 | 显示全部楼层
可行。

混合运行模式搞你这个也贼方便。

想在内部Flash,内部SRAM,外部QSPI,  外部RAM等均可以。

爽,一种非常给力的STM32H7内部Flash和QSPI Flash混合运行程序的方式,不再需要用户单独制作BOOT和APP
https://www.armbbs.cn/forum.php? ... 1011&fromuid=58
(出处: 硬汉嵌入式论坛)



回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2022-4-1 10:00:18 | 显示全部楼层
回复

使用道具 举报

26

主题

23

回帖

101

积分

初级会员

积分
101
 楼主| 发表于 2022-4-1 22:20:54 | 显示全部楼层
eric2013 发表于 2022-4-1 09:59
可行。

混合运行模式搞你这个也贼方便。

多谢指点。感觉这种混合运行方式很有优势。

在H7B0上试了一下。之前我是BOOT+APP的方式。现在选择部分代码下载到内部FLASH . 单步能跑几步证明下载是成功的。
但是,执行完 void SystemInit (void) 出来后,
有这么两句汇编:
                 LDR     R0, =__main
                 BX      R0
执行完,就直接到 void HardFault_Handler(void) 了。
这个时候,都还没来得及设置QSPI FLASH.
这个 __main 是个什么东西,应该不是 我的main()函数吧,我的main()函数的的确确是在片内FLASH. 那它在哪个文件里呢? 我好把它放到片内FLASH上。
回复

使用道具 举报

26

主题

23

回帖

101

积分

初级会员

积分
101
 楼主| 发表于 2022-4-2 09:58:27 | 显示全部楼层
很诡异,在Project中,所有文件夹都选了0X08000000~  的片内FLASH ,  编译也没有提示超出。 只要勾选了
ROM1  0X900000000,一运行 就必定 进入到 void HardFault_Handler(void) 了。

.map 文件看了一下,只要勾选了片外FLASH, 哪怕没有 实际代码,都会出现
    __decompress                             0x90000001   Thumb Code     0  __dczerorl2.o(.text)
    __decompress1                            0x90000001   Thumb Code    86  __dczerorl2.o(.text)
这是什么东西?
回复

使用道具 举报

26

主题

23

回帖

101

积分

初级会员

积分
101
 楼主| 发表于 2022-4-2 23:20:05 | 显示全部楼层
问题奇怪地消失了:取消 ROM1  0X900000000勾选。再下载运行,居然没进 HardFault 。混合运行成功了。
看来,这种下载方式,不能片内 片外 同时勾选。
接下来在片内FLASH上,让它进入STOP模式。果然电流降到了2.5mA. 虽然还是有点大,但比片外FLASH 进入STOP的 7.5mA的电流可小多了

进入STO[P 模式之前,QSPI FLASH 能不能处理一下, 让系统更省电?   还要再研究一下。
回复

使用道具 举报

0

主题

34

回帖

34

积分

新手上路

积分
34
发表于 2024-2-25 22:57:01 | 显示全部楼层
最近我也在使用STM32H7B0,用了RTX5,还驱动了一块屏幕,也要做低功耗。不知道RTX5系统做低功耗运行,有没有什么好办法。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106769
QQ
发表于 2024-2-26 08:20:49 | 显示全部楼层
登云钓月 发表于 2024-2-25 22:57
最近我也在使用STM32H7B0,用了RTX5,还驱动了一块屏幕,也要做低功耗。不知道RTX5系统做低功耗运行,有没 ...

RTX5支持低功耗模式。看他们官方的help文档就行,有个设置项的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 10:36 , Processed in 0.325300 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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