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