野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18344|回复: 0

求助,教程里把堆分配到外部SRAM的程序下载以后宕机

[复制链接]
发表于 2021-8-4 12:29:11 | 显示全部楼层 |阅读模式
  如题,我用的板子是正点原子的F407开发板,外部晶振是8MHz。这个把堆分配到外部SRAM的例程,之前学标准库的时候我下载到板子上它是正常的没碰到过问题。现在学HAL库重新做这个实验就遇到大问题了,我觉得它很魔幻但是我不会解决,所以来求助各位大佬。情况如下:编译完以后我确认过map文件里边编译器给分配的地址是正常的,至少我看不出来问题不确定是否就是对的。点了下载以后问题就来了,死机了,这个时候我点下载或者是debug它都会报错说无法停止cortex-M器件,只能够按复位下载,到这里它还算是很普通的问题。我最不解的就是我按复位然后直接点debug把程序下载进去,它竟然能跑而且还是正常的,设置断点查看的时候它是没有进hardfault之类的异常中断的,退出debug模式的时候复位电路,程序还是正常的,唯独直接下载是不行的。这让我感到很魔幻,不知道什么地方出的问题。
  为了找到它的问题所在,我把定义的变量都注释掉再下载进去一步步查找,发现只要我把 uint32_t *pointer = (uint32_t*)malloc(sizeof(uint32_t)*3); 的注释取消掉编译下载,问题就会出现了。但是debug下载进去调试的时候它又没问题。我在这句之前加了一段超长的延时点亮LED,发现它并没有如预期一样亮灯一段时间后才死机,很可能就是从下载的时候就出错了,是不是因为系统时钟,堆栈大小之类的导致,现在很懵。
野火论坛202108041214324329..png 野火论坛202108041215296726..png 野火论坛202108041217099603..png 野火论坛202108041218524227..png 野火论坛202108041219362287..png 野火论坛202108041224201715..png 野火论坛202108041227393028..png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-22 19:03 , Processed in 0.051016 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表