这个硬件错误是什么情况,怎么查找问题?
本帖最后由 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
有点怕怕了,要用什么优化等级,什么时候又会出现这个硬件异常? ...
这里貌似工程建立时没配置好,可否把工程贴一下,我们帮忙看一下。 或者直接调用at32 421 template工程,只要先调用usart init函数,就可以直接使用printf函数了。 muyichuan2012 发表于 2020-12-27 12:04
或者直接调用at32 421 template工程,只要先调用usart init函数,就可以直接使用printf函数了。 ...
管的很紧,代码就不贴了
单元调试printf 调用一直正常,整合之后才出现这个问题.
怀疑是优化不足导致内存不够用,堆栈溢出了吧... 本帖最后由 457878 于 2020-12-28 11:15 编辑
上次提到一个下载警告(不是编译警告),说不定跟这个也有关呢
https://bbs.21ic.com/icview-3059162-1-1.html 可以改大堆栈试试,或者加一个检测变量在堆栈栈底地址 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'0b180x1000<Block>
CSTACK uninit 0x2000'0b180x1000<Block tail>
- 0x2000'1b180x1000
*** STACK USAGE
Call Graph Root CategoryMax UseTotal Use
----------------------------------------
Program entry 912 912
Uncalled function 264 3 520
本帖最后由 457878 于 2020-12-29 10:30 编辑
startup.s 文件吗? 怎么操作呢?
我看你使用的IAR编译器,那可以在如下图所示修改
楼上正解 本帖最后由 457878 于 2021-1-3 13:38 编辑
只要改堆栈(0x1001),下载就提示这个【编译正常】....
想用2个变量监视堆栈的栈底和栈顶,代码怎么写?
这个可以的,你需要将工程贴出来,然后,一起弄一下,看看。 单片小菜 发表于 2021-1-4 11:23
这个可以的,你需要将工程贴出来,然后,一起弄一下,看看。
不能贴,贴了就泄密了...
页:
[1]