产品概述

单片机远程升级 远程升级单片机程序怎么设计?

小编 2024-10-09 产品概述 23 0

远程升级单片机程序怎么设计?

在物联网应用中,远程IAP升级MCU的程序是一项非常有用的功能。

当设备出现程序问题或者需要更新程序时,只需在服务器上对设备进行升级,而无需再由专门的人员去现场进行升级,从而大大地节省了人力和物力。

01

要想实现远程升级,首先应实现以下几个基本功能:

1、Flash读写: 不管是本地IAP,还是远程IAP,这都是最基本的功能。

2、无线通讯: 可通过WIFI、4G、以太网等多种方式来实现,根据实际项目需求选择。

3、通讯协议: 常用的通讯协议有TCP、HTTP、FTP、MQTT等。其中,HTTP、FTP和MQTT都属于应用层协议,都是基于TCP(传输层)来实现的。当然,我们也可以自己基于TCP编写简单的通讯协议来实现。

02

远程IAP与本地IAP的设计思路是一致的,都需要设计BOOT程序和APP程序。但也有一些需要注意的地方,主要是远程升级需要考虑网络延迟,甚至网络中断的问题。

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。

点击这里找小助理0元领取:嵌入式物联网学习资料(头条)

下面,具体介绍一下这些问题。

1、设计程序缓存区: 在内部或外部存储器开辟一块区域,用于存储分包接收到的程序数据。等到全部数据接收完毕后,再一次性写入到Flash进行升级。

这样做有两个好处:一是,直接升级时间可能会比较长,影响用户正常使用,而增加缓存区设计可以大大减少升级时间;二是,直接升级时,如果网络出现问题,可能导致设备无法正常启动变砖,而增加缓存区设计后,即使升级数据传输失败,也不影响设备的正常使用。

2、健壮的通讯协议: 本地升级时数据传输出错的概率比较小,但远程设计时就需要多考虑一些,比如前后两包数据可能同时达到等。因此,设计通讯协议时,就要更严谨,服务器发送的指令和数据都需要设备的确认回复。

3、程序备份设计: 即使有上面的各种设计的保障,也不能保证升级过程不会失败。最好能够设计一个程序备份区,在程序升级失败时运行备份区程序。

03

最后,介绍一种简单的远程升级的步骤:

1、服务器发送升级请求指令;

2、设备回复收到请求升级指令;

3、服务器发送程序升级数据,一般包含包头、包号、总包数、分包的程序数据、校验;

4、设备收到程序数据后,确认校验无误,存储到程序缓存区,并按包号回复服务器,防止出现传输包错乱;

5、服务器收到回复后,再发送下一包数据,直至结束;

6、程序数据发送完成后,服务器发送升级结束指令;

7、设备收到结束指令后,回复服务器,并在Flash指定位置写入升级标志,重启进入BOOT程序;

8、BOOT程序读取升级标志,若需要升级,则读取程序缓存区数据,写入到Flash中;

9、升级完毕,跳转到Flash指定地址运行。

END

来源:嵌入式技术开发

本文转载自“嵌入式微处理器”,如有侵权,请联系删除原文链接:远程升级单片机程序怎么设计?

版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

基于MSP430F247单片机的远程升级方案

  MSP430系列单片机常用的程序下载方式为JTAG、BSL,实际产品应用中会用到固件的升级,如果是异地设备,则给升级带来不少麻烦。有没有普通用户就可操作的固件升级方案呢?就像BootLoader,可通过命令选择启动方式,甚至实现远程升级?答案是有的。其原理就是通过FLASH操作,将新的固件刷到FLASH中去,然后转到固件起始地址运行。

  MSP430串口升级程序

  MSP430 FLASH ROM

  1. 如下图所示, 如下图所示, 如下图所示, FLASH ROM为 32K 字节(FLASH大小要根据你用的具体型号做调整),分为 64 个段,每个段分为512字节,512字节又细分为 8个块 ,每块64字节。

  2. MSP430F247每次最小可擦除1个段的空间,除操作是向该写满 0XFF。

  3. 32K字节的 FLASH ROM起始地址为 0X0FFFF –0X080000,对应Segment0 – Segment63.

  4. RST复位中断向量地址为0x0FFFE,其由编译器自动写入跳转到main()函数的指令。

  中断向量

  当有外部复位、软件复位等,都会触发名为Reset的不可屏蔽中断,此时MCU会自动将中断向量0xFFFE装入PC指针,从而引导程序运行。

  除了Reset中断,还有其它例如UART、SPI、TIMER等中断,中断向量记录了中断子程序的入口地址,中断向量表如下:

  存储空间划分

  增加串口升级功能需要有该部分程序支撑,因此FLASH ROM被划分成两部分:引导分区、应用分区,引导分区运行bootloader,当需更新代码时,该部分程序会读取串口发送的程序文件,并将其下载到应用分区;应用分区用于存放应用程序。

  具体分区见下图:

  这里系统分区占了1.5KB的空间,其中包括了bootloader代码分区和中断向量分区。应用程序分区也包括代码区和中断向量区两部分,但这里的中断向量却是虚拟中断向量,原因:中断向量表不能重新映射。

  具体实现

  程序更新步骤:1、设备上电; 2、运行bootloader程序; 3、延时等待远程升级命令;4、收到更新命令进入升级功能;5、将应用分区擦除;6、将接收的程序写入应用分区;7、跳转PC指针到应用程序的复位地址;8、运行新的应用程序。

  程序运行的步骤:1、设备上电; 2、运行bootloader程序; 3、延时等待远程升级命令;4、接收命令超时;5、判断应用分区是否有可运行的程序;6、跳转PC指针到应用程序的复位地址;7、运行应用程序。(如果没有可运行的程序、则一直停留在bootloader)

  关键技术:

  1、通过移动PC指针实现了bootloader到应用程序的切换、同时也实现了虚拟中断向量表。

  2、通过FLASH ROM的读写操作实现应用程序的更新

  总结

  顺利实现MSP430的远程升级,这里我要感谢梁先生的网络资料。其实,只要单片机有FLASH的读写接口,就能根据此原理实现bootloader,同时接口也不局限与串口,只要有机制获取新程序,就可以通过这种方式实现对MCU的升级。

  来源:拍明芯城元器件商城 www.iczoom.com

相关问答

51 单片机远程 控制方法?

在51单片机远程控制方面,可以采用无线通信技术,如蓝牙、Wi-Fi或者RF模块,将单片机与远程设备连接起来。通过编写相应的程序,可以实现远程控制单片机的功能,...

单片机 如何利用rs485实现 远程 通信?

你已经用USB转成RS485,再将RS485转成TTL了,剩下的事就简单了,就把RS485TTL的RXD接到单片机RXD,把485TTL的TXD接到单片机的TXD上就行了。然后就要写程序了。电...

有谁知道: 单片机远程 云端控制系统的价格是多少钱?

[回答]没有提供单片机远程云端控制系统的具体需求,任何人都给不了你价格,建议您再补充一下具体需求!做单片机远程云端控制系统的公司很多,公司不一样,价...

单片机远程 云端考试报价是多少?急!急!急!

[回答]价格只是选择单片机远程云端考试公司的一项指标,建议您先了解产品以后再了解价格哦!单片机远程云端考试每个地区的价格还是不太一样的,您可以找一...

大神赐教! 单片机 云端 远程控制 技术价格一般是多少?在线等

[回答]需要您提供一下个人的需求才能给您做单片机云端远程控制技术的具体报价呢,请问您这边有什么需求呢?没有提供单片机云端远程控制技术的具体需求,任...

有谁知道: 单片机 云端 远程控制 技术的价格大概是多少?

[回答]需要您提供一下个人的需求才能给您做单片机云端远程控制技术的具体报价呢,请问您这边有什么需求呢?单片机云端远程控制技术的价格都是不一样的,我...

问一下: 单片机 云端 远程控制 一般多少钱?大侠们,求解

[回答]单片机云端远程控制多少钱就不知道了,具体的要看您找的渠道,如果渠道不直接的话,价格就比较贵了,希望对您有帮助,谢谢!做单片机云端远程控制的公司...

敢问大家, 单片机 云端 远程控制 系统大概多少钱?

[回答]单片机云端远程控制系统每个地区的价格还是不太一样的,您可以找一些附近的公司了解一下!单片机云端远程控制系统的价格受多方面影响,比如品牌、市...

麻烦请教各位! 单片机远程 云端设备多少钱啊?

[回答]单片机远程云端设备每个地区的价格还是不太一样的,您可以找一些附近的公司了解一下!您可以提供一下单片机远程云端设备的详细要求和您的联系方式,...

我逆变器上有个有线 远程 控制面板,我想改成联网 远程 控制如何实现?

如今要想做到这些太容易了,就是用手机控制远程网络开关嘛!可以使用移动信号也可以使用家里的无线网络信号,在手机里安装上所需的操控软件就可以了。如果自己制...

猜你喜欢