共2条
1/1 1 跳转至页
zlgARM,51,Small,RTOS 希望zlgARM 能解答我的关于51 Small RTOS 堆栈的问题~
问
使用的是small_rtos1.12.1版本,ASM 文件的堆栈处理函数OS_CPU_A_ASM 中
有以下的这一段代码对OSNextTaskID 和 OSTaskID 分情况讨论而进入不同的处
理,而赋值temp = OSTsakStackBotton[OSTaskID] - (uint8 idata *)SP-1;
在这里面的作用是什么??而且其他相关代码所起的作用又是什么??
cp1 = (uint8 idata *)SP +1;
temp = (uint8 )OSTsakStackBotton[OSNextTaskID+1];
cp2 = OSTsakStackBotton[OSTaskID+1];
if( OSNextTaskID > OSTaskID)
{
while(cp2 != (uint8 idata *)temp)
{
*cp1++ = *cp2++;
}
OSNextTaskID++;
OSTaskID++;
temp = OSTsakStackBotton[OSTaskID] - (uint8 idata *)SP-1;
SP = (uint8 )cp1 - 1;
for(i = OSTaskID;i < OSNextTaskID; i++)
{
OSTsakStackBotton[i] -= temp;
}
OSNextTaskID--;
OSTaskID = OSNextTaskID;
LoadCtx();
}
答 1: small_rtos51的堆栈结构类似RTX Tiny,可以结合它的文档看,或参考《嵌入式实时操作系统Small RTOS51原理及应用》
使用的是small_rtos1.12.1版本,ASM 文件的堆栈处理函数OS_CPU_A_ASM 中
有以下的这一段代码对OSNextTaskID 和 OSTaskID 分情况讨论而进入不同的处
理,而赋值temp = OSTsakStackBotton[OSTaskID] - (uint8 idata *)SP-1;
在这里面的作用是什么??而且其他相关代码所起的作用又是什么??
cp1 = (uint8 idata *)SP +1;
temp = (uint8 )OSTsakStackBotton[OSNextTaskID+1];
cp2 = OSTsakStackBotton[OSTaskID+1];
if( OSNextTaskID > OSTaskID)
{
while(cp2 != (uint8 idata *)temp)
{
*cp1++ = *cp2++;
}
OSNextTaskID++;
OSTaskID++;
temp = OSTsakStackBotton[OSTaskID] - (uint8 idata *)SP-1;
SP = (uint8 )cp1 - 1;
for(i = OSTaskID;i < OSNextTaskID; i++)
{
OSTsakStackBotton[i] -= temp;
}
OSNextTaskID--;
OSTaskID = OSNextTaskID;
LoadCtx();
}
答 1: small_rtos51的堆栈结构类似RTX Tiny,可以结合它的文档看,或参考《嵌入式实时操作系统Small RTOS51原理及应用》
共2条
1/1 1 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 【FreeRtos】FreeRtos + MPU模块的配置使用被打赏¥32元 | |
| 【分享开发笔记,赚取电动螺丝刀】墨水屏文本显示器被打赏¥25元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX软件读取HTS221温湿度被打赏¥22元 | |
| M5PAPERESP32EINKDEVKIT评测|使用MicroPython开发M5Paper被打赏¥15元 | |
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
| OK1126B-S开发板下多时段语音提示型电子时钟被打赏¥27元 | |
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
我要赚赏金
