logo资料库

ucOS-II源码阅读笔记-底层代码详细注解.doc

第1页 / 共148页
第2页 / 共148页
第3页 / 共148页
第4页 / 共148页
第5页 / 共148页
第6页 / 共148页
第7页 / 共148页
第8页 / 共148页
资料共148页,剩余部分请下载后查看
目 录
引言 ……………………………………………………………………………………………………… 01
概述:
缩略语:
02任务与中断有啥异同?
03何谓原子性操作?
04任务栈是怎么回事?
05何谓现场?
06临界保护对子中C语言的变量跟汇编子函数中的寄存器是怎样联系起来的?
OS_CPU_SR_Save
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
07任务切换时具体做些什么?
END
08任务切换在什么时候发生?
09任务被切后是个什么样子?
10关于就绪表中高效的调度算法
X
INT8U const OSUnMapTbl[] = {
11系统启动时运行的第一个任务,第一步是怎么运行的?
12空闲任务 OS_TaskIdle 在什么时候运行?
13μC/OS-II中的中断同单片机程序的中断有什么异同?
14什么是函数的可重入性?其意义何在?
15信号量的内部机理是什么?
16优先级翻转是怎么回事?
17邮箱的内部机理是什么?
18消息队列的内部机理是什么?
19标志组的内部机理是什么?
20μC/OS-II的内存管理机制是什么?
21什么是堆?malloc和free是怎么运作的?
22操作系统到底是什么东东?
OS_FLAG_GRP *OSFlagCreate(OS_FLAGS flags, INT8U *
INT8U const OSUnMapTbl[] = {
#if OS_TASK_STAT_EN > 0
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
#else
#endif
INT8U *ptbl;
#endif
#endif
#endif
#endif
#endif
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
AREA |.text|, CODE, READONLY, ALIGN=2
OS_CPU_SR_Save
OS_CPU_SR_Restore
OSStartHighRdy
OSStartHang
OSCtxSw
OSIntCtxSw
OS_CPU_PendSVHandler
#endif
#else
#endif
#else
#endif
#endif
OS_STK *stk;
#endif
#else
#endif
OS_CPU_SR cpu_sr;
OS_EXIT_CRITICAL();
INT32U cnts;
OS_CPU_CM3_NVIC_ST_CTRL |= OS_CPU_CM3_NVIC_ST
OS_CPU_CM3_NVIC_ST_CTRL |= OS_CPU_CM3_NVIC_ST
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
#if OS_EVENT_EN > 0
OS_EXIT_CRITICAL();
} else {
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
} else {
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
} else {
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
* == (void *)0 if no event control b
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
#endif
OS_ENTER_CRITICAL();
* == 0 a) if the resource is no
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
} else {
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
} else {
OS_EXIT_CRITICAL();
* == (void *)0 if the mailbox is emp
#endif
OS_ENTER_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
* == (OS_EVENT *)0 if no event contr
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
* == (void *)0 if no message was rec
#endif
OS_ENTER_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
* == (void *)0 if the queue is empty
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
} else {
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
* == (void *)0 if no message was rec
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
} else {
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
#endif
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_FLAG_NODE *pnode_next;
#endif
#endif
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
嵌入式OS μC/OS-II 源码阅读笔记 V252 STM32F107 Bush Wang 2014-7-1 本笔记系一家之言,初衷是学习μC/OS-II 系统的内在机理,从本质和源头探索操作系统原理,不足之处, 请多批评。
μC/OS-II 源码阅读笔记 全文总页数 148 目录 页 目 录 引言 ……………………………………………………………………………………………………… 01 概述 ……………………………………………………………………………………………………… 02 缩略语 …………………………………………………………………………………………………… 02 01 何谓任务? ………………………………………………………………………………………… 03 02 任务与中断有啥异同? …………………………………………………………………………… 04 03 何谓原子性操作? ………………………………………………………………………………… 04 04 任务栈是怎么回事? ……………………………………………………………………………… 04 05 何谓现场? ………………………………………………………………………………………… 04 06 临界保护对子中C语言的变量跟汇编子函数中的寄存器是怎样联系起来的?………………… 05 07 任务切换时具体做些什么? ……………………………………………………………………… 05 08 任务切换在什么时候发生? ……………………………………………………………………… 08 09 任务被切后是个什么样子? ……………………………………………………………………… 08 10 关于就绪表中高效的调度算法。 ………………………………………………………………… 08 11 系统启动时运行的第一个任务,第一步是怎么运行的? ……………………………………… 11 12 空闲任务 OS_TaskIdle 在什么时候运行?……………………………………………………… 12 13 μC/OS-II中的中断同单片机程序中的中断有什么异同? ……………………………………… 13 14 什么是函数的可重入性?其意义何在? ………………………………………………………… 13 15 信号量的内部机理是什么? ……………………………………………………………………… 13 16 优先级翻转是怎么回事? ………………………………………………………………………… 14 17 邮箱的内部机理是什么? ………………………………………………………………………… 15 18 消息队列的内部机理是什么? …………………………………………………………………… 15 19 标志组的内部机理是什么? ……………………………………………………………………… 16 20 μC/OS-II的内存管理机制是什么? ……………………………………………………………… 16 21 什么是堆?malloc和free是怎么运作的? ……………………………………………………… 17 22 操作系统到底是什么东东? ……………………………………………………………………… 17 附录A os_cpu.h ……………………………………………………………………………………… A-1 附录B uCOS_II.h ……………………………………………………………………………………… B-1 附录C OS_CORE.C ……………………………………………………………………………………… C-1 附录D os_cpu_a.asm …………………………………………………………………………………… D-1 附录E os_cpu.c ………………………………………………………………………………………… E-1 附录F OS_TASK.C………………………………………………………………………………………… F-1 附录G OS_TIME.C ……………………………………………………………………………………… G-1 附录H OS_SEM.C ………………………………………………………………………………………… H-1 附录I OS_MUTEX.C ……………………………………………………………………………………… I-1 附录J OS_MBOX.C ……………………………………………………………………………………… J-1 附录K OS_Q.C …………………………………………………………………………………………… K-1 附录L OS_FLAG.C ……………………………………………………………………………………… L-1 附录M OS_MEM.C ………………………………………………………………………………………… M-1
μC/OS-II 源码阅读笔记 全文总页数 148 目录 页
μC/OS-II 源码阅读笔记 本节总页数 18 引 言 本文是由下列问题引起而写作的,若对下面二十二个问题没有多大兴趣,可以忽略此文,若有兴趣, 请先回答这些问题,以资切磋。 01 何谓任务? 02 任务与中断有啥异同? 03 何谓原子性操作? 04 任务栈是怎么回事? 05 何谓现场? 06 临界保护对子中C语言的变量跟汇编子函数中的寄存器是怎样联系起来的? 07 任务切换时具体做些什么? 08 任务切换在什么时候发生? 09 任务被切后是个什么样子? 10 关于就绪表中高效的调度算法。 11 系统启动时运行的第一个任务,第一步是怎么运行的? 12 空闲任务 OS_TaskIdle 在什么时候运行? 13 μC/OS-II中的中断同单片机程序中的中断有什么异同? 14 什么是函数的可重入性?其意义何在? 15 信号量的内部机理是什么? 16 优先级翻转是怎么回事? 17 邮箱的内部机理是什么? 18 消息队列的内部机理是什么? 19 标志组的内部机理是什么? 20 μC/OS-II的内存管理机制是什么? 21 什么是堆?malloc和free是怎么运作的? 22 操作系统到底是什么东东? — 1 —
分享到:
收藏