本发明属于嵌入式应用技术领域,具体涉及一种基于以太网更新ARM和DSP程序的方法。
背景技术:
对于有多个处理器的装置,其程序的更新最简便方法就是利用JTAG进行烧写,但在实际工程应用中,产品交付后往往需要在不拆盖的情况下对软件程序进行更新,所以远程在线升级功能是对产品设计的基本要求。
ARM通过和以太网相连可利用IAP(In Application Programming、在应用编程)技术对User Flash的部分区域进行烧写,而DSP无对外的通信软件,远程在线程序更新不能通过JTAG来实现,因为JTAG线引到外面容易受到干扰而使程序跑飞。基于此,本发明提出了一种利用以太网对ARM和DSP进行程序更新的方法。
技术实现要素:
本发明的目的在于提出一种基于以太网更新ARM和DSP程序的方法,该程序更新方法具有速度快、可靠性高、操作方便特点。
为了解决上述技术问题,本发明通过以下方式来实现:
一种基于以太网更新ARM和DSP程序的方法,具体通过以下步骤来实现:
1)上电;
2)STM32芯片上电后,进入User flash地址0x8000000处的Bootloader程序,检查是否需要对应用程序更新;
3)若选择否,程序直接进入ARM应用程序,ARM正常启动;若选择是,程序则提供ARM APP或者DSP APP两种选择;
31)若选择更新ARM APP程序,利用TFTP软件通过以太网将PC机上bin格式的ARM APP程序写入到User flash地址0x8010000中,完成ARM APP的程序更新操作;
32)若选择更新DSP APP程序,首先利用TFTP软件通过以太网将PC机上Hex格式的DSP APP程序写入到User flash地址0x8090000中,完成DSP APP程序存储操作;
4)待步骤32)结束后,重新上电,正常启动并进入ARM APP程序,读取存储在User flash地址0x8090000的Hex格式的数据,并将Hex格式转换成bin格式,为了防止错误或者遗漏,进行总加和CRC检验、帧总长度以及可执行程序的地址对比,确定DSP APP程序无误后,通过SPI传入DSP中并调用Flash API库相关的函数功能,进行擦除、烧写、校验功能,完成DSP APP程序更新操作。
与现有技术相比,本发明具有的有益效果:
采用以太网更新程序可以避免接错而导致烧写器损坏或者处理器被锁现象;不需拆盖就可以完成程序更新,烧写方便;不需使用烧写器,工程维护方便。
附图说明
图1为user flash地址分配示意图;
图2为ARM和DSP程序更新流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明的具体实施方式作进一步详细的说明。
本发明通过ARM编写两个项目代码,第一个项目代码不执行正常的功能操作,通过以太网接收程序或数据,对ARM或DSP进行程序更新,这部分称为Bootloader程序;第二个项目代码为实现真正功能的代码,称为APP程序。DSP编写一个项目代码,通过ARM的Bootloader程序存放在User Flash的部分区域。
如图1~2所示,一种基于以太网更新ARM和DSP程序的方法,其具体方法步骤如下:
(1)ARM APP程序更新
本发明的ARM程序更新采用IAP技术,STM32芯片上电后,程序首先进入User flash地址0x8000000处的Bootloader程序(Bootloader程序为引导程序,通过JTAG烧入),检查是否需要对应用程序更新,如果不需要更新,则直接进入ARM应用程序,ARM正常启动;如果需要更新并选择ARM APP更新键,利用TFTP软件通过以太网将PC机上bin格式的ARM APP程序写入到User flash地址0x8010000中,完成ARM APP的程序更新操作。
(2)DSP APP程序更新
STM32芯片上电后,程序首先进入User flash地址0x8000000处的Bootloader程序,检测到需要存储DSP APP后,利用TFTP软件通过以太网将PC机上Hex格式的DSP APP程序写入到User flash地址0x8090000中,完成DSP APP程序存储操作后重新上电,正常启动并进入ARM APP程序,读取存储在User flash地址0x8090000的Hex格式的数据,并将Hex格式转换成bin格式,为了防止错误或者遗漏,进行总加和CRC检验、帧总长度以及可执行程序的地址对比,确定DSP APP程序无误后,通过SPI传入DSP中,DSP调用Flash API库相关的函数功能,进行擦除、烧写、校验功能,完成DSP APP程序更新操作。
以上所述仅是本发明的实施方式,再次声明,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进,这些改进也列入本发明权利要求的保护范围内。