Explorar el Código

update readme

mysterywolf hace 5 años
padre
commit
ad998fbb2c
Se han modificado 2 ficheros con 122 adiciones y 1 borrados
  1. BIN
      docs/中文说明文档.pdf
  2. 122 1
      readme.md

BIN
docs/中文说明文档.pdf


+ 122 - 1
readme.md

@@ -91,7 +91,7 @@ Keil工程路径:[rt-thread-3.1.3/bsp/stm32f103/Project.uvprojx](rt-thread-3.1
 
 ## 2.2 迁移步骤
 
-**(如果使用的是RT-Thread Nano版请参见以下步骤;若使用RT-Thread完整版可以直接跳转至[Env工具自动化配置到工程中](#6 Env工具自动化配置到工程中)章节)**
+**(如果使用的是RT-Thread Nano版请参见以下步骤;若使用RT-Thread完整版可以直接跳转至[Env工具自动化配置到工程中](#4 Env工具自动化配置到工程中)章节)**
 
 1. 将uCOS-II文件夹内的所有文件都加入到你的工程中,最好保持原有文件夹的结构。相较于原版μCOS-II增加了`os_rtwrap.c`文件,负责对RT-Thread和μCOS-II的转换提供支持。
 2. 配置`os_cfg.h`  
@@ -240,6 +240,125 @@ void  App_TimeTickHook (void);
 
 
 
+## 3.5 任务控制块、内核对象控制块(结构体)
+
+本兼容层尽可能的兼容任务、内核对象控制块(结构体)的每个成员变量,确保迁移过来的老程序如果直接访问这些结构体的成员变量也是可以直接运行,无需做修改的(尽管直接访问结构体的成员变量μCOS-II官方并不建议甚至十分反对)。
+
+例如,`OS_TCB`结构体的各个成员变量如下,可以看到,其包含了原版绝大多数成员变量。如果不用兼容原版成员变量,可以定义宏`PKG_USING_UCOSII_WRAPPER_TINY`,可以看到`OS_TCB`结构体大幅度缩减。也可以将`OS_TASK_PROFILE_EN`、 `OS_TASK_NAME_EN` 、`OS_CFG_TASK_REG_TBL_SIZE` 关闭以进一步裁剪。
+
+```c
+typedef struct os_tcb {
+    struct rt_thread OSTask;
+    OS_STK          *OSTCBStkPtr;           /* Pointer to current top of stack                         */
+
+#if OS_TASK_CREATE_EXT_EN > 0u
+    void            *OSTCBExtPtr;           /* Pointer to user definable data for TCB extension        */
+    OS_STK          *OSTCBStkBottom;        /* Pointer to bottom of stack                              */
+    INT32U           OSTCBStkSize;          /* Size of task stack (in number of stack elements)        */
+    INT16U           OSTCBOpt;              /* Task options as passed by OSTaskCreateExt()             */
+    INT16U           OSTCBId;               /* Task ID (0..65535)                                      */
+#endif
+
+    struct os_tcb   *OSTCBNext;             /* Pointer to next     TCB in the TCB list                 */
+    struct os_tcb   *OSTCBPrev;             /* Pointer to previous TCB in the TCB list                 */
+
+#if OS_TASK_CREATE_EXT_EN > 0u
+#if defined(OS_TLS_TBL_SIZE) && (OS_TLS_TBL_SIZE > 0u)
+    OS_TLS           OSTCBTLSTbl[OS_TLS_TBL_SIZE];
+#endif
+#endif
+
+#ifndef PKG_USING_UCOSII_WRAPPER_TINY
+#if (OS_EVENT_EN)
+    OS_EVENT        *OSTCBEventPtr;         /* Pointer to           event control block                */
+#endif
+#if (OS_FLAG_EN > 0u)
+    OS_FLAGS         OSTCBFlagsRdy;         /* Event flags that made task ready to run                 */
+#endif
+    INT32U           OSTCBDly;              /* Nbr ticks to delay task or, timeout waiting for event   */
+#endif
+    INT8U            OSTCBStat;             /* Task      status                                        */
+    INT8U            OSTCBStatPend;         /* Task PEND status                                        */
+    INT8U            OSTCBPrio;             /* Task priority (0 == highest)                            */
+
+#if OS_TASK_DEL_EN > 0u
+    INT8U            OSTCBDelReq;           /* Indicates whether a task needs to delete itself         */
+#endif
+
+#if OS_TASK_PROFILE_EN > 0u
+    OS_STK          *OSTCBStkBase;          /* Pointer to the beginning of the task stack              */
+    INT32U           OSTCBStkUsed;          /* Number of bytes used from the stack                     */
+#endif
+
+#if OS_TASK_NAME_EN > 0u
+    INT8U           *OSTCBTaskName;
+#endif
+
+#if OS_TASK_REG_TBL_SIZE > 0u
+    INT32U           OSTCBRegTbl[OS_TASK_REG_TBL_SIZE];
+#endif
+} OS_TCB;
+```
+
+
+
+## 3.6 全局变量
+
+目前,本兼容层可以使用以下μCOS-II原版全局变量(位于`ucos_ii.h`)。这些全局变量的具体含义请参见[2.2节](#2.2 迁移步骤)中所列举出的参考资料。
+
+```c
+#if OS_TASK_STAT_EN > 0u
+OS_EXT  INT8U             OSCPUUsage;               /* Percentage of CPU used                          */
+OS_EXT  INT32U            OSIdleCtrMax;             /* Max. value that idle ctr can take in 1 sec.     */
+OS_EXT  INT32U            OSIdleCtrRun;             /* Val. reached by idle ctr at run time in 1 sec.  */
+OS_EXT  BOOLEAN           OSStatRdy;                /* Flag indicating that the statistic task is rdy  */
+OS_EXT  OS_STK            OSTaskStatStk[OS_TASK_STAT_STK_SIZE];      /* Statistics task stack          */
+#endif
+
+#define OSIntNesting      rt_interrupt_get_nest()   /* Interrupt nesting level                         */
+
+#define OSLockNesting     rt_critical_level()       /* Multitasking lock nesting level                 */
+
+#define OSPrioCur rt_thread_self()->current_priority       /* Priority of current task                 */
+
+OS_EXT  BOOLEAN           OSRunning;                       /* Flag indicating that kernel is running   */
+
+OS_EXT  INT8U             OSTaskCtr;                       /* Number of tasks created                  */
+
+#if OS_TASK_STAT_EN > 0u
+OS_EXT  volatile  INT32U  OSIdleCtr;                       /* Idle counter                             */
+#endif
+
+#ifdef OS_SAFETY_CRITICAL_IEC61508
+OS_EXT  BOOLEAN           OSSafetyCriticalStartFlag;
+#endif
+
+#define OSTCBCur         ((OS_TCB*)rt_thread_self())       /* Pointer to currently running TCB         */
+OS_EXT  OS_TCB           *OSTCBFreeList;                   /* Pointer to list of free TCBs             */
+OS_EXT  OS_TCB           *OSTCBList;                       /* Pointer to doubly linked list of TCBs    */
+OS_EXT  OS_TCB           *OSTCBPrioTbl[OS_LOWEST_PRIO + 1u];    /* Table of pointers to created TCBs   */
+OS_EXT  OS_TCB            OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS];   /* Table of TCBs                  */
+
+#if (OS_MEM_EN > 0u) && (OS_MAX_MEM_PART > 0u)
+OS_EXT  OS_MEM           *OSMemFreeList;            /* Pointer to free list of memory partitions       */
+OS_EXT  OS_MEM            OSMemTbl[OS_MAX_MEM_PART];/* Storage for memory partition manager            */
+#endif
+
+#if OS_TASK_REG_TBL_SIZE > 0u
+OS_EXT  INT8U             OSTaskRegNextAvailID;     /* Next available Task register ID                 */
+#endif
+
+#if OS_TIME_GET_SET_EN > 0u
+#define   OSTime          rt_tick_get()             /* Current value of system time (in ticks)         */
+#endif
+
+#if OS_TMR_EN > 0u
+#define   OSTmrTime       rt_tick_get()             /* Current timer time                              */
+#endif
+```
+
+
+
 
 
 # 4 Env工具自动化配置到工程中
@@ -304,6 +423,8 @@ INIT_PREV_EXPORT(rt_ucosii_autoinit);
 
 
 
+
+
 # 5 友情链接
 
 ## 5.1 RT-Thread Nano移植教程