完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
有两个问题:
问题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到底在哪定义了? 谢谢各位大侠~ |
|
相关推荐
1个回答
|
|
__DEFAULT_STACK_SIZE#endif&nbs
p; .section .stack .global __initial_sp .type __initial_sp, %object .size __initial_sp, 4__initial_sp: .word Stack_Mem_End . . . . . . . . . . . . . .section .heap .global __HeapLimit .type __HeapLimit, %object .size __HeapLimit, 4__HeapLimit: .word Heap_Mem_End==========================================这些内容和我的问题是否有相关性?问题2.我在 linux 下编译程序, 编译后使用 openocd 下载程序, 但是程序一运行就是 Bus Error。请问这个问题是由 malloc 的最大 stack 的大小问题引起的吗?有什么可能的解决办法吗? |
|
|
|
只有小组成员才能发言,加入小组>>
3260 浏览 9 评论
2940 浏览 16 评论
3442 浏览 1 评论
8943 浏览 16 评论
4035 浏览 18 评论
1073浏览 3评论
557浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
550浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2285浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1844浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-6 02:12 , Processed in 1.045697 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号