有两个问题: 
问题1.  
程序在裸机情况下, 我用的是 arm-none-eabi-gcc 工具链, 里面的 malloc 是 Newlib-Nano 实现的, 现在的问题是, 去哪里设定 malloc的最大 stack 的大小?  是不是在 startup_M451Series.S 里修改?  
 
针对问题1. 
我看到此文件有以下内容: 
 
============================= 
 
#ifdef __STACK_SIZE 
        .equ        Stack_Size, __STACK_SIZE 
#else 
        .equ        Stack_Size, 0x00000800 
============================= 
#ifdef __HEAP_SIZE 
        .equ        Heap_Size, __HEAP_SIZE 
#else 
        .equ        Heap_Size, 0x00000100 
 
于是我修改了那个文件的 0x00000800和 0x00000100这两个值, 最后编译出来的hex的md5(哈希校验值) 跟改之前编译的hex的md5 一样, 我就在想, 会不是是哪里定义了这两个变量(__STACK_SIZE和 __HEAP_SIZE), 导致我这里改了也没用. 于是我全局查找关键字, 也没查到哪里定义了这两个宏.... 这就奇怪了, 我改了代码, 可是编译后的hex跟改前的竟然一模一样. 为了排除 makefile 写漏了依赖, 我把所有目标删除, 从 0 开始编译. 结果也是一样, hex 没有任何不同.  
 
问题2. 
请问这个 __STACK_SIZE __HEAP_SIZE到底在哪定义了? 谢谢各位大侠~ |