天津网站建设首选津坤科技,做视频网站用什么好处,html素材库,小制作手工废物利用一、OTA OTA即over the air,是一种远程固件升级技术#xff0c;它允许在设备已经部署在现场运行时通过网络远程更新其固件或软件。OTA技术有许多优点#xff0c;比如我们手机系统有个地方做了优化#xff0c;使用OTA技术我们就不用召回每部手机#xff0c;直接通过云端就可…一、OTA OTA即over the air,是一种远程固件升级技术它允许在设备已经部署在现场运行时通过网络远程更新其固件或软件。OTA技术有许多优点比如我们手机系统有个地方做了优化使用OTA技术我们就不用召回每部手机直接通过云端就可以进行远程下发固件这样就节省了成本。这里我们使用的是腾讯云来进行OTA操作。
OTA下载技术的大概步骤
OTA(空中下载技术即通过云端远程进行固件升级)
1、ESP8266连接本地WIFI路由器 2、登录腾讯云MQTT服务器 3、订阅主题 主题1$ota/report/6Z77GCWKOQ/${deviceName}上传本地固件版本号消息上行 主题2$ota/update/6Z77GCWKOQ/${deviceName}用于固件的下载消息下行 4、上传本地固件版本号 5、在控制台进行云端固件的信息的推送固件大小、MD5值、版本号... 6、进行固件下载通过HTTP进行分包下载分包大小与FLASH容量有关即所用的MCU是大容量还是小容量还是中容量产品也就是按1个扇区大小进行分包有的是1Kb一个包有的是2Kb一个包固件下载到FLASH的OTA分区 7、验证MD5值验证成功后将固件从OTA分区写入到APP分区 8、IAP跳转到APP分区执行新的固件代码
FLASH分区e 在这里我们从云端下载到的程序会先放在OTA分区下载完之后如果代码没有问题则Boot Loader会引导OTA分区的代码到APP分区最终运行的是APP分区。
二、WIFI模块
因为我们需要连接云端故我们需要使用到WIFI模块这里我们使用的是ESP8266WIFI模块。
三、腾讯云以及待下发固件的准备
在这里我们需要用到的是腾讯云的固件升级 这里可以直接搜索固件升级然后选择物联网开发平台 点击产品控制台 点公共实例 新建一个项目我这里之前新建了一个OTA项目然后点创建的项目名 然后点击新建产品随便创建一个产品 点击固件升级并点击添加固件这个是待下发的固件 这里填一下固件信息并选择待下发的固件固件必须得是.bin文件 在keil5中我们可以按如下操作生成.bin文件 所填的内容为 C:\Keil_v5\ARM\ARMCLANG\bin\fromelf.exe --bin --output .\Objects\pwm.bin .\Objects\pwm.axf 其中formelf.exe是Keil自带的格式工具软件其路径在你电脑的Keil安装盘的对应位置记住空一格然后写--bin然后空一格写--output然后空一格Objects是我用于存放输出bin文件的文件夹系统默认此路径从工程文件开始算起后面的Objects是我们存放.axf的文件夹。
弄完上面这些之后我们需要改一下待下发固件的烧录位置因为这个是需要烧入到APP分区的所以我们需要设置偏移量。这个是根据自己对FLASH分区的划分来进行偏移的。这里我设置的是0x8005800,所以偏移量是0x5800 还有别忘记修改User中的烧入位置 四、stm32的准备
做好这些准备之后代码如下 链接https://pan.baidu.com/s/1QXZX_dUfhmpl4TQFW5y4JQ 提取码TD01 这里我们使用的是stm32f103rct6的板子进行开发代码中我们需要修改
1、startup启动文件一开始的是md.s的我们需要将其移除并将hd.s的启动文件加入到工程中。 2、芯片因为我们使用的是stm32f103rct6板子芯片得改一下 既然改了芯片那么全局宏也得改一下 全局宏改了之后 ,因为现在腾讯云使用的是http不是https故我们需要改一下ota.c文件中的如下代码 还有就是扇区大小改变了所以我们下载OTA固件这部分代码也需要改也在ota.c中 然后还有就是tencent_mqtt.h中的username啊password啊client_id啊还OTA_PUB_TOPIC和OTA_SUB_TOPIC别忘了这些都可以在腾讯云中找的到。 腾讯云中在这里 这两个是MQTT协议需要的 其中deviceName改成自己的设备名 这些是所要填的东西注意这些是会经常变的可能今天的用着还是好好的明天可能就下发不了了可能出现md5 error问题注意改这里。
然后就是iap.h中的东西要改因为我们使用的stm32是大容量产品所以我们需要将扇区大小改成2048也就是2Kb然后下面的FLASH_START_ADDR以及FLASH_APP_ADDR还有FLASH_OTA_ADDR要根据自己的FLASH分区分配来填写。 做完这些之后我们就可以开始下发固件辣。