os_time.c
系统延时有关兼容实现信号标志组兼容
实现任务内建寄存器兼容
实现任务内建消息队列兼容
os_cfg.h
宏定义os_cfg_app.h
并与之对接os_sem.c
os_q.c
文件宏定义检查以及流程的确认os_flag.c
os_mutex.c
os_tmr.c
os_task.c
os_time.c
os_core.c
文件宏定义检查以及流程的确认os_cfg_app.h
、os_cfg.h
readme.md
OSSemSet
、OSTaskSemSet
函数OSTaskSuspend
、OSTaskResume
函数,使其具备嵌套挂起/解挂能力os_mem.c
文件OSTmrStateGet
函数OSTaskDel
函数没有删除任务内建信号量、任务内建队列的bugOS_TaskDbgListAdd
、OS_TaskDbgListRemove
函数OS_TaskInitTCB
函数OSIdleTaskHook()
OSTimeDlyResume
函数OSSemDel
函数无法返回当前等待信号量数量、无法使用OS_OPT_DEL_NO_PEND
选项的问题OSMutexDel
函数无法返回当前等待信号量数量、无法使用OS_OPT_DEL_NO_PEND
选项的问题OSQDel
函数无法返回当前等待信号量数量、无法使用OS_OPT_DEL_NO_PEND
选项的问题OSFlagDel
函数无法返回当前等待信号量数量、无法使用OS_OPT_DEL_NO_PEND
选项的问题OS_TCB
结构体成员变量OSSemPendAbort
函数,OSSemPend
函数增加了处理OS_ERR_PEND_ABORT
的功能os_rtwrap.c
文件,负责对RT-Thread和μCOS-III的转换提供支持。并在os.h
文件末尾增加os_rtwrap.c
内函数的声明OSTaskSemPendAbort
函数OSTaskQPendAbort
函数OSSemPendAbort
函数,OSSemPend
函数增加了处理OS_ERR_PEND_ABORT
的功能OSSemMutexAbort
函数,OSMutexPend
函数增加了处理OS_ERR_PEND_ABORT
的功能OSSFlagPendAbort
函数,OSFlagPend
函数增加了处理OS_ERR_PEND_ABORT
的功能OSQPendAbort
函数,OSQPend
函数增加了处理OS_ERR_PEND_ABORT
的功能OSSchedRoundRobinCfg
函数OSFlagPendGetFlagsRdy
函数OSQFlush
函数OSTaskQFlush
函数timer_sample.c
例程cpu_core.c
文件增加CPU_Init
函数,老项目如果用到该函数在迁移时不会报错,函数内部没有实际动作timer_sample.c
例程mutex_sample.c
例程OSTmrDel
函数回调函数功能OSTmrDbgListPtr
链表p_tmr->State
的所有选项,重新实现了OSTmrStateGet
函数os_tmr.c
受限项全部解决)OSInit
函数内加入临界区保护OSSemDbgListPtr
链表OSSemQty
全局变量OSMutexDbgListPtr
链表OSMutexQty
全局变量OSQDbgListPtr
链表OSQQty
全局变量OSFlagDbgListPtr
链表OSFlagQty
全局变量os_rtwrap.c
文件中增加rt_ipc_post_all
和rt_sem_release_all
函数,并实现了OSSemPost
函数OS_OPT_POST_ALL
选项sem_sample.c
例程q_sample.c
例程main.c
,严格按照μCOS-III官方给出的初始化流程进行初始化CPU_NameClr
、CPU_NameGet
、CPU_NameSet
函数os_dbg.c
、os_cfg_app.c
文件,开始与μC/Probe软件进行对接OS_TCB
成员变量.TaskState
OS_TCB
成员变量.StkPtr
改为在统计任务中定时更新OS_TCB
成员变量.PendOn
、.DbgName
.DbgName
OSMutexPendAbort
、OSSemPendAbort
、OSQPendAbort
、OSFlagPendAbort
函数返回值由当前还有多少任务在等待该内核对象 改为 放弃了多少个任务task_sem_sample.c
例程OS_MUTEX
结构体.OwnerNestingCtr
、.OwnerTCBPtr
、.OwnerOriginalPrio
成员变量OS_CFG_TASK_PROFILE_EN
宏定义,用以降低资源占用os_cfg_app.c
文件中增加OS_CFG_DBG_EN
宏定义,用以降低资源占用OS_TASK_STATE_SUSPENDED
任务状态PKG_USING_UCOSIII_WRAPPER_AUTOINIT
宏OSTmrRemainGet
函数计算剩余时间的错误OS_TMR
结构体.Match
和.Remain
成员变量OS_ERR_TASK_SUSPENDED
、OS_ERR_TASK_OPT
、OS_ERR_LOCK_NESTING_OVF
、OS_ERR_MUTEX_NESTING
、OS_ERR_MUTEX_OWNER
、OS_ERR_ROUND_ROBIN_DISABLED
、OS_ERR_STK_LIMIT_INVALID
、OS_ERR_FLAG_PEND_OPT
OSTaskStkChk
函数当传入OS_TCB*
参数为空时,转换为当前OS_TCB*
的逻辑做了调整OSTmrRemainGet
、OSTmrStop
、OSTmrStateGet
、OSTmrStart
、OSTmrDel
仿照原版增加定时器状态检查功能OSInit
函数return分支没有调用CPU_CRITICAL_EXIT()
打开中断的bugOSInitialized
全局变量;OS_FALSE
、OS_TRUE
宏定义;错误代码OS_ERR_OS_NOT_INIT
、OS_ERR_OS_NO_APP_TASK
OS_ERR_INT_Q
、OS_ERR_INT_Q_FULL
、OS_ERR_INT_Q_SIZE
、OS_ERR_INT_Q_STK_INVALID
、OS_ERR_INT_Q_STK_SIZE_INVALID
;增加3.08错误代码OS_ERR_ILLEGAL_DEL_RUN_TIME
,同时补充该错误代码的相关实现OSTmrDel
、OSTaskDel
、OSMutexDel
、OSSemDel
、OSQDel
、OSFlagDel
函数增加OS_SAFETY_CRITICAL_IEC61508
相关检查OS_ERR_MUTEX_OVF
,同时补充该错误代码的相关实现OS_ERR_TASK_SUSPEND_CTR_OVF
,同时补充该错误代码的相关实现OS_ERR_TMR_INVALID_CALLBACK
,同时补充该错误代码的相关实现OS_CFG_DBG_EN
宏定义管理范围(3.08版本如此)CPU_CRITICAL_ENTER
/CPU_CRITICAL_EXIT
匹配检查OS_CFG_INVALID_OS_CALLS_CHK_EN
宏及其实现OSTaskDel
函数在TCB指针为NULL即删除任务自己时,没有及时将内部变量p_tcb
赋值为当前任务指针的bugOS_CFG_TASK_IDLE_EN
宏以及相关检查OS_TMR
结构体.Remain
、.Match
成员变量赋值的bugOSTmrSet
函数OSTaskChangePrio
函数,目前兼容层仅1个API没有实现增加suspend_example.c
例程
修复p_tcb->TaskState
变量,增加以下功能:
#define OS_TASK_STATE_PEND_TIMEOUT (OS_STATE)( 3u) /* 0 1 1 Pend + Timeout */
#define OS_TASK_STATE_DLY_SUSPENDED (OS_STATE)( 5u) /* 1 0 1 Suspended + Delayed or Timeout */
#define OS_TASK_STATE_PEND_SUSPENDED (OS_STATE)( 6u) /* 1 1 0 Suspended + Pend */
#define OS_TASK_STATE_PEND_TIMEOUT_SUSPENDED (OS_STATE)( 7u) /* 1 1 1 Suspended + Pend + Timeout */
OS_MemInit
函数初始化内存池的bugOS_TmrCallback
定时器内部回调函数在处理OSTmrSet
更新参数时定时器参数可能无法重新设置的bugOSInit
函数的错误码检查代码OSStart
函数内统计兼容层内部任务数量的错误(不应再包含空闲任务和定时器任务,这两个任务应为RTT内部任务)OS_TmrCallback
函数设为static文件私有函数OSTmrCreate
函数多余参数检查代码os_tmr.c
注释OSSemPost
/ OSMutexPost
函数改为对OS_OPT_POST_NO_SCHED
选项忽略OS_TmrCallback
函数中,在有延迟的周期延时没有对.Match
.Remain
成员变量重新赋值的问题AppTask1_Stack
改为&AppTask1_Stack[0]
以突出堆栈的首地址OSTimeDlyResume
函数中p_tcb->TaskState
状态处理的问题OS_CFG_STAT_TASK_EN
控制范围内os_dbg.c
无用代码os.h
无用代码PKG_USING_UCOSIII_WRAPPER_TINY
以精简兼容层os_task.c
无用注释OS_CFG_TASK_SEM_EN
宏定义用于裁剪任务内建信号量PKG_USING_UCOSIII_WRAPPER_TINY
OSTaskSuspend()
函数无用的选择分支OSQDel()
函数忘记回收消息内存池导致内存泄漏的问题os_q.c
注释格式os_mem.c
注释格式os_core.c
注释格式os_flag.c
注释格式os_mutex.c
注释格式os_stat.c
注释格式os_task.c
注释格式os_time.c
注释格式os_tmr.c
注释格式os_sem.c
注释格式os_pend_multi.c
文件的readme说明OSFlagPend()
函数rt_option
变量赋初值cpu.h
文件增加CPU_CFG_STK_ALIGN_BYTES
宏定义OS_ERR_PEND_WOULD_BLOCK
错误代码的支持flag_example.c
例程OS_CFG_FLAG_MODE_CLR_EN
功能OSQPost
和OSFlagPost
函数改为对OS_OPT_POST_NO_SCHED
选项忽略OS_TCB
结构体中.FlagsPend
、.FlagsRdy
、.FlagsOpt
成员变量INIT_DEVICE_EXPORT
提前至INIT_PREV_EXPORT
.FlagsRdy
成员变量p_grp->Flags
成员变量OSTmrRemainGet()
函数返回结果单位不一致的问题OS_TMR
结构体.Remain
成员变量数值单位不一致的问题.FlagsRdy
成员变量PKG_USING_UCOSIII_WRAPPER_TINY
后,代码报错的问题RT_IPC_FLAG_FIFO
改为RT_IPC_FLAG_PRIO
以确保实时性所有内核对象兼容已经全部实现,可以满足正常的兼容需求。本版本尚未实现μCOS-III的统计任务,该功能将在后续版本中发布。
[bug fix] 修改OSTaskDel
函数没有删除任务内建信号量、任务内建队列的bug
[add] 实现OSTmrStateGet
函数(目前仅有13个uCOS-III API无法兼容)
[add] 实现Idle任务(实则为RTT Idle任务的回调函数)
[add] 实现Idle任务钩子函数OSIdleTaskHook()
[add] 实现uCOS-III内部任务——统计任务
[bug fix] 修复OSSemDel
函数无法返回当前等待信号量数量、无法使用OS_OPT_DEL_NO_PEND
选项的问题(已知)
[bug fix] 修复OSMutexDel
函数无法返回当前等待信号量数量、无法使用OS_OPT_DEL_NO_PEND
选项的问题(已知)
[bug fix] 修复OSQDel
函数无法返回当前等待信号量数量、无法使用OS_OPT_DEL_NO_PEND
选项的问题(已知)
[bug fix] 修复OSFlagDel
函数无法返回当前等待信号量数量、无法使用OS_OPT_DEL_NO_PEND
选项的问题(已知)
[bug fix] OSSemPend
函数增加了处理OS_ERR_PEND_ABORT
的功能(已知)
[bug fix] OSMutexPend
函数增加了处理OS_ERR_PEND_ABORT
的功能(已知)
[bug fix] OSQPend
函数增加了处理OS_ERR_PEND_ABORT
的功能(已知)
[bug fix] OSFlagPend
函数增加了处理OS_ERR_PEND_ABORT
的功能(已知)
[add] 增加兼容原版OS_TCB
结构体成员变量
[add] 实现OSTimeDlyResume
函数
[add] 实现OSSemPendAbort
函数
[add] 实现OSTaskSemPendAbort
函数
[add] 实现OSMutexPendAbort
函数
[add] 实现OSQPendAbort
函数
[add] 实现OSTaskQPendAbort
函数
[add] 实现OSFlagPendAbort
函数
[add] 实现OSSchedRoundRobinCfg
函数
[add] 实现OSFlagPendGetFlagsRdy
函数
[add] 实现OSFlagPendGetFlagsRdy
函数
[add] 实现OSTaskQFlush
函数
[add] 实现OSQFlush
函数(目前仅有2个uCOS-III API无法兼容)
[add] 移植cpu_core.c
文件增加CPU_Init
函数,防止老项目移植时因为没有该函数而报错,在函数内没有任何动作(DO NOTHING)
[del] 任务内建消息队列、任务内建信号量直接沿用任务的name,不再strcat字符串
[bug fix] 实现了由RTT定时器回调函数一个参数,到μCOS-III定时器回调函数两个参数的转换,在移植时可以直接沿用原版回调函数,无需再修改为RTT定时器的回调函数样式。(已知)
[add] 完整实现了p_tmr->State
的所有选项,重新实现了OSTmrStateGet
函数
[bug fix] 实现μCOS-III软件定时器带有延迟的周期延时功能(已知,os_tmr.c
受限项全部解决)
[bug fix] OSInit
函数内加入临界区保护
[add] 内核对象双向Dbg链表全部实现,并与FinSH对接,可以在msh模式下使用ucos命令查看兼容层管理的内核对象以及相关信息(例如CPU使用率)
[bug fix] 实现并解决OSSemPost
函数OS_OPT_POST_ALL
选项(已知)
[add] 增加μC/LIB全部文件(V1.39.00)
[add] 实现μC/CPU中CPU_NameClr
、CPU_NameGet
、CPU_NameSet
函数
[add] 实现与μC/Probe软件的对接以及对接所需的必要成员变量
[bug fix] 修复OSMutexPendAbort
、OSSemPendAbort
、OSQPendAbort
、OSFlagPendAbort
函数返回值由 当前还有多少任务在等待该内核对象 改为 放弃了多少个任务
[bug fix] 修复了CPU使用率突然飙升至100%的问题,该问题为μCOS-III原版(3.03版本)内部bug,即便是最新版的3.08版本该问题依然没有得到彻底解决(仅仅是将飙升至100%改成了骤降至0%)
[add] 增加OS_TASK_STATE_SUSPENDED
任务状态
[bug fix] 修复OSTmrRemainGet
函数计算剩余时间的错误
[add] 实现OS_TMR
结构体.Match
和.Remain
成员变量
[add] 实现错误代码OS_ERR_TASK_SUSPENDED
、OS_ERR_TASK_OPT
、OS_ERR_LOCK_NESTING_OVF
、OS_ERR_MUTEX_NESTING
、OS_ERR_MUTEX_OWNER
、OS_ERR_ROUND_ROBIN_DISABLED
、OS_ERR_STK_LIMIT_INVALID
、OS_ERR_FLAG_PEND_OPT
[enhance] 对OSTaskStkChk
函数当传入OS_TCB*
参数为空时,转换为当前OS_TCB*
的逻辑做了调整
[bug fix] 对函数OSTmrRemainGet
、OSTmrStop
、OSTmrStateGet
、OSTmrStart
、OSTmrDel
仿照原版增加定时器状态检查功能
[bug fix] 修复OSInit
函数return分支没有调用CPU_CRITICAL_EXIT()
打开中断的bug
[add 3.08] 增加3.08版本中新增的OSInitialized
全局变量;OS_FALSE
、OS_TRUE
宏定义;错误代码OS_ERR_OS_NOT_INIT
、OS_ERR_OS_NO_APP_TASK
[add 3.08] 删除已经在3.08中废弃的错误代码OS_ERR_INT_Q
、OS_ERR_INT_Q_FULL
、OS_ERR_INT_Q_SIZE
、OS_ERR_INT_Q_STK_INVALID
、OS_ERR_INT_Q_STK_SIZE_INVALID
;增加3.08错误代码OS_ERR_ILLEGAL_DEL_RUN_TIME
,同时补充该错误代码的相关实现
[add 3.08] 在OSTmrDel
、OSTaskDel
、OSMutexDel
、OSSemDel
、OSQDel
、OSFlagDel
函数增加OS_SAFETY_CRITICAL_IEC61508
相关检查
[add 3.08] 增加错误代码OS_ERR_MUTEX_OVF
,同时补充该错误代码的相关实现
[add 3.08] 增加错误代码OS_ERR_TASK_SUSPEND_CTR_OVF
,同时补充该错误代码的相关实现
[add 3.08] 增加错误代码OS_ERR_TMR_INVALID_CALLBACK
,同时补充该错误代码的相关实现
3.08版本错误代码相关的兼容已经全部完成
[add 3.08] 增加3.08版本的向下兼容宏定义(os.h)
[add 3.08] 增加OS_CFG_INVALID_OS_CALLS_CHK_EN
宏及其实现
[add] 在每个c和h文件开始位置都补充了μCOS-III最新的开源协议信息
[bug fix] 修复OSTaskDel
函数在TCB指针为NULL即删除任务自己时,没有及时将内部变量p_tcb
赋值为当前任务指针的bug
[add] 实现OS_CFG_TASK_IDLE_EN
宏以及相关检查
[bug fix] 修改OS_TMR
结构体.Remain
、.Match
成员变量赋值的bug
[add 3.08] 实现3.06版本中新增的OSTmrSet
函数
[add] 实现OSTaskChangePrio
函数,目前兼容层仅1个API没有实现
[bug fix] 修复p_tcb->TaskState
变量,增加以下功能:
#define OS_TASK_STATE_PEND_TIMEOUT (OS_STATE)( 3u) /* 0 1 1 Pend + Timeout */
#define OS_TASK_STATE_DLY_SUSPENDED (OS_STATE)( 5u) /* 1 0 1 Suspended + Delayed or Timeout */
#define OS_TASK_STATE_PEND_SUSPENDED (OS_STATE)( 6u) /* 1 1 0 Suspended + Pend */
#define OS_TASK_STATE_PEND_TIMEOUT_SUSPENDED (OS_STATE)( 7u) /* 1 1 1 Suspended + Pend + Timeout */
[add] 增加suspend_example.c
例程
[bug fix] 修复没有调用OS_MemInit
函数初始化内存池的bug
[bug fix] 修复OS_TmrCallback
定时器内部回调函数在处理OSTmrSet
更新参数时定时器参数可能无法重新设置的bug
[add] 增加对OSInit
函数的错误码检查代码
[bug fix] 修复OSStart
函数内统计兼容层内部任务数量的错误(不应再包含空闲任务和定时器任务,这两个任务应为RTT内部任务)
[fix] 将OS_TmrCallback
函数设为static文件私有函数
[del] 清理删除OSTmrCreate
函数多余参数检查代码
整理os_tmr.c
注释
将OSSemPost
和 OSMutexPost
函数改为对OS_OPT_POST_NO_SCHED
选项忽略
[bug fix] 将代码中μCOS改为uCOS防止在终端输出时由于μ不是ASCII码而出现乱码
[bug fix] 修复OS_TmrCallback
函数中,在有延迟的周期延时没有对.Match
.Remain
成员变量重新赋值的问题
创建任务时,将任务堆栈的首地址由AppTask1_Stack
改为&AppTask1_Stack[0]
以突出堆栈的首地址
对齐并整理注释
[del] 删除无用的钩子函数(已被RT-Thread钩子函数接管)
[bug fix] 修复OSTimeDlyResume
函数中p_tcb->TaskState
状态处理的问题
将空闲任务纳入到OS_CFG_STAT_TASK_EN
控制范围内
[del] 删除os_dbg.c
无用代码
[del] 删除os.h
无用代码
[add] 实现PKG_USING_UCOSIII_WRAPPER_TINY
以精简兼容层
[del] 删除os_task.c
无用注释
[add] 增加OS_CFG_TASK_SEM_EN
宏定义用于裁剪任务内建信号量
[add] 在os.h
中增加宏定义检查代码
[del] 删除无用配置宏定义
[adjust] 优化PKG_USING_UCOSIII_WRAPPER_TINY
[del] 删除OSTaskSuspend()
函数无用的选择分支
[bug fix] 修复OSQDel()
函数忘记回收消息内存池导致内存泄漏的问题
[adjust] 整理os_q.c
、os_mem.c
、os_core.c
、os_core.c
、os_flag.c
、os_stat.c
、os_task.c
、os_time.c
、os_tmr.c
、os_sem.c
文件注释格式
[doc] 增加对老版本os_pend_multi.c
文件的readme说明
[bug fixed] 对OSFlagPend()
函数rt_option
变量赋初值
[adjust] 优化工程文件结构
[adjust] 头文件部分包含由<>改为""
[bug] 修复关闭某些宏定义,工程报错的问题
[add] cpu.h
文件增加CPU_CFG_STK_ALIGN_BYTES
宏定义
[add] 实现对OS_ERR_PEND_WOULD_BLOCK
错误代码的支持
[add] 增加flag_example.c
例程
[add] 实现OS_CFG_FLAG_MODE_CLR_EN
功能
[adjust] OSQPost
和OSFlagPost
函数改为对OS_OPT_POST_NO_SCHED
选项忽略
[add] 实现OS_TCB
结构体中.FlagsPend
、.FlagsRdy
、.FlagsOpt
成员变量
[add] 实现广播消息队列
[adjust] 将自动初始化由INIT_DEVICE_EXPORT
提前至INIT_PREV_EXPORT
完善.FlagsRdy
成员变量
完善p_grp->Flags
成员变量
[fix] 修复OSTmrRemainGet()
函数返回结果单位不一致的问题
[fix] 修复OS_TMR
结构体.Remain
成员变量数值单位不一致的问题
[fix] 修复从RT-Thread到uCOS-III定时器换算公式没有考虑到Systick变化的问题
经过五个月的预发布测试,正式发布v1.0.0版本
将RT_IPC_FLAG_FIFO
改为RT_IPC_FLAG_PRIO
以确保实时性
受上游RT-Thread影响(https://github.com/RT-Thread/rt-thread/issues/3946) 导致兼容层的任务挂起/解挂API在挂起其他任务时,不能正确工作。任务自己挂起自己时,可以正常工作。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。