这是两个相同的程序,设置IROM1的起始地址分别为 0x8010000 和 0x8021000,
生成的bin文件的复位地址分别为 08 01 11 55 和 08 02 21 55,这个地址的差值更好为0x11000,
和IROM的地址差刚好吻合,这个肯定不是巧合
然后我就按照下面办法生成bin文件:
1. bin1更新时需置于 0x8010000开始的地址,生成bin文件时,设置向量表偏移0x10000,KEIL设置IROM1:0x8010000
2. bin2更新时需置于 0x8021000开始的地址,生成bin文件时,设置向量表偏移0x21000,KEIL设置IROM1:0x8021000
也就是说,不同置于不同flash地址的程序的bin文件单独生成,地址做好匹配
固件升级测试10次,是没问题的
然后我把bin1升级到APP2的位置,把bin2升级到APP1的位置,然后就不行了,bootloader执行到跳转之后就没有然后了
但是,不太可能每次固件升级还得记录固件的位置啊,这样太不智能,太麻烦了,
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 分割线 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这里就真的不知道如何处理了,因为bin文件可能位于不同的位置,bin文件里面带的地址该如何处理呢?
这是两个相同的程序,设置IROM1的起始地址分别为 0x8010000 和 0x8021000,
生成的bin文件的复位地址分别为 08 01 11 55 和 08 02 21 55,这个地址的差值更好为0x11000,
和IROM的地址差刚好吻合,这个肯定不是巧合
然后我就按照下面办法生成bin文件:
1. bin1更新时需置于 0x8010000开始的地址,生成bin文件时,设置向量表偏移0x10000,KEIL设置IROM1:0x8010000
2. bin2更新时需置于 0x8021000开始的地址,生成bin文件时,设置向量表偏移0x21000,KEIL设置IROM1:0x8021000
也就是说,不同置于不同flash地址的程序的bin文件单独生成,地址做好匹配
固件升级测试10次,是没问题的
然后我把bin1升级到APP2的位置,把bin2升级到APP1的位置,然后就不行了,bootloader执行到跳转之后就没有然后了
但是,不太可能每次固件升级还得记录固件的位置啊,这样太不智能,太麻烦了,
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 分割线 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这里就真的不知道如何处理了,因为bin文件可能位于不同的位置,bin文件里面带的地址该如何处理呢?
举报