[AT32F421] 这个硬件错误是什么情况,怎么查找问题?

[复制链接]
 楼主| 457878 发表于 2020-12-26 16:33 | 显示全部楼层 |阅读模式
本帖最后由 457878 于 2020-12-26 17:33 编辑

An MPU or Execute Never (XN) default memory map access violation has occurred on an instruction fetch (CFSR.IACCVIOL, MMFAR).

断点跟踪到一句printf语句时发生此硬件异常: printf("******************");
409835fe6f49e569f0.png 901255fe6f5330bea1.png 498905fe6f89e4dbdd.png 392135fe6f86cf1a8e.png
以上是【编译优化 = None】 时出错,【优化等级 = Medium】就OK
有点怕怕了,要用什么优化等级,什么时候又会出现这个硬件异常? ...

muyichuan2012 发表于 2020-12-27 11:57 来自手机 | 显示全部楼层
这里貌似工程建立时没配置好,可否把工程贴一下,我们帮忙看一下。
muyichuan2012 发表于 2020-12-27 12:04 来自手机 | 显示全部楼层
或者直接调用at32 421 template工程,只要先调用usart init函数,就可以直接使用printf函数了。
 楼主| 457878 发表于 2020-12-28 11:10 | 显示全部楼层
muyichuan2012 发表于 2020-12-27 12:04
或者直接调用at32 421 template工程,只要先调用usart init函数,就可以直接使用printf函数了。 ...

管的很紧,代码就不贴了
单元调试printf 调用一直正常,整合之后才出现这个问题.
怀疑是优化不足导致内存不够用,堆栈溢出了吧...

评论

有可能,请在.s文件中把堆栈加大点试试  发表于 2020-12-28 12:58
 楼主| 457878 发表于 2020-12-28 11:14 | 显示全部楼层
本帖最后由 457878 于 2020-12-28 11:15 编辑

上次提到一个下载警告(不是编译警告),说不定跟这个也有关呢
https://bbs.21ic.com/icview-3059162-1-1.html
084425 发表于 2020-12-28 19:31 来自手机 | 显示全部楼层
可以改大堆栈试试,或者加一个检测变量在堆栈栈底地址
 楼主| 457878 发表于 2020-12-29 10:27 | 显示全部楼层
084425 发表于 2020-12-28 19:31
可以改大堆栈试试,或者加一个检测变量在堆栈栈底地址

怎么查看堆栈栈底在什么位置? 怎么操作呢?
map里面所有关于stack的内容抠出:
CSTACK$$Base            0x2000'0b18          --   Gb  - Linker created -
CSTACK$$Limit           0x2000'1b18          --   Gb  - Linker created -

define block CSTACK with size = 4K, alignment = 8 { };
define block HEAP with size = 4K, alignment = 8 { };

  CSTACK                      0x2000'0b18  0x1000  <Block>
    CSTACK           uninit   0x2000'0b18  0x1000  <Block tail>
                            - 0x2000'1b18  0x1000

*** STACK USAGE
  Call Graph Root Category  Max Use  Total Use
  ------------------------  -------  ---------
  Program entry                912        912
  Uncalled function            264      3 520


898485fea90b7522ca.png


 楼主| 457878 发表于 2020-12-29 10:28 | 显示全部楼层
本帖最后由 457878 于 2020-12-29 10:30 编辑

startup.s 文件吗? 怎么操作呢?
228245fea944ea8329.png
muyichuan2012 发表于 2020-12-29 13:05 | 显示全部楼层
我看你使用的IAR编译器,那可以在如下图所示修改 微信图片_20201229130456.jpg
084425 发表于 2021-1-1 22:08 | 显示全部楼层
楼上正解
 楼主| 457878 发表于 2021-1-3 12:09 | 显示全部楼层
本帖最后由 457878 于 2021-1-3 13:38 编辑

只要改堆栈(0x1001),下载就提示这个【编译正常】....
403835ff1433301829.png
20125ff1575f1e005.png

想用2个变量监视堆栈的栈底和栈顶,代码怎么写?


评论

[url=home.php?mod=space&uid=1886524]@muyichuan2012[/url] :将Flash部分填满,优化等级改为低,目前运行良好  发表于 2021-1-6 00:23
可否私信我留个微信,我们请技术来协助,这样效率高一点。  发表于 2021-1-4 09:49
单片小菜 发表于 2021-1-4 11:23 | 显示全部楼层
这个可以的,你需要将工程贴出来,然后,一起弄一下,看看。
 楼主| 457878 发表于 2021-1-6 00:21 | 显示全部楼层
单片小菜 发表于 2021-1-4 11:23
这个可以的,你需要将工程贴出来,然后,一起弄一下,看看。

不能贴,贴了就泄密了...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:不正常人类

270

主题

885

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:不正常人类

270

主题

885

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部