1、串口IAP1.1、ISP与IAPISP在系统编程,STM32F4支持USART1、USART3、CAN2、USB OTG FS在设备模式下编程,即我们经常使用的改变boot方式下载程序。
IAP在应用编程,通过下载一段引导程序Bootloader程序,如果我们想要从串口或网口等更新应用程序,在Bootloader中初始化相应的串口或网口,使其接收应用程序,将接收到的应用程序写入到Flash里面,IAP完成后跳转到应用程序入口执行应用程序。
1.2、串口IAP设置说明本次实验目标板使用红龙407开发板,其引出串口为串口3,将红龙开发板串口3与电脑相连,打开电脑超级终端,先将引导程序通过jlink等仿真器下载到开发板,按住S3键后复位开发板,D1灯亮并通过串口输出如下菜单,输入“1”开始等待接收APP程序
点击发送文件,选择APP程序的bin格式文件,并选择传输协议为Ymodem,发送文件
显示发送进度及错误等
程序更新完成,输入“3”开始执行用户程序
1.3、应用程序设置注意事项我们需要开发板实现功能的程序,其中应用程序主要分为两种:hex文件和bin文件。在我们经常使用的KEIL中默认编译生成的可执行文件(应用程序)为hex格式的,若需要编译生成bin格式需要做如下修改,加入“D:\Keil\ARM\ARMCC\bin\fromelf.exe --bin --output ./Obj/Gpio.bin ./Obj/Test.axf”,重新编译生成的Gpio.bin文件存放在Obj文件夹下。
ROM空间区别,普通程序的ROM空间从0x8000 0000开始,而在IAP下的应用程序的起始地址则是IAP跳转的地址,这里我们的引导程序跳转到应用程序的地址为0x801 0000,因此设置ROM空间起始地址为0x801 0000,如下图
中断向量表,普通程序若是从Flash启动,则中断向量表的偏移地址为0,而在IAP的应用程序中需要设置新的中断向量表,偏移地址即IAP程序存放的地址与应到程序的地址偏移即0x801 0000-0x800 0000,在程序中做如下设置SCB->VTOR = FLASH_BASE | 0x10000;//设置中断偏移