/* * MBIC_BootLoader.c * * Created on: 2020. 5. 4. * Author: parkyj */ #include "main.h" #include "MBIC_BootLoader.h" #include "CRC.h" void MBIC_FirmwareUpdateStart(uint8_t* data); extern uint32_t crc32(uint32_t crc, const void *buf, size_t size); void MBIC_FirmwareUpdateStart(uint8_t* data){ uint8_t ret = 0,crccheck = 0; crccheck = crc32(&data[bluecell_type],data[bluecell_length],data[data[bluecell_length] + 1]); if(crccheck == NO_ERROR){ AckData_Buf[bluecell_type] = FirmwareUpdataAck; if(data[bluecell_type] == 0xDD || data[bluecell_type] == 0xEE)//Start Firmware byte ret = Flash_write(&data[0]); if(ret == 1) AckData_Buf[bluecell_type] = FirmwareUpdataNak; }else{ for(uint8_t i = 0; i < data[bluecell_length] + 3; i++) printf("%02x ",data[i]); printf("Check Sum error \n"); AckData_Buf[bluecell_type] = FirmwareUpdataNak; } AckData_Buf[bluecell_crc] = STH30_CreateCrc(&AckData_Buf[bluecell_type],AckData_Buf[bluecell_length]); if(data[bluecell_type] != 0xEE && data[bluecell_type] != Bluecell_Reset){ Uart1_Data_Send(&AckData_Buf[bluecell_stx],AckData_Buf[bluecell_length] + 3); } if(data[bluecell_type] == 0xEE) printf("update Complete \n"); }