参考周立功的<<LPC2000_FLASH.pdf>>说明, 用IAP更新整个程序后, 无法运行, 请教大家不知是否有其他设置和方法解决此问题? 我把整个过程说明一下:
LR_IROM1 0x00000000 0x00040000 { ; load region size_region ER_IROM1 0x00000000 0x00040000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x40000000 0x00001E00 { ; RW data .ANY (+RW +ZI) } RW_IRAM2 0x40002000 0x00001F00 { ; RW data systemtick.o (+RO +ZI) menu.o (+RO +ZI) critical.o (+RO +ZI) bsp.o (+RO +ZI) uart.o (+RO +ZI) iap.o (+RO +ZI) } } IAP, UART, 以及调用IAP的critical模块都放在了内部RAM中, 并且0x40001E00到0x40001FFF这512字节空出来用于IAP的写入缓存,0x40003F00到0x40003FFF这256字节RAM也没有使用, 留给IAP用. 使用 超级终端 的xmodem协议把程序二进制bin文件下载到外部SRAM 0x80000000 处, 关闭了中断, 再把外部SRAM中的数据反复导入内部512字节的IAP写入缓存完成写入操作. 我用ulink2在keil中调试, 观察写入flash后的程序并没有错误, 重启后就是无法运行, 奇怪奇怪! |