本帖最后由 21ID 于 2013-9-30 22:51 编辑
在做远程升级的时候,目前的方法是将256K的Flash分成200K和56K。因为在升级的时候要擦除前200K Flash,故升级程序相关函数及变量要存放在固定的后56K Flash中。
1,200K用作平常状态下运行的程序,程序结构为时钟初始化→判断是否需要升级→各模块初始化→While{接收升级程序数据,存放外部Flash}。
2,56K用作升级时的函数及变量存放地址,程序结构为时钟初始化→Flash相关初始化→擦除200K Falsh→写200K Falsh→软件重启。
3,现在的情况是分成两个Keil工程来实现的,即有2个main函数,在Keil工程选项On-Chip IRom1中来划分256K 的空间,这样生成的2个烧写文件写到单片机中会分别存到各自的空间中。
4,上述的方法带来每次都要烧写2个程序,生产可能会忘记烧远程升级的程序,及给生产造成麻烦。
5,请问一下:
①如何将两个单独的Keil工程合并起来?
②怎么用绝对地址定位多个函数及多个变量?
③如何一次编译,一次烧写?
6,附上草写的流程图
|