精华内容
下载资源
问答
  • 含机顶盒串口升级软件以及STB-4机108版裸机测试程序 106版裸机测试程序和升级说明
  • DSP软件串口升级

    2015-04-21 22:16:35
    介绍了DSP 的一种程序烧录方案,此方案可行性,已测试过
  • 串口IAP升级软件实现

    2020-01-18 15:20:32
    串口IAP软件在线升级 一,IAP的原理 IAP其实是将传统的程序分为了两个部分或者三部分,一个称为BootLoader区,另一个称为APP区域(用于存放用户升级的程序,还有一个就是APP备份区,如下所示: /***************...

    串口IAP软件在线升级

    一,IAP的原理

    IAP其实是将传统的程序分为了两个部分或者三部分,一个称为BootLoader区,另一个称为APP区域(用于存放用户升级的程序,还有一个就是APP备份区,如下所示:

    	/*******************
            --------  0x08000000
       8k   | boot |  boot引导区域
            --------  0x08002000
       20k  |  app |  APP正常软件区域
            --------  0x08007000
            |  bak |
       20k  |  app |  在线升级的软件写在 此部分区域
            --------  0x0800C000
    	******************/
    

    其中BootLoader区代码是通过SWD/JTAG方式先下载到单片机中去的,这一部分代码又称为引导代码,它的主要作用有:

    1. 接收从预留通信接口传来的bin/hex文件
    2. 把程序写在IAP应用程序的存储区域
    3. 跳转到真正的应用程序去执行。
    

    二,软件实现(IAR+STM32平台)

    1、编写Boot Loader程序,实现三个功能

    1)开启串口中断,当串口中有数据过来时将数据保存;
    2)写Flash功能,将保存的数据写入Flash 的指定地址;
    3)跳转功能,写入成功后跳转至指定地址执行程序。
    

    2、将自己写的Boot Loader程序下载至芯片中(也可以将bootloader程序和app程序一起烧写进去)。Boot Loader的地址是0x0800 0000

    3、下载bin/hex文件

    1、打开串口助手,波特率设置和Bootloader的设置一样(根据自己的协议进行解析);
    2、选择传输的文件为bin/hex文件;
    3、点击发送文件,发送时触发boot loader的串口中断,并保存数据;
    4、bootloader把程序文件写入指定地址,所有数据保存后跳转至APP地址执行,APP的地址是0x0800 2000
    
    Boot Loader程序(部分代码):
    
    //跳转APP函数
    void _JumptoUserApp(void)
    {
    	/* Test if user code is programmed starting from address "ApplicationAddress" */
    	if (((*(vu32*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
    	{
    		/* Jump to user application */
    		JumpAddress = *(vu32*) (ApplicationAddress + 4);
    		Jump_To_Application = (pFunction) JumpAddress;
    		/* Initialize user application's Stack Pointer */
    		__set_MSP(*(vu32*) ApplicationAddress);
    		Jump_To_Application();
    	}
    }
    //主函数
    int main(void)
    {
    	u8 bData[2];
    	u8 OptData;
    	OptData = (u8)((*(vu16*)(User_addr))&0x00ff);  //data1
    	IAP_Init();
    	vInitCom();
        bData[1]=0x42;
    	debug(&bData[1],1);
    	if((OptData == 0xAA)||(OptData == 0x55))
    	{	// upgrade from uart data
    		booting = 1;
    		if(OptData == 0x55)
    		{
                // Copy backup flash data
                bData[1]=0x43;
                debug(&bData[1],1);
                copy_from_flash();
    		}
    	}
        bData[1]=booting+'0';
    	debug(&bData[1],1);
    	timeout = 0;
    	/*wait for program start command*/
    	for(;;)
    	{
            // 电脑升级读取串口数据
            if(waitforRxValid())
            {
    			BOOT_UART->ICR = USART_FLAG_ORE;
    			bData[0] = (u8)(BOOT_UART->RDR & (u16)0x01FF);
    			USART_ClearITPendingBit(BOOT_UART,USART_IT_ORE);
    			IWDG_ReloadCounter();
                vParseComRxData(bData[0]);
    			timeout++;
    			if(timeout>1000)
    			{
    				timeout=0;
    				goto japapp;
    		    }
            }
    		else
    		{
    			if(booting == 0 || booting == 3)
    			{
    			japapp:
                    FLASH_Lock();
                    bData[1]=0x41;
                    debug(&bData[1],1);
                    //跳转到应用程序
                    delay1ms(100);
                    //NVIC_SystemReset();
                     _JumptoUserApp();
    			}
    		}
    	}
    }
    

    4,串口升级流程,协议及源文件可另外下载。

          https://download.csdn.net/download/qq_26964063/12111582
    
    展开全文
  • 基于DSP的IAP在线软件烧写升级,通过串口SCI来烧写升级程序,程序仍然是从flash启动不需要跳线,内含例程代码,可以参考。
  • 华亚串口升级工具

    2015-11-04 16:14:15
    华亚串口升级工具说明 1、解压缩后打开HY Serial Upgrade_tool下的serial_app.exe 在下面升级文件那一栏右边有个三个点的按钮。 那是选择文件路径的按钮。 2、装入文件(必须是扩展名为Img的文件。可直接将*.bin...
  • 在实际工程项目中使用的STM32F2xx的通过串口升级程序的源码,串口通信协议采用常见的ymodem。注意传输块大小选择1024字节,带crc16校验。...此源码可配合securecrt或自编上位机软件实现stm32串口升级
  • STM32通过串口升级程序

    热门讨论 2013-10-05 16:53:54
    通过串口升级STM32应用程序,内含PC工具软件及代码的原理介绍
  • 串口刷机软件

    2013-03-31 20:30:46
    平民高清机HD800V9/openbox/Hibox系列 串口刷机软件-汉化版 下面是使用说明: 准备工作: 一 是刷机线 (和DM500一样的串口线) 二 刷机文件: OPENBOX串口刷机软件 三 关闭机器的电源,连接电脑串口和机器串口 四...
  • STM32F103 IAP在线升级通过串口升级↑ 点击上方,关注“Tkwer望远镜” 作者:Tkwer公众号:Tkwer望远镜 前言 有很多种IAP在线应用升级固件的方法,具体可以参照bug菌写的文章:【重磅】剖析MCU的IAP升级软件设计...

    STM32F103 IAP在线升级通过串口升级

            ↑ 点击上方,关注“Tkwer望远镜”

    9545b429-b61a-eb11-8da9-e4434bdf6706.jpeg

                                             作者:Tkwer

    公众号:Tkwer望远镜

      前言

        有很多种IAP在线应用升级固件的方法,具体可以参照bug菌写的文章:【重磅】剖析MCU的IAP升级软件设计(设计思路篇)    下面我将从STM32F103RXT6这块板子进行实验,这板子已完全硬件开源可访问此篇文章获取设计文件:【自制分享】分享一块自制STM32F103RETX开发板!!!功能实用9645b429-b61a-eb11-8da9-e4434bdf6706.gif     首先声明该程序并不是我写的,而是 havenxie 大佬写的。我们需要以下工程文件,boot文件夹是IAP的BootLoader引导程序,app文件夹是运行的应用程序demo,具体应用程序内容可根据自己的程序做修改,winapp文件夹是一个串口应用程序,可利用该软件实现iap升级功能。

    9845b429-b61a-eb11-8da9-e4434bdf6706.png

        下面将具体介绍这三个工程:

    boot程序

        第一个是boot程序,我们知道stm32可以通过设置boot0,boot1使stm32启动从System memory启动,在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。具体看之前写的文章:    【IAP更新设备】STM32CubeProgrammer DFU功能实现设备固件升级    但是我们可以牺牲一点flash,写一个新的bootloader固化再flash地址前面。这样我们不用每次都得通过设置boot0,boot1才能进行烧录,每次都在Flash memory启动,但是又通过bootloader检查是否有应用程序,这种方式在一些远程升级更加常用。
    int main(void){
        IAP_Init();

        while(1)
        {
            switch(IAP_ReadFlag())
            {
                case APPRUN_FLAG_DATA://jump to app
                    if( IAP_RunApp())
                        IAP_WriteFlag(INIT_FLAG_DATA);
                    break;
                case INIT_FLAG_DATA://initialze state (blank mcu)
                    IAP_Main_Menu();
                    break;
                case UPDATE_FLAG_DATA:// download app state             
                    if( !IAP_Update()) 
                        IAP_WriteFlag(APPRUN_FLAG_DATA);
                    else
                        IAP_WriteFlag(INIT_FLAG_DATA);
                    break;
                case UPLOAD_FLAG_DATA:// upload app state
    //                if( !IAP_Upload())
    //                    IAP_WriteFlag(APPRUN_FLAG_DATA);
    //                else 
    //                    IAP_WriteFlag(INIT_FLAG_DATA);
                    break;
                case ERASE_FLAG_DATA:// erase app state
                    IAP_Erase();
                    IAP_WriteFlag(INIT_FLAG_DATA);
                    break;
                default:
                    break;
            }
        }
    }
        IAP_ReadFlag()与IAP_WriteFlag()函数是程序运行状态读写函数,利用了备用寄存器存取片子上一阶段的状态,即掉电也会保存该数据。例如,通常我们在上次已烧写应用程序进去,下次上电可以直接运行app,不用再运行Bootloader。可以通过IAP_WriteFlag()写入标志,下次运行通过IAP_ReadFlag()读取标志,直接跳转运行app程序。其他同理。
    /* Define the APP start address -------------------------------*/
    #define ApplicationAddress    0x8003000
        上面一行代码是需要设置app程序存储的起始地址。bootloader程序存储在0x8000000~0x8002FFF。

    官方介绍:

    9945b429-b61a-eb11-8da9-e4434bdf6706.png

    app程序    很重要一点的是先设置app程序放置的起始位置

    9a45b429-b61a-eb11-8da9-e4434bdf6706.png

        此外打开system_stm32f1xx.c 文件,修改中断向量偏移量,注释上说明偏移量要是0x200的整数倍。我们修改和app的启动地址偏移一致0x3000.    但是一个完整的app程序不仅是能实现应用功能,还能有跳转回bootloader运行的能力。这里就不做详细介绍了,具体大家可以看源码,作者是通过正点原子的方法使用usmart.c实现。官方介绍:9b45b429-b61a-eb11-8da9-e4434bdf6706.png

    winapp程序

    9c45b429-b61a-eb11-8da9-e4434bdf6706.png

        应用如上图所示,采用winform设计的,同时串口下载程序的协议采用YModem协议校验。

    实验

    9d45b429-b61a-eb11-8da9-e4434bdf6706.gif

    我修改了一下源程序,添加了led_allon()与led_alloff();函数,以下是效果:

    9f45b429-b61a-eb11-8da9-e4434bdf6706.gif

    板子灯亮起来的。最后

        正如作者所说,达到了无痛移植的效果,用起来十分舒服。再次十分感谢havenxie分享的源码,我在原文阅读中可点击访问其github主页,大家可以去其github主页下载程序。同时修改的程序,我将在公众号后台放出链接,大家复制文末的关键词链接到后台回复即可获得下载链接。

    END

    a045b429-b61a-eb11-8da9-e4434bdf6706.jpeg公众号ID:Tkwer望远镜扫码关注最新动态

    提供源文件,公众号内回复即可获取:IAP升级源码

    展开全文
  • STM32F103 IAP在线升级通过串口升级↑ 点击上方,关注“Tkwer望远镜” 作者:Tkwer公众号:Tkwer望远镜 前言 有很多种IAP在线应用升级固件的方法,具体可以参照bug菌写的文章:【重磅】剖析MCU的IAP升级软件设计...

    STM32F103 IAP在线升级通过串口升级

            ↑ 点击上方,关注“Tkwer望远镜”

    18c48ec93a05ac790fa1cb0763b79972.png

                                             作者:Tkwer

    公众号:Tkwer望远镜

      前言

        有很多种IAP在线应用升级固件的方法,具体可以参照bug菌写的文章:【重磅】剖析MCU的IAP升级软件设计(设计思路篇)    下面我将从STM32F103RXT6这块板子进行实验,这板子已完全硬件开源可访问此篇文章获取设计文件:【自制分享】分享一块自制STM32F103RETX开发板!!!功能实用fa61bb26fd53ddecd15c5f9d3395657b.gif     首先声明该程序并不是我写的,而是 havenxie 大佬写的。我们需要以下工程文件,boot文件夹是IAP的BootLoader引导程序,app文件夹是运行的应用程序demo,具体应用程序内容可根据自己的程序做修改,winapp文件夹是一个串口应用程序,可利用该软件实现iap升级功能。

    a4b5847a17a141b5dec97585d2c3965b.png

        下面将具体介绍这三个工程:

    boot程序

        第一个是boot程序,我们知道stm32可以通过设置boot0,boot1使stm32启动从System memory启动,在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。具体看之前写的文章:    【IAP更新设备】STM32CubeProgrammer DFU功能实现设备固件升级    但是我们可以牺牲一点flash,写一个新的bootloader固化再flash地址前面。这样我们不用每次都得通过设置boot0,boot1才能进行烧录,每次都在Flash memory启动,但是又通过bootloader检查是否有应用程序,这种方式在一些远程升级更加常用。
    int main(void){
        IAP_Init();

        while(1)
        {
            switch(IAP_ReadFlag())
            {
                case APPRUN_FLAG_DATA://jump to app
                    if( IAP_RunApp())
                        IAP_WriteFlag(INIT_FLAG_DATA);
                    break;
                case INIT_FLAG_DATA://initialze state (blank mcu)
                    IAP_Main_Menu();
                    break;
                case UPDATE_FLAG_DATA:// download app state             
                    if( !IAP_Update()) 
                        IAP_WriteFlag(APPRUN_FLAG_DATA);
                    else
                        IAP_WriteFlag(INIT_FLAG_DATA);
                    break;
                case UPLOAD_FLAG_DATA:// upload app state
    //                if( !IAP_Upload())
    //                    IAP_WriteFlag(APPRUN_FLAG_DATA);
    //                else 
    //                    IAP_WriteFlag(INIT_FLAG_DATA);
                    break;
                case ERASE_FLAG_DATA:// erase app state
                    IAP_Erase();
                    IAP_WriteFlag(INIT_FLAG_DATA);
                    break;
                default:
                    break;
            }
        }
    }
        IAP_ReadFlag()与IAP_WriteFlag()函数是程序运行状态读写函数,利用了备用寄存器存取片子上一阶段的状态,即掉电也会保存该数据。例如,通常我们在上次已烧写应用程序进去,下次上电可以直接运行app,不用再运行Bootloader。可以通过IAP_WriteFlag()写入标志,下次运行通过IAP_ReadFlag()读取标志,直接跳转运行app程序。其他同理。
    /* Define the APP start address -------------------------------*/
    #define ApplicationAddress    0x8003000
        上面一行代码是需要设置app程序存储的起始地址。bootloader程序存储在0x8000000~0x8002FFF。

    官方介绍:

    a91985a6f39b2ba3017fca33904309bd.png

    app程序    很重要一点的是先设置app程序放置的起始位置

    c553e84e66f1b7f045ac2aa124f2847f.png

        此外打开system_stm32f1xx.c 文件,修改中断向量偏移量,注释上说明偏移量要是0x200的整数倍。我们修改和app的启动地址偏移一致0x3000.    但是一个完整的app程序不仅是能实现应用功能,还能有跳转回bootloader运行的能力。这里就不做详细介绍了,具体大家可以看源码,作者是通过正点原子的方法使用usmart.c实现。官方介绍:cb77ea554fbf98ddb65e4607959d68b2.png

    winapp程序

    8f83e6b6e3ca7f60de9eb779199187c7.png

        应用如上图所示,采用winform设计的,同时串口下载程序的协议采用YModem协议校验。

    实验

    0462058be53b4dfe2ca52c3af9a9ce31.gif

    我修改了一下源程序,添加了led_allon()与led_alloff();函数,以下是效果:

    975c16226d9a3acc604f6c1f7c1969ad.gif

    板子灯亮起来的。最后

        正如作者所说,达到了无痛移植的效果,用起来十分舒服。再次十分感谢havenxie分享的源码,我在原文阅读中可点击访问其github主页,大家可以去其github主页下载程序。同时修改的程序,我将在公众号后台放出链接,大家复制文末的关键词链接到后台回复即可获得下载链接。

    END

    3dcde0fbd109ecf6aa0cd97dafb6e18e.png公众号ID:Tkwer望远镜扫码关注最新动态

    提供源文件,公众号内回复即可获取:IAP升级源码

    展开全文
  • 嵌入式平台 ARM7 AT91FR40162 串口升级 最近由于项目需要,在AT91FR40162平台上实现了通过串口传输目标板二进制可执行文件并更新固化到储存执行代码的片内ROM中。在这之前,我进入公司以来,这个平台上,通过仿真器...

    嵌入式平台 ARM7 AT91FR40162 串口升级
      最近由于项目需要,在AT91FR40162平台上实现了通过串口传输目标板二进制可执行文件并更新固化到储存执行代码的片内ROM中。在这之前,我进入公司以来,这个平台上,通过仿真器把程序下载到目标板是更新目标板固化程序的唯一途径。随着对嵌入式系统的逐步了解,我认识到存在不通过仿真器升级程序的方法:我们日常使用的嵌入式设备,如有线电视机顶盒,可以通过电视线升级软件,如路由器,可以通过网线升级软件,诸如此类,理论上有数据传输的通路就可以实现目标板软件升级。上网翻了下AT91FR40162的资料,不知道现在还有多少人用这块arm7...还好找到几年前的一些文档资料,Q&A,还有ATMEL免费提供的上位机软件ATMEL Host loader,但传说中配合使用的AT91 Flash Uploader却没找到。结合某已离职大牛遗留下没人再用的代码,还有其他平台的经验,终于在这个平台实现了串口升级。当中的一些学习心得和经验体会写下来作个记录并分享。
      首先简要总结串口升级的原理。在我们的目标板里,这块ARM上电复位并执行memory remap之后,0地址映射到片内RAM,0x400000映射到FLASH ROM。由于片内RAM为256k,FLASH ROM为2M,目标板的执行代码储存在FLASH ROM,运行时大部分在FLASH ROM执行,只有少部分对速度要求高的映射到片内RAM。实现软件串口升级的基本思路,就是编写实现接收串口数据并把数据转存至FLASH ROM功能的代码,将其用仿真器下载至目标板,并保持以后每次软件串口升级之后FLASH ROM都保持有这样功能的代码。
      接着就具体不同的需求来分析不同的实现方案。我之前在另一个DSP平台实现过串口升级,方法是目标板的日常运行代码里有串口升级的模块,当收到串口升级命令之后,按照预定的流程把二进制可执行文件数据从串口接收下来,储存在RAM里,在确认无误后,再刷写固化入FLASH ROM中。这个方案的要点是,负责串口升级的模块代码,特别是负责把数据刷写入FLASH ROM以及之后操作的相关执行代码和访问到的常量,必须加载到RAM里,以免升级FLASH ROM后代码位置改变而不能执行;此外RAM要提供一个大的缓冲区,用作储存二进制可执行文件数据。我分析过这次ARM7平台的代码量在100k多一点,也就是二进制可执行文件大小100多k,需要加载到RAM的代码和变量数据之和小于100k,这样256k的RAM刚好能满足要求。就这样,参照离职大牛的代码,了解这块ARM的FLASH操作之后,移植DSP平台的串口升级模块代码,便实现了软件串口升级的功能。我认为这方案特点是:一,对内存的使用量比较多,比较适合RAM相对较充足的情况;二,运行的时候随时升级,但存在风险:一旦在写FLASH的过程中掉电,或者刷入了不含串口升级功能的代码,之后就只能接仿真器刷了;三,编码简单,移植方便。然而,虽然目前我这个项目的代码量还不多,但如果以后要增加功能,势必会增加代码大小和内存使用量,那时候使用这方案就不合适了,因而我必须思考其他实现方案。
      既然内存不充裕,那我就减少升级代码缓冲区的大小,例如设置一个固定的FLASH ROM页面大小,刚好是FLASH进行清除操作的最小单元;这样填满了这个缓冲区,就进行写FLASH操作,写好继续接收。现在我常用的串口波特率最高是115200bps,就是说每秒最多传14400字节,假如刷写一个页面的FLASH ROM需要x个毫秒,从串口驱动的接收缓冲区拷数据到升级代码缓冲区需要y毫秒,那么串口驱动的接收缓冲区必须大于14.4(x+y)个字节,才能避免丢失串口数。我没有查资料和做准确测试,这x+y估计在100以下。所以,相对于方案一,这个方案节省了大量内存,从原来的100多k减少到一个页面4k,而且还不需要限制代码量的大小,只要FLASH ROM装得下;不过,风险大大增加:方案一在串口传输的过程中如果掉电,只是升级失败,旧程序还在,而这方案如果在那时候掉电,新程序还没完全刷好,那又得接仿真器重刷了。一般FLASH ROM的重刷只需不到一秒,但100k的数据传输需要好几秒,为了避免这一风险的增加,我想到在FLASH ROM上做备份。例如现在FLASH ROM有2M字节这么多,假如我现在的代码翻十几倍,还可以多放1个相同的镜像。因此,我在接收时不刷写旧代码所在的页面,找空闲的页面先把新的代码刷进去,在接收完成并确认无误后,再把新的代码从备份页面拷贝到旧代码的页面。这样掉电的风险将和方案一相差不大。
      参照方案二的改进版,要完全消除软件升级时掉电的风险,可以在FLASH ROM中腾出专门一个页面,放置串口升级相关代码;升级时只清空更新其他页面,而这个页面的代码永不擦除,驻留在FLASH ROM。而且,这部分代码每次启动后都要能执行。这也就是ATMEL的Flash Uploader的实现方法。具体的思路如下:当ARM启动之后,跳入串口升级相关代码,等待升级指令,如果接收到指令,便进入串口升级流程,否则等待一小段时间之后,跳入目标板执行的日常功能代码。例如,我在0x400000开始的FLASH ROM写入启动和串口升级代码,在0x500000开始的FLASH ROM写入日常功能代码,ARM的入口代码位于0x400000;当我需要串口升级时,启动目标板并不断通过串口发送预先定义好协议的同步指令,使目标板执行串口升级代码,从而更新位于0x500000开始的日常功能代码;当平时应用时,目标板启动后没有侦听到同步指令,在一小段等待时间后跳入位于0x500000,执行日常功能代码。相比于方案一和二,这个方案完全不担心掉电,代价是延长了日常功能代码的启动。在我慢慢理解离职大牛的代码后,发现原来他的代码就是这种方案的一种实现。启动代码就是bootloader,先执行串口升级的代码,再执行日常功能代码,而且在执行串口升级代码时,整个RAM除了中断表和串口升级代码要用到变量外,一般还有很大的余量,可以增大数据缓冲区,或者加入更多的机制来完善串口升级。受此启发,我还想到了更多复杂的应用方案。
      例如,结合方案一和方案三,或者方案二和方案三,便既可以保留日常运行时升级的功能,又避免了偶然断电等因素导致设备不能再串口升级的风险。或者改进方案三,使目标板启动后先判断位于0x500000处的代码是否可执行,如果是则执行日常功能代码,否则跳入串口升级代码;在日常运行时也可以接收指令跳入串口升级代码,从而减少日常功能代码的启动时间,并且在日常运行中执行串口升级时可获得最大化的RAM资源,当然这里如何准确判断0x500000处的代码是否正常将是个重点。貌似现在有些ARM就驻留了这样的启动代码在FLASH ROM的首个扇区。
      最后,总结一些经验体会:
    一,这段时间为了实现这个功能,我翻查了不少资料,对ARM主要是AT91FR40162的启动过程有了进一步理解,对memory remap,boot loader等都有了更多的认识。相信这对我学习其他cpu编程来说是个好的基础。
    二,通过一步一步对启动代码的调试,我克服了对ARM汇编的恐惧,虽然汇编指令没懂几个,而且看到一大段汇编代码还是会头疼,但至少那种神秘感消失了;通过调试汇编代码,某些问题的原因可以得到快速而准确的定位,从而采取了有效地解决方案。
    三,经过多次串口升级的实践,我认为检测出传输错误、保证刷写的内容正确是关键的。目前我的方案是加入CRC校验,主要是日常功能代码里有用到CRC,这样可以减少加入额外代码,当然我得用相应上位机程序软件进行加工或配合。
    四,串口升级代码的设计,最好要有周全的考虑,例如对FLASH ROM扇区的规划使用,串口升级指令的协议等等,不能只看目前应用的情况,还得考虑将来扩展的灵活性。虽说这部分代码本身也可以升级,但不变是最好的。“不变应万变”
    五,不怕做不了,只怕想不到,我也算是重复造了个轮子,而且还打算增加更多的功能,不过仔细想想还是罢了,太复杂的东西恐怕会像离职大牛的代码一样,被丢着不用了。
    六,简要列举三种主要方案的特点

     

     

    方案一

    传好再刷

    方案二

    边传边刷

    方案二改进

    边传边刷 + FLASH 备份

    方案三

    驻留并启动执行

    方案三改进

    驻留,启动条件执行

    RAM 容量要求

    ROM 容量要求

    一般

    一般

    一般

    一般

    掉电风险

    额外启动时间

    代码实现

    简单

    一般

    一般

    复杂

    复杂

    代码移植性

    容易

    容易

    容易

    困难

    困难

    代码维护性

    容易

    一般

    一般

    困难 / 不维护

    困难 / 不维护

     

     

    展开全文
  • 串口烧录升级下载

    2019-02-27 16:30:16
    STM32跑马灯+APP :文件为APP在线串口升级应用层 IAP+ymodemDown.exe :为在线升级PC端软件下载密码(0xEF 0xCD 0xAE 0xB9 0x9E)指针清零(0X00 0X0A 或大于5个字节) 占用串口Usart1 115200.8.1.N, 测试通过;
  • Realtek方案串口升级指导

    千次阅读 2019-01-08 09:05:37
    烧录方法 波特率 115200 ...打开 PC机上TFTP软件,设置当前目录为:存在升级软件的目录;service interface为:tftp本地PC的IP地址; 打开串口,如果有烧录过的开机按任意键就会进入UBOOT模式 ...
  • ADBOX串口升级工具

    2011-12-19 21:30:57
    adbox卫星接收机刷机软件.这个是通过串口来刷机的工具。
  • 使用C8051F120的串口UART实现对单片机软件升级
  • TCP串口调试软件

    2013-11-16 10:16:16
    另外要说明的是,我学习C++Builder才一个星期时间,仓促完成这个串口软件升级,未免可能有些差错,在此先声明一下,您可以免费使用和自由传播本软件,但是我不对本软件所造成的任何损失负责!如果你使用了本软件,...
  • 串口测试软件,用于升级。具体如何使用请自学。
  • 1、支持本地串口转网络; 2、支持创建虚拟串口转网络,非常适合串口通信的上位机升级为远程网络通信; 3、支持创建多组串口,类似于VSPD功能,每组两个串口可互通,可用于开发测试工具。
  • 1.内含avr单片机下位机源码c程序,本人在atmega128单片机上已经成功运行,能够和资源内的上位机程序配合进行程序升级。 2.c程序里有修改指南;...6.最后就可以和上位机进行配合进行程序的串口升级
  • 串口在线升级.zip

    2019-11-13 10:48:41
    Bootloader中尽可能不使用中断,因此此处串口接收数据采用查询接收方式; Bootloaderz中不要让程序卡死或者进入某个死循环,应在适当的地方进行软件复位; 注意数组长度越界或者溢出错误; 注意YModem协议第一包...
  • 大华电子秤串口调试升级1、2017-08-26修正了赢通收银软件的兼容性 2、2017-08-28修正了美食专家收银软件的兼容性
  • 大傻串口调试软件3.0

    2006-09-15 17:23:43
    最好用的串口调试软件升级为3.0版本,修改和实现了以下功能: 1、解决文件发送时显示重复的问题; 2、修改了文件轮发的时候,全屏下清屏处理不对的问题;3、修改了文件轮发的时候,停止显示无效的问题; 4、...
  • APP 在lnk_msp430fg479.cmd中修改APP Flash地址。 FLASH改成0x1200(为啥不是0x...增加一个参数块,用来存放软件版本号(10字节) INFOA中存放系统配置信息 MEMORY { SFR : origin = 0x0000, le...
  • STM32串口在线升级程序

    热门讨论 2013-02-06 10:04:58
    带VB软件源代码,STM32源代码,以及在线升级程序操作说明、原理介绍
  • 概述:上电等3秒种,期间每隔10ms检测一次串口是否收到握手指令(0x7F),若收到则跳转到isp程序执行,超过3秒后执行用户程序,。以用mcuisp软件通过串口1直接升级程序。是一种简单的iap程序。
  • 本代码基于官方提供的STM32 IAP串口在线升级程序修改,内附BootLoader与测试程序,及破解版下载工具SecureCRT软件,破解方法内部有说明文件,本代码仅供参考。本人使用的是STM32F103C8T6芯片。
  • 1、串口调试 支持hex和ascii 码发送,接受. 支持自动添加回车换行. 支持定时发送,最短间隔100ms,最大2000ms。 2、Ymodem-IAP升级 选择文件,启动升级之后会间隔100ms 向下位机发送S,等待下位机应答'C',开始通过...
  • STM32 Bootloader基于ymodem传输协议串口IAP升级详解

    千次阅读 多人点赞 2019-12-31 23:54:35
    预备知识 基于标准外设库(STM32F10x_StdPeriph_Lib_V3.5.0)的IAP升级相关资料可以...本文需要实现STM32的Bootloader基于ymodem协议通过串口进行固件升级。 硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0
  • AVR单片机 Bootloader(串口在线升级程序源代码),使用时要根据自己的单片机型号和串口号,以及晶振修改相关代码部分,在编译软件时要选中Boot Loader选项,烧写时选中相关的熔丝位,使用AVR提供的软件MegaLoad .NET...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 424
精华内容 169
关键字:

串口升级软件