
UCOS
UCOS操作系统相关的技术分享
西米爱吃虾米
每天进步一点点吧。。
展开
-
uCOSIII移植补充
前言上篇写到uCOSIII的移植,由于移植的是教程写好的文件到开发板,没发现到一些问题。今天移植到另一个开发板的时候出现系统卡死在OSStartHighRdy()函数的问题。现在就再次分析一下移植过程。实验分析(一)现象分析我们将RCT6开发板上的uCOSIII移植到C8T6的板子上时,会发现系统一直没有启动,LED没用闪烁。通过单步调试,我们可以发现系统卡在OSStartHighRdy()函数里。通过分析,猜测是SysTick_Handler没有启动,导致任务优先级切换失败。(原创 2020-07-12 23:05:08 · 783 阅读 · 1 评论 -
uCOSIII移植
前言闲来无事,想起之前的朋友问到uCOS的移植过程,居然忘记了。平时使用过程中都是将以前写好的Demo工程一复制就完事了,毕竟避免重复造轮子嘛。现在就再复习一下啰。实验分析(一)准备工作(1)了解uCOSIII。uCOS作为经典的RTOS,优缺点网上文章讲述了,这里就不说了。(2)准备uCOSIII源码。uCOS源码可以在Micrium官网下载,我这里就用一直用开的3.03版本。(二)源码分析(1)EvalBoards文件夹这里其实就是官方工程的工程文件,我们只需要里面红框标原创 2020-07-01 22:41:49 · 1255 阅读 · 0 评论 -
手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(五)
继续......整个UCOSII嵌入式操作系统的任务调度策略便是如此,现在进行一个总结:某个任务在执行中,每隔一定周期发生滴答时钟中断,在中断中遍历整个任务链表,更新每个任务的延时时间,修改就绪状态。 任务执行完毕后,进入延时函数,在延时函数中会把当前任务挂起(清空当前任务的就绪状态,使其进入未就绪状态),然后根据查表发找到在就绪任务中,优先级最高的那一个任务。 找到新任务以后,人工强...转载 2019-12-16 14:00:46 · 510 阅读 · 0 评论 -
手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(四)
继续......再回到那个重要得函数:void OS_Sched (void){#if OS_CRITICAL_METHOD == 3u /* Allocate storage for CPU status register */ OS_CPU_SR cpu_sr = 0u;#endif OS_ENT...转载 2019-12-16 13:47:17 · 645 阅读 · 0 评论 -
手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(三)
继续......if (ticks > 0u) { /* 0 means no delay! */ OS_ENTER_CRITICAL(); y = OSTCBCur->OSTCBY; /* ...转载 2019-12-12 20:36:13 · 397 阅读 · 2 评论 -
手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(二)
继续......if (ticks > 0u) { /* 延时参数是否为0 */ OS_ENTER_CRITICAL(); /* 禁止中断 */ y = OSTCBCur->OSTCBY; OSRdyTbl[y] &= (OS...转载 2019-12-12 20:20:58 · 427 阅读 · 0 评论 -
手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(一)
前言所谓操作系统,便是隔绝硬件层与应用层的平台,让工程师可以最大限度的忽视硬件,直接进行逻辑开发,它最大的特点,便是可以让多任务并发执行,但并非是同时执行,形象点来说,假如我有4个任务(LED点灯,喇叭鸣叫,串口通信,数据计算),让每个任务都执行几十个毫秒,虽然实际上在任何一个时间点,都有且只有一个任务的一条代码在执行,但是从宏观上看来,这4个任务几乎是同时执行的,这4个任务的调度,就是切换是...转载 2019-12-12 15:30:16 · 643 阅读 · 0 评论