嵌入式学习小组
登录
直播中
李泽坚
7年用户
1333经验值
私信
关注
请问ucos的任务堆栈怎么保存局部变量?
开启该帖子的消息推送
变量
keil+uC/OS,是如何实现在任务的堆栈中操作局部变量的?比如在程序中建立了一个任务TASK1,任务中定义了几个局部变量a,b,c,在任务建立的时候,分配的堆栈是arrStask[128]。那么程序执行到TASK1的时候,是如何保证把几个局部变量分配到对应的堆栈中的呢?
因为我看任务调度函数,只保存R0到R14、PC、PSW、SP等一些寄存器的值,并没有体现保存这些临时数据a,b,c,那么在上下文切换时,这些临时数据a,b,c是怎么处理的?
回帖
(3)
马秀英
2020-4-17 09:55:23
切换进任务以后使用PSP指针来访问任务堆栈,你的所有变量就在堆栈里面,也就是所有的堆栈就在RAM中。搞明白为何要保存R0-R15这些寄存器值,那是因为就只有这几个寄存器,其他任务也会用这些寄存器,所以要保存起来!然而你任务中的局部变量就直接在这个任务的任务堆栈中,是你这个任务独享的,肯定就不需要保存
切换进任务以后使用PSP指针来访问任务堆栈,你的所有变量就在堆栈里面,也就是所有的堆栈就在RAM中。搞明白为何要保存R0-R15这些寄存器值,那是因为就只有这几个寄存器,其他任务也会用这些寄存器,所以要保存起来!然而你任务中的局部变量就直接在这个任务的任务堆栈中,是你这个任务独享的,肯定就不需要保存
举报
翁靠庭
2020-4-17 10:12:34
局部变量进栈是编译器完成的.
局部变量不使用程序员的名字.无论你用A,B,C,还是XX,YY,ZZ.
编译器都不使用这些名字.他们使用的是Rx.
局部变量进栈是编译器完成的.
局部变量不使用程序员的名字.无论你用A,B,C,还是XX,YY,ZZ.
编译器都不使用这些名字.他们使用的是Rx.
举报
杨波
2020-4-17 10:19:35
其实是想搞起这些局部变量如何进栈和出栈,代码确实没看到…
其实是想搞起这些局部变量如何进栈和出栈,代码确实没看到…
举报
更多回帖
rotate(-90deg);
回复
相关问答
变量
请问
UCOS
中
任务
切换时
局部变量
如果过多会不被
保存
吗?
2019-05-30
1997
keil
局部变量
分配地址问题
2014-01-20
8802
关于FreeRTOS创建
任务
时的
堆栈
问题
2023-10-31
244
任务
中的
局部变量
是怎么被分配到创建
任务
时指定的那个数组中的
2019-05-27
1730
请问
freertos中的
局部变量
的问题如何解答
2020-07-18
3540
请问
Volatile
局部变量
是在
堆栈
上分配的吗?
2019-09-27
2073
如何设置
UCOS
堆栈
大小?
2019-10-11
1322
任务
控制块和
任务
堆栈
的关系是什么?
2020-04-20
2617
局部变量
超出
堆栈
范围,想把占用内存多的
变量
申请在全局如何做?
2024-03-20
152
局部变量
超出
堆栈
范围,如何把占用内存多的
变量
申请在全局?
2023-08-08
426
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分