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

2024-06-26 1103阅读

【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升级?

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

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

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

            一、实验工具

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

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

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

            4.FLYMCU——清除芯片FLASH

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

            二、硬件绘制

            1.原理图

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

            2.PCB

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

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

            三、软件配置

            1.BOOT代码

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

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

                //ͨ¹ýÅжÏÕ»¶¥µØÖ·ÖµÊÇ·ñÕýÈ·(ÊÇ·ñÔÚ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代码

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

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

             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文件,因此需注意!!不同芯片对应的编译器生成方式不同!

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

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

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

             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升级动作

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

            2.烧录APP1程序

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

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

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

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

            选择APP2生成的BIN文件

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

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

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

            实验结束

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

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

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

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

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

            五、参考文章

            STM32程序的常用的两种烧录方式

            ARM 代码烧录方案与原理详解 — SWD/JTAG + Bootloader + OTA (ICP + ISP + IAP)

            总结

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

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]