IAP升级的APP程序可分为Flash APP和SRAM APP,不同的APP有不同的程序设置地址,同时,中断向量表的偏移地址也要进行相应的设置。
Flash APP
设置IROM1的起始地址为Flash内存起始地址的适当偏移量,结束地址为Flash的结束地址,则偏移前的空间用于Boot Loader,偏移后的空间用于Flash APP。
例:若Flash的内存地址为0x08000000,大小为0x40000(256k),设置IROM1为0x08008000,size为0x38000(32k)
则前面32k给Boot loader,后面224k给Flash APP
SRAM APP
例:若SRAM的起始地址为0x2000000,大小为48k,设置IROM1起始位0x20001000,大小为0xA000(40k),IRAM1为0x2000B000,大小为0x1000(4k)
则可知0x20000000~0x20001000的4k 空间用于BootLoader,之后的40K用于存放APP,最后4k用于APP程序的内存
中断向量表的偏移地址设置
不论是Flash APP还是SRAM APP,其中断向量表的偏移地址都应设置为APP程序的起始地址
IAP希望使用的文件是bin文件而非Hex文件,原因是Hex文件比bin文件多了一些机器码的存储地址,供烧写程序的软件使用。烧写hex文件时,不需要用户指定地址,而烧写bin文件时需要用户自行指定地址;且Hex文件用ASCII码表示二进制,文件较大。
MDK有自带的将.axf转换为bin文件的工具fromelf.exe,在Options for Target的/user/After Build中设置Run #1设置运行fromelf.exe