mirror of
https://gitee.com/cosyos/cosyos.git
synced 2026-08-17 16:52:27 +08:00
+313
@@ -0,0 +1,313 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file os_api.h
|
||||
* @brief 系统内核专用API
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.5
|
||||
* @date 2026.06.10
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __OS_API_H
|
||||
#define __OS_API_H
|
||||
|
||||
|
||||
/*
|
||||
* 引用.标准库函数
|
||||
*/
|
||||
|
||||
#define s_init_mempool init_mempool
|
||||
#define s_malloc malloc
|
||||
#define s_calloc calloc
|
||||
#define s_realloc realloc
|
||||
#define s_free free
|
||||
#define s_memcpy memcpy
|
||||
#define s_memcmp memcmp
|
||||
#define s_strcpy strcpy
|
||||
#define s_strcmp strcmp
|
||||
#define s_strlen strlen
|
||||
|
||||
|
||||
/*
|
||||
* 操作.定时中断/查询
|
||||
*/
|
||||
|
||||
/** 启动定时中断任务 */
|
||||
#define sStartTask_TimInt(tmid) \
|
||||
sUSV_StartTask_0(s_timint_handle[tmid]->hookorload.load, OS_STATUS_SUSPENDED)
|
||||
|
||||
/** 启动定时查询任务 */
|
||||
#define sStartTask_TimQry(tmid) \
|
||||
sUSV_StartTask_0(s_timqry_handle[tmid]->hookorload.load, OS_STATUS_SUSPENDED)
|
||||
|
||||
/** 恢复定时中断任务 */
|
||||
#define sResumeTask_TimInt(tmid) \
|
||||
sTSV_ResumeTask(*(s_timint_handle[tmid]->hookorload.load)->h2task)
|
||||
|
||||
/** 恢复定时查询任务 */
|
||||
#define sResumeTask_TimQry(tmid) \
|
||||
sTSV_ResumeTask(*(s_timqry_handle[tmid]->hookorload.load)->h2task)
|
||||
|
||||
/** 调用定时中断钩子 */
|
||||
#define sCallHook_TimInt(tmid) \
|
||||
(*s_timint_handle[tmid]->hookorload.hook)()
|
||||
|
||||
/** 调用定时查询钩子 */
|
||||
#define sCallHook_TimQry(tmid) \
|
||||
(*s_timqry_handle[tmid]->hookorload.hook)()
|
||||
|
||||
|
||||
/*
|
||||
* 事件标志组 - 写标志位
|
||||
*/
|
||||
|
||||
#define stWriteFlagBits_1(g, v, b0) \
|
||||
g.b0 = v
|
||||
|
||||
#define stWriteFlagBits_2(g, v, b0, b1) \
|
||||
g.b0 = g.b1 = v
|
||||
|
||||
#define stWriteFlagBits_3(g, v, b0, b1, b2) \
|
||||
g.b0 = g.b1 = g.b2 = v
|
||||
|
||||
#define stWriteFlagBits_4(g, v, b0, b1, b2, b3) \
|
||||
g.b0 = g.b1 = g.b2 = g.b3 = v
|
||||
|
||||
#define stWriteFlagBits_5(g, v, b0, b1, b2, b3, b4) \
|
||||
g.b0 = g.b1 = g.b2 = g.b3 = g.b4 = v
|
||||
|
||||
#define stWriteFlagBits_6(g, v, b0, b1, b2, b3, b4, b5) \
|
||||
g.b0 = g.b1 = g.b2 = g.b3 = g.b4 = g.b5 = v
|
||||
|
||||
#define stWriteFlagBits_7(g, v, b0, b1, b2, b3, b4, b5, b6) \
|
||||
g.b0 = g.b1 = g.b2 = g.b3 = g.b4 = g.b5 = g.b6 = v
|
||||
|
||||
#define stWriteFlagBits_8(g, v, b0, b1, b2, b3, b4, b5, b6, b7) \
|
||||
g.b0 = g.b1 = g.b2 = g.b3 = g.b4 = g.b5 = g.b6 = g.b7 = v
|
||||
|
||||
#define suWriteFlagBits_1(g, v, b0) \
|
||||
do{ \
|
||||
su_kernel_locks(); \
|
||||
stWriteFlagBits_1(g, v, b0); \
|
||||
su_kernel_unlocks(); \
|
||||
}while(false)
|
||||
|
||||
#define suWriteFlagBits_2(g, v, b0, b1) \
|
||||
do{ \
|
||||
su_kernel_locks(); \
|
||||
stWriteFlagBits_2(g, v, b0, b1); \
|
||||
su_kernel_unlocks(); \
|
||||
}while(false)
|
||||
|
||||
#define suWriteFlagBits_3(g, v, b0, b1, b2) \
|
||||
do{ \
|
||||
su_kernel_locks(); \
|
||||
stWriteFlagBits_3(g, v, b0, b1, b2); \
|
||||
su_kernel_unlocks(); \
|
||||
}while(false)
|
||||
|
||||
#define suWriteFlagBits_4(g, v, b0, b1, b2, b3) \
|
||||
do{ \
|
||||
su_kernel_locks(); \
|
||||
stWriteFlagBits_4(g, v, b0, b1, b2, b3); \
|
||||
su_kernel_unlocks(); \
|
||||
}while(false)
|
||||
|
||||
#define suWriteFlagBits_5(g, v, b0, b1, b2, b3, b4) \
|
||||
do{ \
|
||||
su_kernel_locks(); \
|
||||
stWriteFlagBits_5(g, v, b0, b1, b2, b3, b4); \
|
||||
su_kernel_unlocks(); \
|
||||
}while(false)
|
||||
|
||||
#define suWriteFlagBits_6(g, v, b0, b1, b2, b3, b4, b5) \
|
||||
do{ \
|
||||
su_kernel_locks(); \
|
||||
stWriteFlagBits_6(g, v, b0, b1, b2, b3, b4, b5); \
|
||||
su_kernel_unlocks(); \
|
||||
}while(false)
|
||||
|
||||
#define suWriteFlagBits_7(g, v, b0, b1, b2, b3, b4, b5, b6) \
|
||||
do{ \
|
||||
su_kernel_locks(); \
|
||||
stWriteFlagBits_7(g, v, b0, b1, b2, b3, b4, b5, b6); \
|
||||
su_kernel_unlocks(); \
|
||||
}while(false)
|
||||
|
||||
#define suWriteFlagBits_8(g, v, b0, b1, b2, b3, b4, b5, b6, b7) \
|
||||
do{ \
|
||||
su_kernel_locks(); \
|
||||
stWriteFlagBits_8(g, v, b0, b1, b2, b3, b4, b5, b6, b7); \
|
||||
su_kernel_unlocks(); \
|
||||
}while(false)
|
||||
|
||||
#define siWriteFlagBits_1(b0) \
|
||||
stWriteFlagBits_1(u_grp, true, b0); \
|
||||
siWriteFlagBits()
|
||||
|
||||
#define siWriteFlagBits_2(b0, b1) \
|
||||
stWriteFlagBits_2(u_grp, true, b0, b1); \
|
||||
siWriteFlagBits()
|
||||
|
||||
#define siWriteFlagBits_3(b0, b1, b2) \
|
||||
stWriteFlagBits_3(u_grp, true, b0, b1, b2); \
|
||||
siWriteFlagBits()
|
||||
|
||||
#define siWriteFlagBits_4(b0, b1, b2, b3) \
|
||||
stWriteFlagBits_4(u_grp, true, b0, b1, b2, b3); \
|
||||
siWriteFlagBits()
|
||||
|
||||
#define siWriteFlagBits_5(b0, b1, b2, b3, b4) \
|
||||
stWriteFlagBits_5(u_grp, true, b0, b1, b2, b3, b4); \
|
||||
siWriteFlagBits()
|
||||
|
||||
#define siWriteFlagBits_6(b0, b1, b2, b3, b4, b5) \
|
||||
stWriteFlagBits_6(u_grp, true, b0, b1, b2, b3, b4, b5); \
|
||||
siWriteFlagBits()
|
||||
|
||||
#define siWriteFlagBits_7(b0, b1, b2, b3, b4, b5, b6) \
|
||||
stWriteFlagBits_7(u_grp, true, b0, b1, b2, b3, b4, b5, b6); \
|
||||
siWriteFlagBits()
|
||||
|
||||
#define siWriteFlagBits_8(b0, b1, b2, b3, b4, b5, b6, b7) \
|
||||
stWriteFlagBits_8(u_grp, true, b0, b1, b2, b3, b4, b5, b6, b7); \
|
||||
siWriteFlagBits()
|
||||
|
||||
#define siWriteFlagBits() \
|
||||
u_psv.value = ( \
|
||||
sizeof(u_grp) == 1 ? *(s_u8_t *)&u_grp \
|
||||
: sizeof(u_grp) == 2 ? *(s_u16_t *)&u_grp \
|
||||
: sizeof(u_grp) == 4 ? *(s_u32_t *)&u_grp \
|
||||
: 0 \
|
||||
); \
|
||||
} \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
|
||||
/*
|
||||
* 私信 - 创建信箱
|
||||
*/
|
||||
|
||||
#define sTaskMsg_Init_1(g) \
|
||||
tm1##g = tm1_##g
|
||||
|
||||
#define sTaskMsg_Init_2(g) \
|
||||
sTaskMsg_Init_1(g); \
|
||||
tm2##g = tm2_##g
|
||||
|
||||
#define sTaskMsg_Init_3(g) \
|
||||
sTaskMsg_Init_2(g); \
|
||||
tm3##g = tm3_##g
|
||||
|
||||
#define sTaskMsg_Init_4(g) \
|
||||
sTaskMsg_Init_3(g); \
|
||||
tm4##g = tm4_##g
|
||||
|
||||
#define sTaskMsg_Init_5(g) \
|
||||
sTaskMsg_Init_4(g); \
|
||||
tm5##g = tm5_##g
|
||||
|
||||
#define sTaskMsg_Init_6(g) \
|
||||
sTaskMsg_Init_5(g); \
|
||||
tm6##g = tm6_##g
|
||||
|
||||
#define sTaskMsg_Init_7(g) \
|
||||
sTaskMsg_Init_6(g); \
|
||||
tm7##g = tm7_##g
|
||||
|
||||
#define sTaskMsg_Init_8(g) \
|
||||
sTaskMsg_Init_7(g); \
|
||||
tm8##g = tm8_##g
|
||||
|
||||
#define sTaskMsg_Init(n) \
|
||||
static s_u8_t volatile u_tmrf = 0; \
|
||||
if(s_taskmsg_sign){ \
|
||||
u_tmrf = 1; \
|
||||
sTaskMsg_Init_##n(_); \
|
||||
if(--s_taskmsg_sign){ \
|
||||
s_taskmsg_sign = 0; \
|
||||
su_kernel_unlocks(); \
|
||||
} \
|
||||
return; \
|
||||
} \
|
||||
if(u_tmrf == 2){ \
|
||||
u_tmrf = 0; \
|
||||
sTaskMsg_Init_##n( ); \
|
||||
return; \
|
||||
}
|
||||
|
||||
#define sCreateTaskMsg_0_1(m1) \
|
||||
(m1##__) \
|
||||
{ \
|
||||
static m1##_; \
|
||||
static m1 ; \
|
||||
sTaskMsg_Init(1); \
|
||||
do
|
||||
|
||||
#define sCreateTaskMsg_0_2(m1, m2) \
|
||||
(m1##__, m2##__) \
|
||||
{ \
|
||||
static m1##_; static m2##_; \
|
||||
static m1 ; static m2 ; \
|
||||
sTaskMsg_Init(2); \
|
||||
do
|
||||
|
||||
#define sCreateTaskMsg_0_3(m1, m2, m3) \
|
||||
(m1##__, m2##__, m3##__) \
|
||||
{ \
|
||||
static m1##_; static m2##_; static m3##_; \
|
||||
static m1 ; static m2 ; static m3 ; \
|
||||
sTaskMsg_Init(3); \
|
||||
do
|
||||
|
||||
#define sCreateTaskMsg_0_4(m1, m2, m3, m4) \
|
||||
(m1##__, m2##__, m3##__, m4##__) \
|
||||
{ \
|
||||
static m1##_; static m2##_; static m3##_; static m4##_; \
|
||||
static m1 ; static m2 ; static m3 ; static m4 ; \
|
||||
sTaskMsg_Init(4); \
|
||||
do
|
||||
|
||||
#define sCreateTaskMsg_0_5(m1, m2, m3, m4, m5) \
|
||||
(m1##__, m2##__, m3##__, m4##__, m5##__) \
|
||||
{ \
|
||||
static m1##_; static m2##_; static m3##_; static m4##_; static m5##_; \
|
||||
static m1 ; static m2 ; static m3 ; static m4 ; static m5 ; \
|
||||
sTaskMsg_Init(5); \
|
||||
do
|
||||
|
||||
#define sCreateTaskMsg_0_6(m1, m2, m3, m4, m5, m6) \
|
||||
(m1##__, m2##__, m3##__, m4##__, m5##__, m6##__) \
|
||||
{ \
|
||||
static m1##_; static m2##_; static m3##_; static m4##_; static m5##_; static m6##_; \
|
||||
static m1 ; static m2 ; static m3 ; static m4 ; static m5 ; static m6 ; \
|
||||
sTaskMsg_Init(6); \
|
||||
do
|
||||
|
||||
#define sCreateTaskMsg_0_7(m1, m2, m3, m4, m5, m6, m7) \
|
||||
(m1##__, m2##__, m3##__, m4##__, m5##__, m6##__, m7##__) \
|
||||
{ \
|
||||
static m1##_; static m2##_; static m3##_; static m4##_; static m5##_; static m6##_; static m7##_; \
|
||||
static m1 ; static m2 ; static m3 ; static m4 ; static m5 ; static m6 ; static m7 ; \
|
||||
sTaskMsg_Init(7); \
|
||||
do
|
||||
|
||||
#define sCreateTaskMsg_0_8(m1, m2, m3, m4, m5, m6, m7, m8) \
|
||||
(m1##__, m2##__, m3##__, m4##__, m5##__, m6##__, m7##__, m8##__) \
|
||||
{ \
|
||||
static m1##_; static m2##_; static m3##_; static m4##_; static m5##_; static m6##_; static m7##_; static m8##_; \
|
||||
static m1 ; static m2 ; static m3 ; static m4 ; static m5 ; static m6 ; static m7 ; static m8 ; \
|
||||
sTaskMsg_Init(8); \
|
||||
do
|
||||
|
||||
#define sCreateTaskMsg_1(m1) sCreateTaskMsg_0_1(m1)
|
||||
#define sCreateTaskMsg_2(m1, m2) sCreateTaskMsg_0_2(m1, m2)
|
||||
#define sCreateTaskMsg_3(m1, m2, m3) sCreateTaskMsg_0_3(m1, m2, m3)
|
||||
#define sCreateTaskMsg_4(m1, m2, m3, m4) sCreateTaskMsg_0_4(m1, m2, m3, m4)
|
||||
#define sCreateTaskMsg_5(m1, m2, m3, m4, m5) sCreateTaskMsg_0_5(m1, m2, m3, m4, m5)
|
||||
#define sCreateTaskMsg_6(m1, m2, m3, m4, m5, m6) sCreateTaskMsg_0_6(m1, m2, m3, m4, m5, m6)
|
||||
#define sCreateTaskMsg_7(m1, m2, m3, m4, m5, m6, m7) sCreateTaskMsg_0_7(m1, m2, m3, m4, m5, m6, m7)
|
||||
#define sCreateTaskMsg_8(m1, m2, m3, m4, m5, m6, m7, m8) sCreateTaskMsg_0_8(m1, m2, m3, m4, m5, m6, m7, m8)
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,147 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file os_debug.c
|
||||
* @brief DEBUG接口
|
||||
* @details DEBUG接口,串口发送和接收解析。
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.5
|
||||
* @date 2026.06.10
|
||||
******************************************************************************/
|
||||
|
||||
#include "os_var.h"
|
||||
#if (SYSCFG_DEBUGGING == __ENABLED__)
|
||||
#include "os_api.h"
|
||||
#include "sv_com.h"
|
||||
#include "sv_create.h"
|
||||
#include "sv_task.h"
|
||||
#include "ur_api.h"
|
||||
#include <string.h>
|
||||
|
||||
/**
|
||||
\brief 字符串转整型
|
||||
\param[in] str 字符串指针
|
||||
\return 转换后的整型数据
|
||||
\note Keil C51/C251 标准库中的 atoi() 是非线程安全的,故额外定义此函数,
|
||||
专用于DEBUG接口的串口接收解析。
|
||||
*/
|
||||
static int _atoi_(char const *str)
|
||||
{
|
||||
if(str == OS_NULL || !*str){
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
int a = 0;
|
||||
int k = 1;
|
||||
s_u8_t i = s_strlen(str);
|
||||
while(i--){
|
||||
if(str[i] >= '0' && str[i] <= '9'){
|
||||
a += (str[i] - '0') * k;
|
||||
k *= 10;
|
||||
}
|
||||
else if(str[i] == '+'){
|
||||
return a;
|
||||
}
|
||||
else if(str[i] == '-'){
|
||||
return -a;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return a;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
\brief 接收解析
|
||||
\details DEBUG接口,串口接收解析。
|
||||
\return 无
|
||||
*/
|
||||
void os_debug_recv(void)
|
||||
{
|
||||
#define p s_debug_recvptr
|
||||
#define len s_debug_recvlen
|
||||
p[len] = '\0';
|
||||
if(len == 9 && !s_memcmp(p, "taskmgr\r\n", 9)){
|
||||
s_taskmgr_sign = true;
|
||||
s_taskmgr_upspeed = 0;
|
||||
s_timqry_handle[OS_TMID_TASKMGR]->timer = s_timqry_handle[OS_TMID_TASKMGR]->reload;
|
||||
}
|
||||
else if(len == 6 && !s_memcmp(p, "exit\r\n", 6)){
|
||||
s_taskmgr_sign = false;
|
||||
}
|
||||
else if(len >= 15 && !s_memcmp(p, "taskmgr /s=", 11)){
|
||||
s_u8_t i;
|
||||
char *mptr = p + 11;
|
||||
for(i = 0; i < 5; i++){
|
||||
if(mptr[i] >= '0' && mptr[i] <= '9');
|
||||
else break;
|
||||
}
|
||||
if(i >= 2 && !s_memcmp(mptr + i, "\r\n", 2)){
|
||||
s_u16_t temp;
|
||||
mptr[i] = '\0';
|
||||
temp = _atoi_(mptr);
|
||||
if(temp >= 50 && temp <= 5000){
|
||||
s_timqry_handle[OS_TMID_TASKMGR]->reload = (temp * 1000UL) / SYSCFG_SYSTICK_CYCLE;
|
||||
}
|
||||
}
|
||||
}
|
||||
#undef p
|
||||
#undef len
|
||||
}
|
||||
|
||||
/**
|
||||
\brief 系统调试器
|
||||
\details 负责系统DEBUG信息的输出,具体包括命令行和任务管理器。
|
||||
\param[in] 定时器ID OS_TMID_DEBUGGER
|
||||
\param[in] 定时查询事件 s_debug_sendtype
|
||||
\param[in] 自动重装载 false
|
||||
\param[in] 任务名称 Debugger
|
||||
\param[in] 任务优先级 SYSCFG_TASKPRIORITY - 1
|
||||
\param[in] 任务栈大小 SYSCFG_STACKSIZE_DEBUGGER
|
||||
\param[in] 安全运行时 0
|
||||
\param[in] 任务名称文本<br>
|
||||
遗产模式:"Debugger"<br>
|
||||
标准/兼容模式:[中文:"系统调试器",英文:"Debugger"]
|
||||
\return 无
|
||||
\note 定时查询任务
|
||||
*/
|
||||
#if (SYSCFG_DEBUG_LANGUAGE == 0)
|
||||
#define _taskname "Debugger"
|
||||
#else
|
||||
#define _taskname "\xCF\xB5\xCD\xB3\xB5\xF7\xCA\xD4\xC6\xF7" /*!< "系统调试器" */
|
||||
#endif
|
||||
uCreateTask_TimQry
|
||||
(
|
||||
OS_TMID_DEBUGGER, s_debug_sendtype, false,
|
||||
Debugger, SYSCFG_TASKPRIORITY - 1, SYSCFG_STACKSIZE_DEBUGGER, 0, _taskname
|
||||
)
|
||||
{
|
||||
#if (SYSCFG_DEBUG_SENDLEN == __DISABLED__)
|
||||
void debug_hook(char _XDATA_MEM_ *p);
|
||||
#else
|
||||
void debug_hook(char _XDATA_MEM_ *p, s_u16_t len);
|
||||
#endif
|
||||
while(true){
|
||||
if(s_debug_sendtype & OS_DEBUG_SEND_TASKMGR){
|
||||
s_debug_sendtype &= ~OS_DEBUG_SEND_TASKMGR;
|
||||
#if (SYSCFG_DEBUG_SENDLEN == __DISABLED__)
|
||||
debug_hook(s_taskmgr_sendbuff);
|
||||
#else
|
||||
debug_hook(s_taskmgr_sendbuff, s_taskmgr_sendlen);
|
||||
#endif
|
||||
}/*
|
||||
else if(s_debug_sendtype & OS_DEBUG_SEND_CMDLINE){
|
||||
s_debug_sendtype &= ~OS_DEBUG_SEND_CMDLINE;
|
||||
#if (SYSCFG_DEBUG_SENDLEN == __DISABLED__)
|
||||
debug_hook(s_cmdline_sendbuff);
|
||||
#else
|
||||
debug_hook(s_cmdline_sendbuff, s_cmdline_sendlen);
|
||||
#endif
|
||||
}*/
|
||||
uSuspendTasking();
|
||||
}
|
||||
}
|
||||
#undef _taskname
|
||||
|
||||
#endif
|
||||
+145
@@ -0,0 +1,145 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file os_def.h
|
||||
* @brief 初始宏定义
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.5
|
||||
* @date 2026.06.10
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __OS_DEF_H
|
||||
#define __OS_DEF_H
|
||||
|
||||
/*
|
||||
* SYSAPI
|
||||
*/
|
||||
|
||||
#define sDefStr(s) sDefStr_0(s)
|
||||
#define sDefStr_0(s) #s
|
||||
|
||||
#define sCat2Str(s1, s2) sCat2Str_0(s1, s2)
|
||||
#define sCat2Str_0(s1, s2) s1##s2
|
||||
|
||||
#define sCat3Str(s1, s2, s3) sCat3Str_0(s1, s2, s3)
|
||||
#define sCat3Str_0(s1, s2, s3) s1##s2##s3
|
||||
|
||||
#define sDefBitField(v) s_u8_t v:1
|
||||
#define sDefVoidBits(n) s_u8_t :n
|
||||
|
||||
|
||||
/*
|
||||
* CONST
|
||||
*/
|
||||
|
||||
#define true 1
|
||||
#define false 0
|
||||
#define OS_NULL 0 /*!< 通用的空指针 */
|
||||
#define OS_VOID ((s_taskctrl_tsp)~0) /*!< 专用的空指针,超时链表专用。*/
|
||||
|
||||
|
||||
/*
|
||||
* CONFIG VALUE
|
||||
*/
|
||||
|
||||
#define __DISABLED__ 0
|
||||
#define __ENABLED__ 1
|
||||
#define __STATIC__ 0 /*!< 静态队列 ............. */
|
||||
#define __DYNAMIC__ 1 /*!< 动态队列 ............. */
|
||||
#define __QUE_FIFO__ 0 /*!< 先入先出队列 ......... */
|
||||
#define __QUE_LIFO__ 1 /*!< 后入先出队列 ......... */
|
||||
#define __MCS_51__ 0 /*!< 指令集架构:MCS51 .... */
|
||||
#define __MCS_251__ 1 /*!< 指令集架构:MCS251 ... */
|
||||
#define __ARM__ 2 /*!< 指令集架构:ARM ...... */
|
||||
#define __COOPERATIVE__ 1 /*!< 协作式调度............ */
|
||||
#define __TIMESHARING__ 2 /*!< 时间片轮转调度........ */
|
||||
|
||||
|
||||
/*
|
||||
* 任务相关
|
||||
*/
|
||||
|
||||
/* 任务状态 */
|
||||
#define OS_STATUS_READY 0x00 /*!< 就绪/运行状态 ............ */
|
||||
#define OS_STATUS_FLOATING 0x01 /*!< 浮动状态 ................. */
|
||||
#define OS_STATUS_BLOCKED 0x02 /*!< 阻塞状态 ................. */
|
||||
#define OS_STATUS_TIMEOUT 0x04 /*!< 超时状态 ................. */
|
||||
#define OS_STATUS_SUSPENDED 0x08 /*!< 挂起状态 ................. */
|
||||
#define OS_STATUS_STOPPED 0x40 /*!< 停止状态 ................. */
|
||||
#define OS_STATUS_DELETED 0x80 /*!< 已删除/未启动状态 ........ */
|
||||
|
||||
/* 阻塞类型 */
|
||||
#define OS_BLOCKED_DELAY 0x00 /*!< 延时阻塞 ................. */
|
||||
/*- 0x01/0x02/0x04:sizeof(Group) -*//*!< 事件标志组阻塞(等待).... */
|
||||
#define OS_BLOCKED_BINARY 0x10 /*!< 二值信号量阻塞(获取/等待)*/
|
||||
#define OS_BLOCKED_MUTEX 0x20 /*!< 互斥信号量阻塞(获取).... */
|
||||
#define OS_BLOCKED_SEMAPHORE 0x30 /*!< 计数信号量阻塞(获取).... */
|
||||
#define OS_BLOCKED_TASKMSG 0x40 /*!< 接收私信阻塞 ............. */
|
||||
#define OS_BLOCKED_FETION 0x50 /*!< 接收飞信阻塞 ............. */
|
||||
#define OS_BLOCKED_MAIL 0x60 /*!< 接收邮件阻塞 ............. */
|
||||
#define OS_BLOCKED_MSG 0x70 /*!< 接收消息阻塞 ............. */
|
||||
|
||||
|
||||
/*
|
||||
* DEBUG SEND TYPE
|
||||
*/
|
||||
|
||||
#define OS_DEBUG_SEND_CMDLINE 0x01 /*!< 命令行发送 ... */
|
||||
#define OS_DEBUG_SEND_TASKMGR 0x02 /*!< 任务管理器发送 */
|
||||
|
||||
|
||||
/*
|
||||
* TASKMGR LEN
|
||||
*/
|
||||
|
||||
#define OS_TASKMGR_LEN_PRI 6
|
||||
#define OS_TASKMGR_LEN_STA 6
|
||||
#define OS_TASKMGR_LEN_CPU 9
|
||||
|
||||
|
||||
/*
|
||||
* SVID(服务ID,中断FIFO服务-系统专用ID)
|
||||
*/
|
||||
|
||||
#define OS_SVID_CLEARDELAY 0x00
|
||||
#define OS_SVID_RESUMETASK 0x01
|
||||
#define OS_SVID_SUSPENDTASK 0x02
|
||||
#define OS_SVID_DELETETASK 0x03
|
||||
#define OS_SVID_CLEARBLOCK 0x04
|
||||
#define OS_SVID_SETBLOCK 0x05
|
||||
#define OS_SVID_SETTASKPRI 0x06
|
||||
#define OS_SVID_WRITEBINARY 0x07
|
||||
#define OS_SVID_GIVESEMAPH 0x08
|
||||
#define OS_SVID_SENDFETION 0x09
|
||||
#define OS_SVID_SENDMAIL 0x0A
|
||||
#define OS_SVID_SENDMSG 0x0B
|
||||
#define OS_SVID_TIMINT 0x0C
|
||||
#define OS_SVID_TIMQRY 0x0D
|
||||
#define OS_SVID_WRITEGROUP 0x0E
|
||||
#define OS_SVID_WRITEGVAR 0x0F
|
||||
#define OS_SVID_PENDSVC 0x10
|
||||
#define OS_SVID_END 0x11
|
||||
|
||||
|
||||
/*
|
||||
* ECODE(错误码)
|
||||
*/
|
||||
|
||||
#define OS_ECODE_NOERROR 0 /*!< 无错误 ............. */
|
||||
#define OS_ECODE_OVERFLOW_MSGQUEUE 1 /*!< 消息队列溢出 ....... */
|
||||
#define OS_ECODE_OVERFLOW_TASKQUEUE 2 /*!< 任务队列溢出 ....... */
|
||||
#define OS_ECODE_OVERFLOW_TASKSTACK 3 /*!< 任务栈溢出 ......... */
|
||||
#define OS_ECODE_MALLOCFAIL_MSGNODE 4 /*!< 消息节点内存分配失败 */
|
||||
#define OS_ECODE_MALLOCFAIL_TASKNODE 5 /*!< 任务节点内存分配失败 */
|
||||
#define OS_ECODE_MALLOCFAIL_TASKSTACK 6 /*!< 任务栈内存分配失败 . */
|
||||
#define OS_ECODE_TASKSUSPENDED 7 /*!< 任务已挂起 ......... */
|
||||
#define OS_ECODE_TASKSTOPPED 8 /*!< 任务已停止 ......... */
|
||||
#define OS_ECODE_TASKNOTSTARTED 9 /*!< 任务未启动/已删除 .. */
|
||||
#define OS_ECODE_TASKNOTREADY 10 /*!< 任务未就绪 ......... */
|
||||
#define OS_ECODE_TASKNOTBLOCKED 11 /*!< 任务未阻塞 ......... */
|
||||
#define OS_ECODE_TASKNOTSUSPENDED 12 /*!< 任务未挂起 ......... */
|
||||
#define OS_ECODE_TASKPRIUNCHANGED 13 /*!< 任务优先级未改变 ... */
|
||||
#define OS_ECODE_DONOTKNOW 255 /*!< 未知错误 ........... */
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+135
@@ -0,0 +1,135 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file os_var.c
|
||||
* @brief 系统全局变量定义
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.5
|
||||
* @date 2026.06.10
|
||||
******************************************************************************/
|
||||
|
||||
#include "os_redef.h"
|
||||
|
||||
/* The Soft-RTC */
|
||||
#if (SYSCFG_SOFTRTC == __ENABLED__)
|
||||
s_u8_t const _CONST_MEM_ s_month0day[13] = {31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /*!< 每月各有几天?*/
|
||||
s_u8_t _RTC_MEM_ s_month2day = 28; /*!< 二月有几天?*/
|
||||
s_every_ts _SYS_MEM_ s_sign_every/**/sZeroInstall_Group; /*!< 每信号 */
|
||||
m_rtccount_t _SYS_MEM_ s_rtc_counter/**/sZeroInstall; /*!< RTC计数器 */
|
||||
s_rtc_ts _RTC_MEM_ s_rtc = {SYSCFG_MANUFACTUREDATE}; /*!< RTC */
|
||||
#endif
|
||||
/* The Task */
|
||||
m_bit_t volatile/*_SYS_MEM_*/ s_sign_startup = true;
|
||||
s_schesign_tu volatile _SYS_MEM_ s_sign_schedule = {{0, 1}}; /*!< 调度信号 */
|
||||
m_bit_t volatile/*_SYS_MEM_*/ s_sign_delay/**/sZeroInstall; /*!< 就绪延时信号 */
|
||||
s_u8_t _SYS_MEM_ s_schedulelock_counter/**/sZeroInstall;/*!< 调度锁嵌套计数器 */
|
||||
s_ecode_t _SYS_MEM_ s_startup_ecode = OS_ECODE_NOERROR; /*!< 启动任务时,用来异地缓存错误码 */
|
||||
s_u8_t _SYS_MEM_ s_task_status0 = OS_STATUS_DELETED; /*!< 被启动任务 -> 初始状态 */
|
||||
s_taskload_tsp _SYS_MEM_ s_task_starter/**/sZeroInstall; /*!< 被启动任务 -> 装载块句柄 */
|
||||
s_taskctrl_tsp _SYS_MEM_ s_task_current/**/sZeroInstall; /*!< 当前任务句柄 */
|
||||
s_taskctrl_tsp s_timer_list[OS_TIMESLOTNUM]/**/sZeroInstall_Group; /*!< 定时器链表 */
|
||||
s_u8_t _SYS_MEM_ s_timer_pointer = OS_TIMESLOTNUM - 1UL;
|
||||
#if (SYSCFG_SAMEPRISCHEDULE == __TIMESHARING__ && SYSCFG_TIMESHARINGMODE == 2)
|
||||
s_sharing_t const _CONST_MEM_ s_time_sharing[SYSCFG_TASKPRIORITY] = {SYSCFG_CUSTOMTIMESHARING}; /*!< 自定义时间片 -> 时间片数组 */
|
||||
#endif
|
||||
#if (SYSCFG_KERNELLOCKNESTING == __ENABLED__)
|
||||
s_u8_t _SYS_MEM_ s_kernellock_counter/**/sZeroInstall; /*!< 内核锁嵌套计数器 */
|
||||
#endif
|
||||
/* The Safe runtime */
|
||||
#if (SYSCFG_SAFERUNTIME == __ENABLED__)
|
||||
m_bit_t /*_SYS_MEM_*/ s_timeout_sign/**/sZeroInstall; /*!< 超时信号 */
|
||||
s_taskctrl_tsp _SYS_MEM_ s_timeout_list = OS_VOID; /*!< 超时链表 */
|
||||
#endif
|
||||
/* The Timing Interrupt */
|
||||
#if (OS_TIMINTTOTAL > 0)
|
||||
s_timinthand_tsp s_timint_handle[OS_TIMINTTOTAL]; /*!< 定时中断句柄 */
|
||||
#endif
|
||||
/* The Timing Query */
|
||||
#if (OS_TIMQRYTOTAL > 0)
|
||||
s_timqryhand_tsp s_timqry_handle[OS_TIMQRYTOTAL]; /*!< 定时查询句柄 */
|
||||
#endif
|
||||
/* The Task Message */
|
||||
#if (SYSCFG_TASKMSG == __ENABLED__)
|
||||
s_u8_t volatile _SYS_MEM_ s_taskmsg_sign/**/sZeroInstall; /*!< 发送私信信号 */
|
||||
#endif
|
||||
/* The Debug Interface */
|
||||
#if (SYSCFG_DEBUGGING == __ENABLED__)
|
||||
m_bit_t /*_SYS_MEM_*/ s_debug_sendsign/**/sZeroInstall;
|
||||
s_u8_t _SYS_MEM_ s_debug_sendtype/**/sZeroInstall;
|
||||
s_u8_t _SYS_MEM_ s_debug_recvlen/**/sZeroInstall;
|
||||
char * _XDATA_MEM_ s_debug_recvptr;/*
|
||||
char _XDATA_MEM_ s_cmdline_sendbuff[OS_CMDLINESENDBUFFSIZE];
|
||||
#if (SYSCFG_DEBUG_SENDLEN == __ENABLED__)
|
||||
s_u16_t _XDATA_MEM_ s_cmdline_sendlen;
|
||||
#endif*/
|
||||
m_bit_t /*_SYS_MEM_*/ s_taskmgr_sign = SYSCFG_TASKMGR_AUTOSTART;
|
||||
char _XDATA_MEM_ s_taskmgr_sendbuff[OS_TASKMGRSENDBUFFSIZE];
|
||||
#if (SYSCFG_DEBUG_SENDLEN == __ENABLED__)
|
||||
s_u16_t _XDATA_MEM_ s_taskmgr_sendlen;
|
||||
#endif
|
||||
s_u32_t _DEBUG_MEM_ s_taskmgr_upspeed/**/sZeroInstall;
|
||||
s_alarm_ts _DEBUG_MEM_ s_alarm/**/sZeroInstall_Group;
|
||||
s_fault_ts _DEBUG_MEM_ s_fault/**/sZeroInstall_Group;
|
||||
#if (SYSCFG_SYSTICKTIME_COUNT == __ENABLED__)
|
||||
s_u32_t _DEBUG_MEM_ s_tick_count1/**/sZeroInstall;
|
||||
s_u32_t _DEBUG_MEM_ s_tick_count2/**/sZeroInstall;
|
||||
#endif
|
||||
#if (SYSCFG_TASKPC_MONITOR == __ENABLED__)
|
||||
m_pc_t _SYS_MEM_ s_pc/**/sZeroInstall;
|
||||
#endif
|
||||
#if (SYSCFG_RUNTIME_COUNT == __ENABLED__)
|
||||
s_runtime_ts _DEBUG_MEM_ s_runtime/**/sZeroInstall_Group;
|
||||
#endif
|
||||
#endif
|
||||
/* The Task */
|
||||
s_u8_t const _CONST_MEM_ s_task_pickmap[SYSCFG_TASKPICKBITMAP * 128] =
|
||||
{
|
||||
#if (SYSCFG_TASKPICKBITMAP == 1)
|
||||
/* 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F */
|
||||
/* 0 */ 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
/* 1 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
/* 2 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
/* 3 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
/* 4 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* 5 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* 6 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* 7 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
|
||||
#elif (SYSCFG_TASKPICKBITMAP == 2)
|
||||
/* 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F */
|
||||
/* 0 */~0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
|
||||
/* 1 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
/* 2 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
/* 3 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
/* 4 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
/* 5 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
/* 6 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
/* 7 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
/* 8 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* 9 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* A */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* B */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* C */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* D */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* E */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* F */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
|
||||
#endif
|
||||
}; /*!< Task pick bitmap */
|
||||
s_taskctrl_tsp _QUE_MEM_ s_task_queue[SYSCFG_TASKPRIORITY]/**/sZeroInstall_Group; /*!< 任务队列 */
|
||||
m_tqcount_t _QUE_MEM_ s_task_queue_count/**/sZeroInstall;
|
||||
#if (SYSCFG_TASKPRIORITY > 64)
|
||||
s_u8_t _QUE_MEM_ s_task_table_index/**/sZeroInstall; /*!< 任务表索引 */
|
||||
s_u8_t _QUE_MEM_ s_task_bytes_index[SYSCFG_TASKPRIORITY / 64 + !!(SYSCFG_TASKPRIORITY % 64)]/**/sZeroInstall_Group;
|
||||
s_u8_t _QUE_MEM_ s_task_ready_table[SYSCFG_TASKPRIORITY / 64 + !!(SYSCFG_TASKPRIORITY % 64)][8]/**/sZeroInstall_Group;
|
||||
#elif (SYSCFG_TASKPRIORITY > 8)
|
||||
s_u8_t _QUE_MEM_ s_task_bytes_index/**/sZeroInstall; /*!< 任务字节索引 */
|
||||
s_u8_t _QUE_MEM_ s_task_ready_table[SYSCFG_TASKPRIORITY / 8 + !!(SYSCFG_TASKPRIORITY % 8)]/**/sZeroInstall_Group;
|
||||
#else
|
||||
s_u8_t _QUE_MEM_ s_task_ready_table/**/sZeroInstall; /*!< 任务就绪表 */
|
||||
#endif
|
||||
#if (SYSCFG_SAMEPRISCHEDULE)
|
||||
s_u8_t _QUE_MEM_ s_task_ready_count[SYSCFG_TASKPRIORITY]/**/sZeroInstall_Group;
|
||||
#elif (SYSCFG_MUTEX == __ENABLED__)
|
||||
s_u8_t _SYS_MEM_ s_taskpri_ceiling = SYSCFG_BASEPRI_CEILING; /*!< 天花板优先级 */
|
||||
#endif
|
||||
#if (MCUCFG_PENDSVFIFO_DEPTH > 0 && SYSCFG_PENDSVFIFO_ERRORCALLBACK == __ENABLED__)
|
||||
s_ecode_t _SYS_MEM_ s_psvfifo_ecode; /*!< 中断挂起服务_FIFO-错误调用返回.错误码 */
|
||||
#endif
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file os_var.h
|
||||
* @brief 系统全局变量声明
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.5
|
||||
* @date 2026.06.10
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __OS_VAR_H
|
||||
#define __OS_VAR_H
|
||||
#include "os_redef.h"
|
||||
|
||||
/* The Soft-RTC */
|
||||
#if (SYSCFG_SOFTRTC == __ENABLED__)
|
||||
extern s_u8_t const _CONST_MEM_ s_month0day[13];
|
||||
extern s_u8_t _RTC_MEM_ s_month2day;
|
||||
extern s_every_ts _SYS_MEM_ s_sign_every;
|
||||
extern m_rtccount_t _SYS_MEM_ s_rtc_counter;
|
||||
extern s_rtc_ts _RTC_MEM_ s_rtc;
|
||||
#endif
|
||||
/* The Task */
|
||||
extern m_bit_t volatile/*_SYS_MEM_*/ s_sign_startup;
|
||||
extern s_schesign_tu volatile _SYS_MEM_ s_sign_schedule;
|
||||
extern m_bit_t volatile/*_SYS_MEM_*/ s_sign_delay;
|
||||
extern s_u8_t _SYS_MEM_ s_schedulelock_counter;
|
||||
extern s_ecode_t _SYS_MEM_ s_startup_ecode;
|
||||
extern s_u8_t _SYS_MEM_ s_task_status0;
|
||||
extern s_taskload_tsp _SYS_MEM_ s_task_starter;
|
||||
extern s_taskctrl_tsp _SYS_MEM_ s_task_current;
|
||||
extern s_taskctrl_tsp s_timer_list[OS_TIMESLOTNUM];
|
||||
extern s_u8_t _SYS_MEM_ s_timer_pointer;
|
||||
#if (SYSCFG_SAMEPRISCHEDULE == __TIMESHARING__ && SYSCFG_TIMESHARINGMODE == 2)
|
||||
extern s_sharing_t const _CONST_MEM_ s_time_sharing[SYSCFG_TASKPRIORITY];
|
||||
#endif
|
||||
#if (SYSCFG_KERNELLOCKNESTING == __ENABLED__)
|
||||
extern s_u8_t _SYS_MEM_ s_kernellock_counter;
|
||||
#endif
|
||||
/* The Safe runtime */
|
||||
#if (SYSCFG_SAFERUNTIME == __ENABLED__)
|
||||
extern m_bit_t /*_SYS_MEM_*/ s_timeout_sign;
|
||||
extern s_taskctrl_tsp _SYS_MEM_ s_timeout_list;
|
||||
#endif
|
||||
/* The Timing Interrupt */
|
||||
#if (OS_TIMINTTOTAL > 0)
|
||||
extern s_timinthand_tsp s_timint_handle[OS_TIMINTTOTAL];
|
||||
#endif
|
||||
/* The Timing Query */
|
||||
#if (OS_TIMQRYTOTAL > 0)
|
||||
extern s_timqryhand_tsp s_timqry_handle[OS_TIMQRYTOTAL];
|
||||
#endif
|
||||
/* The Task Message */
|
||||
#if (SYSCFG_TASKMSG == __ENABLED__)
|
||||
extern s_u8_t volatile _SYS_MEM_ s_taskmsg_sign;
|
||||
#endif
|
||||
/* The Debug Interface */
|
||||
#if (SYSCFG_DEBUGGING == __ENABLED__)
|
||||
extern m_bit_t /*_SYS_MEM_*/ s_debug_sendsign;
|
||||
extern s_u8_t _SYS_MEM_ s_debug_sendtype;
|
||||
extern s_u8_t _SYS_MEM_ s_debug_recvlen;
|
||||
extern char * _XDATA_MEM_ s_debug_recvptr;/*
|
||||
extern char _XDATA_MEM_ s_cmdline_sendbuff[OS_CMDLINESENDBUFFSIZE];
|
||||
#if (SYSCFG_DEBUG_SENDLEN == __ENABLED__)
|
||||
extern s_u16_t _XDATA_MEM_ s_cmdline_sendlen;
|
||||
#endif*/
|
||||
extern m_bit_t /*_SYS_MEM_*/ s_taskmgr_sign;
|
||||
extern char _XDATA_MEM_ s_taskmgr_sendbuff[OS_TASKMGRSENDBUFFSIZE];
|
||||
#if (SYSCFG_DEBUG_SENDLEN == __ENABLED__)
|
||||
extern s_u16_t _XDATA_MEM_ s_taskmgr_sendlen;
|
||||
#endif
|
||||
extern s_u32_t _DEBUG_MEM_ s_taskmgr_upspeed;
|
||||
extern s_alarm_ts _DEBUG_MEM_ s_alarm;
|
||||
extern s_fault_ts _DEBUG_MEM_ s_fault;
|
||||
#if (SYSCFG_SYSTICKTIME_COUNT == __ENABLED__)
|
||||
extern s_u32_t _DEBUG_MEM_ s_tick_count1;
|
||||
extern s_u32_t _DEBUG_MEM_ s_tick_count2;
|
||||
#endif
|
||||
#if (SYSCFG_TASKPC_MONITOR == __ENABLED__)
|
||||
extern m_pc_t _SYS_MEM_ s_pc;
|
||||
#endif
|
||||
#if (SYSCFG_RUNTIME_COUNT == __ENABLED__)
|
||||
extern s_runtime_ts _DEBUG_MEM_ s_runtime;
|
||||
#endif
|
||||
#endif
|
||||
/* The Task */
|
||||
extern s_u8_t const _CONST_MEM_ s_task_pickmap[SYSCFG_TASKPICKBITMAP * 128];
|
||||
extern s_taskctrl_tsp _QUE_MEM_ s_task_queue[SYSCFG_TASKPRIORITY];
|
||||
extern m_tqcount_t _QUE_MEM_ s_task_queue_count;
|
||||
#if (SYSCFG_TASKPRIORITY > 64)
|
||||
extern s_u8_t _QUE_MEM_ s_task_table_index;
|
||||
extern s_u8_t _QUE_MEM_ s_task_bytes_index[SYSCFG_TASKPRIORITY / 64 + !!(SYSCFG_TASKPRIORITY % 64)];
|
||||
extern s_u8_t _QUE_MEM_ s_task_ready_table[SYSCFG_TASKPRIORITY / 64 + !!(SYSCFG_TASKPRIORITY % 64)][8];
|
||||
#elif (SYSCFG_TASKPRIORITY > 8)
|
||||
extern s_u8_t _QUE_MEM_ s_task_bytes_index;
|
||||
extern s_u8_t _QUE_MEM_ s_task_ready_table[SYSCFG_TASKPRIORITY / 8 + !!(SYSCFG_TASKPRIORITY % 8)];
|
||||
#else
|
||||
extern s_u8_t _QUE_MEM_ s_task_ready_table;
|
||||
#endif
|
||||
#if (SYSCFG_SAMEPRISCHEDULE)
|
||||
extern s_u8_t _QUE_MEM_ s_task_ready_count[SYSCFG_TASKPRIORITY];
|
||||
#elif (SYSCFG_MUTEX == __ENABLED__)
|
||||
extern s_u8_t _SYS_MEM_ s_taskpri_ceiling;
|
||||
#endif
|
||||
#if (MCUCFG_PENDSVFIFO_DEPTH > 0 && SYSCFG_PENDSVFIFO_ERRORCALLBACK == __ENABLED__)
|
||||
extern s_ecode_t _SYS_MEM_ s_psvfifo_ecode;
|
||||
#endif
|
||||
extern void (_CODE_MEM_ * const _CONST_MEM_ sPendSV_FIFOHandler[OS_SVID_END])(void _STATIC_MEM_ *sv);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user