iap问题总结

来源:互联网 发布:淘宝搞笑收货人 编辑:程序博客网 时间:2024/05/29 11:33

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 开始位置的地址即可;


0 0
原创粉丝点击