打印
[AT32F421]

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

[复制链接]
2029|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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("******************");

以上是【编译优化 = 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 调用一直正常,整合之后才出现这个问题.
怀疑是优化不足导致内存不够用,堆栈溢出了吧...

使用特权

评论回复
评论
muyichuan2012 2020-12-28 12:58 回复TA
有可能,请在.s文件中把堆栈加大点试试 
5
457878|  楼主 | 2020-12-28 11:14 | 只看该作者
本帖最后由 457878 于 2020-12-28 11:15 编辑

上次提到一个下载警告(不是编译警告),说不定跟这个也有关呢
https://bbs.21ic.com/icview-3059162-1-1.html

使用特权

评论回复
6
084425| | 2020-12-28 19:31 | 只看该作者
可以改大堆栈试试,或者加一个检测变量在堆栈栈底地址

使用特权

评论回复
7
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





使用特权

评论回复
8
457878|  楼主 | 2020-12-29 10:28 | 只看该作者
本帖最后由 457878 于 2020-12-29 10:30 编辑

startup.s 文件吗? 怎么操作呢?

使用特权

评论回复
9
muyichuan2012| | 2020-12-29 13:05 | 只看该作者
我看你使用的IAR编译器,那可以在如下图所示修改

使用特权

评论回复
10
084425| | 2021-1-1 22:08 | 只看该作者
楼上正解

使用特权

评论回复
11
457878|  楼主 | 2021-1-3 12:09 | 只看该作者
本帖最后由 457878 于 2021-1-3 13:38 编辑

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



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


使用特权

评论回复
评论
457878 2021-1-6 00:23 回复TA
@muyichuan2012 :将Flash部分填满,优化等级改为低,目前运行良好 
muyichuan2012 2021-1-4 09:49 回复TA
可否私信我留个微信,我们请技术来协助,这样效率高一点。 
12
单片小菜| | 2021-1-4 11:23 | 只看该作者
这个可以的,你需要将工程贴出来,然后,一起弄一下,看看。

使用特权

评论回复
13
457878|  楼主 | 2021-1-6 00:21 | 只看该作者
单片小菜 发表于 2021-1-4 11:23
这个可以的,你需要将工程贴出来,然后,一起弄一下,看看。

不能贴,贴了就泄密了...

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:不正常人类

270

主题

885

帖子

3

粉丝