php网站授权免费seo网站诊断
文章概要
本文是基于STM32F4系列标准库的一个IAP在线升级程序,详细讲解了IAP程序从第一步到最终完成程序跳转的各过程。在正式开始之前,需要先去了解以下前置基础知识,以及获取对应资料。
预先说明一下结论:Boot程序是基于标准库写的,App程序是基于HAL库写的这种情况不会影响从Boot程序跳转到APP,也不影响从App跳回Boot,并且App程序是可以执行的,标准库、HAL库的本质还是寄存器的操作。
在从Boot跳转至App程序的时候大多用的是函数指针的方式,但是当实际App程序过大的时候不推荐仍旧使用函数指针的方式跳回Boot程序,因为会由于App程序过大而导致栈没有及时清空,在第二次从Boot跳回App的时候导致无法正常跳转,程序卡死。
本文是基于正点原子开发板STM32F407ZGT6来学习IAP程序。
通讯的物理层是基于RS232和RS485两个实验
仅使用到开发板上一个外设:UART。
Flash大小1M,RAM大小192KByte
源码2024-11-7更新,链接如下:
通过网盘分享的文件:1.IAP程序
链接: https://pan.baidu.com/s/1-LcNEVysk-KnOKc9kimOtQ?pwd=1234 提取码: 1234
注意:新的源码硬件设施由原来的STM32F407ZGT6改成了STM32F407VET6,其他不变。
由于本人第一次做IAP升级程序,如有不足之处,希望大家能够在评论区中给出意见,感谢大家。
前置知识和资料获取
1.正点原子讲解基于UART的IAP升级实验和片上Flash操作实验
传送门:
Flash的学习:
第67讲 FLASH闪存编程原理与步骤-M4_哔哩哔哩_bilibili
第68讲 FLASH模拟EEPROM实验-M4_哔哩哔哩_bilibili
串口IAP的学习:
第92讲 IAP在应用编程原理_哔哩哔哩_bilibili
第93讲 串口IAP实验讲解_哔哩哔哩_bilibili
2.有关Ymodem和IAP的基础知识
Ymodem知识传送门:
https://blog.csdn.net/huangdenan/article/details/103611081
https://blog.csdn.net/qq_33475105/article/details/116866436
STM32 IAP在线升级嵌入式_哔哩哔哩_bilibili
STM32F4 IAP BOOTLOADER YMODEM_stm32f4 iap ymodem-CSDN博客
IAP知识传送门:
单片机三种烧录方式ICP、IAP和ISP详解_icp iap-CSDN博客
STM32在线升级 (IAP)-CSDN博客
3.在完成了上述步骤后,需要一个基于标准库的IAP官方例程
基于STM32官方IAP在线升级例程传送门:
STM32 IAP 升级官方资料汇总_stm32 官网 iap-CSDN博客
F4系列选则:AN3965
如果是其他系列的,比如F1系列的就去找F1对应的例程,如果是HAL方式的就去找HAL库的,我这边只提供标准库的官方例程,需要官方例程的原因是因为官方例程中提供了非常重要的函数,就是Ymodem.c这个文件中的接收函数,其他的暂时都用不到,当然了,在文章的后面会详细的介绍官方例程的源码和使用以及Ymodem接收函数。