ucos
tongdh
这个作者很懒,什么都没留下…
展开
-
OSUnMapTbl作用
有256个元素的数组是通过任务就绪表找到就绪任务中优先级最高的任务所用到的数组。代码如下:y=OSUnMapTal[OSRdyGrp];//获得优先级别的D5、D4、D3位x=OSUnMapTal[OSRdyTbl[y]]; //获得优先级别的D2、D1 、D0位prio=(y prio是表示优先级的一个无符号八位数,不过只有低六位有效。prio与就绪任务表的两个数转载 2014-01-08 11:46:21 · 3939 阅读 · 0 评论 -
启动工作原理(网上看到的,对什么是操作系统 讲的比较通俗,就摘草过来做个记录)
以前在学校的时候硬着头皮读过uCOSII的源代码,可能是当时没做详细笔记,貌似读懂了,用的时候思路还是比较混乱,后面在电信学院,王老师有次要我写个uCOSII的总结,当时知道迟早会离开那里,只是一心想抓紧机会多接触点新东西,以后出去就没这么好机会了,没那个耐心静下来看代码,最近有点时间,重新梳理了一边源代码。刚接触操作系统的时候觉得这个最神秘,到底里面做了什么,怎么就成了个操作系统,它到底转载 2014-01-08 16:37:13 · 3395 阅读 · 0 评论 -
ucos代码裁剪
每个具体的嵌入式应用系统对实时操作系统的要求是不完全相同的,在实际做项目中,一般我们不可能全部用到UC/OS-II操作系统给我们的所有资源。并且为了减少引入UC/OS操作系统而占用系统的宝贵资源。我们要根据具体情况来对UC/OS操作系统进行裁剪,得到一个即满足需要,又非常紧凑的应用软件系统。在UC/OS的配置文件(OS_CFG.H)中,对相关的配置常量进行相关的设置。现对OS_CFG.转载 2014-01-08 11:32:45 · 6504 阅读 · 1 评论 -
关于ucos全局变量定义的问题
之前一直没怎么关注过ucos里全局变量的定义技巧,也以为跟我们平常一样,简单的定义和extern,今天看文档的时候,发现源码中还使用了这么个小技巧。 在头文件定义所有的全局变量,如果只是简单这么定义~就会出现重定义的问题,所以代码中做了如下处理: 在每个全局变量类型前面加个宏,OS_EXT 而这个宏又是通过 #ifdef OS_GLOBALS #def原创 2014-01-22 16:37:32 · 2455 阅读 · 0 评论 -
关于堆栈生长方向的疑问?
OS_STK_GROWTH宏的目的就是用来标示当前堆栈是向上还是向下生长的,这个宏理解没问题 但是当对应上ptos、pbos时,我就疑惑了,俩个参数分别对应的是栈顶和栈底指针,当初始化任务的时候,这俩个指针相等, 而在ucos里面初始化idle任务时,当OS_STK_GROWTH = = 1时(堆栈从高往低生长),初始化的时候,ptos == &OSTaskIdleStk[OS_TAS原创 2014-01-21 15:08:47 · 1164 阅读 · 0 评论 -
互斥量
之前一直认为互斥量存在的意义不大·~都可以用信号量替代,所以平常很少使用,最近在移植某个CA的时候需要填写互斥量接口,发现需要传入一个任务优先级。 才对这个互斥量产生了疑问,下面是我搜索来互斥量存在的意义,以及优先级翻转的存在。 信号量是为了完成任务之间想到协调而创建的一种机制。互斥量mutex是信号量的一种特殊形式,它是初值设置为1的信号量。mutex的出现主转载 2014-01-17 13:30:21 · 1273 阅读 · 0 评论 -
OSTCBX/Y OSTCBBitX/Y 在TCB结构里的作用
关于任务就绪的就绪组和就绪表操作例如PRIO=11 11为00001011设置完成后应为:OSRdyGrp=10000010OSRdyTbl[1]=00001000 过程ptcb->OSTCBY = (INT8U)(prio>> 3)=1;这个是就绪组中的位序号ptcb->OSTCBX = (INT8U)(prio &0x07)=011;这个是在就绪表OSRdyTb转载 2014-01-08 11:34:17 · 3307 阅读 · 0 评论