【经验】一种GPRS燃气表远程OTA升级的方法
燃气表安装在用户家中,使用寿命10年。如果固件出现问题,需要升级。将燃气表拆下,返厂升级,成本太高。笔者在一个GPRS燃气表项目中应用一种远程OTA升级的方法,解决上述问题。
GPRS燃气表项目远程OTA升级方案
在燃气表OTA升级方案中,主要有3部分主要内容。一是单片机要选择大Flash的,要分出两块大的存储区域用于存储应用程序1和应用程序2;二是燃气表在出厂时要烧写2个程序,分别是bootloader程序和默认的应用程序1,bootloader程序下载地址在最前面,最先被执行; 三是要有时钟模块和GPRS模块。时钟模块用于定时唤醒单片机启动GPRS通讯,GPRS模块与后台服务器通讯下载最新的应用程序。OTA升级的关键在于,如果正在执行应用程序1,那么升级包要下载到应用程序2的Flash区域中。如果正在执行应用程序2,那么升级包要下载到应用程序1的Flash区域中。避免下载中途失败造成系统瘫痪。
GPRS燃气表项目远程OTA升级
1、Flash分区
将单片机Flash分成编号为1—4的4块区域,1号区域为单片机的bootloader程序,上电后第一个被执行。2号区域用于存储燃气表一些参数,定义其中一个字节用于标识应该执行应用程序的位置。例如0x01执行应用程序1,0x02执行应用程序2。3号区域为应用程序1,4号区域为用户应用程序2。
例如GPRS燃气表的应用程序一般不会超过50K,选用128KFlash的单片机,1号区域分配8K,地址为0x8000000—0x8001FFF;2号区域分配20K,地址为0x8002000—0x8006FFF;3号区域分配50K,地址为0x8007000—0x80137FF;4号区域分配50K,地址为0x8013800—0x801FFFF。
2、 出厂程序烧写顺序和执行顺序
燃气表出厂程序烧写顺序为:单片机首先烧写bootloader程序,bootloader程序烧写起始地址为0x8000000,大小不能超过8K;再烧写应用程序1,应用程序1烧写起始地址为0x8007000,大小不能超过50K。
燃气表上电执行顺序为:燃气表上电首先执行起始地址为0x8000000的bootloader程序,bootloader程序从2号区域中读取“用于标识应该执行应用程序的位置”的字节,如果是0x01程序指针跳转到0x8007000执行应用程序1,如果是0x02程序指针跳转到0x8013800执行应用程序2,燃气表首次出厂时,标识字节读出默认为“0xFF”,bootloader程序判断如果是“0xFF”跳转到0x8007000执行应用程序1,并将标识字节写成 “0x01”。
3、OTA升级顺序为:
燃气表定时连接后台服务器,服务器查看是否有高版本的燃气表固件程序(BIN文件格式)。如果有服务器下发OTA升级请求指令,燃气表回复准备好。服务器将程序包分包采用一问一答的形式下发, 最后一包结束后,服务器下发OTA升级结束指令,燃气表收到结束指令后,重新启动,执行新版本的应用程序。
燃气表在OTA升级前,读取“用于标识应该执行应用程序的位置”的字节,如果是0x01,将升级包写在起始地址为0x8013800的4号Flash区域,并将标识字节写成 “0x02”;如果是0x02,将升级包写在起始地址为0x80070000的3号Flash区域,并将标识字节写成 “0x01”;每次写标识字节必须确保收到服务器下发OTA升级结束指令。
服务器每次升级燃气表交替将程序下载到Flash 3区和4区,重启后通过读取标识字节,执行最新升级的应用程序。这样保证即本次升级不成功,也会保持老版本程序运行。
GPRS燃气表项目远程OTA升级模块选型
在OTA升级这个项目中,最主要的功能模块是单片机和GPRS模块,对这两部分模块选型如下:
1、单片机
在笔者参与的该项目中,对MCU主要是Flash大小、RTC、LCD驱动、UART和低功耗的要求,具体如下:
1) Flash:GPRS燃气表的应用程序一般不会超过50K, 2套应用程序加上bootloader和存储参数的区域,Flash的大小应在128(KB)~256(KB)。
2)支持UART接口,与物联网模块通讯;
3)支持RTC,定时连接后台服务器;
4)支持低功耗模式;燃气表电池供电要工作一年以上;
5) 支持LCD驱动,至少4*32段;
针对上述要求,笔者选择了SILICON LABS EFM32LG880F128-QFP100。经过对功能的比较确认,这款MCU可以很好的满足控制器对MCU的要求。
EFM32LG880F128-QFP100具体相关参数如下:
1)Flash 128 KB;
2)UART 2个;
3)支持RTC;
4)低功耗模式:0.4 µA @ 3 V 关断模式RTC运行 ; 0.95 µA @ 3 V 深度睡眠模式;
5)支持LCD驱动 8*32;
另外EFM32LG880F128-QFP100有很好的扩展性。EFM32LG880F256-QFP100的Flash是256K,如果2套应用程序比较大,可以考虑。
2、GPRS模块
对GPRS模块主要是高可靠性、小尺寸和低功耗的要求。笔者在设计中选择LONGSUNG的A9500模块。A9500是基于高通 MDM9206的LTE CatM / CatNB1蜂窝模块,专为全球IOT和M2M市场而设计。 A9500是一款高性价比、有竞争力的模组产品。 产品具有以下的重要特点:
· 小尺寸的LCC封装:产品的尺寸仅为26.0×24.0×2.5mm,小尺寸的模组可减小最终产品的尺寸,提高产品集成度。
· 高可靠性
· 关机漏电流:50uA
A9500 LTE/NB-IOT模块可为燃气表OTA升级提供无线数据传输通道, 将燃气表的相关参数和状态数据上传到无线网络,到燃气公司实现云端存储和管理。利用龙尚的A9500,实现了燃气表的联网,将终端用户和燃气公司进行了有效链接。
- |
- +1 赞 0
- 收藏
- 评论 1
本文由铮铮提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关研发服务和供应服务
相关推荐
【应用】芯科低功耗8位单片机助力于轨交通讯视频控制系统设计,睡眠电流低至50nA,唤醒时间小于2μs
轨交通讯视频控制系统中通常需要一款超低功耗的MCU作为主控,本文推荐Silicon Labs的8位单片机EFM8SB10F8G-A-QFN24作为主控方案,助力于轨交通讯视频控制系统的应用与设计。
应用方案 发布时间 : 2022-09-27
【应用】芯科科技高性能8位单片机EFM8BB31F32G用于音频放大器,集成多达四个12位DAC
本文介绍Silicon Labs 8位单片机EFM8BB31F16G-D-QFN24R用于音频放大器,优势:最高工作频率50MHz,稳定性好;集成一个12位ADC、四个具备同步和PWM功能的12位DAC;FLASH从16KB~64KB可选等。
应用方案 发布时间 : 2022-09-20
【应用】Gecko MCU EFM32用于健康可穿戴设备,拥有电池寿命长,处理能力强的优势
目前可穿戴设备技术日新月异,我们接触过的健康可穿戴设备如Fitbit、Misfit Wearables、Polaris、Garmin等。这些设备中很多都采用了Silicon Labs的MCU,如EFM32系列,因为其有电池寿命长,处理能力强等优势,能满足相关应用的需求。
应用方案 发布时间 : 2019-11-26
【经验】芯科科技单片机EFM32PG22的ADC采样如何使用LDMA传输大于2048个数据?
EFM32PG22使用LDMA传输ADC的采样数据,可以在MCU休眠下进行,从而降低MCU功耗,是比较好的应用方式。但是LDMA的计数器最多只能计数2048,限制了LDMA的一次性传输数据大小,本文介绍如何打破LDMA传输大小的限制。
设计经验 发布时间 : 2023-07-01
【经验】一招教你延长单片机的Flash擦写寿命
在单片机开发应用中,工程师经常会遇到需要在单片机内部Flash的某个区域保存和读取一些数据,而这些数据在应用中可能会经常变化,因而需要对Flash的数据经常更新。本文就以Silicon Labs的8位单片机EFM8SB10F8G为例,教大家如何延长单片机的Flash擦写寿命。
设计经验 发布时间 : 2018-04-06
EFM32PG22 Gecko MCU Family Data Sheet
型号- EFM32PG22C200F512IM32-CR,EFM32PG22,EFM32PG22C200F512IM32-C,EFM32PG22C200F64IM32-C,EFM32PG22C200F256IM40-C,EFM32PG22C200F128IM40-C,EFM32PG22C200F512IM40-C,EFM32PG22C200F256IM32-C,EFM32PG22C200F128IM32-C,EFM32PG22C200F64IM40-C
为了提高EFM32单片机AD采样的实时性并降低功耗,在RTC中断中打开AD,并设置MCU进入EM1模式下进行AD采样,但功耗并没有降低,是什么原因?
测试发现在RTC中断中,EFM32单片机并没有进入EM1模式,设置EM1模式无效;由于在RTC中断中,RTC定时事件一直存在,所以导致进入EM1模式失败。为了实现AD采样的实时性以及低功耗,可以在RTC中断中开启AD,并在退出RTC中断之后在主程序中通过判断AD采样的标志来设置MCU进入EM1睡眠模式,以此来降低功耗。
技术问答 发布时间 : 2016-10-25
C8051F930-G1DI Tested Single/Dual Battery, 0.9–3.6 V, 64 kB Flash, SmaRTClock, 10-Bit ADC MCU Die in Wafer Form
型号- C8051F930-G-GDI,C8051F930-G1DI,C8051F930G,C8051F930-G-G1DI
EFM32单片机与stm32单片机是pin对pin对换的嘛
EFM32系列单片机,是Silicon Labs提供的基于ARM-Cortex核、超低功耗MCU。关于管脚兼容情况,要视不同型号而定。具体可参考如下资料:https://www.sekorm.com/doc/62781.html 《【选型】Silicon Labs(芯科科技) EFM32 32位MCU选型指南》
技术问答 发布时间 : 2018-10-29
可做ST MCU备选方案的Silicon Labs(芯科)小蜜蜂单片机EFM8
Silicon Labs的EFM8BB1以及 EFM8BB2都是ST MCU的备选方案。其有集成度高、体积小、功耗低和优越的节电模式等特点,是成本敏感型的嵌入式系统和便携式设备等应用的理想选择。
新产品 发布时间 : 2018-06-02
32-bit MCU SDK 5.9.12.0 GA Gecko SDK Suite 2.7
型号- EFM32GG-DK3750,EFM32,EFM32GG11,EFM32WG-DK3850,EZR32,SLSTK3701A,EFM32LG-DK3650,EFM32HG,EFM32G-DK3550,SLSTK3400A
8-Bit MCU SDK 4.2.0.0 GA 20Q4 8051 SDK
型号- EFMBB52,EFM8BB51,EFM8BB52,EFM8,EFM8BB1,EFM8SB1,EFM8BB2,EFM8SB2,EFM8BB3
1.EFM8SB2单片机是不是可寻址的? 2.EFM8SB2单片机以51为内核和STC12单片机编程方法是否一样?
关于你的问题,请参考如下答案:1、问题1,EFM8SB2单片机,是C8051核,基于哈弗结构体系,数据存储器及程序存储器是单独编址,都是可寻址的。2、问题2,STC单片机是51与AVR的结合体,两者编程有不同的地方,但在C语言上,两者区别不大。
技术问答 发布时间 : 2018-08-03
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
世强深圳实验室提供Robei EDA软件免费使用服务,与VCS、NC-Verilog、Modelsim等EDA工具无缝衔接,将IC设计高度抽象化,并精简到三个基本元素:模块、引脚、连接线,自动生成代码。点击预约,支持到场/视频直播使用,资深专家全程指导。
实验室地址: 深圳 提交需求>
登录 | 立即注册
提交评论