osal初始化流程分析.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
osal初始化流程分析

?OSAL初始化流程分析?2010-11-25 19:40:20 分类:?嵌入式 我使用的协议栈版本及例子信息: ZigBee2006\Texas Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Samples\SampleApp ?? OSAL作为操作系统抽象层,是整个Z-Stack运行的基础,用户自己建立的任务和应用程序都必须在此基础上运行,那我们知道整个Z-Stack协议就是用C语言编写的,既然使用C语言编写的,那程序的入口点就是main()函数,而且整个Z-Stack都只有一个main()函数入口,那我们的入口点也是main()函数,我们首先找到main()函数,在SampleApp这个工程文件列表中,我们可以看到ZMain文件,在展开该文件后,就可以看到有一个ZMain.c文件,通过文件名我们也可以看出来,里面应该包括main()函数,那我们首先看看自己添加的应用任务程序唉Z-Stack中的调用过程是怎样的: (1).main()?执行(在ZMain.c中) main() --- osal_init_system() (2).?osal_init_system()调用osalInitTasks(), (在OSAL.c中) osal_init_system() --- osalInitTasks() (3).?osalInitTasks()调用SampleApp_Init() , (在OSAL_SampleApp.c中) osalInitTasks() --- SampleApp_Init() ??? 在osalInitTasks()中实现了从MAC层到ZigBee设备应用层任务处理函数,而用户自己的初始化函数在最后,也就就优先级是最低的,taskID依次增加,taskID越高优先级也就越低。这在下面会看到具体的分析。 1.?首先,我们来看一下main()函数,在上篇文章中,我已经用流程图的形式画出了在main()函数中,各个初始化函数的执行流程,这里简单的用代码演示一下, 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?初始化板子上的I/O口 ? InitBoard( OB_COLD ); ? ??// Initialze HAL drivers?初始化硬件抽象层的驱动 ? HalDriverInit(); ? ? // Initialize NV System?初始化非易失性系统 ? osal_nv_init( NULL ); ? ??// Determine the extended address?确定扩展地址?也就是64位的IEEE地址 ? zmain_ext_addr(); ? ??// Initialize basic NV items?初始化基本的NV条目 ? zgInit(); ? ??// Initialize the MAC?初始化化MAC层 ? ZMacInit(); ? #ifndef NONWK ??// Since the AF isnt a task, call its initialization routine ? afInit(); #endif ? ??// Initialize the operating system?初始化化操作系统 ? osal_init_system(); ? ? // Allow interrupts??打开中断?允许中断 ? osal_int_enable( INTS_ALL ); ? ??// Final board initialization?最终的板载初始化 ? InitBoard( OB_READY ); ? ??// Display information about this device?显示设备的信息 ? zmain_dev_info(); ? ??/* Display the device info on the LCD */?在LCD屏上显示设备信息 #ifdef LCD_SUPPO

文档评论(0)

almm118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档