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

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


前言

【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;			  // mie
			Menu_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;			  // mie
			Menu_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串口升级过程方面,评论区欢迎讨论。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-14 05:04:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-14 05:04:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-14 05:04:03       87 阅读
  4. Python语言-面向对象

    2024-04-14 05:04:03       96 阅读

热门阅读

  1. Django开发一个简易学生管理系统

    2024-04-14 05:04:03       34 阅读
  2. C语言题目:寻找矩阵最值

    2024-04-14 05:04:03       148 阅读
  3. csdn文章迁移/迁走历程与实践

    2024-04-14 05:04:03       43 阅读
  4. 进程线程的关系

    2024-04-14 05:04:03       45 阅读
  5. libftdi1学习笔记 1 - 打开/关闭设备

    2024-04-14 05:04:03       39 阅读
  6. 设计模式之责任链讲解

    2024-04-14 05:04:03       42 阅读
  7. 基于机器学习的节日大促营销模型

    2024-04-14 05:04:03       158 阅读
  8. Vue2基础知识

    2024-04-14 05:04:03       113 阅读
  9. C语言CRC通用模块代码

    2024-04-14 05:04:03       38 阅读