完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
使用的是CH32V103R8T6的开发板,代码是RT-Studio上下载的EVK的例程。 对于例程中的链接脚本中_stack_size变量的作用比较疑惑 我的理解是,编译器把栈内存放到RAM开头,剩余的RAM可以分配给堆。(定义了全局变量打印地址也确认了是在RAM开头) 但链接脚本里定义了一个2K的_stack_size变量,并且在RAM的结尾把这个2K分出来不允许分配成堆内存,那这个2K的内存具体作用是什么? 链接文件开头定义:
定义堆结尾地址时用RAM结尾减去了_stack_size
|
|
相关推荐
5个回答
|
|
|
谜底就在谜面上啊; 这 2k 用来放临时变量这些应该在栈的东西,malloc 不要来摸我
|
|
|
|
|
|
不对吧,RTT的临时变量都是在线程栈里出的啊
线程栈要么是静态的,是编译器分配的,在RAM开头,要么从堆里出,无论哪种都不会到RAM结尾这2K里来的 malloc用堆不用栈我明白,我的问题是:现在RAM开头和结尾分了两段栈,开头的是编译器分配的用来存放全局变量等,这个没疑问,结尾一段是链接脚本里分了2K,这2K是干什么用的? 我测试了全局变量、局部变量,打印的地址都不在这2K里,并不是你说的“存放应该在栈里的东西” |
|
|
|
|
|
|
|
|
|
|
|
实际现象就是被分成了两个部分啊
定义的变量地址被分配在了RAM开头,链接脚本在RAM结尾又分配了2K,前面已经说的很明确了啊 如果是你说的“ 前面的只是定义了一个变量而已”岂不是和你之前说的“这 2k 用来放临时变量这些应该在栈的东西”相矛盾吗?变量到底是在RAM前面还是后面的2K? |
|
|
|
|
|
这个是中断栈吧,一是在scheduler起来之前用,二是中断时用
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1033 浏览 0 评论
2877 浏览 0 评论
图腾柱PFC无法上升至400V,且电感电流为正弦波形,但是幅值极小
9386 浏览 0 评论
飞凌嵌入式ElfBoard-Vim编辑器之静态链接和动态链接
2898 浏览 0 评论
使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板
2302 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 00:32 , Processed in 0.892265 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
506