Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2289883
  • 博文数量: 187
  • 博客积分: 1457
  • 博客等级: 上尉
  • 技术积分: 2423
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-13 09:41
个人简介

如需要绘制PCB,设计电路可以和我联系。sunhenu@163.com.

文章分类

全部博文(187)

文章存档

2017年(2)

2016年(2)

2015年(7)

2014年(13)

2013年(80)

2012年(83)

分类: LINUX

2013-04-19 16:16:49

我使用的协议栈版本及例子信息:

D:\ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Samples\SampleApp

打开sampleApp工程。

用户自己添加的应用任务程序在Zstack中的调用过程是:

main() ---> osal_init_system()---> osalInitTasks()---> SampleApp_Init()

(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()中实现了多个任务初始化的设置,其中macTaskInit( taskID++ )ZDApp_Init( taskID++ )的几行代码表示对于几个系统运行初始化任务的调用,而用户自己实现的SampleApp_Init()在最后,这里taskID随着任务的增加也随之递增.所以用户自己实现的任务的初始化操作应该在osalInitTasks()中增加.

//----------------------------------------------------------------------------------------------------

1、首先来看下主函数main()

int main( void )           //主函数的功能就是完成初始化任务,然后进入OSAL

  // 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

 /*初始化stack存储区*/

  zmain_ram_init();

  // Initialize board I/O

  /*初始化板载IO*/

  InitBoard( OB_COLD );

  // Initialze HAL drivers

  /*初始化硬件驱动*/

  HalDriverInit();

  // Initialize NV System

  /*初始化NV系统*/

  osal_nv_init( NULL );

  // Determine the extended address

  /*确定扩展地址(64IEEE/物理地址)*/

  zmain_ext_addr();

  // Initialize basic NV items

  /*初始化基本NV条目*/

  zgInit();

  // Initialize the MAC

  /*初始化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 没有返回,即进入操作系统!!!

}

 

这里重点是两个函数:系统初始化函数 osal_init_system();系统主循环函数 osal_start_system();


参考文章为 http://wjf88223.blog.163.com。


阅读(3034) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

abclixu1232013-05-15 21:19:45

刚开始从事zigbee相关工作,博主文章让我受益匪浅啊。