RTX5任务切换原理是什么???
RT,好像没找到相关资料,有没有老大知道的科普一下,看源码太慢了RTX5有个关键的设计是所有API都是在SVC软中断里面调用的,其它的就好理解了,也是PendSV做任务切换。 eric2013 发表于 2023-10-31 15:04
RTX5有个关键的设计是所有API都是在SVC软中断里面调用的,其它的就好理解了,也是PendSV做任务切换。
:lol看来学完一个rtos再学另外的感觉都是大同小异,把不同点记一下基本就轻车熟路了 qq1646544 发表于 2023-10-31 15:10
看来学完一个rtos再学另外的感觉都是大同小异,把不同点记一下基本就轻车熟路了
就是深入理解比较花时间,RTX5的代码略晦涩
#define SVC0_0N(f,t) \
SVC_INDIRECT(0) t svc##f (); \
__attribute__((always_inline)) \
__STATIC_INLINE t__svc##f (void) { \
SVC_ArgF(svcRtx##f); \
svc##f(); \
}
#define SVC0_0(f,t) \
SVC_INDIRECT(0) t svc##f (); \
__attribute__((always_inline)) \
__STATIC_INLINE t__svc##f (void) { \
SVC_ArgF(svcRtx##f); \
return svc##f(); \
}
#define SVC0_1N(f,t,t1) \
SVC_INDIRECT(0) t svc##f (t1 a1); \
__attribute__((always_inline)) \
__STATIC_INLINE t__svc##f (t1 a1) { \
SVC_ArgF(svcRtx##f); \
svc##f(a1); \
}
#define SVC0_1(f,t,t1) \
SVC_INDIRECT(0) t svc##f (t1 a1); \
__attribute__((always_inline)) \
__STATIC_INLINE t__svc##f (t1 a1) { \
SVC_ArgF(svcRtx##f); \
return svc##f(a1); \
}
#define SVC0_2(f,t,t1,t2) \
SVC_INDIRECT(0) t svc##f (t1 a1, t2 a2); \
__attribute__((always_inline)) \
__STATIC_INLINE t__svc##f (t1 a1, t2 a2) { \
SVC_ArgF(svcRtx##f); \
return svc##f(a1,a2); \
}
#define SVC0_3(f,t,t1,t2,t3) \
SVC_INDIRECT(0) t svc##f (t1 a1, t2 a2, t3 a3); \
__attribute__((always_inline)) \
__STATIC_INLINE t__svc##f (t1 a1, t2 a2, t3 a3) { \
SVC_ArgF(svcRtx##f); \
return svc##f(a1,a2,a3); \
}
#define SVC0_4(f,t,t1,t2,t3,t4) \
SVC_INDIRECT(0) t svc##f (t1 a1, t2 a2, t3 a3, t4 a4); \
__attribute__((always_inline)) \
__STATIC_INLINE t__svc##f (t1 a1, t2 a2, t3 a3, t4 a4) { \
SVC_ArgF(svcRtx##f); \
return svc##f(a1,a2,a3,a4); \
}
eric2013 发表于 2023-10-31 15:21
就是深入理解比较花时间,RTX5的代码略晦涩
#define SVC0_0N(f,t) ...
硬汉哥,能稍微指点下原理吗?例如osThreadNew,跳转看到调用的是__svcThreadNew,再跳转就是SVC0_3 (ThreadNew, osThreadId_t, osThreadFunc_t, void *, const osThreadAttr_t *),到这就看不懂了,不像其他os那么直接 LeslieChia 发表于 2023-12-7 10:27
硬汉哥,能稍微指点下原理吗?例如osThreadNew,跳转看到调用的是__svcThreadNew,再跳转就是SVC0_3 (Thr ...
硬汉哥的RTX教程里有
https://www.armbbs.cn/forum.php?mod=viewthread&tid=93396
页:
[1]