版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章LTE无线通信技术开发4.3LTE协议栈解析与应用开发第4章LTE无线通信技术开发4.3LTE协议栈解析与应用协议栈工作流程协议栈执行原理协议栈关键接口函数协议栈工作流程开发场景智慧交通是一个综合性的城市服务项目,项目中蕴含着多种使用场景,如交通关键节点的数据信息采集,采集后的数据需要通过LTE网络发送到远程控制中心;如城市交通路障管理,当城市路障节点接收到控制指令时可以执行相应的控制操作;这些复杂的功能操作都需要一个强大的软件系统。开发场景智慧交通是一个综合性的城市服务项目,项目中蕴含着多种任务目标通过基于LTE无线网的城市空气质量采集和调节项目实例了解LTE的网络协议栈的工作原理和协议栈的关键接口,学习和掌握企业协议栈接口的使用,掌握应用接口的使用,通过使用应用接口能够实现快速的LTE无线传感网络开发。任务目标通过基于LTE无线网的城市空气质量采集和调节项目实例contiki操作系统Contiki是一个开源的、高度可移植的多任务操作系统,适用于联网嵌入式系统和无线传感器网络。Contiki适用于存储器资源十分受限的嵌入式单片机系统,典型的配置下Contiki只占用约2Kbytes的RAM以及40Kbytes的Flash存储器。Contiki操作系统是基于事件驱动(Event-driven)内核的操作系统。Contiki系统内部集成了两种类型的无线传感器网络协议栈:uIP和Rime。contiki操作系统Contiki是一个开源的、高度可移事件驱动Contiki两个主要机制:事件驱动和protothread机制,前者是为了降低功耗,后者是为了节省内存。在Contiki系统中,事件被分为以下三种类型:定时器事件(timerevents)进程可以设置一个定时器,在给定的时间完成之后生成一个事件,进程一直阻塞直到定时器终止,才继续执行。外部事件(externalevents)外围设备连接到具有中断功能的微处理器IO引脚,触发中断时可能生成事件。内部事件(internalevents)任何进程都可以为自身或其它进程指定事件。事件驱动Contiki两个主要机制:事件驱动和protoprotothread机制传统的操作系统使用栈保存进程上下文,每个进程需要一个栈,这对于内存极度受限的传感器设备将难以忍受。protothread机制恰解决了这个问题,通过保存进程被阻塞处的行数(进程结构体的一个变量,unsigedshort类型,只需两个字节),从而实现进程切换,当该进程下一次被调度时,通过switch(__LINE__)跳转到刚才保存的点,恢复执行。整个
Contiki只用一个栈,当进程切换时清空,大大节省内存。protothread机制传统的操作系统使用栈保存进程上下Contiki的系统运行分析Contiki内核是基于事件驱动的,系统运行可以视为不断处理事件的过程。Contiki运行通过事件触发完成,一个事件绑定相应的进程。Contiki的系统运行分析Contiki内核是基于事件驱动contiki用户进程与程序Contiki的用户进程建立较为简单。用户进程的建立有三个步骤,分别是定义用户进程,在进程列表中添加进程信息,编写进程实体。定义用户进程PROCESS(hello,"hello");进程列表中添加进程信息structprocess*constautostart_processes[]={&hello,NULL};autostart_start(autostart_processes);编写进程实体PROCESS_THREAD(hello,ev,data){….}contiki用户进程与程序Contiki的用户进程建立较为进程实体编写进程实体//hello进程主体PROCESS_THREAD(hello,ev,data){PROCESS_BEGIN();//进程启动while(1){ //进程循环体printf("HelloWorld!\r\n");//进程打印信息etimer_set(&hello_timer,CLOCK_SECOND);//进程定时进入执行设置process_status=2;PROCESS_YIELD();//进程跳转}PROCESS_END();//进程结束}进程实体编写进程实体Contiki的多种定时器Contiki包含一个时钟模型和5个定时器模型(timer,stimer,ctimer,etimer,andrtimer)5种timer简述如下:timer、stimer提供了最简单的时钟操作,即检查时钟周期是否已经结束。程序从timer中读出状态,判断时钟是否过期。tmiers是使用的系统时钟的ticks,而stimers是使用的秒。Ctimer回调定时器,驱动某一个回调函数。etimer事件定时器,驱动某一个事件。Rtimer实时时钟。Contiki的多种定时器Contiki包含一个时钟模型和5LTE无线函数接口分析EC20协议栈文件结构LTE无线函数接口分析EC20协议栈文件结构EC20协议栈工程目录结构协议栈的工程目录比较简单,总的目录下只有三个文件分组,分别是app、core、zonesion。app是系统的contiki的脚本文件。Core是contiki-3.0微操作系统的系统文件。zonesion是和NB-IOT相关的驱动文件以及相关的协议文件。EC20协议栈工程目录结构协议栈的工程目录比较简单,总的目录EC20的项目开发目录LTE├─appLTE无线应用层api│├at-uart.c调试串口初始化│├at.c提供给串口调试的AT交互协议│├zhiyun.c智云平台LTE通信接口│├zxbee-sys-command.c处理下行的用户命令│└zxbee.c无线数据包封包、解包├─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的项目开发目录LTE├─appLTE无线应用层apEC20无线关键函数解析了方便操作,企业将EC20模块的操作通过AT指令进行了封装,通过contiki协议栈实现了EC20模块的高效利用。EC20的AT指令封装代码放置在协议栈工程目录的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模块的操作EC20无线关键函数解析协议栈中真正涉及到EC20模块的操作的文件时Lte-ec20.c、Lte-inf.c和Lte-tcp.c文件,根据从底层到上层的程序设计流程,文件的操作顺序为Lte-inf.c(初始化EC20模块的串口接口操作)、Lte-ec20.c(AT指令操作及执行文件)、Lte-tcp.c(TCP连接与数据收发操作)。EC20无线关键函数解析协议栈中真正涉及到EC20模块的操作传感器应用接口分析智云传感器框架智云框架是在应用接口和无线协议接口上搭建起来的,通过合理调用这些接口,使项目的开发形成一套系统的开发逻辑。函数名称函数说明sensorInit()传感器硬件初始化sensorUpdate()传感器数据定时上报sensorControl()传感器/执行器控制函数sensorCheck()传感器预警监测及处理函数ZXBeeInfRecv()解析接收到的传感器控制命令函数PROCESS_THREAD(sensor,ev,data)传感器进程(处理传感器上报、传感器预警监测)传感器应用接口分析智云传感器框架函数名称函数说明sensor智云传感器程序解析智云框架下LTE无线节点示例程序基于Contiki系统框架开发,详细程序流程图如下:智云传感器程序解析智云框架下LTE无线节点示例程序基于Con智云框架硬件API节点传感器初始化函数与数据更新函数:voidsensor_init(void){//执行传感器设备初始化操作代码段}voidsensorUpdate(void){charpData[16];//获取系统传感器数据//更新更新数值并上报if(pData!=NULL){ ZXBeeInfSend(pData,strlen(pData)); //上传数据到智云平台}}智云框架硬件API节点传感器初始化函数与数据更新函数:voi开发实践硬件功能设计从上图中可以得知,大气压力传感器使用内部随机数发生器产生虚拟数据,而继电器使用I/O进行控制。继电器原理图如下:开发实践硬件功能设计从上图中可以得知,大气压力传感器使用内部开发实践软件逻辑设计开发实践软件逻辑设计开发实践设计通信协议为了实现LTE节点的数据能够实现远程与本地的识别,需要设计一套约定的通讯协议,约定的通信协议可以被远程设备和本地节点识别。根据项目特性设计通信协议如下:数据方向协议格式说明上行(节点往应用发送数据){airPressure=X}X表示采集的大气压力值下行(应用往节点发送指令){cmd=X}X为0表示关闭,1表示开启。开发实践设计通信协议数据方向协议格式说明上行(节点往应用发送开发实践LTE无线框架关键函数理解节点工程LTEApiTest内源码文件,理解无线协议进程及无线数据收发函数的处理。1)LTE无线协议进程zhiyun.c->PROCESS_THREAD(u_zhiyun,ev,data)。2)LTE无线数据收发api接口:voidzhiyun_send(char*pkg){package_data_send(pkg);}开发实践LTE无线框架关键函数voidzhiyun_sen开发实践LTE无线框架关键函数intpackage_data_send(char*zxbee){if(tcp_con->status!=TCP_STATUS_CONNECTED){return-1;}char*pbuf=gsm_tcp_buf();if(pbuf==NULL){Debug("package_data():errortcpbufferbusy.\r\n");return-1;}intlen=sprintf(pbuf,"{\"method\":\"sensor\",\"data\":\"%s\"}",zxbee);gsm_tcp_send(tcp_con,len);/*修改心跳包时间*/etimer_set(&timer,CLOCK_SECOND*60);returnlen;}开发实践LTE无线框架关键函数intpackage_dat开发实践任务验证通xlabTools数据记录窗口可以查看到LTE模块发出的模拟大气压力数据”airPressure=101.0”开发实践任务验证开发实践任务验证通过智云工具数据记录窗口可以查看到LTE模块发出的模拟大气压力数据开发实践任务验证项目思考LTE协议栈的执行思路是怎样的?LTE协议栈是如何将AT指令融入其中的?LTE协议栈的数据收发是如何完成的?项目思考LTE协议栈的执行思路是怎样的?第4章LTE无线通信技术开发4.3LTE协议栈解析与应用开发第4章LTE无线通信技术开发4.3LTE协议栈解析与应用协议栈工作流程协议栈执行原理协议栈关键接口函数协议栈工作流程开发场景智慧交通是一个综合性的城市服务项目,项目中蕴含着多种使用场景,如交通关键节点的数据信息采集,采集后的数据需要通过LTE网络发送到远程控制中心;如城市交通路障管理,当城市路障节点接收到控制指令时可以执行相应的控制操作;这些复杂的功能操作都需要一个强大的软件系统。开发场景智慧交通是一个综合性的城市服务项目,项目中蕴含着多种任务目标通过基于LTE无线网的城市空气质量采集和调节项目实例了解LTE的网络协议栈的工作原理和协议栈的关键接口,学习和掌握企业协议栈接口的使用,掌握应用接口的使用,通过使用应用接口能够实现快速的LTE无线传感网络开发。任务目标通过基于LTE无线网的城市空气质量采集和调节项目实例contiki操作系统Contiki是一个开源的、高度可移植的多任务操作系统,适用于联网嵌入式系统和无线传感器网络。Contiki适用于存储器资源十分受限的嵌入式单片机系统,典型的配置下Contiki只占用约2Kbytes的RAM以及40Kbytes的Flash存储器。Contiki操作系统是基于事件驱动(Event-driven)内核的操作系统。Contiki系统内部集成了两种类型的无线传感器网络协议栈:uIP和Rime。contiki操作系统Contiki是一个开源的、高度可移事件驱动Contiki两个主要机制:事件驱动和protothread机制,前者是为了降低功耗,后者是为了节省内存。在Contiki系统中,事件被分为以下三种类型:定时器事件(timerevents)进程可以设置一个定时器,在给定的时间完成之后生成一个事件,进程一直阻塞直到定时器终止,才继续执行。外部事件(externalevents)外围设备连接到具有中断功能的微处理器IO引脚,触发中断时可能生成事件。内部事件(internalevents)任何进程都可以为自身或其它进程指定事件。事件驱动Contiki两个主要机制:事件驱动和protoprotothread机制传统的操作系统使用栈保存进程上下文,每个进程需要一个栈,这对于内存极度受限的传感器设备将难以忍受。protothread机制恰解决了这个问题,通过保存进程被阻塞处的行数(进程结构体的一个变量,unsigedshort类型,只需两个字节),从而实现进程切换,当该进程下一次被调度时,通过switch(__LINE__)跳转到刚才保存的点,恢复执行。整个
Contiki只用一个栈,当进程切换时清空,大大节省内存。protothread机制传统的操作系统使用栈保存进程上下Contiki的系统运行分析Contiki内核是基于事件驱动的,系统运行可以视为不断处理事件的过程。Contiki运行通过事件触发完成,一个事件绑定相应的进程。Contiki的系统运行分析Contiki内核是基于事件驱动contiki用户进程与程序Contiki的用户进程建立较为简单。用户进程的建立有三个步骤,分别是定义用户进程,在进程列表中添加进程信息,编写进程实体。定义用户进程PROCESS(hello,"hello");进程列表中添加进程信息structprocess*constautostart_processes[]={&hello,NULL};autostart_start(autostart_processes);编写进程实体PROCESS_THREAD(hello,ev,data){….}contiki用户进程与程序Contiki的用户进程建立较为进程实体编写进程实体//hello进程主体PROCESS_THREAD(hello,ev,data){PROCESS_BEGIN();//进程启动while(1){ //进程循环体printf("HelloWorld!\r\n");//进程打印信息etimer_set(&hello_timer,CLOCK_SECOND);//进程定时进入执行设置process_status=2;PROCESS_YIELD();//进程跳转}PROCESS_END();//进程结束}进程实体编写进程实体Contiki的多种定时器Contiki包含一个时钟模型和5个定时器模型(timer,stimer,ctimer,etimer,andrtimer)5种timer简述如下:timer、stimer提供了最简单的时钟操作,即检查时钟周期是否已经结束。程序从timer中读出状态,判断时钟是否过期。tmiers是使用的系统时钟的ticks,而stimers是使用的秒。Ctimer回调定时器,驱动某一个回调函数。etimer事件定时器,驱动某一个事件。Rtimer实时时钟。Contiki的多种定时器Contiki包含一个时钟模型和5LTE无线函数接口分析EC20协议栈文件结构LTE无线函数接口分析EC20协议栈文件结构EC20协议栈工程目录结构协议栈的工程目录比较简单,总的目录下只有三个文件分组,分别是app、core、zonesion。app是系统的contiki的脚本文件。Core是contiki-3.0微操作系统的系统文件。zonesion是和NB-IOT相关的驱动文件以及相关的协议文件。EC20协议栈工程目录结构协议栈的工程目录比较简单,总的目录EC20的项目开发目录LTE├─appLTE无线应用层api│├at-uart.c调试串口初始化│├at.c提供给串口调试的AT交互协议│├zhiyun.c智云平台LTE通信接口│├zxbee-sys-command.c处理下行的用户命令│└zxbee.c无线数据包封包、解包├─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的项目开发目录LTE├─appLTE无线应用层apEC20无线关键函数解析了方便操作,企业将EC20模块的操作通过AT指令进行了封装,通过contiki协议栈实现了EC20模块的高效利用。EC20的AT指令封装代码放置在协议栈工程目录的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模块的操作EC20无线关键函数解析协议栈中真正涉及到EC20模块的操作的文件时Lte-ec20.c、Lte-inf.c和Lte-tcp.c文件,根据从底层到上层的程序设计流程,文件的操作顺序为Lte-inf.c(初始化EC20模块的串口接口操作)、Lte-ec20.c(AT指令操作及执行文件)、Lte-tcp.c(TCP连接与数据收发操作)。EC20无线关键函数解析协议栈中真正涉及到EC20模块的操作传感器应用接口分析智云传感器框架智云框架是在应用接口和无线协议接口上搭建起来的,通过合理调用这些接口,使项目的开发形成一套系统的开发逻辑。函数名称函数说明sensorInit()传感器硬件初始化sensorUpdate()传感器数据定时上报sensorControl()传感器/执行器控制函数sensorCheck()传感器预警监测及处理函数ZXBeeInfRecv()解析接收到的传感器控制命令函数PROCESS_THREAD(sensor,ev,data)传感器进程(处理传感器上报、传感器预警监测)传感器应用接口分析智云传感器框架函数名称函数说明sensor智云传感器程序解析智云框架下LTE无线节点示例程序基于Contiki系统框架开发,详细程序流程图如下:智云传感器程序解析智云框架下LTE无线节点示例程序基于Con智云框架硬件API节点传感器初始化函数与数据更新函数:voidsensor_init(void){//执行传感器设备初始化操作代码段}voidsensorUpdate(void){charpData[16];//获取系统传感器数据//更新更新数值并上报if(pData!=NULL){ ZXBeeInfSend(pData,strlen(pData)); //上传数据到智云平台}}智云框架硬件API节点传感器初始化函数与数据更新函数:voi开发实践硬件功能设计从上图中可以得知,大气压力传感器使用内部随机数发生器产生虚拟数据,而继电器使用I/O进行控制。继电器原理图如下:开发实践硬件功能设计从上图中可以得知,大气压力传感器使用内部开发实践软件逻辑设计开发实践
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026北京市东城区教育委员会所属事业单位第一批招聘296人参考题库完美版
- 2025年贵阳信息科技学院辅导员考试笔试题库附答案
- 提前转正申请书500字
- 更换小区变压器申请书
- 职工劳动保障仲裁申请书
- 续聘申请书范文急诊科
- 武术跆拳道俱乐部申请书
- 法律服务操作流程指南(标准版)
- 国学退社申请书800字
- 2026年元旦快乐故事会用插画讲述新年
- 2025年国家开放大学《社会研究方法》期末考试复习试题及答案解析
- 2025金华市轨道交通控股集团运营有限公司应届生招聘170人考试笔试备考试题及答案解析
- 2025年铍矿行业分析报告及未来发展趋势预测
- 2025年卫健委编制考试题及答案
- 2025年福建省厦门中考模拟预测地理试题
- 涉爆粉尘专项知识培训课件
- 环保企业污水处理标准操作规程
- 高危孕妇五色管理课件
- 安全总监先进个人材料范文
- 病案委员会课件
- GB/T 45816-2025道路车辆汽车空调系统用制冷剂系统安全要求
评论
0/150
提交评论