文档详情

osal初始化流程分析.doc

发布:2018-06-01约9.25千字共9页下载文档
文本预览下载声明
?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
显示全部
相似文档