STM32芯片怎么通过无线更新程序?
最近做了个项目,用STM32控制无线模块传输,能不能通过这个无线模块更新STM32的程序?无线模块是通过232/485与STM32控制板链接的...
最近做了个项目,用STM32控制无线模块传输,能不能通过这个无线模块更新STM32的程序?无线模块是通过232/485与STM32控制板链接的
展开
1个回答
展开全部
可以的,但是程序需要由两部分组成:1.bootloader;2.应用程序
bootloader:负责更新程序的拷贝和跳转到应用程序;
应用程序:运行程序要实现的功能和更新程序的下载、保存。
首先,开机时运行bootloader,bootloader检测片内Flash(或者片外Flash或者FRAM)“程序更新标志”是否置位,如果没有,则直接跳转到应用程序。应用程序运行时检测无线模块收到的数据命令,如果有updata命令,则接收程序,并保存到片内Flash的靠后的代码段(或者片外Flash),接收保存完数据后,片内Flash(或者片外Flash或者FRAM)“程序更新标志”置位,然后重启MCU。MCU重新运行bootloader,此时bootloader检测到有程序更新标志,则将片内Flash的靠后的代码段(或者片外Flash)的更新代码拷贝回应用程序代码段,并复位更新程序标志,然后跳转到应用程序,至此程序更新完毕。
ps:网上有已经实现的代码,你可以搜索“STM32 IAP”。
bootloader:负责更新程序的拷贝和跳转到应用程序;
应用程序:运行程序要实现的功能和更新程序的下载、保存。
首先,开机时运行bootloader,bootloader检测片内Flash(或者片外Flash或者FRAM)“程序更新标志”是否置位,如果没有,则直接跳转到应用程序。应用程序运行时检测无线模块收到的数据命令,如果有updata命令,则接收程序,并保存到片内Flash的靠后的代码段(或者片外Flash),接收保存完数据后,片内Flash(或者片外Flash或者FRAM)“程序更新标志”置位,然后重启MCU。MCU重新运行bootloader,此时bootloader检测到有程序更新标志,则将片内Flash的靠后的代码段(或者片外Flash)的更新代码拷贝回应用程序代码段,并复位更新程序标志,然后跳转到应用程序,至此程序更新完毕。
ps:网上有已经实现的代码,你可以搜索“STM32 IAP”。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询