企业做网站乐云seo快速上线,河池环江网站建设,百度怎么发免费广告,做中文网站的公司目录标题 前言1、OTA升级的重要性和应用场景2、理论基础2.1、单片机的启动流程2.2、什么是IAP#xff1f;2.3、什么是OTA#xff1f;2.4、什么是BootLoader#xff1f;2.5、Ymodem协议是什么#xff1f;2.6、IAP是如何实现的#xff1f; 3、具体操作3.1、软硬件工具准备3.… 目录标题 前言1、OTA升级的重要性和应用场景2、理论基础2.1、单片机的启动流程2.2、什么是IAP2.3、什么是OTA2.4、什么是BootLoader2.5、Ymodem协议是什么2.6、IAP是如何实现的 3、具体操作3.1、软硬件工具准备3.2、下载ST官方IAP升级的BootLoader工程3.2.1、下载示例工程3.2.2、修改配置信息3.2.3、下载观看现象 3.3、修改APP工程3.3.1、打开APP工程3.3.2、修改APP工程启动地址3.3.3、设置中断向量表的偏移3.3.4、生成bin文件 3.4、串口IAP3.4.1、超级终端软件使用3.4.2、串口传输bin文件 3.5、蓝牙IAP 附录1、hypertrm下载 前言 作为单片机进阶能力IAP升级固件的学习是非常重要的。 想直接看如何操作的从第三条开始看。 1、OTA升级的重要性和应用场景
蓝牙OTAOver-The-Air升级是指通过蓝牙无线技术对设备中的固件或软件进行远程升级和更新的过程。蓝牙OTA升级在现代物联网和智能设备领域有着重要的应用和意义。
重要性
便捷性和灵活性 蓝牙OTA升级可以通过无线传输方式避免了传统有线连接的束缚用户可以随时随地进行设备升级无需专门的连接线和设备。用户体验优化 设备制造商可以随时通过OTA升级向设备部署新功能、修复bug或增强安全性从而提升用户体验。降低维护成本 通过OTA升级设备制造商可以避免召回设备或用户手动升级的成本大大降低了维护的成本和提高了维护效率。降低维护成本 通过OTA升级设备制造商可以避免召回设备或用户手动升级的成本大大降低了维护的成本和提高了维护效率。安全性和稳定性 通过OTA升级设备可以及时获取最新的固件和安全补丁提高了设备的安全性和稳定性减少了潜在的安全漏洞。
应用场景
智能家居设备 智能灯具、智能插座、智能音箱等设备可以通过OTA升级获取新功能和改善体验。工业物联网设备 工业自动化设备、传感器节点等需要定期更新固件来适应生产环境变化和修复漏洞。可穿戴设备 智能手表、健康监测设备等需要定期在不影响用户使用的情况下更新软件和驱动。智能交通 智能汽车、无人机等需要通过OTA升级来更新地图、调整性能和增强安全性。
2、理论基础
2.1、单片机的启动流程
链接: STM32_启动流程详解
2.2、什么是IAP
IAP全称是“In-Application-Programming”中文解释为“在程序中编程”。 IAP是一种对通过微控制器的对外接口如USARTIICCANUSB以太网接口甚至是无线射频通道等对正在运行程序的微控制器进行内部程序的更新的技术。 与IAP同级的其它两种下载方式是ISP和ICP。 ICP使用SWD接口进行烧录如J-Link烧录器和J-Flash软件配合使用。 ISP使用引导程序Bootload加上外围UART/USB等接口进行烧录。
2.3、什么是OTA
OTAOver-The-Air即通过无线通信网络进行固件或件的升级和更新的技术手段。通过OTA用户可以通过无线网络直接下载和安装最新的软件版本而无需连接到电脑或使用数据线进行更新[数据来源CSDN-C知道模型训练的大型语言模型]。对单片机而言简单的说就是我们无需使用各种下载器进行程序下载借助无线的方式我们可以实现远程升级MCU的固件。
2.4、什么是BootLoader
BootLoader就是一段单片机的引导加载程序单片机出厂时就已经写好了用户是无法访问更改的但是我们可以在用户代码区域再自己写一个BootLoader程序用于更新固件。 “Bootloader是嵌入式系统在加电后执行的第一段代码在它完成CPU和相关硬件的初始化之后再将操作系统映像或固化的嵌入式应用程序装载到内存中然后跳转到操作系统所在的空间启动操作系统运行”。
2.5、Ymodem协议是什么
关于Ymodem协议具体是怎么实现的我们这里暂时不做过多了解。只需要知道我们这里IAP传输bin文件使用的是Ymodem协议就可以了。在超级终端、SecureCRT等软件中都是支持这个协议的。 如果想深入了解看可以去看下面这几个文章 分享我的项目必需品IAPYMODEMCRC16AES256PC端软件hex合并 stm32 Bootloader设计(YModem协议) YModem协议简介 Ymodem协议-接收
2.6、IAP是如何实现的
实现IAP技术的核心是一段预先烧写在单片机内部的IAP程序,也就是BOOTLOAD引导加载程序,我们不再像以往那样对MCU进行整片数据的擦除而是分为Bootload和APP两个部分内存容量大的可以再划分备份区等鉴于STM32F103C8T6的资源空间暂时划分这两个区。BootLoader程序主要负责与外部的上位机软件进行握手同步然后将通过外设通信接口将来自于上位机软件的程序数据接收后写入单片机内部指定的闪存区域然后再跳转执行新写入的程序最终就达到了程序更新的目的。
这些流程写的很好可以看这个 【IAP】IAP在线升级流程 STM32 IAP升级程序设计详解-IAR环境
3、具体操作
3.1、软硬件工具准备
硬件两个HC-05蓝牙透传模块、STM32单片机、USB-TTL串口模块、PWLINK下载器STLINK、JLINK等均可 软件keil5 MDK 、hypertrm超级终端支持Ymodem协议传输的终端仿真软件
注1、终端软件除了hypertrm还可以用SecureCRT、teraterm等。 2、hypertrm超级终端软件下载安装可看下面的附录1。
3.2、下载ST官方IAP升级的BootLoader工程
3.2.1、下载示例工程
点这个链接进入ST官网下载使用USART进行STM32F10xxx应用内编程AN2557 第一次下载会让你填写你的邮箱之后就会收到下载链接下载后解压就可以了。 解压后的文件目录是这样的。
3.2.2、修改配置信息
依次打开“Project”-“IAP”-“MDK-ARM”,打开此工程。 会弹出下面的对话框我们点击“Migrate to Device Pack”。 进入工程后我们先编译。 因为我使用的单片机是STM32F103C8T6,所以需要点击魔法棒修改一些配置信息。 因为STM32F103C8T6的内存是中等容量大小我们还需要在下面阴影处的“xxxHD_VL”内容更换为“xxxMD” 然后就是根据自己使用的下载器类型修改 将工程使用的IROM1的内存调小一些 在之后进入common.h修改ApplicationAddress应用程序启动起始地址为0x0800 4000
3.2.3、下载观看现象
然后就是编译下载到板子上。
随便打开一个串口助手将波特率设置为115200按下方表格连线。
单片机以STM32F103C8T6为例USB-TTL模块5V5VGNDGNDPA9(USART1_TX)RXDPA10(USART1_RX)TXD
就可以看到串口1打印的调试信息了。 这样BootLoader的程序就下载好了等我们有了APP工程就可以利用超级终端远程烧录固件了。
3.3、修改APP工程
APP区就是我们用户自己自定义的具体功能区起始地址从Bootload之后利用bootload将跳转到APP区。
3.3.1、打开APP工程
打开一个自己需要更新到板子上的工程即可。但是要注意工程不要超出STM32 APP的存储区大小
3.3.2、修改APP工程启动地址 这里的值需要与上面第3.3.2步BootLoader工程中修改的ApplicationAddress的值一致。
3.3.3、设置中断向量表的偏移
当APP工程的main函数中发生中断请求时硬件仍然会强制PC指针指向BootLoader程序的中断向量表处这是硬件决定的然后跳转执行BootLoader程序中的中断服务函数。这就会导致APP程序中的中断服务程序无法执行。 所以我们需要在APP程序的启动文件中设置好中断向量向量表的偏移地址当在APP程序中产生中断请求时PC指针会强制指向原中断向量地址偏移地址。 打开system_stm32f10x.c文件可以看到向量表偏移地址默认为0我们根据上面设置的值将其改为0x4000. 这样app工程就能在中断触发时去执行自己的中断服务函数了。 注system_stm32f10x.c文件一般是只读的我们可以将内容复制到一个自己新建的.c文件中并用自己新建的.c代替原来只读的.c文件这样就可以对其进行修改了。 3.3.4、生成bin文件
我们在做远程更新时所发送过去的文件类型为bin所以我们需要输出一个bin文件。 按下面的操作即可复制到框中的内容为
$K\ARM\ARMCC\bin\fromelf.exe --bin --outputL.bin !L然后再编译工程我们在工程目录下就能看到一个bin文件了。
3.4、串口IAP
3.4.1、超级终端软件使用
还是上面那样利用USB-TTL模块连接到单片机的串口1。
双击打开下载的hypertrm.exe(超级终端)。 随便输入一个名称点击确定。 如果线连对了并且电脑有相应的驱动它会自动检测到相应的COM口点击确定即可。 之后我们配置波特率为115200BootLoader工程中配置的串口波特率为115200数据流控制我们选无。点击确定。
3.4.2、串口传输bin文件
之后我们点击单片机的复位可以看到打印的信息。 在电脑上输入“1”单片机会不断打印“C”这是在等待bin文件传输。 我们按下面的流程利用Ymodem协议传输发送bin文件。 我们可以看到进度条 待传输完成后单片机的串口一会打印接收到的文件名称和大小信息。并且重新等待用户操作输入1更新固件。输入3跳出BootLoader进入APP区。 我们输入就可以看到我们APP工程开始运行了。
3.5、蓝牙IAP
其实使用两个蓝牙和上面的使用串口基本一样因为蓝牙在这里只是取代了杜邦线的作用。 我们可以看下面这个文章将两个HC-05蓝牙模块分别配置为主从模式波特率115200。 可以看下面的文章进行蓝牙匹配。 两个蓝牙模块HC-05的主从机匹配
当两个蓝牙匹配成功都上电后两个蓝牙很快就会从灯频闪变为慢闪。这时就连接成功了。
此时按上面3.4的步骤走就可以。
附录
1、hypertrm下载
使用下面的链接下载即可: hypertrm网盘下载链接 下载压缩版后解压会有下面三个版本的hypertrm都是免安装的。