【OTA】STM32新能源汽车OTA技术ymodem协议PC串口升级过程

【OTA】STM32新能源汽车OTA技术ymodem协议PC串口升级过程

文章目录

  • 前言
  • 一、实验工具
    • 1.串口USB线——烧录APP2生成的BIN文件
    • 2.STLINK——烧录BOOT代码和APP1代码
    • 3.烧录工具——将BIN文件烧录到单片机中
    • 4.FLYMCU——清除芯片FLASH
  • 二、硬件绘制
    • 1.原理图
    • 2.PCB
  • 三、软件配置
    • 1.BOOT代码
    • 2.APP1代码
    • 3.APP2代码
  • 四、实验结果
    • 1.烧录BOOT程序
    • 2.烧录APP1程序
    • 3.串口通过Ymodem协议bin烧录APP2程序
  • 五、参考文章
  • 总结


前言

【OTA】如何用STM32实现OTA升级?

在这里插入图片描述
请添加图片描述

提示:以下是本篇文章正文内容,下面案例可供参考

一、实验工具

1.串口USB线——烧录APP2生成的BIN文件

2.STLINK——烧录BOOT代码和APP1代码

3.烧录工具——将BIN文件烧录到单片机中

4.FLYMCU——清除芯片FLASH

在这里插入图片描述

二、硬件绘制

1.原理图

在这里插入图片描述

2.PCB

在这里插入图片描述
在这里插入图片描述

三、软件配置

1.BOOT代码

在这里插入图片描述
在这里插入图片描述

    //ͨ¹ýÅжÏÕ»¶¥µØÖ·ÖµÊÇ·ñÕýÈ·(ÊÇ·ñÔÚ0x2000 0000 - 0x2000 2000Ö®¼ä)À´ÅжÏÊÇ·ñÓ¦ÓóÌÐòÒѾ­ÏÂÔØÁËif (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000){BspTim2Close();__disable_irq() ; //ÌøתÖÁÓû§´úÂëJumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);Jump_To_Application = (pFunction) JumpAddress;//³õʼ»¯Óû§³ÌÐòµÄ¶ÑÕ»Ö¸Õë__set_MSP(*(__IO uint32_t*) ApplicationAddress);Jump_To_Application();SerialPutString("OK\r\n\n");}else{SerialPutString("no user Program\r\n\n");}

2.APP1代码

在这里插入图片描述
在这里插入图片描述

 int main()
{SCB->VTOR = FLASH_BASE | 0x3000;__enable_irq();LED_Init();delay_init();OLED_Init();KEY_Init();uart2_Init(115200);while(1){keynumber=KEY_Scan();		if(keynumber==1)	//B1°´ÏÂ{}if (keynumber==2)//ûÓа´ÏÂ{}LED1=1;			  // ÁÁdelay_ms(1000);LED1=0;			  // mieMenu_Display(Menu_Page,Level);u2_printf("{Waiting}$");	delay_ms(500);}
}

3.APP2代码

与其他步骤不同,这一步需要生成BIN文件,因此需注意!!不同芯片对应的编译器生成方式不同!
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

 int main()
{SCB->VTOR = FLASH_BASE | 0x3000;__enable_irq();LED_Init();delay_init();OLED_Init();KEY_Init();uart2_Init(115200);while(1){keynumber=KEY_Scan();		if(keynumber==1)	//B1°´ÏÂ{}if (keynumber==2)//ûÓа´ÏÂ{}LED1=1;			  // ÁÁdelay_ms(200);LED1=0;			  // mieMenu_Display(Menu_Page,Level);u2_printf("{OTA_OK}$");	}
}

四、实验结果

1.烧录BOOT程序

上位机蓝牙串口2打印,此时程序里没有APP1也没有APP2,没有进行外部OTA升级动作
请添加图片描述

2.烧录APP1程序

此时LED灯闪烁,OLED显示字符串,上位机由原来的BOOT引导程序的打印,跳转到APP1的应用程序,打印的数据也变为了waiting,表示APP1已烧录成功
请添加图片描述
请添加图片描述

3.串口通过Ymodem协议bin烧录APP2程序

选择APP2生成的BIN文件

先点开始下载,再按下核心板上的复位按键!!

绿色进度条加载完成之后,会显示下载成功

此时,LED闪烁频率比之前更快,OLED显示OTA_OK,上位机串口打印OTA_OK,说明APP2的应用程序已经通过Ymodem协议bin烧录成功

实验结束
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
请添加图片描述

请添加图片描述

五、参考文章

STM32程序的常用的两种烧录方式
ARM 代码烧录方案与原理详解 — SWD/JTAG + Bootloader + OTA (ICP + ISP + IAP)

总结

本文仅仅简单介绍了【OTA】STM32新能源汽车OTA技术ymodem协议PC串口升级过程方面,评论区欢迎讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/308103.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树莓派驱动开发--搭建环境篇(保姆级)

前言:树莓派的环境搭建关系到之后的驱动开发,故一个好的环境能让你顺手完成驱动开发!我使用的是64位树莓派4b!有显示屏的前提!!!(因为wifi连接太刁钻了) 一、ubantu相关 …

目标检测笔记

目标检测笔记 one-stage和two-stage目标检测算法Two-Stage 目标检测算法One-Stage 目标检测算法既然Faster R-CNN使得候选区域生成和目标检测可以在同一个网络中端到端训练,为什么它还是属于Two-stage算法? 目标检测模型,训练中的正负样本是什…

使用Pandas实现股票交易数据可视化

一、折线图:展现股价走势 1.1、简单版-股价走势图 # 简洁版import pandas as pdimport matplotlib.pyplot as plt# 读取CSV文件df pd.read_csv(../数据集/格力电器.csv)data df[[high, close]].plot()plt.show() 首先通过df[[high,close]]从df中获取最高价和收盘…

UML学习

UML(Unified Modeling Language):统一建模语言,提供了一套符号和规则来帮助分析师和设计师表达系统的架构、行为和交互 类图:描绘类、接口之间的关系(继承、实现、关联、依赖等)以及类的内部结构(属性和方法),直观展现系统的静态…

uniapp开发小程序手写板、签名、签字

可以使用这个插件进行操作 手写板-签名签字-lime-signature - DCloud 插件市场 但是目前这个插件没有vue3 setup Composition API的写法。所以对于此文档提供的可以直接使用,需要使用Composition API方式实现的,可以继续看。 因为Composition API方式,更加的简单、灵活,…

Java 基于微信小程序的校园失物招领小程序,附源码

博主介绍:✌程序员徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

elasticsearch7安全配置--最低安全等级,用户名密码

上一篇博客在centos7上安装了elasticsearch7 接下来对elasticsearch进行安全方面的配置 minimal security 最低安全等级,用户名密码 首先开启xpack vim config/elasticsearch.yml xpack.security.enabled: true由于我是单机配置的,还加了如下配置 d…

c语言->贪吃蛇实战技巧结合EasyX简单实现页面管理(简单实现)

✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:再无B~U~G-CSDN博客 1. 游戏背景 贪吃蛇是久负盛名的游戏,它也和俄罗斯⽅…

WebLogic-XMLDecoder(CVE-2017-10271)反序列化漏洞分析及复现

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

机器学习——自动驾驶

本章我们主要学习以下内容: 阅读自动驾驶论文采集数据根据论文搭建自动驾驶神经网络训练模型在仿真环境中进行自动驾驶 论文介绍 本文参考自2016年英伟达发表的论文《End to End Learning for Self-Driving Cars》 📎end2end.pdf

【opencv】示例-npr_demo.cpp 非真实感渲染:边缘保留平滑、细节增强、铅笔素描/彩色铅笔绘图和风格化处理...

Edge Preserve Smoothing- Using Normalized convolution Filter Edge Preserve Smoothing-Using Recursive Filter Detail Enhancement Pencil sketch/Color Pencil Drawing Stylization /* * npr_demo.cpp * * 作者: * Siddharth Kherada <siddharthkherada27[at]gmail[do…

基于Python的深度学习的中文情感分析系统(V2.0),附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

海洋信息管理系统:守护蓝色星球,促进海洋经济新发展

海洋&#xff0c;覆盖地球表面超过七成的广阔水域&#xff0c;是生命之源&#xff0c;也是经济发展的重要空间。然而&#xff0c;随着人类活动的增加&#xff0c;海洋生态环境面临严峻挑战&#xff0c;海洋资源的可持续利用成为全球关注的焦点。在这样的背景下&#xff0c;构建…

Mac 下 Python+Selenium 自动上传西瓜视频

背景 研究下 PythonSelenium 自动化测试框架&#xff0c;简单实现 Mac 下自动化批量上传视频西瓜视频并发布&#xff0c;分享给需要的同学&#xff08;未做过多的异常处理&#xff09;。 脚本实现 首先通过手工手机号登录&#xff0c;保存西瓜视频网站的 cookie 文件 之后加载…

【心路历程】初次参加蓝桥杯实况

送给大家一句话&#xff1a; 寂静的光辉平铺的一刻&#xff0c;地上的每一个坎坷都被映照得灿烂。 – 史铁生 《我与地坛》 初次参加蓝桥杯有感 一点小小的震撼难评的做题过程A题 艺术与篮球问题描述解题 B 题 五子棋问题描述解题 C题 训练士兵问题描述解题 D题 团建解题 E题 …

聊一聊一些关于npm、pnpm、yarn的事

前言 整理了最近的闲聊&#xff0c;话题是前端各个包管理器&#xff0c;如果分享的不对或者有异议的地方&#xff0c;麻烦请及时告诉我~ 耐心看完&#xff0c;也许你会有所收获~ 概述 本文阅读时间&#xff1a;10-15分钟左右&#xff1b; 难度&#xff1a;初级&#xff0c…

人工智能|机器学习——基于机器学习的信用卡办卡意愿模型预测项目

一、背景介绍 在金融领域&#xff0c;了解客户的信用卡办卡意愿对于银行和金融机构至关重要。借助机器学习技术&#xff0c;我们可以根据客户的历史数据和行为模式预测其是否有办理信用卡的倾向。本项目通过Python中的机器学习库&#xff0c;构建了两个常用的分类模型&#xff…

13 Php学习:面向对象

PHP 面向对象 面向对象&#xff08;Object-Oriented&#xff0c;简称 OO&#xff09;是一种编程思想和方法&#xff0c;它将程序中的数据和操作数据的方法封装在一起&#xff0c;形成"对象"&#xff0c;并通过对象之间的交互和消息传递来完成程序的功能。面向对象编…

【DL水记】循环神经网络RNN的前世今生,Transformer的崛起,Mamba模型

文章目录 RNN网络简介传统RNN网络结构RNN的分类 长-短期记忆网络 (LSTM)GRU网络横空出世的Transformer网络Self-AttentionVisionTransformer Mamba模型Reference: RNN网络简介 “当人类接触新事物时&#xff0c;他们不会从头开始思考。就像你在阅读这篇文章时&#xff0c;你会根…

Day19-【Java SE进阶】网络编程

一、网络编程 1.概述 可以让设备中的程序与网络上其他设备中的程序进行数据交互(实现网络通信的)。java.net,*包下提供了网络编程的解决方案! 基本的通信架构 基本的通信架构有2种形式:CS架构(Client客户端/Server服务端)、BS架构(Browser浏览器/Server服务端)。 网络通信的…