物联网长距离无线通信技术应用与开发4.3LTE协议栈解析与应用开发课件_第1页
物联网长距离无线通信技术应用与开发4.3LTE协议栈解析与应用开发课件_第2页
物联网长距离无线通信技术应用与开发4.3LTE协议栈解析与应用开发课件_第3页
物联网长距离无线通信技术应用与开发4.3LTE协议栈解析与应用开发课件_第4页
物联网长距离无线通信技术应用与开发4.3LTE协议栈解析与应用开发课件_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章 LTE无线通信技术开发4.3 LTE协议栈解析与应用开发协议栈工作流程协议栈执行原理协议栈关键接口函数开发场景智慧交通是一个综合性的城市服务项目,项目中蕴含着多种使用场景,如交通关键节点的数据信息采集,采集后的数据需要通过LTE网络发送到远程控制中心;如城市交通路障管理,当城市路障节点接收到控制指令时可以执行相应的控制操作;这些复杂的功能操作都需要一个强大的软件系统。任务目标通过基于LTE无线网的城市空气质量采集和调节项目实例了解LTE的网络协议栈的工作原理和协议栈的关键接口,学习和掌握企业协议栈接口的使用,掌握应用接口的使用,通过使用应用接口能够实现快速的LTE无线传感网络开发。co

2、ntiki操作系统Contiki 是一个开源的、高度可移植的多任务操作系统,适用于联网嵌入式系统和无线传感器网络。Contiki 适用于存储器资源十分受限的嵌入式单片机系统,典型的配置下 Contiki 只占用约 2Kbytes 的 RAM 以及 40Kbytes 的 Flash 存储器。Contiki 操作系统是基于事件驱动(Event-driven)内核的操作系统。Contiki 系统内部集成了两种类型的无线传感器网络协议栈:uIP 和 Rime。事件驱动Contiki 两个主要机制:事件驱动和 protothread 机制,前者是为了降低功耗,后者是为了节省内存。在 Contiki 系统

3、中,事件被分为以下三种类型:定时器事件(timer events)进程可以设置一个定时器,在给定的时间完成之后生成一个事件,进程一直阻塞直到定时器终止,才继续执行。外部事件(external events)外围设备连接到具有中断功能的微处理器 IO 引脚, 触发中断时可能生成事件。内部事件(internal events)任何进程都可以为自身或其它进程指定事件。protothread 机制传统的操作系统使用栈保存进程上下文,每个进程需要一个栈,这对于内存极度受限的传感器设备将难以忍受。protothread 机制恰解决了这个问题,通过保存进程被阻塞处的行数(进程结构体的一个变量,unsiged

4、 short 类型,只需两个字节),从而实现进程切换,当该进程下一次被调度时,通过 switch(_LINE_)跳转到刚才保存的点,恢复执行。整个 Contiki 只用一个栈,当进程切换时清空,大大节省内存。Contiki的系统运行分析Contiki内核是基于事件驱动的,系统运行可以视为不断处理事件的过程。Contiki运行通过事件触发完成,一个事件绑定相应的进程。contiki用户进程与程序Contiki的用户进程建立较为简单。用户进程的建立有三个步骤,分别是定义用户进程,在进程列表中添加进程信息,编写进程实体。定义用户进程PROCESS(hello, hello); 进程列表中添加进程信息

5、struct process * const autostart_processes = &hello,NULL;autostart_start(autostart_processes);编写进程实体PROCESS_THREAD(hello, ev, data) . 进程实体编写进程实体/hello进程主体PROCESS_THREAD(hello, ev, data) PROCESS_BEGIN(); /进程启动while(1) /进程循环体printf(HelloWorld!rn); /进程打印信息etimer_set(&hello_timer, CLOCK_SECOND); /进程定时进入

6、执行设置process_status = 2; PROCESS_YIELD(); /进程跳转PROCESS_END(); /进程结束Contiki的多种定时器Contiki包含一个时钟模型和5个定时器模型(timer, stimer, ctimer, etimer, and rtimer) 5种timer简述如下:timer、stimer提供了最简单的时钟操作,即检查时钟周期是否已经结束。程序从timer中读出状态,判断时钟是否过期。tmiers 是使用的系统时钟的ticks,而stimers是使用的秒。Ctimer回调定时器,驱动某一个回调函数。etimer事件定时器,驱动某一个事件。Rti

7、mer实时时钟。LTE无线函数接口分析EC20协议栈文件结构EC20协议栈工程目录结构协议栈的工程目录比较简单,总的目录下只有三个文件分组,分别是app、core、zonesion。app是系统的contiki的脚本文件。Core是contiki-3.0微操作系统的系统文件。zonesion是和NB-IOT相关的驱动文件以及相关的协议文件。EC20的项目开发目录LTE appLTE无线应用层api at-uart.c调试串口初始化 at.c提供给串口调试的AT交互协议 zhiyun.c智云平台LTE通信接口 zxbee-sys-command.c处理下行的用户命令 zxbee.c无线数据包封包

8、、解包 devLTE射频驱动及部分硬件驱动 lte-ec20.cEC20模块的AT指令操作文件 lte-inf.cEC20模块的接口操作文件 lte-tcp.cEC20的TCP连接配置文件 sensorNB-IoT节点传感器驱动 autoapps.cContiki操作系统进程列表 sensor.c传感器进程、驱动及应用 contiki-conf.hLTE网络参数配置 contiki-conf.cContiki操作系统入口EC20无线关键函数解析了方便操作,企业将EC20模块的操作通过AT指令进行了封装,通过contiki协议栈实现了EC20模块的高效利用。EC20的AT指令封装代码放置在协议栈

9、工程目录的zonesion/LTE/dev目录下.编号文件名说明1lte-ec20.cEC20模块的AT指令操作文件2lte-inf.cEC20模块的接口操作文件3lte-tcp.cEC20的TCP连接配置文件4config.cSTM32F103系列内部Flash读写操作 5debug.c调试信息处理文件6key.c按键处理7leds-arch.cLED数据收发提示文件8relay.c继电器驱动代码EC20无线关键函数解析协议栈中真正涉及到EC20模块的操作的文件时Lte-ec20.c、Lte-inf.c和Lte-tcp.c文件,根据从底层到上层的程序设计流程,文件的操作顺序为Lte-inf.

10、c(初始化EC20模块的串口接口操作)、Lte-ec20.c(AT指令操作及执行文件)、Lte-tcp.c(TCP连接与数据收发操作)。传感器应用接口分析智云传感器框架智云框架是在应用接口和无线协议接口上搭建起来的,通过合理调用这些接口,使项目的开发形成一套系统的开发逻辑。函数名称函数说明sensorInit()传感器硬件初始化sensorUpdate()传感器数据定时上报sensorControl()传感器/执行器控制函数sensorCheck ()传感器预警监测及处理函数ZXBeeInfRecv()解析接收到的传感器控制命令函数PROCESS_THREAD(sensor, ev, data

11、)传感器进程(处理传感器上报、传感器预警监测)智云传感器程序解析智云框架下LTE无线节点示例程序基于Contiki系统框架开发,详细程序流程图如下:智云框架硬件API节点传感器初始化函数与数据更新函数:void sensor_init(void) /执行传感器设备初始化操作代码段 void sensorUpdate(void)char pData16;/获取系统传感器数据/更新更新数值并上报if (pData != NULL) ZXBeeInfSend(pData, strlen(pData); / 上传数据到智云平台开发实践硬件功能设计从上图中可以得知,大气压力传感器使用内部随机数发生器产生

12、虚拟数据,而继电器使用I/O进行控制。继电器原理图如下:开发实践软件逻辑设计开发实践设计通信协议为了实现LTE节点的数据能够实现远程与本地的识别,需要设计一套约定的通讯协议,约定的通信协议可以被远程设备和本地节点识别。根据项目特性设计通信协议如下:数据方向协议格式说明上行(节点往应用发送数据)airPressure=XX表示采集的大气压力值下行(应用往节点发送指令)cmd=XX为0表示关闭,1表示开启。开发实践LTE无线框架关键函数理解节点工程LTEApiTest内源码文件,理解无线协议进程及无线数据收发函数的处理。1)LTE无线协议进程zhiyun.c-PROCESS_THREAD(u_zh

13、iyun, ev, data)。2)LTE无线数据收发api接口:void zhiyun_send(char *pkg) package_data_send(pkg);开发实践LTE无线框架关键函数int package_data_send(char *zxbee) if (tcp_con-status != TCP_STATUS_CONNECTED) return -1; char *pbuf = gsm_tcp_buf(); if (pbuf = NULL) Debug(package_data(): error tcp buffer busy.rn); return -1; int len = sprintf(pbuf, method:sensor,data:%s, zxbee); gsm_tcp_send(tcp_con, len); /*修改心跳包时间*/ e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论