Bootloader.c 1.6 KB

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