在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → zigbeeOTA开启说明,协议栈2.5.1a测试通过

zigbeeOTA开启说明,协议栈2.5.1a测试通过

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:1.00M
  • 下载次数:4
  • 浏览次数:77
  • 发布时间:2020-07-25
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.pdf
  • 所需积分:2
 

实例介绍

【实例简介】
基于CC2530的zigbee-pro协议栈,版本2.5.1a完美测试,可以多个终端同时升级,非常实用
anpleapp Category. I Factory Settings General Options C/C++ Compiler Assembler Custom Build Config Output Extra Output List#defineDiagmostics Build Actions Output file Linker □ Uverri de default Secondary output file Debugger SampleApp d51 Wone for the selected f( Texas Instrument: Eo ormat F52 System Navig O Debug information for C-SPY Nordic Semiconduc M With I/0 emulation modus Buffered terminal output ROM-Monitor 回虹11wC-sPY- specific extra output file Analog Devices Output tended Simulator Format variant: No Module-local Include all K Cancel 在 Debugger目录下,如果是Cα2530DB平台,选择I的驱动,如果下面的 Device description file是空白,自行添加,路径按照卜面就行 Options for node Sanplelpp Cat Factory Settin General Options C/C++ Compiler sse Custom Build Setup Images Extra Options plugins Build Actions Drive Linker 回 Run to D Texas Instruments Third-Party Driver Exclude system breakpoints on Texas instruments M exit 口 putchar口 getchar FS2 System Navig Infineon Setup macros Nordic semiconduc □ Use macro file ROMm-Monitor Analog Devices Silabs Device Description file simulator oVeride default sf\config\devices\Texas Instruments\ioCC2530F256 adf L OK Cancel 选择 Texas Instruments的目录,核对 Retain unchanged pages和CRC6的勾选,勾选 前者的原因是前面已经下载的 ota boot loader需要在 flash paget0中保留,不能够擦 除 作者的淘宝小店,收藏一下咯,(*^_A) 超级云充值 de Sanplekpp Category. Factory Settings General Options C/C++ Compile Custom Build Download Target Build Actions Flash lock protection □ Erase flash □ Lock flash memory □ Suppress download s CCIllx, CC243x, CC251x Third-Party Driver M Retain unchanged pages □ Boot block1ock Texas Instrument FS2 System Navig. □ Retain flash pages Lock bits 000b (al:y InFineon page slze Into, ssl Nordic semiconduc ROM-Monitol 回 Verify download ○CC253x,CC254x Analog device OCRC-16 Silabs ○ Read back mem ory Simulat ampe:D-6,6,12 □卫ebng K Cancel 按照下图配置, Output format必须为 simple code。完成后编译一下,在工程目录会发现出 现sim的文件,如果没有,再检测配置过程。 Simple code目录 \ zstack Samples(Samplc App.C2530DB \EndDcviccEB\Exc Samplc App. sim Options for node "SanpleApp Assemble Custom buld Config Output Extra Output List #define Di agnostic Build Actions Linker 回 Generate extra. outpnt. f工a Output file rd-PartγDri 回0 verride default Texas Instrument SampleApp sim FS2 System N Infineon Nordic Semiconduc Output format: simple-code ROM-Monitor Analog devices Format vari ant: None K Cancel 第三步,添加OTA代码,和路径信息 下图为工程树,在 profile甲面添加四个文件:zcl.c,zcl.h, zcl ota.c, zcl ota h,路径在 ts stacke 作者的淘宝小店,收藏一下咯,(*^_A) 超级云充值 BESampleApp-EndDevice 田□HAL 田口MAC 田□MT 田□NK 田口OSAL 曰□ Profile 田国AFC H-6AFh ZCL. C h zcl. h 田⑧zc⊥atac h zcl ota. h 口 Security 田□ Services □Too|s 田口ZD0 田口ZMa 图□ZMan 田口 Output 接着需要修改链接器信息。下图所示,把原来的ⅹcl文件修改成 ota xcl,复制下面就行。 SPROJ DIRS.).① ools\co2530 DBotaxcl,如图 Options for node SampleApp 区 Category. Factory Settings General Options C/C Assembler Custom Build Config Output Extra Output List #define Diamosticr Build Actions Linker confi guration file Linker 回 Override default debugger 2530-2.5. 1a\Projectshzstack\Tools\CC2530DB\ota kcl Third-Party Driver Texas Instrument: FS2 System Navig. OVerride default program Infineon rogram start Defined by appli cat ROM-Monitor 〔 one per1ine Analog devices TOOLKIT DIRS\LIB\ Silabs Simulator Raw binary image Fil Symbol: Segment: Al K anc 接着把OTA与κCL源码文件路径添加到工程目录中,添加的所在地方如下图所示。如果不 添加,编译会提示文件路径不存在。直接复制下面进去就可以。 SPROJ DIRS.\. Source SPROJ DIRS.\\\OTA Source SPROJ DIRS..\\\. Componentsistack'zcl 作者的淘宝小店,收藏一下咯,(*^_A) 超级云充值 tions for node Sanpleapp Category Factory Settings General Options □ Multi- file Compilation C/C++ Compiler □ Discard Unused Publics Assembl Custom build Code Optimizations Output List Preprocessor Diag 1 Build Actions Linker JIgnore standard include dires Debugger Additional include directories: (one per line) Third-Party Driver SPRDJ DIRS\.ISource Texas Instruments FRDJⅡR$1.1. Source 叙RJⅡIR$1..\...{ TA\Source F52 System Navig RDJD工R cl omponents\stack\ZC InFineon SPROJ DIRS\ \. \ ZMainiTI2530DB Nordic semiconduc Preinclude ROM-Monitor Analog d g evIces Silabs Defined symbols: (one per Simulator NYK AUTO POLL □1 Preprocessor output to TOOL Pl □ Preserve comments xMT TASK Gener ate #line directiv MT APP FUNC OK anc 然后在hal里面添加文件: hal ola. c,珞径“ Components thal\target CO2530EB”,如下图所 EndDeviceEB Files 灬 日印 SampleApp- EndDevice 田□A 日口HAL 4[ Common 田□ Include 口 Target 日□CC2530EB 田口 Config 早口 Drivers 田 hal adc.c 田 hal dma. c 田 hal flash.c c] hal_key.c h al Cd. c c hal_led.c 田 hal_sleep.c 田 hal_startup. c 「 hal timer. c 田 hal uart c 田□ ncludes 田□MAC 口MT 作者的淘宝小店,收藏一下咯,(*^_A) 超级云充值 第四步:添加OTA任务和部分代码: 首先,打开工程树的App,里面相应的 OSAL XXXAppc,我的是 OSAL Sample App. c, 在文件的廾头部分添加: #includc zcl.h' #include zcl ota h 6 65#inc lude " zcl. h" 66并inc⊥ude" zcl ota.h 67 68 lude " SampleApp h" 在 tasksArr任务数组里面添加如下代码,如下 75 const pTaskEventHandlerFn tasksArr [ 76 macEventLoop, 77 nuk event1o。p 78 Hal Processevent 79#if defined( MT TASK 2 80 MT Processeventr 81 fendi 82 APs event loop, 83并 if defined( ZIGBEE FRAGMENTATION〕 8 PSF ProcessEvent, 85并 endif 86 ZAPp event1a。p 87#1 f defined( ZIGBEE FREO AG工LITY)|de王主 88 2DNwkMgr event loop, 89并enai 90 zcl event loop, 91SampleAppProcessEvent 92 ZcloTA event loop 自1 zcl event loop Sample App processEvent ∠ cIOTA event loop 然后在 osallnit Tasks添加代码,如下图: 作者的淘宝小店,收藏一下咯,(*^_A) 超级云充值 110青 111 void osalinitTasks( void 112{ 113 uint taskID 0: 114 115 tasksEvents -(uint16 *)osal mem alloc( siz 1161 nernst( casksEvent彐,0,(1zeo〔u1nt1 117 118 rmac TaskIn1t(taak工D++】 119 nuk init(task工D++ 120Ha1工n1t〔taak工D++ 121 #if defined MT TASK 122 MT TasR工n1t〔task工D++ 123并 endif 124APs工nit〔ta彐k工D++〕 125#if defined ZIGBEE FRAGMENTATION 126APsF工n1t(七a彐k工D++] 127 fendi 128 ZAPp工nit〔taak工D++〕 129#if defined ZIGBEE FREQ AGILITY 2 II define 130 ZDNwFMgr工nit(task工D++) 131 dendif 132zcl Init( taskID++) 133 SampleApp Init( taskID++ ) zC1OT工nit(task工D) 135} 136 zcl Init( taskID++) SampleApp Init( taskID++);/这里原米是 SampleApp Inite( taskID),我曾挂在这好久。。 ∠ cIoTA Init(askD) 接下来打开 XXXApp.c,我的是 SampleApp.c,先添加头文件包含: 7生 5#inc lude zcl. 6# inc lude"zc1ota.h” 7finc lude whal ota hr 7A/吉吉吉吉吉吉青言吉吉吉吉吉吉青青言吉吉言吉吉吉青青吉言吉言吉吉吉吉青吉言吉古吉吉古青青青吉言吉吉吉吉青青吉吉言吉吉吉吉青青青吉吉言吉吉吉青 然后添加下面部分代码,其实就是镜像大小,制造商ID,镜像类型与镋像版本号信息,当 然还有CRC信息。添加的时候,最好放在 GLOBAL VARIABLES声明的部分,放的地方 不对,貌似会报错 #pragma location ="PREAMBLE const COde preamble t Ota Preamble OXFFFFFFFF ∥ Program Length OTA MANUFACTURER ID.// Manufacturer ID OTA TYPE ID Image 0x00000001, / Image version # pragma required==oTA Preamble #pragma location ="CRC const code otacrc t OTA CRC OXFFFF ∥/CRC 作者的淘宝小店,收藏一下咯,(*^_A) 超级云充值 OXFFFF ∥/ CRC Shadow pragma required-OTA CRC 然后在应用程序初始化的部分,我的是 void SamplcApp ini( uint8 task id),添加如下代码: OTA ImageHeader t header; preamble t preamble #iTHAL OTA XNV IS SPI XNV SPI INITO #endif HalotARcad(o, (uint8*)&hcadcr, sizeof(OTA ImagcHcadcr t), HAL OTA DI if(header. magicNurmber == OTA HDR MAGIC NUMBER) ZcIoTa DownloadedFile Version= header fileld version ZclOTA DownloadedZig BeeStack Version header stack Version HaloTARead(PREaMBle OFFSet, uint& *)&preamble, sizeof(preamble t HAL OTA RC) zclIOTA Manulacturerld-preamble manulacturerld: cIOTA Imagc Typc= prcamblc imagc Typc ZclOTA CurrentFile Version- preamble. image Version; ZclOTA Register(task 1d); 作者的淘宝小店,收藏一下咯,(*^_A) 超级云充值 189 return none 191 void sampleApp Init( uint8 task 1d 192 193 TA ImageHeader t header; 1941 preamble t preamble; 195 196鮮i王 HAL OTA X工8sP工 197 ANV SPI INIT(: 198并ena1 199 200 HalOTARead(o, (uint8 *)sheader, sizeof(oTA Image Header t), HAL OTA DL) 201 if (header. magicNunber = OTA HDR MAGIC NUMBER) 202 203 zcloTA Down loadedFileVersion header. fileId. version: 204 zcloTA DownloadedzigBeestackversion header. stackversion 205} 206 207 HalOTARead(PREAMBLE OFFSET, (uint8 *)preamble, sizeof(preamble t), HAL OTA RC); 208 zclOTA ManufacturerId preamble manufacturer id: 209 2cloTA Image Type preamble image Type; 210 ZClOTA CurrentFileversion = preamble. imageVersion 11 212 ZCloTA Register (task id): SampleApp taskid task id; 215 SampleApp Nwkstate DEV INIT 216 Samp leApp Trans ID =0; / Device hardware initialization can be added here or in main()(Main. c 219 / If the hardware is application specific-add it here 220// If the hardware is other parts of the device add it in main() 221 ??4+卡A中4wA! PTITI T IT DTTTTAUO 接着添加回调事件的处理函数,这里函数名可以自己取,记得在前面需要声明 static void SampleAppOta ProcessOTAMsgs( zclOTA CallbackMsg t* pMsg *半来*米*****米*半**半半半**米米半*半**求**米*半来**米*来*半*****半**半半****半半****米* ≯≯本尜本≯本衤本尜本本本冰本本本本本本本本冰本本本本水本本本本冰本本尜本本本本冰冰本卡本冰水本本本本水本冰本 Sampleappota ProcessOTAMsgs (abrief Called to process callbacks from the ZcL Ota aram none *(areturn none #define dEVICE Poll rate 8000 static void SampleAppota ProcessOTAMsgs( ZclOTA CallbackMsg t* pMsg uint8 RxOnIdle switch(pMsg->ota event case ZCL OTA START CALLBACK: if(pMsg->hdr status- ZSuccess) 作者的淘宝小店,收藏一下咯,(*^_A) 超级云充值 【实例截图】
【核心代码】

标签:

实例下载地址

zigbeeOTA开启说明,协议栈2.5.1a测试通过

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警