金牌会员
 
- 积分
- 2357
- 金钱
- 2357
- 注册时间
- 2019-10-29
- 在线时间
- 380 小时
|
10金钱
本帖最后由 chenyuan 于 2020-10-20 09:23 编辑
今天碰到一个问题,我在1.c中定义了一个 uint32_t CRC32[256];存放CRC的数据,大小为1024,然后我还定义了一些全局变量,如 uint32_t ID,在一个函数中我定义了一些局部变量然后我在这个1.c文件中又定义了一个 uint32_t addr;并在在上面这个函数function引用了,之后进入调试发现跑飞了。
但是我将 uint32_t addr; 这个变量定义到2.c文件中 ,然后在1.c中 extern uint32_t addr; 结果又没跑飞。
为了测试,我将在1.c中的 uint32_t ID隐藏了,然后重新在1.c 中定义uint32_t addr,结果没跑飞;
我以为是堆栈空间溢出,然后我修改
- Stack_Size EQU 0x400
- AREA STACK, NOINIT, READWRITE, ALIGN=3
- Stack_Mem SPACE Stack_Size
- __initial_sp
- ; <h> Heap Configuration
- ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
- ; </h>
- Heap_Size EQU 0x200
- AREA HEAP, NOINIT, READWRITE, ALIGN=3
- __heap_base
- Heap_Mem SPACE Heap_Size
- __heap_limit
- PRESERVE8
- THUMB
复制代码 修改将Stack_Size 0x400改成0x600,然后恢复1.c中定义的uint32_t addr,uint32_t ID这两个变量,结果还是跑飞。
主要是这个问题:在1.c中定义了u32 CRC[256]和u32 addr;还有一些其他全局变量,运行时发现死机;
但是我将之前定义在1.c中的u32 addr定义到2.c中,然后在1.c中extern u32 addr;运行就不会死机...... 不明白这是啥原因?
现在搞不懂是啥问题了?? 望大佬指点!!!
|
|