stm32f429 bootloader(IAP_Ymodem+app)

1 篇文章 0 订阅
1 篇文章 0 订阅

stm32f429 bootloader(IAP_Ymodem+app) 可用,在野火STM32F429挑战者V1上测试

注意事项:
1.在用超级终端下载BIN文件时,数据流控制要选择:无,与我程序中的串口配置要一样。

2.

在系统启动的时候,会首先调用SystemInit函数初始化时钟系统,同时SystemInit还完成了中断向量表的设置,我们可以打开SystemInit函数,看看函数体的结尾处有这样几行代码:

#ifdef VECT_TAB_SRAM

SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET;

 /* Vector Table Relocation in Internal SRAM. */

#else

SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;

/* Vector Table Relocation in Internal FLASH. */

#endif

从代码可以理解,VTOR寄存器存放的是中断向量表的起始地址。默认的情况VECT_TAB_SRAM是没有定义,所以执行SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; 

对于FLASH APP,我们设置为FLASH_BASE+偏移量0x10000,所以我们可以在SystemInit函数里面修改SCB->VTOR的值。当然为了尽可能不修改系统级别文件,我们可以也可以在FLASH APP的main函数最开头处添加如下代码实现中断向量表的起始地址的重设:

SCB->VTOR = FLASH_BASE | 0x10000;

       以上是FLASH APP的情况,当使用SRAM APP的时候,我们设置起始地址为:SRAM_BASE+0x1000,同样的方法,我们在SRAM APP的main函数最开始处,添加下面代码:

SCB->VTOR = SRAM_BASE | 0x1000;

       这样,我们就完成了中断向量表偏移量的设置。

测试用的 iap+app在链接中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32F429串口IAP(Ymodem)升级是一种在STM32F429上通过串口进行最小系统升级的方法。其中,IAP全称为In-Application Programming,可以实现对单片机程序在应用程序的控制下进行在线升级的功能;而Ymodem则是一种通用的串行数据传输协议,可以保证数据的可靠性。 该方法的使用过程如下: 1.使用对应的工具(如ST-LINK Utility)将应用程序和BOOTLOADER程序分别烧录至单片机的Flash中。其中,BOOTLOADER程序一定要占用Flash的起始位置,并且大小应该尽量小。 2.编写在应用程序中调用的IAP程序,该程序通过解析Ymodem数据包的方式将更新数据升级到Flash中。同时,IAP程序需要包含一些自我保护措施以避免出现卡死等问题。 3.通过串口将更新数据以Ymodem协议的方式发送给单片机。在发送数据之前,需要保证串口配置正确(比如波特率、数据位等)。 4.单片机收到数据后,进行解析并将数据写入Flash中。在写入数据时需要判断支持Flash的型号和大小,以及使用哪个扇区。 该方法的优点在于可以实现在线升级,并且对于不同的Flash型号和大小都有较好的兼容性。同时,采用Ymodem协议可以保证了数据的可靠性,避免了出现数据出错、丢失等问题。缺点则在于需要编写一定的IAP程序,并且在升级时存在一定的安全风险。 ### 回答2: STM32F429作为一款高性能的微控制器,具有多种升级方式。其中比较常用的方式为串口IAP和Ymodem升级。 串口IAP(In-Application Programming)是通过串口通信升级系统的一种简单可行的方法。在程序中添加IAP函数库,修改引脚配置,通过串口连接PC,将升级文件发送至微控制器,程序将自动更新Flash存储器中的程序。 而Ymodem升级则是通过调用UART外设与上位机之间通信,采用基于CRC-16校验的Ymodem-M协议完成数据传输的无需Bootloader的升级方式。该方法优点是可以通过任何终端软件直接实现,缺点是升级速度可能会受到波特率和数据带宽限制,传输时间可能长。 综合来看,根据具体需求和情况选择合适的升级方式,既能提高升级效率,又能确保升级的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值