Bootloader.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. * Bootloader.c
  3. *
  4. * Created on: Jul 10, 2019
  5. * Author: parkyj
  6. */
  7. #include "Bootloader.h"
  8. //Blueprotocol_t * UpdateFiledata;
  9. uint16_t updatecnt = 0;
  10. /***
  11. * Header Check Function
  12. * ***/
  13. #define Bluecell_BootStart 0x0b
  14. uint8_t BootStartdata[6] = {0xbe,Bluecell_BootStart,0x03,4,0,0xeb};
  15. void Firmware_BootStart_Signal(){
  16. BootStartdata[bluecell_crc] = STH30_CreateCrc(&BootStartdata[bluecell_type],BootStartdata[bluecell_length]);
  17. Uart1_Data_Send(&BootStartdata[bluecell_stx],BootStartdata[bluecell_length] + 3);
  18. }
  19. uint8_t AckData_Buf[6] = {0xbe,FirmwareUpdataAck,0x03,5,0,0xbe};
  20. void FirmwareUpdateStart(uint8_t* data){
  21. uint8_t ret = 0,crccheck = 0;
  22. crccheck = STH30_CheckCrc(&data[bluecell_type],data[bluecell_length],data[data[bluecell_length] + 1]);
  23. if(crccheck == NO_ERROR){
  24. AckData_Buf[bluecell_type] = FirmwareUpdataAck;
  25. if(data[bluecell_type] == 0xDD || data[bluecell_type] == 0xEE)//Start Firmware byte
  26. ret = Flash_write(&data[0]);
  27. if(ret == 1)
  28. AckData_Buf[bluecell_type] = FirmwareUpdataNak;
  29. }else{
  30. for(uint8_t i = 0; i < data[bluecell_length] + 3; i++)
  31. printf("%02x ",data[i]);
  32. printf("Check Sum error \n");
  33. AckData_Buf[bluecell_type] = FirmwareUpdataNak;
  34. }
  35. AckData_Buf[bluecell_crc] = STH30_CreateCrc(&AckData_Buf[bluecell_type],AckData_Buf[bluecell_length]);
  36. if(data[bluecell_type] != 0xEE && data[bluecell_type] != Bluecell_Reset){
  37. Uart1_Data_Send(&AckData_Buf[bluecell_stx],AckData_Buf[bluecell_length] + 3);
  38. }
  39. if(data[bluecell_type] == 0xEE)
  40. printf("update Complete \n");
  41. }