MBIC_BootLoader.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. /*
  2. * MBIC_BootLoader.c
  3. *
  4. * Created on: 2020. 5. 4.
  5. * Author: parkyj
  6. */
  7. #include "main.h"
  8. #include "MBIC_BootLoader.h"
  9. #include "CRC.h"
  10. void MBIC_FirmwareUpdateStart(uint8_t* data);
  11. extern uint32_t crc32(uint32_t crc, const void *buf, size_t size);
  12. void MBIC_FirmwareUpdateStart(uint8_t* data){
  13. uint8_t ret = 0,crccheck = 0;
  14. crccheck = crc32(&data[bluecell_type],data[bluecell_length],data[data[bluecell_length] + 1]);
  15. if(crccheck == NO_ERROR){
  16. AckData_Buf[bluecell_type] = FirmwareUpdataAck;
  17. if(data[bluecell_type] == 0xDD || data[bluecell_type] == 0xEE)//Start Firmware byte
  18. ret = Flash_write(&data[0]);
  19. if(ret == 1)
  20. AckData_Buf[bluecell_type] = FirmwareUpdataNak;
  21. }else{
  22. for(uint8_t i = 0; i < data[bluecell_length] + 3; i++)
  23. printf("%02x ",data[i]);
  24. printf("Check Sum error \n");
  25. AckData_Buf[bluecell_type] = FirmwareUpdataNak;
  26. }
  27. AckData_Buf[bluecell_crc] = STH30_CreateCrc(&AckData_Buf[bluecell_type],AckData_Buf[bluecell_length]);
  28. if(data[bluecell_type] != 0xEE && data[bluecell_type] != Bluecell_Reset){
  29. Uart1_Data_Send(&AckData_Buf[bluecell_stx],AckData_Buf[bluecell_length] + 3);
  30. }
  31. if(data[bluecell_type] == 0xEE)
  32. printf("update Complete \n");
  33. }