关键词不能为空

当前您在: 主页 > 英语 >

ZigBee的Z-Stack操作系统

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-03-03 12:49
tags:

-

2021年3月3日发(作者:threads)


Z-Stack


操作系统





学习


Zi gBee


有两个月了,


学习期间也走了不少弯路,


刚开始调试了几个


LED


小灯的实

< br>验,串口通信实验,


点对点通信实验,以为这样基本就差不多可以做定位系统了,


于是直接


跳到定位这一块,


实际上远没 有那么简单。


我想很多初学者都是打开协议栈就被左边那一列


给 镇住了,看到那么多代码都不知道从何入手,下面我重点介绍一下关于


ZigBee


协议栈操


作系统的原理,让更多初学者能看清


Z-Stack


操作系统(其实只是一个简单的小系统,看明


白了觉得也没有多复杂)的工作过程。



下面的图片是我根据书上的资料自己绘制出来的,从这个图中可以看到


Z-Stac k


的整个


系统的工作流程。



Z-Stack


操作系统





似乎这个对于初学者来说也看不出 什么道道来,


我在看代码的时候完全不知道从哪里看


起。


即使找到了主函数,


找到了


OSAL_sta rt_system()


也不知道他到底是怎么运行的。


首先我


们先好好看一些这个微操作系统的工作流程:在


ZMain


主函数当中,基本上都是一些初始


化函数,从中断、系统时钟、堆栈 等等到最后按键、液晶显示初始化,这个对于我们来说基


本上不用看,

< br>只需大致了解其功能即可,


就像在电脑上编程只需了解软件和底层硬件的接口


一样。在初始化函数执行完以后便进入了


osal_start_s ystem()


函数,开始


OSAL


操 作系统。


OSAL


操作系统里面有七个任务,

< br>该循环轮询查询每个任务是否有需要处理的事件,


如果有


则处理,没有则跳到下一个任务,这七个任务有不同的优先级,从图中可以看出


MAC< /p>


层拥


有最高的优先级,


MAC

< p>
层如果有任务,则下面的任务不会被处理。



< /p>


好了,


基本上对于该操作系统有了一个简单的了解以后,


我们再来结合代码看看代码到


底是怎么运行的。




先大致浏览一下协议栈的目录,可以看到有

< br>ZMain


文件夹(如下乳所示)


,这个应该就


是主函数,看了很多资料确定了确实是从这里开始运行的。





打开


ZM ain.c


,找到


ZSEG int main( void )


函数,函数内容如下:



ZSEG int main( void )


{





// Turn off interrupts



osal_int_disable( INTS_ALL );




// Initialize HAL




HAL_BOARD_INIT();




// Make sure supply voltage is high enough to run




zmain_vdd_check();




// Initialize stack memory




zmain_ram_init();




// Initialize board I/O




InitBoard( OB_COLD );




// Initialze HAL drivers




HalDriverInit();




// Initialize NV System




osal_nv_init( NULL );




// Determine the extended address




zmain_ext_addr();




// Initialize basic NV items




zgInit();




// Initialize the MAC




ZMacInit();


#ifndef NONWK




// Since the AF isn't a task, call it's initialization routine




afInit();


#endif


#ifdef LCD_SUPPORTED




HalLcdInit();


#endif






// Initialize the operating system




osal_init_system();




// Allow interrupts




osal_int_enable( INTS_ALL );




// Final board initialization




InitBoard( OB_READY );




//HalLcdInit();




// Display information about this device




zmain_dev_info();




/* Display the device info on the LCD */


#ifdef LCD_SUPPORTED




zmain_lcd_init();


#endif




osal_start_system();


// No Return from here



}


// main()



————来自百度文库,转载请注明出去




大致看一下,和上述图中的初始化基本上一样。功能描述都换 做了绿色字体以便查看,


这些英文不是很难,


大都可以看懂什么 意思我就不再标注了,


实在不懂可以看上边图片,


< p>
具体解释。




函数最后是




osal_start_system();


// No Return from here


开始


OSAL


操作系统,


并且标注


了这里没有返回,也就是说在< /p>


OSAL


操作系统里面会一直永无止境的执行下去知道系统停


止工作。那么


osal_start_system()

< p>
这个函数在哪呢?一般习惯好的话看程序就知道什么意思,


更何况是那么大 的一个公司,


在函数前面有一个


osal



我们就顺着


osal


找下去。


查看协议栈


会发现有一个


OSAL


文件夹,那么函数很有可能就在这里面。如下图:






OSA L


里面仔细查找可以找到这个函数,具体如下:



void osal_start_system( void )


{


#if !defined ( ZBIT )




for(;;)



// Forever Loop


#endif




{






uint8 idx = 0;






Hal_ProcessPoll();



// This replaces MT_SerialPoll() and osal_check_timer().






do {








if (tasksEvents[idx])



// Task is highest priority that is ready.








{










break;








}


} while (++idx < tasksCnt);


//


得到了待处理的具有最高优先级的任务索引号


idx






if (idx < tasksCnt)






//


确认本次有任务需要处理







{








uint16 events;








halIntState_t intState;


//


进入


/


退出临界区,来提取出需要处理的任 务中的事件









HAL_ENTER_CRITICAL_SECTION(intState);








events = tasksEvents[idx];








tasksEvents[idx] = 0;



// Clear the Events for this task.








HAL_EXIT_CRITICAL_SECTION(intState);

-


-


-


-


-


-


-


-



本文更新与2021-03-03 12:49,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/700063.html

ZigBee的Z-Stack操作系统的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文