历史上的今天
返回首页

历史上的今天

今天是:2025年01月19日(星期日)

正在发生

2021年01月19日 | 快速学Arm(18)--对uC/OS-II任务管理的理解

2021-01-19 来源:eefocus

看了半天关于uC/OS-II的关于任务管理的章节,由于手头的书对此叙述经常是在后面很远的章节叙述前面出现的疑问,所以对我心中的疑问也没有完全的解释.需要阅读到书的后面的时候或许能找到一些答案.也或许再阅读其他数据对本段内容的叙述时才能够准确的进行解释.


前一篇中,讲述了在ucos2中定义了一些用于任务管理的变量:

   *OSTCBCur,*OSTCBFreeList,*OSTCBHighRdy,*OSTCBList,*OSTCBPrioTbl[],OSTCBTbl[].


如果你足够细心的话可以注意到,在这些变量中唯独OSTCBTbl不是指针,而是一个纯粹的数组.也就是说在系统初始化的时候,所有创建的TCB块都被放置到OSTCBTbl[]数组中,但是这些TCB块都是空的,因此没有指定哪个元素时什么样优先级的TCB.而在所有的操作中,这个数组是始终存在的,各个任务的TCB块在这个数组中的位置始终是不变的.


但是为了管理TCB,我们需要一些指针来指向处于各种状态的TCB块,甚至要把他们连接成链表,或者组成指针数组,这样就可以指定不同的链表的功能.


打个比方,OSTCBTbl[10],那么就是说有10个TCB资源,在没有使用的时候,*OSTCBFreeList指向它们,也就是说所有的还都是空闲的,*OSTCBFreeList指向OSTCBTbl[0],当OSTCBTbl[0]被分配了,*OSTCBFreeList就指向OSTCBTbl[1],直到指向最后一个NULL.这样*OSTCBFreeList指针就确定了OSTCBTbl数组中还有多少个是空闲的TCB可以用来分配.


接下来就是另一个指针*OSTCBList,这个指通过TCB中的OSTCBNext指针形成一个链表,这个链表代表所有进入就绪状态的任务的TCB.相当于每次有新任务申请了TCB块,*OSTCBList的链表就增加了,而*OSTCBFreeList则在缩短.

   *OSTCBPrioTbl[]是一个指针数组,它按照以优先级为序号,将OSTCBTbl数组中的元素的指针形成一个数组.每个元素的在数组中的索引就是优先级号,而OSTCBPrioTbl中每个元素指向OSTCBTbl数组中相应的优先级的TCB.

   *OSTCBHighRdy指针,我理解就是在OSTCBList链表中优先级最高的TCB的指针,这个指针能够让系统知道下一个要使用的是哪一个TCB.

   *OSTCBCur指针,我还没明白与其他指针,数组的关系,应该是真正执行的任务的TCB的指针.

 

看了两天ucos2发现这东西实在是比较花费时间,否则想玩得很流畅是不太容易的.我缺的就是时间,每天一堆事情,太长的周期会让我放弃很多其他重要的事情.而且即使我把框架搭好了,手下的弟兄恐怕开发起来也会很吃力.有很多经验不丰富的人,由于基础知识缺乏很多,要想在一个复杂系统上把程序写得很稳定几乎是非常困难的事情,而很多好习惯的养成有需要一段漫长的过程,我不能保证在短时间内有那个弟兄能如此出类拔萃.因此还是接受了别人的建议从单任务开始,这样能够循序渐渐些.因此后面将再回到对单任务的学习,暂时将ucos2放到一边,看来学习的过程就是这样千折百回,打造一个优秀的工程师的确不是一件容易的事情.老板们对那些优秀的工程师应该各位珍惜,他们的确是宝贵的资源.


推荐阅读

史海拾趣

Dover Corporation公司的发展小趣事

作为一家多元化制造商,Dover Corporation一直致力于创新技术的研发与应用。公司在多个领域拥有先进的技术和解决方案,如先进的电梯控制系统、高效的燃料解决方案等。这些技术的应用不仅提高了Dover产品的性能和质量,也为客户提供了更加优质的服务。

超霸(GP)公司的发展小趣事

绿索超容深知品质是企业生存的根本。因此,公司从原材料采购到生产制造,再到成品检验,都实施了严格的质量控制措施。此外,公司还通过了ISO9001体系认证,进一步提升了其产品质量管理水平。这些努力不仅保证了绿索超容产品的优良品质,也为其赢得了客户的信任和好评。

European Crystal Org公司的发展小趣事

为了进一步扩大市场份额,ECO开始积极寻求国际合作。公司与国际知名电子制造商建立了战略合作关系,共同研发和推广新产品。这些合作不仅为ECO带来了更多的订单和收入,还提升了公司的国际知名度。同时,ECO还积极参加国际电子展会和论坛,展示公司的技术实力和产品优势。

Coherent Inc公司的发展小趣事

Coherent Inc.在激光技术领域取得了多项技术突破,如固态激光器、半导体激光器、气体激光器、飞秒激光器等。这些技术的突破不仅提升了公司的产品性能和质量,也使其在行业中处于领先地位。公司的产品广泛应用于科学研究、工业制造、医疗诊断和治疗、通信等领域,为这些领域的发展做出了重要贡献。

Dean Technology公司的发展小趣事

为了进一步扩大市场份额,Dean Technology公司开始积极拓展国际市场。他们通过设立海外办事处、与当地企业建立合作关系等方式,将产品推向全球。在这个过程中,公司不断优化产品设计,提高生产效率,以满足不同国家和地区客户的需求。随着国际市场的不断拓展,Dean Technology的高压二极管产品逐渐在全球范围内获得了良好的口碑。

Fujitsu America公司的发展小趣事

为了更好地服务北美市场的客户,Fujitsu America实施了一系列本地化服务策略。公司不仅在当地建立了完善的销售和服务网络,还积极培养本地化的技术和服务团队,以更好地满足客户的实际需求。同时,Fujitsu America还注重与当地政府和行业协会的沟通与合作,积极参与行业标准的制定和推广工作,为公司在北美市场的长期发展奠定了坚实的基础。通过这些本地化服务策略的实施,Fujitsu America在北美市场树立了良好的品牌形象和市场地位。

问答坊 | AI 解惑

PIC 单片机的C 语言编程

以前给大家的都是用汇编语言编写的单片机程序.今天我们来说以下用C语言来编写程序以前也给大家说到过这个问题,不过我感觉今天给的这本书很详细…

查看全部问答>

TDS100B/2000B数字示波器使用说明书

看到有人找示波器说明书,这里把我 用 的 泰克示波器的说明书发上来,希望有所帮助。 …

查看全部问答>

高清虽好门槛高 揭开高清不能说的秘密

近几年来,高清已经成为众多安防厂家追求的趋势,金融、交通等领域需求的增加也为安防高清日渐上升的地位奠定了基础。那么,究竟是什么原因促进了安防高清的快速发展?是不是所有的安防厂商都可以发展高清产品?百万高清在发展的过程中又遇到了哪些困 ...…

查看全部问答>

怎么将浮点型数据存入AVR EEPROM里?

本信息来自合作QQ群:AVR单片机学习与交流群(17727270) 群管理员在坛子里的ID:铜河   怎么将浮点型数据存入AVR EEPROM里,各位大哥帮帮忙啊 …

查看全部问答>

sqlce查询的问题, 好奇怪呀

我用sqlce做的数据库,里面的数据大部分是法规条文之类的,建了索引。在插入数据时,如果每次插入几十条的话,查询的时候只要一秒左右就可以了,可是如果我一次插入几百条的话,查询的时候就要十分钟甚至更长时间,甚至有的时候就死机了。而且如果 ...…

查看全部问答>

【MSP430共享】玻璃破碎检测解决方案

这是利尔达公司为Ti代理所做的一个设计,用来检测非法入侵及周界安全。当玻璃门、窗被打破时,产生的高频信号被麦克风检测到,通过单片机对信号进行分析,再进行报警。 [ 本帖最后由 鑫海宝贝 于 2011-10-12 09:34 编辑 ]…

查看全部问答>

基于msp430g2553定时器详解1

/*#include \"msp430g2553.h\"unsigned char num;void main(){  // Stop watchdog timer to prevent time out reset        WDTCTL = WDTPW + WDTHOLD;        BCSCTL ...…

查看全部问答>

理解线性电源指标

文档是吉时利的一份应用笔记,其中很介绍了线性电源设备的指标, 特别是纹波和噪声指标,还有使用远端感测提高电压准确度部分有种拨云见日的感觉。 我把纹波和噪声指标部分摘录出来: 直流电源输出的交流杂散成分被称为纹波和噪声,或称作周期 ...…

查看全部问答>

新手请多多关照

今天才看到该网站,感觉不错!…

查看全部问答>

IC静态电流

TI的芯片 写着静态电流时1UA 但我按照典型电路来接  然后测了输入的电流有50多uA  是我测试方式不对还是芯片写的夸大了…

查看全部问答>