完善资料让更多小伙伴认识你,还能领取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起来之前用,二是中断时用
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
943 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3154 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1426 浏览 0 评论
2072 浏览 0 评论
1595 浏览 0 评论
75208 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 04:37 , Processed in 0.806973 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号