CMD0x11_Request_UpdateFinished.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "CommandsDefine.h"
  2. #include "ProjectConfig.h"
  3. #include "iap.h"
  4. /*
  5. 告诉Boot,传送的程序已经完成。
  6. 正确响应:设置APP OK标识,然后跳转到App
  7. 接收包格式:
  8. 包起始标识
  9. +CMD0x07_Request_UpdateFinished
  10. +[2字节的数据长度,=0]
  11. +包尾标识
  12. 说明:在更新 程序中,应该在一定时间内获取程序运行在何处,成功的标识是运行在App
  13. */
  14. void CMD0x11_Request_UpdateFinished_process(u8 *pData,u16 dataLen,u8 bIsContentBitInverted_Recv,u8 bIsContentBitInverted_SendBack)
  15. {
  16. #ifdef RUNNING_WHERE_AT_BOOT
  17. UpdateWhat = RUNNING_AT_APP;//app
  18. Updating = 0;
  19. struct BootWriteFlashInfoStruct bootWriteFlashInfo;
  20. iap_ReadBootWriteInfo(&bootWriteFlashInfo);
  21. bootWriteFlashInfo.BootVersion.Version_SubNo=0xff;
  22. iap_UpdateBootWriteInfo(&bootWriteFlashInfo);
  23. //跳转APP1
  24. if(((*(vu32*)(FLASH_ADDR_APP+4))&0xFF000000)==0x08000000)// 0X08XXXXXX.
  25. //if(((*(vu32*)(FLASH_APP1_ADDR))&0x2FFE0000)==0x200A0000)//判断
  26. {
  27. iap_set_appstate(); //设置固件有效标志
  28. //iap_rst_run_count();//重置计数
  29. iap_load_app(FLASH_ADDR_APP);//执行FLASH APP代码
  30. }
  31. else
  32. {
  33. Updating =Updating;//test point
  34. }
  35. #else
  36. Command_SendbackErrorMessage(Error0x04_AlreadyAtApp,1);
  37. #endif
  38. }