打印
[STM32F0]

STM32F072C8T6调试IAP(CAN)记录

[复制链接]
1064|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
deyauo|  楼主 | 2017-11-9 17:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、准备工作
    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。
沙发
mmuuss586| | 2017-11-9 20:30 | 只看该作者

不错,谢谢分享;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

9

帖子

1

粉丝