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

06-26 1102阅读

【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购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]