sean4194304 发表于 2022-4-1 09:08:12

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

像H7B0H750 之类的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模式.中断服务程序放片内。   可行吗?

eric2013 发表于 2022-4-1 09:59:18

可行。

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

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

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



王海靖 发表于 2022-4-1 10:00:18

可行的。 爽,一种非常给力的STM32H7内部Flash和QSPI Flash混合运行程序的方式,不再需要用户单独制作BOOT和APP

sean4194304 发表于 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上。

sean4194304 发表于 2022-4-2 09:58:27

很诡异,在Project中,所有文件夹都选了0X08000000~的片内FLASH ,编译也没有提示超出。 只要勾选了
ROM10X900000000,一运行 就必定 进入到 void HardFault_Handler(void) 了。

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

sean4194304 发表于 2022-4-2 23:20:05

问题奇怪地消失了:取消 ROM10X900000000勾选。再下载运行,居然没进 HardFault 。混合运行成功了。
看来,这种下载方式,不能片内 片外 同时勾选。
接下来在片内FLASH上,让它进入STOP模式。果然电流降到了2.5mA. 虽然还是有点大,但比片外FLASH 进入STOP的 7.5mA的电流可小多了

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

登云钓月 发表于 2024-2-25 22:57:01

最近我也在使用STM32H7B0,用了RTX5,还驱动了一块屏幕,也要做低功耗。不知道RTX5系统做低功耗运行,有没有什么好办法。

eric2013 发表于 2024-2-26 08:20:49

登云钓月 发表于 2024-2-25 22:57
最近我也在使用STM32H7B0,用了RTX5,还驱动了一块屏幕,也要做低功耗。不知道RTX5系统做低功耗运行,有没 ...

RTX5支持低功耗模式。看他们官方的help文档就行,有个设置项的
页: [1]
查看完整版本: STM32H7B0 片外运行代码时,低功耗模式的障碍。