代码大小不是耗尽内存,但是代码运行异常

5文章/ 0
最后发表
summer20100514
离线
最后看到:4年8个月前
大师
加入:2014-12-30 05:01
代码大小不是耗尽内存,但是代码运行异常

你好,我在工作项目DA14580_BEACON_3.40.6最近,我发现一些奇怪的事情。我自己添加一些代码,如外部中断大头针,加密处理程序等等。当CFG_SPI_FLASH未定义,代码运行良好,所有的结果是我希望得到的东西。但是当我定义CFG_SPI_FLASH,代码运行奇怪的是我看不到的逻辑,和什么代码编译成功。
所以,我的问题是,真的是代码大小的限制散射文件中定义是什么?

#定义CFG_SPI_FLASH时编译结果
项目规模:代码= 25428 RO-data = 1384 RW-data = 108 ZI-data = 7388

编译结果当# undef CFG_SPI_FLASH
项目规模:代码= 22552 RO-data = 1300 RW-data = 108 ZI-data = 7300

summer20100514
离线
最后看到:4年8个月前
大师
加入:2014-12-30 05:01
我真的需要一些帮助

我真的需要一些帮助,如果有任何建议,请告诉你的好意。

布莱恩
离线
最后看到:6年5个月前
专家 主
加入:2014-10-16 18:10
当我得到编译错误

我得到编译错误当我的代码太大了。如果实际的代码太多,我将得到大量的错误,如我的帖子所示:
http://support.dialog-semiconductor.com/getting-not-enough-room-error-32..。
如果我得到另一个数据数组太大的错误。这些错误更明显,这意味着一个疲惫似乎什么8 k储罐0)保留内存和额外的0 x1000字节的RAM的“普通”。因为你没有构建错误(实际上他们发生链接)它表明有别的原因。

我知道我使它看起来像DA14580有更多的内存比通过改变散射文件这样的链接会完成,我将得到一个地图。链接失败时内存限制你不没有地图,这样你就可以看到了。另一方面过去错误的代码大小限制的情况
\ \ full_emb_sysram。axf:错误:L6407E:部分的总大小0×字节不能适应.ANY选择器(s)。
表明我短0×字节,需要缩小我的代码,那么多。减少数组大小不会帮助。

我还注意到一些奇怪的行为,在我的例子中,也许其他一些我读过这个论坛通常hardfaults或总系统死因堆栈溢出。看看如果你的一个数据数组是位于前面的空间分配的一些系统堆在映射文件中。我有几个病例,我见过出现问题时是这样(通常hardfault)。因为一个没有控制位置,我唯一能做的就是玩的代码和希望链接器布局项目不同。在一个案例中变化从104年到100字节数组导致链接器移动远离non-retention-memory堆数组。然后一切都立竿见影。在104系统很难指责。唯一的呼吁数组是memset(数组,0,BUF_SIZE)。地图上所述BUF_SIZE是正确的。注意,这些都是通过经验; I have no explanation and have not received any feedback yet from Dialog.

summer20100514
离线
最后看到:4年8个月前
大师
加入:2014-12-30 05:01
首先,谢谢你

首先,谢谢你的详细解释,你是一个好人。第二,我发现原因是periph_init ();不叫定期3.40.2项目,因此,我的外部销中断不能被配置一般,因为它曾经是。是的,它不是内存限制但3.40.6和3.40.2版本之间发生一些变化,导致我的问题。在某种程度上希望能帮助你。

summer20100514
离线
最后看到:4年8个月前
大师
加入:2014-12-30 05:01
最后,我发现真正的

最后,我发现真正的原因periph_init ();不叫定期的3.40.2项目。因为SPI FLASH 5 s禁用睡眠模式,但我评论关闭电源定时器,所以整个系统不会睡眠模式了!