1 周立功的串口隔离模块部支持115200的波特率,出现UART打印字符出错的问题,改成19200就可以了
2 在执行跳转到应用程序的时候,没有修改向量中断表,出现APP不能运行的情况。
3 调试时发现运行部分程序可以运行,文件大了就不能运行。找了好久,发现在进APP函数时没有清除相应中断,导致程序跑飞和程序大小没有关系。但是发现有些芯片的FLASH的块大小不一样,有4K,有32K不知道读写操作有什么不同,不过我的代码没有写到32k的块去。
4 keil代码IROM1分配写入的地址0x1000,0x70000,修改LPC177x8x.sct
LR_IROM1 0x00001000 0x00070000 { ; load region size_region
ER_IROM1 0x00001000 0x00070000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
5 修改APP应用代码中断向量地址
#ifdef __RAM_MODE__
SCB->VTOR = 0x10000000 & 0x3FFFFF80;
#else
SCB->VTOR = 0x00001000 & 0x3FFFFF80;
#endif
6 把IAP和APP合成一个文件,工JLINK下载
先把KEIL编译的.hex文件装成bin文件,然后先打开IAP.bin,将代码大小补齐0xff到0x1000,然后在讲APP.bin的代码复制到IAP.bin自后。最后将合成后的文件下载到开发板上运行,能够启动程序就算成功
7、iap 和app 的.hex 文件结合
用 UltraEdit 打开 IAP 的.hex文件 和APP 的.hex 文件
把IAP的.hex 最后一句结束语句去掉(即:删除:00000001FF)
把APP的.hex 全部内容拷贝复制到 刚才删掉结束语句的 IAP的.hex后面(如图)
把两个.hex合成的.hex文件重新命名,烧写到0x0000 0000 开始位置的地址即可;