协议栈和OS理解之一
来源:互联网 发布:unity3d 模型闪烁 编辑:程序博客网 时间:2024/06/06 02:19
刚开始学习zstack,真的不知如何下手,因为手边还是有不少资料的,于是就这本看看那本看看,但是由于每种资料的思路不一样,因此我看了很久也没搞清楚OSAL的作用,什么是绑定,为什么要添加任务等等,今天看了一本书叫《zigbee技术实践教程》,里面讲操作系统讲的特别通俗易懂。现在我将自己的一些理解写下来吧!
我们都知道,一个项目哪怕一段可运行的程序,开始部分都是在main函数里,当然协议栈也不例外,那我们先分析一下zmain.c吧
ZSEG int main( void )
{
//Turn off interrupts-关闭中断
osal_int_disable( INTS_ALL );
//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-初始化HAL驱动
HalDriverInit();
//Initialize NV System-初始化NV系统
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 isn't a task, call it's 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();
液晶支持显示
#ifdef LCD_SUPPORTED
zmain_lcd_init();
#endif
osal_start_system(); // No Return from here-没有返回
}
从zmain.c里可以知道这个函数一共做了两件事,系统初始化(由启动代码初始化硬件和软件架构需要的各个模块)和开始执行操作系统实体。里面的具体工作有:关闭中断---电压检测---初始化stack存储区 ---初始化板载IO--- 初始化HAL驱动 ---初始化NV系统 ---确定扩展地址(64位IEEE/物理地址)---初始化基本NV条目--- 初始化MAC ---操作系统---- 允许中断-----最终板初始化 ---显示设备信息 液晶支持显示。启动代码为操作系统做好准备工作后,就开始执行操作系统入口程序,并将控制权彻底交给操作系统。
- 协议栈和OS理解之一
- ssh协议和telnet协议 理解 小结
- 理解和使用ICMP协议
- USB协议理解和整理
- 协议和委托个人理解+++++++++++++++++
- Modubs协议阅读和理解
- AMQP协议和rabbitmq理解
- 字节协议理解和处理
- IM通讯协议总结之一PRIM和IMPP协议
- J2SE理解之一:声明和访问控制
- 谈谈我对协议栈设计和架构的理解
- 谈谈我对协议栈设计和架构的理解
- mac os进阶之一
- mac os进阶之一
- OS学习之一
- os 堆和栈
- 《探寻linux协议栈》之一:linux协议栈概述
- 红外遥控系统之一:硬件和协议基础
- sleep() yield() wait() notify() notifyAll()方法
- UNION与UNION ALL的区别
- 手把手教你申请专利
- 给linux系统添加系统调用_1_先从模块开始
- 1
- 协议栈和OS理解之一
- PreCreateWindow改窗口类型无效原因
- WaitForMultipleObjects使用详解
- 类变量、实例变量、局部变量
- com.appmonitor:remote这个应用奇葩啊,上传的啥玩意
- ArcGis实现贝特兹曲线(NewBezierFeedBack)
- 正则表达式之字符类
- zigbee协议重要英文缩写
- 【Project Euler】【Problem 2】Even Fibonacci numbers