分析用的源码:
https://download.csdn.net/download/wowocpp/10890676
需要结合这些书籍
共同查看:
< 嵌入式实时操作系统μC OS原理与实践 [卢有亮编著].pdf>
<ARM Cortex-M0权威指南(中文) 高清扫描版.pdf>
OSInit 函数
OS_ENTER_CRITICAL
typedef unsigned int OS_CPU_SR; /* Define size of CPU status register (PSR = 32 bits) /
#if OS_CRITICAL_METHOD == 3 / Allocate storage for CPU status register */
OS_CPU_SR cpu_sr = 0;
#endif
异常屏蔽寄存器(PRIMASK)
Page153 :<ARM Cortex-M0权威指南(中文) 高清扫描版.pdf>
信号量的初始化
OSInit
OS_InitEventList
OS_CPU_ExceptStk 数组的作用 ?
typedef unsigned int OS_STK; /* Each stack entry is 32-bit wide
OS_CPU_EXT OS_STK OS_CPU_ExceptStk[OS_CPU_EXCEPT_STK_SIZE];
ctx :Context Switching 上下文切换。
TCB (Task Control Block )
Task Control Block
OSEventFreeList 是啥 ?
OSSemCreate 解析
TBL — table
OSEventFreeList ---- 事件空闲链表指针
调用关系
OSInit() 调用OS_InitEventList();
OS_InitEventList()中:
OSEventFreeList = &OSEventTbl[0];
#define OS_MAX_EVENTS 10 /* Max. number of event control blocks in your application /
OS_EXT OS_EVENT OSEventTbl[OS_MAX_EVENTS];/ Table of EVENT control blocks */
semaphore 信号量分析
OS_InitEventList 中:
下面的是全局变量:
(稍后补充)