【STM32H7S78-DK】③导入官方工程文件编译正常调试报错【已解决】
本帖最后由 cc1989summer 于 2024-10-1 21:46 编辑<p> </p>
<p>如题:</p>
<p>导入官方工程GPIO_IOToggle。一路默认下去。</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>编译是正常的。</p>
<p> </p>
<div style="text-align: center;">
<div style="text-align: center;"></div>
<div style="text-align: center;"> </div>
<p> </p>
</div>
<p>但点击Debug,就报错了</p>
<p> </p>
<p> </p>
<div style="text-align: center;"></div>
<div style="text-align: center;"> </div>
<div style="text-align: center;"> </div>
<div style="text-align: center;"> </div>
<p> </p>
<p>调试器的设置都是默认的。</p>
<p> </p>
<p>那这个报错怎么解决呢,请教各位。</p>
<p> </p>
<p><span style="font-size:18px;">Break at address "0x8000844" with no debug information available, or outside of program code.</span></p>
<p> </p>
<p> </p>
<p><span style="font-size:18px;"><strong><span style="color:#e74c3c;">(自己新建一个全新的工程就一切正常)</span></strong></span></p>
<p> </p>
<p>这是新建工程:Flash启动</p>
<p> </p>
<p> </p>
<p> </p>
<p><strong>这是官方例程GPIO_IOToggle,看起来是从外部SPI启动?那怎么样才能消除错误呢?</strong></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<hr />
<p> </p>
<p>又经过一晚上的折腾,终于搞定了。</p>
<p> </p>
<p> </p>
<p> </p>
<p>其实主要还是没有钻研现有资料。</p>
<p>在官方例程<strong>GPIO_IOToggle</strong>的Doc文件夹中,有README.md文件,对本项目做了详细说明,以及如何使用本项目。</p>
<p> </p>
<p>## <b>GPIO_IOToggle Example Description</b></p>
<p> </p>
<p>How to configure and use GPIOs through the HAL API.</p>
<p> </p>
<p>PO.01, PO.05, PM.02 and PM.03 IOs (configured in output pushpull mode) toggle in a forever loop.</p>
<p>On STM32H7S78-DK board these IOs are connected to LD1, LD2, LD3 and LD4.</p>
<p> </p>
<p>(本例程从外部Flash存储器运行,他从第一个Boot状态启动,然后由Boot转交)</p>
<p><span style="color:#27ae60;"><strong>This example runs from the external Flash memory. It is launched from a first boot stage and inherits from this boot project</strong></span></p>
<p><span style="color:#27ae60;"><strong>configuration</strong></span> (caches, MPU regions , system clock at 600 MHz and external memory interface at the highest speed).</p>
<p>Note that the boot part is automatically downloaded from the IDE environment via the board project Templates/Template_XIP/Binary/Boot_XIP.hex file.</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>这里要用到的文件来自 <strong> en.stm32cubeh7rs-v1-1-0.zip</strong></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<div></div>
<p> </p>
<p>运行结果:</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>其实我们的坛友 <a href="https://home.eeworld.com.cn/space-uid-1005580.html" target="_blank">不爱胡萝卜的仓鼠</a> 已经实操过了,大家可以参考。</p>
<p> </p>
<p><a href="https://bbs.eeworld.com.cn/thread-1294067-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1294067-1-1.html</a></p>
<p> </p>
<p> </p>
<p><strong>STM32H7S7L8</strong>这个芯片内部Flash设计的比较小,只有64K,它的主要程序一般情况需要存放在外部Flash,它提供了高速的XSPI接口以方便从外部Flash加载程序,同时支持在下载和加载程序的过程中对存放在外部Flash代码进行加密解密。<br style="overflow-wrap:break-word; color:#333333;Microsoft Yahei", Avenir, "Segoe UI", "Hiragino Sans GB", STHeiti, "Microsoft Sans Serif", "WenQuanYi Micro Hei", "sans-serif" white-space:normal; background-color:#ffffff" />
通过高速的XSPI接口 连接外部的Flash,可以使设计的程序扩展空间非常大,不再需要顾虑片内Flash的容量不足;<br style="overflow-wrap:break-word; color:#333333;Microsoft Yahei", Avenir, "Segoe UI", "Hiragino Sans GB", STHeiti, "Microsoft Sans Serif", "WenQuanYi Micro Hei", "sans-serif" white-space:normal; background-color:#ffffff" />
然后在CubeMX中 也对该系列芯片进行了深度支持,<br style="overflow-wrap:break-word; color:#333333;Microsoft Yahei", Avenir, "Segoe UI", "Hiragino Sans GB", STHeiti, "Microsoft Sans Serif", "WenQuanYi Micro Hei", "sans-serif" white-space:normal; background-color:#ffffff" />
在CubeMX中, 创建该系列芯片时,与常规的芯片环境相比,增加了许多新的选项.</p>
<p>第1项Boot 就是片内Flash的工程代码;<br style="overflow-wrap:break-word; color:#333333;Microsoft Yahei", Avenir, "Segoe UI", "Hiragino Sans GB", STHeiti, "Microsoft Sans Serif", "WenQuanYi Micro Hei", "sans-serif" white-space:normal; background-color:#ffffff" />
第2项Appli 就是片外Flash的工程代码;</p>
<p> </p>
<p><strong>XIP技术</strong><br />
XIP,executed in place,本地执行。操作系统采用这种系统,可以不用将内核或执行代码拷贝到内存,而直接在代码的存储空间直接运行。采用这样的技术既可以节省可用内存又可以减少加载的时间。应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。flash内执行是指nor flash 不需要初始化,可以直接在flash内执行代码。但往往只执行部分代码,比如初始化RAM.比如在arm处理器中,Nor flash就存放了引导系统启动的Bootloader,不过大小比较小。</p>
<p> </p>
<p> </p>
<p> </p>
<p>下图是<strong>STM32H7S7L8的几种启动模式。</strong>(常用的就是第2种)</p>
<p> </p>
<p> </p>
<p> </p>
<p>不想是编译器的问题</p>
<p>估计是例程和当前IDE版本有兼容问题吧</p>
Jacktang 发表于 2024-9-30 07:34
不想是编译器的问题
<p>编译是成功的,就是下载异常。</p>
<p>自己新建工程不用例程,编译下载都正常。</p>
wangerxian 发表于 2024-9-30 13:23
估计是例程和当前IDE版本有兼容问题吧
<p>但从提示信息来看,像是内存问题。</p>
<p>例程有两个工程,需要先下载boot工程,再下载app工程就行了。没有这么麻烦!</p>
<div class='shownolgin' data-isdigest='no'>lugl4313820 发表于 2024-10-1 10:07
例程有两个工程,需要先下载boot工程,再下载app工程就行了。没有这么麻烦!
<p><img src="https://bbs.eeworld.com.cn/data/attachment/forum/202409/30/225334vxz8dqzxtxhqdq4q.png.thumb.jpg" /></p>
<p> </p>
<p>没有boot工程呢,仅有Appli</p>
</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <div class='shownolgin' data-isdigest='no'>cc1989summer 发表于 2024-9-30 19:11
但从提示信息来看,像是内存问题。
<p>所以还是boot的问题导致的咯</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>wangerxian 发表于 2024-10-8 10:55
所以还是boot的问题导致的咯
<p>是滴。:loveliness:</p>
</div><script>showreplylogin();</script>
页:
[1]