【STM32H7S78-DK】③导入官方工程文件编译正常调试报错【已解决】
[复制链接]
本帖最后由 cc1989summer 于 2024-10-1 21:46 编辑
如题:
导入官方工程GPIO_IOToggle。一路默认下去。
编译是正常的。
但点击Debug,就报错了
调试器的设置都是默认的。
那这个报错怎么解决呢,请教各位。
Break at address "0x8000844" with no debug information available, or outside of program code.
(自己新建一个全新的工程就一切正常)
这是新建工程:Flash启动
这是官方例程GPIO_IOToggle,看起来是从外部SPI启动?那怎么样才能消除错误呢?
又经过一晚上的折腾,终于搞定了。
其实主要还是没有钻研现有资料。
在官方例程GPIO_IOToggle的Doc文件夹中,有README.md文件,对本项目做了详细说明,以及如何使用本项目。
## <b>GPIO_IOToggle Example Description</b>
How to configure and use GPIOs through the HAL API.
PO.01, PO.05, PM.02 and PM.03 IOs (configured in output pushpull mode) toggle in a forever loop.
On STM32H7S78-DK board these IOs are connected to LD1, LD2, LD3 and LD4.
(本例程从外部Flash存储器运行,他从第一个Boot状态启动,然后由Boot转交)
This example runs from the external Flash memory. It is launched from a first boot stage and inherits from this boot project
configuration (caches, MPU regions [regions 0, 1 and 2 here], system clock at 600 MHz and external memory interface at the highest speed).
Note that the boot part is automatically downloaded from the IDE environment via the board project Templates/Template_XIP/Binary/Boot_XIP.hex file.
这里要用到的文件来自 en.stm32cubeh7rs-v1-1-0.zip
运行结果:
其实我们的坛友 不爱胡萝卜的仓鼠 已经实操过了,大家可以参考。
https://bbs.eeworld.com.cn/thread-1294067-1-1.html
STM32H7S7L8这个芯片内部Flash设计的比较小,只有64K,它的主要程序一般情况需要存放在外部Flash,它提供了高速的XSPI接口以方便从外部Flash加载程序,同时支持在下载和加载程序的过程中对存放在外部Flash代码进行加密解密。
通过高速的XSPI接口 连接外部的Flash,可以使设计的程序扩展空间非常大,不再需要顾虑片内Flash的容量不足;
然后在CubeMX中 也对该系列芯片进行了深度支持,
在CubeMX中, 创建该系列芯片时,与常规的芯片环境相比,增加了许多新的选项.
第1项Boot 就是片内Flash的工程代码;
第2项Appli 就是片外Flash的工程代码;
XIP技术
XIP,executed in place,本地执行。操作系统采用这种系统,可以不用将内核或执行代码拷贝到内存,而直接在代码的存储空间直接运行。采用这样的技术既可以节省可用内存又可以减少加载的时间。应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。flash内执行是指nor flash 不需要初始化,可以直接在flash内执行代码。但往往只执行部分代码,比如初始化RAM.比如在arm处理器中,Nor flash就存放了引导系统启动的Bootloader,不过大小比较小。
下图是STM32H7S7L8的几种启动模式。(常用的就是第2种)
|