STM32F072C8T6调试IAP(CAN)记录

一、准备工作
    1、找到官方IAP参考例程,是基于STM32F030的例程;
    2、准备两块电路板,一块用于CAN-UART透传,另一块作为测试目标板。
     
二、CAN-UART透传
    1、CAN波特率设为125K,UART波特率设为115200
    2、CAN节点ID设为0x000
    
三、测试目标板BootLoader程序
    1、基于官方例程进行修改
    2、官方例程采用的是USART通信,通过STM32CubeMX配置好CAN后,修改几个函数,可实现CAN通信;
    3、关于FLASH_PAGE_SIZE宏定义,由于采用是stm32f072xb.h,因此在stm32fxx_hal_flash_ex.h中定义的是0x800U,需要修改为0x400U
    4、根据个人需求将逻辑进行了修改,通电后运行Bootloader程序,5s内没有收到升级指令,跳转到用户程序;
    5、测试工具使用 SecureCRT,发送*.bin文件的时候采用Ymodem协议;
    6、对工程不优化,会占用16K的空间,因此Bootloader的空间预留20K,即用户程序起始地址改为0x08005000。

四、测试目标板用户程序
    1、在程序最开始的地方需要对中断向量表重定义,由于F0xx没有SCB->VTOR这个寄存器,需要把中断向量表从Flash复制到SRAM中;
    2、官方例程采用的是*((uint32_t*)(0x20000000 + (i << 2)))=*(__IO uint32_t*)(0x08005000 + (i<<2));改为VectorTable[i] = *(__IO uint32_t*)(0x08005000 + (i<<2));此处不作修改的话,会将全局已初始化的变量值给改掉(这个问题花了我一天来查),这两句话的作用是一样的,应该都可以用,但要注意第3条;
    3、将IRAM1的Start改为0x200000C0,Size改为0x3F40,通过.s文件可以看到共有48个中断向量,占用192字节,因此对全局变量初始化值进行偏移,通过对比修改前后的map文件看到变化;
    4、IROM1的 Start改为0x8005000,Size改为0xB000。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F030C8T6是一种低功耗的32位微控制器,具有较强的处理能力和丰富的外设资源。IAP(In-Application Programming)串口升级是指通过串口接口对MCU的固件进行在线升级。 在STM32F030C8T6上进行IAP串口升级的步骤如下: 首先,需要准备一个可烧写固件的空间,通常是以某种存储介质(如闪存)的某个扇区作为升级固件的存储空间。 其次,需要在MCU上实现串口通信功能,以便与外界的上位机进行通信。可以利用STM32F030C8T6内部的UART(串行通用异步收发器)模块,通过串口实现与上位机的通讯。 然后,需要在MCU的固件中添加IAP升级的代码,通常是通过串口接收上位机发送的升级文件,并将其写入到预留空间中。升级文件通常是一个二进制文件,其中包含了要升级的固件的信息。 在接收到升级文件后,MCU将根据升级文件的格式,将其解析并写入到预留空间中。这个过程需要根据具体的升级文件格式来实现。 最后,完成升级后,MCU将会重启,并从新的固件开始运行。在新的固件中,可以通过相关的接口检查升级结果,并进行相应的处理。 总结来说,STM32F030C8T6可以通过UART串口实现IAP串口升级,即通过串口接收上位机发送的升级文件,并写入到预留空间中,然后重启MCU并运行升级后的固件。这样可以方便地实现无需外部编程器即可在线升级MCU固件的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值