随笔分类 - RTOS
摘要:当 pend请求发出的时候信号量的值减1,当post的时候信号量的值加1,信号量的值0跟1分别是用来同步跟互斥的,什么是同步,什么是互斥呢。。。假设你把信号量的值设为0,有A,B连个任务,当A发出pend请求的时候它发现此事的信号量值为0就把它减1然后挂起等待,等待到什么时候呢?等待任务B执行pos
阅读全文
摘要:有时候,如果任务A拥有内存缓冲区或信号量之类的资源,而任务B想删除该任务,这些资源就可能由于没被释放而丢失。在这种情况下,用户可以想法子让拥有这些资源的任务在使用完资源后,先释放资源,再删除自己。用户可以通过OSTaskDelReq()函数来完成该功能。 函数名 OSTaskDelReq 参数 Pr
阅读全文
摘要:在建立工程的时候,启动任务StartTask() 启动了任务MyTask(),也建立了消息队列,然后发送消息队列,发送完自己删除了自己,在接收方一直能接受到数据???为何??? 因为我们的消息队列未清空,消息队列里面一直有数据呢,当然在执行MyTask 的任务的时候, MyTask 里面有这句等待消
阅读全文
摘要:1、新建立的消息队列,两个任务通信过程中,一个发送消息队列,另一个任务等待消息队列的 时候,这个过程一定要配套出现,就是按套路出牌。 怎么说????: 假如没有按套路,第一种情况:任务一 OSQPostFront(Str_Q,s100); 发送了,消息队列,勉强程序能跑起来,但这不是 正规出牌套路,
阅读全文
摘要:1. 建立任务和建立数据队列 哪个先建立? 经过试验得知,数据队列和任务的建立先后没有顺序,都可以正常运行. 2.关于主函数的面试问题。 主函数写法有: int main() 和void main() int main() 表示该函数必须有返回值,即程序实现中一定要有return xx;字样void
阅读全文
摘要:决定栈空间的大小,不仅需要计算任务本身的需求(局部变量、函数调用等),还要计算最多中断嵌套层数(保存寄存器、中断服务程序中局部变量等) 原文地址:uCOS任务堆栈的深入分析.作者:jiecou 堆栈作用的就是用来保存局部变量,从实质上讲也就是将CPU寄存器的值保存到RAM中。在uCOS中,每一个任务
阅读全文
摘要:OSTaskCreateExt()建立任务 NT8U OSTaskCreateExt (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio, INT16U id, OS_STK *pbos, INT32U stk_size, v
阅读全文
摘要:在百度里看到张连聘文章,对ucos的两个系统任务分析的很恰当,就是最后边一段观点我不太认同,在此非常感谢张连聘。 先把ucosii中的原文写在这,然后再说一下我的具体理解(下面有我的理解部分)。 我觉得这篇文章对ucos的两个系统任务分析的很恰当,就是最后边一段观点我不太认同,在此非常感谢张连聘。
阅读全文
摘要:OS_MEM *OSMemCreate (void *addr, INT32U nblks, INT32U blksize, INT8U *err) { .............................................. plink = (void **)addr; /*
阅读全文
摘要:uC/OS-II内存管理函数内最难理解的部分就是二维指针,本文以图文并茂的方式对二维指针进行了详细分析与讲解。看完本文,相信对C里面指针的概念又会有进一步的认识。 一、OSMemCreate( ) 函数中有如下语句: OS_MEM *pmem; INT8U *pblk; void **plink;
阅读全文
摘要:几乎任何操作系统都需要有空闲任务。因为CPU(提供CPU级休眠的不算)没办法停下来,尤其是嵌入式系统这一块。CPU停下来的唯一情况就是断电了,而要保持操作系统任何时候都能及时的对外做出响应,就必须有一个任务在那等着,这个任务就是Idle,大部分操作系统上都需要有这个任务。普通的CPU如果停下来,就收
阅读全文
摘要:在ucos-II中,为了实现任务之间的同步,用到的同步机制有:信号量,邮箱和消息队列。其中这里我主要说下对信号量的使用经验。信号量在创建时, 调用OSSemCreate(INT16U cnt)函数。cnt为信号量的初始值。对cnt赋予不同的值,所起到的作用不同。如果Semp = OSSemCreat
阅读全文
摘要:信号量分为 :声明信号量、互斥信号量 转: ucos-ii学习笔记——信号量的原理及使用 #include "INCLUDES.h" #define TASK_STK_SIZE 512 char *s1="MyTask"; char *s2="YouTask"; INT8U err; //定义一个错
阅读全文
摘要:因为任务调度时一般都是通过OSTIMEDLY()来实现。在这个函数中会对当前的任务执行挂起。同时查看任务调度表中是否有优先级合适的就绪任务。如果当前任务运行时调用OSSchedLock()给调度器上锁,这样再调用OSTIMEDLY()时就会把当前任务挂起。但由于调度器上锁而不能使其他任务得到CPU的...
阅读全文
摘要:1、中断:通常被定义成一个事件,该事件改变处理器执行的指令顺序。这样的事件与cpu芯片外部电路产生的电信号相对应。2、中断的产生:每个能够发出中断请求的硬件设备控制器都有一条称为IRQ的输出线(中断线)。所有的IRQ线都与一个中断控制器的输入引脚相连,中断控制器与cpu的intr引脚相连。3、中断向...
阅读全文
摘要:对ARM堆栈的理解 堆栈严格来说应该叫做栈,栈(Stack)是限定仅在一端进行插入或删除操作的线性表。因此,对栈来说,可以进行插入或删除操作的一端端称为栈顶(top),相应地,另一端称为栈底(bottom)。不含元素的空表称为空栈。由于堆栈只允许在一端进行操作,因而按照后进先出(LIFO-Last ...
阅读全文
摘要:uC/OS 的任务调度解析1、任务调度器启动之后(初始化,主要是TCB的初始化),就可以创建任务,开始任务调度了,实际上第一个任务准确的说不是进行任务切换,而是进行启动当前最高优先级任务。uC/OS使用的是OSStartHighRdyOSStartHighRdy LDR R0, =NV...
阅读全文
摘要:中断是指在程序运行过程中,应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程。 中断服务函数(ISR)是应中断请求而运行的程序。 中断向量就是中断服务函数(ISR)的入口地址,即存储中断服务函数的内存地址的首单元。 在ucos-II中,如果任务在运行中,系统接收到中断请...
阅读全文
摘要:时间是一个非常重要的概念,我们和朋友出去游玩需要约定一个时间,做事情也需要花费一段时间,总之,我们的生活离不开时间。操作系统也一样,也需要一个时间来规范其任务的执行。我们生活中,时间的最小单位是秒,硬件电路中,产生的最小的时间是晶振的频率,在操作系统中,其最小的时间单位叫做时钟节拍(Time Tic...
阅读全文
摘要:1.uC/OS-II中使用互斥信号对象应该注意互斥信号对象(Mutual Exclusion Semaphore)简称Mutex,是uC/OS-II的内核对象之一,用于管理那些需要独占访问的资源,并使其适应多任务环境。 创建每一个Mutex,都需要指定一个空闲的优先级号,这个优先级号的优先级必须比所...
阅读全文

浙公网安备 33010602011771号