真心求助,ZI-data那么大,进入HardFault_Handler

2019-07-20 14:09发布

原子哥,真心求助。我在使用探索者开发板,在我的程序中我只是用了usb、lwip、ucos、fatfs和sd等,我在调试的过程中先没有用usb和lwip,就读取sd卡中的数据,
经过编译Program Size: Code=71848 RO-data=3096 RW-data=1312 ZI-data=1241624(我就读个sd卡的文件,为什么ZI-data这么大),仿真的时候直接进入HardFault_Handler。
1.在程序中我定义了一个结构体,有点大,用来存放参数的,每当我使用它编译完仿真后就进入HardFault_Handler,如果没有使用就没事,是由于结构体太大导致越界吗?需要给全局的结构体变量申请内存吗?
2.我在Option for target中把IRAM1  的size 从0x10000改成了0x40000,如果不改编译不过去,出现..OBJTEST.axf: Error: L6407E: Sections of aggregate size 0x20834 bytes could not fit into .ANY selector(s).这是为什么呢?这需要怎么设置?


这块非常糊涂,不是很清楚,希望大家多指导!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
cromarti
1楼-- · 2019-07-21 12:03
涛子疯了 发表于 2017-6-2 09:15
..OBJTEST.axf: Error: L6407E: Sections of aggregate size 0x20834 bytes could not fit into .ANY s ...

这个警告就是内存溢出了,如果你内存管理实验圈的内存过大就会出这个错误。解决方法是把malloc.h里面的mem_max_size改小,而RAMsize是根据芯片定义不能变的。另外全局变量存放在内存,局部变量存放在栈,所以要使用超大局部变量的时候才要申请内存以免栈溢出导致hardfault

一周热门 更多>