- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OSAL系统框架专题2010-4-15 2:47:00
9. TI协议栈所用系统框架探讨。51的系统往往不是太大,但是几十K的程序,也足以让一个初学者望而却步。我们首先忽略C语言本身的难度,光是系统框架也让生手读起来很吃力,再加上这种到处是API跟define的程序,还没有正式学习协议部分就已经让人在丛林中“迷路”了。在接下来的一段时间内,我会以TI所用的系统框架为主线进行学习,希望大家共同探讨。。。在层层迷雾中摸索了两天,终于拨云见日,那个心情啊,怎一个“爽”字了得~~~可是怎么能把这么复杂的一个问题讲得清楚呢?嗯。。。还是先上图吧注:为了便于直观,以下涉及到数据地址的地方都是由上而下,地址由高变低第1节、各个任务是如何被调用到的?我们还是先从main()函数开始,看看各个任务之间是如何协调工作的。插播一句广告:在一切都看不清的时候,忽略次要,看主要因素 -- by outman from Zigbeetech我们直接进入主循环的核心部分,看一下系统中的几个主要的任务是如何被调用,并开始自己的使命的?看一段程序的时候,往往要从它的数据结构入手。我们先看一下,主循环中的两个关键数组,*tasksEvents与*tasksArr,从图一中我们可以看出来,tasksEvents这个数组存放的是从序号为0到tasksCnt,每个任务在本次循环中是否要被运行,需要运行的任务其值非0(用橙色表示),否则为0。而tasksArr数组则存放了对应每个任务的入口地址,只有在tasksEvents中记录的需要运行的任务,在本次循环中才会被调用到。--这节讲完了。。。又有同学举手?什么?还没明白?恩。。。好像是不能讲这么短的。。。那好吧,把main函数贴过来,我们一点一点看初始化过程“先不管”,我们先看主循环(dead loop)for(;;)??// Forever Loop{? ? uint8 idx = 0;? ? Hal_ProcessPoll();??// 先不管1? ? do {? ?? ?if (tasksEvents[idx])??// 寻找最高优先级的任务来运行? ?? ?{? ?? ???break;? ?? ?}? ? } while (++idx tasksCnt);? ? if (idx tasksCnt)? ? {? ?? ?uint16 events;? ?? ?halIntState_t intState;? ?? ?HAL_ENTER_CRITICAL_SECTION(intState);? ?? ?events = tasksEvents[idx];? ?? ?tasksEvents[idx] = 0;??// 本任务运行完了,要对其清空,为后面要运行的任务让路? ?? ?HAL_EXIT_CRITICAL_SECTION(intState);? ?? ?events = (tasksArr[idx])( idx, events );//最关键的一句话,如图一中,运行对应的任务? ?? ?HAL_ENTER_CRITICAL_SECTION(intState);? ?? ?tasksEvents[idx] |= events;??// 本任务可能没完全完成,如果是这样,再次设置标志位,在下一次循环中继续执行? ?? ?HAL_EXIT_CRITICAL_SECTION(intState);? ?? ?}? ? }第2节、系统时间我们知道,每个操作系统(虽然我不认为OSAL是一个标准的操作系统,但我们先这么叫着吧)都有一个“节拍”-tick,就像每一个“活人”都有心跳一样。那么OSAL的心跳有多快呢?--1ms。当然这个速度是可以设置的,在osal_timer_activate函数中开启了系统节拍,用TICK_TIME来定义其速度#define TICK_TIME? ?1000? ?// Timer per tick - in micro-sec注意:这个1000是micro-sec(微秒),而不是milli-sec(毫秒)!我刚开始的时候就是误以为是1000ms而耽误了不少时间。那这个心脏是怎么跳动起来的呢?这得从“定时器”说起,由于本文的重点不是讲单片机基础的,如果对这个名字还陌生的同学,那还是回去先看看基础再来看这个吧。2430有4个定时/计数器,其中timer4用来做系统计时。如果认为是timer2的同学请看一下halTimerRemap这个函数。在上述osal_timer_activate函数中,开启了系统计时,并将timer4的初始设为TICK_TIME(1000),这样time
您可能关注的文档
- 《什么是管理》大学M功BA导师讲稿.doc
- NY-C-500一通讯管理机说明书.doc
- XX税务师事务取所XXX年度年检审核检查报告.doc
- 《吉林省长春市十一高中2011-2012学年高个二上学期期末考试化学》.doc
- 《实丰田产品开发体系函》试题库.doc
- 《际基础流会计》辅导讲义.doc
- 《世界品牌流价值实验室》企业如何运用低价商业模式.doc
- XX物业秩序维V护部各岗位职责.doc
- 《加强人才管理 为企业发展提供中持续的人才支持》.doc
- n大页E 5S培训教材.doc
- 兴业证券-国际宏观-2025年海内外ESG政策复盘:中期回顾.pdf
- 中信建投-恒瑞医药-600276-H股首发上市国际化转型迈入新阶段.pdf
- 华西证券-蓝思科技-300433-平台型精密制造厂商,业务布局多点开花.pdf
- 申万宏源-新股巡礼-注册制新股纵览:影石创新全球知名智能影像设备提供商.pdf
- 星光证券-翔楼新材-301160-精冲材料龙头产能释放,卡位机器人关键上游材料.pdf
- 华鑫证券-电力设备行业周报:人形机器人催化不断,光伏价格理性回落.pdf
- 华源证券-晶苑国际-02232.HK-补库驱动短期业绩改善,多品类布局增厚长期业绩.pdf
- 国盛证券-通信行业周报:来自Core Weave的视角,AI算力新物种.pdf
- 国盛证券-晶泰控股-2228.HK-AI for Science全球领袖,万亿赛道启航.pdf
- 天风证券-五矿资源-01208.HK-资源雄鹰,从安第斯高原迈入价值重估路.pdf
文档评论(0)