UCOSii的源代码主要包含以下几部分,ucosII_core里是ucosII源代码,无需更改,ucosII_port里是与CPU相关的代码,移植时若没有前人的例程代码需要自行进行编写,主要就是上下文切换等函数,若编译环境支持内嵌汇编语言,可以不要.asm文件,将代码写到.c文件里。ucosII_config里的includes.h包含了一些头文件,os_cfg.h用于系统裁剪(dbg.c/dbg.h、LIB文件夹在移植时未放进去,可以不用)。

与应用程序相关的文件:
1.INCLUDES.H
(1)简介:这是μC/OS-Ⅱ的主头文件,它的内部又包含了多个.h文件,在每个.C文件中都应该包含这个文件。
(2)源码:
#include
#include
#include
#include
#include
#include
#include
#include "\software\ucos-ii\ix86l\bc31\os_cpu.h"//与应用程序相关 #include "os_cfg.h" //与应用程序相关 #include "\software\ucos-ii\source\ucos_ii.h" //与应用程序相关 #include "\software\blocks\pc\bc31\pc.h" //与应用程序相关
#if OS_ARG_CHK_EN > 0 if (prio > OS_LOWEST_PRIO) { return (OS_PRIO_INVALID); } #endif
#define OS_MAX_EVENTS 2 /* 应用中最多事件控制块的数目... */ /* ... 必须大于 0 */ #define OS_MAX_FLAGS 5 /* 应用中最多事件标志组的数目... */ /* ... 必须大于 0 */ #define OS_MAX_MEM_PART 5 /* 最多内存块的数目... */ /* ... 必须大于 0 */ #define OS_MAX_QS 2 /* 应用中最多对列控制块的数目... */ /* ... 必须大于 0 */ #define OS_MAX_TASKS 11 /* 应用中最多任务数目... */ /* ... 必须大于等于2 */ #define OS_LOWEST_PRIO 12 /* 定义任务的最低优先级... */ /* ... 不得大于 63 ! */ #define OS_TASK_IDLE_STK_SIZE 512 /* 统计任务堆栈容量( # 按照OS_STK的宽度数目) */ #define OS_TASK_STAT_EN 1 /* 允许 (1) 或者禁止 (0) 统计任务 */ #define OS_TASK_STAT_STK_SIZE 512 /* 空闲任务堆栈容量 (#按照OS_STK的宽度数目) */ #define OS_ARG_CHK_EN 1 /* 允许 (1) 或者禁止 (0) 变量检查 */ #define OS_CPU_HOOKS_EN 1 /* 在处理器移植文件中允许使用 uC/OS-II 的接口函数 */ /* -------------------事件标志管理 ------------------- */ #define OS_FLAG_EN 1 /* 允许 (1) 或者禁止 (0) 产生事件标志相关代码 */ #define OS_FLAG_WAIT_CLR_EN 1 /* 允许生成 Wait on Clear 事件标志代码 */ #define OS_FLAG_ACCEPT_EN 1 /* 允许生成 OSFlagAccept() */ #define OS_FLAG_DEL_EN 1 /* 允许生成 OSFlagDel() */ #define OS_FLAG_QUERY_EN 1 /* 允许生成 OSFlagQuery() */ /* -------------------消息邮箱管理 -------- ---------- */ #define OS_MBOX_EN 1 /* 允许 (1) 或者禁止 (0) 产生消息邮箱相关代码 */ #define OS_MBOX_ACCEPT_EN 1 /* 允许生成 OSMboxAccept() */ #define OS_MBOX_DEL_EN 1 /* 允许生成 OSMboxDel() */ #define OS_MBOX_POST_EN 1 /* 允许生成 OSMboxPost() */ #define OS_MBOX_POST_OPT_EN 1 /* 允许生成 OSMboxPostOpt() */ #define OS_MBOX_QUERY_EN 1 /* 允许生成 OSMboxQuery() */ /* ---------------------内存管理 --------------------- */ #define OS_MEM_EN 1 /* 允许 (1) 或者禁止 (0) 产生内存相关代码 */ #define OS_MEM_QUERY_EN 1 /* 允许生成 OSMemQuery() */ /* ---------------- 互斥型信号量管理 ----------------- */ #define OS_MUTEX_EN 1 /* 允许 (1) 或者禁止 (0) 产生互斥型信号量相关代码 */ #define OS_MUTEX_ACCEPT_EN 1 /* 允许生成 OSMutexAccept() */ #define OS_MUTEX_DEL_EN 1 /* 允许生成 OSMutexDel() */ #define OS_MUTEX_QUERY_EN 1 /* 允许生成 OSMutexQuery() */ /* -------------------消息队列号管理 ----------------- */ #define OS_Q_EN 1 /* 允许 (1) 或者禁止 (0) 产生消息队列相关代码 */ #define OS_Q_ACCEPT_EN 1 /* 允许生成 OSQAccept() */ #define OS_Q_DEL_EN 1 /* 允许生成 OSQDel() */ #define OS_Q_FLUSH_EN 1 /* 允许生成 OSQFlush() */ #define OS_Q_POST_EN 1 /* 允许生成 OSQPost() */ #define OS_Q_POST_FRONT_EN 1 /* 允许生成 OSQPostFront() */ #define OS_Q_POST_OPT_EN 1 /* 允许生成 OSQPostOpt() */ #define OS_Q_QUERY_EN 1 /* 允许生成 OSuery() */ /* ---------------------信号管理 --------------------- */ #define OS_SEM_EN 1 /* 允许 (1) 或者禁止 (0) 产生信号量相关代码 */ #define OS_SEM_ACCEPT_EN 1 /* 允许生成 OSSemAccept() */ #define OS_SEM_DEL_EN 1 /* 允许生成 OSSemDel() */ #define OS_SEM_QUERY_EN 1 /* 允许生成 OSSemQuery() */ /* -------------------任务管理 ----------------------- */ #define OS_TASK_CHANGE_PRIO_EN 1 /* 允许生成 OSTaskChangePrio() 函数代码 */ #define OS_TASK_CREATE_EN 1 /* 允许生成 OSTaskCreate() 函数代码 */ #define OS_TASK_CREATE_EXT_EN 1 /* 允许生成 OSTaskCreateExt() 函数代码 */ #define OS_TASK_DEL_EN 1 /* 允许生成 OSTaskDel() 函数代码 */ #define OS_TASK_SUSPEND_EN 1 /* 允许生成 OSTaskSuspend() and OSTaskResume() 函数代码*/ #define OS_TASK_QUERY_EN 1 /* 允许生成 OSTaskQuery() 函数代码 */ /* ----------------------时间管理 -------------------- */ #define OS_TIME_DLY_HMSM_EN 1 /* 允许生成OSTimeDlyHMSM() 函数代码 */ #define OS_TIME_DLY_RESUME_EN 1 /* 允许生成OSTimeDlyResume() 函数代码 */ #define OS_TIME_GET_SET_EN 1 /* 允许生成 OSTimeGet() 和 OSTimeSet() 函数代码 */ /* -------------------- 混合管理 --------------------- */ #define OS_SCHED_LOCK_EN 1 /* 允许生成 OSSchedLock() 和 OSSchedUnlock() 代码 */ #define OS_TICKS_PER_SEC 200 /* 设置每秒的节拍数目 */ typedef INT16U OS_FLAGS; /* 事件标志的数据类型 (8位, 16位 或 32 位) */
与计算机硬件相关的文件:
OS_CPU.H:它与处理器相关,一些部分应根据处理器的情况进行修改(与处理器相关的常数和宏),还有一些定义数据类型的部分,无需修改。
OS_CPU_A.ASM:它集中了与处理器相关的汇编语言代码。它必须根据实际的处理器进行移植。
OS_CPU_C.C:它集中了与处理器相关的C语言代码。它也必须根据实际的处理器进行移植。
系统内核的各种服务文件:
3-11所罗列出来的函数是在应用程序中可以调用的,其余内部函数不能在应用程序中被调用。
uCOS_II.H
(ucos内部函数参数设定,无需更改)
uCOS_II.C
(包含所有UCOSii源文件,移植时不用加入工程)
OS_CORE.C
(内核结构管理文件)
OS_FLAG.C
(事件标志组代码)
OS_MUTEX.C
(包含主要互斥型信号量代码)
OS_MBOX.C
(消息邮件管理代码)
OS_q.C
(消息队列管理代码)
OS_MEM.C
(内存管理项代码)
OS_SEM.C
(信号量程序函数)
OS_TASK.C
(任务管理代码)
OS_TIME.C
(时钟管理代码)
OS_TMR.C
:UCOSII软件定时器
内部函数原型 ,在应用程序中不能使用它们
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216328.html原文链接:https://javaforall.net
