最近写了一个F120的bootloader,F120有128kbflash,程序FLASH分配如下:
//地址区域划分
#define D_APP_START 0x00000 // APP区起始地址
#define D_APP_LIMIT 0x1E000 // APP区结束地址:120KByte
#define D_RUN_ADDRESS 0x1E001 // APP运行地址,到boot有512Byte空间,可以保存跳转地址
#define D_BOOT_ADDR 0x1E201 // Boot程序存储地址
#define D_BOOT_LIMIT 0x1FA01 // Boot区结束地址:4KByte
#define D_FLASH_LIMIT 0x1FBFD // FLASH可操作区结束地址-存储非易失性数据
我将bootloader,放在高地址区域。在keil中进行了相应的设置:将target-> BL51 loacation ->code range 设置为boot存储的地址0x1E201-0x1FA01 ,然后 将CODE->设置为 ?C_C51STARTUP(1E001) 。
擦除之前保存地址0,1,2中的数据,擦除后在重新将保存的0,1,2中的数据写回去。主要是后一步,启动后如何跳转进boot呢,是不是在地址3处写入跳转地址0x1E001,进入boot后检测有没有下载信号,如果没有,则跳转到APP区执行程序,那么如何跳回去呢?.。有些混乱,求指正?