Bootloader CRC fonctionnel
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
#include "SPI_Flash.h"
|
||||
#include "FlashMapping.h"
|
||||
#include "NetworkProtocol.h"
|
||||
#include "Syslog.h"
|
||||
#include "checksum.h"
|
||||
|
||||
|
||||
#define BOOTLOADER_FLASH_ERASE_POLL_TIMEOUT 25//100 //ms
|
||||
@@ -17,7 +19,7 @@
|
||||
#define BOOTLOADER_FLASH_WRITE_MAX_POLL_COUNT 40//10 //One sector should not take more than 1s to erase...
|
||||
|
||||
|
||||
char BootloaderBuffer[300];
|
||||
unsigned char BootloaderBuffer[300];
|
||||
int BootloaderInterfaceState;
|
||||
|
||||
|
||||
@@ -42,12 +44,14 @@ int BootloaderInterfaceInit()
|
||||
{
|
||||
BootloaderProtocolInit();
|
||||
BootloaderResetStateMachine();
|
||||
BootloaderCheckFlashBootloaderData();
|
||||
update_crc_32(0,0); //Force to populate the CRC32 table...
|
||||
return 1;
|
||||
}
|
||||
|
||||
void BootloaderInterfaceTick()
|
||||
{
|
||||
BootloaderIterfaceStateMachine(BOOTLOADER_TICK_EVENT,0);
|
||||
BootloaderInterfaceStateMachine(BOOTLOADER_TICK_EVENT,0);
|
||||
}
|
||||
|
||||
void BootloaderExecuteCmd(char Cmd)
|
||||
@@ -65,44 +69,49 @@ void BootloaderExecuteCmd(char Cmd)
|
||||
case BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST:
|
||||
{
|
||||
printf("BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST\n");
|
||||
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_ERASE_FLASH_CMD);
|
||||
BootloaderInterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_ERASE_FLASH_CMD);
|
||||
break;
|
||||
}
|
||||
case BOOTLOADER_INIT_UPLOAD_REQUEST:
|
||||
{
|
||||
printf("BOOTLOADER_INIT_UPLOAD_REQUEST\n");
|
||||
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_INIT_UPLOAD_CMD);
|
||||
BootloaderInterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_INIT_UPLOAD_CMD);
|
||||
break;
|
||||
}
|
||||
case BOOTLOADER_GET_STATE_REQUEST:
|
||||
{
|
||||
printf("BOOTLOADER_GET_STATE_REQUEST\n");
|
||||
*DataBufPtr = (char)BootloaderInterfaceState;
|
||||
BootloaderProtocolSendFrame(BOOTLOADER_GET_STATE_RESPONSE,1);
|
||||
BootloaderProtocolSendBootloaderState((char)BootloaderInterfaceState);
|
||||
break;
|
||||
}
|
||||
case BOOTLOADER_SEND_DATA_CHUNK_REQUEST:
|
||||
{
|
||||
printf("BOOTLOADER_SEND_DATA_CHUNK_REQUEST\n");
|
||||
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_NEW_DATA_CHUNK_CMD);
|
||||
// printf("BOOTLOADER_SEND_DATA_CHUNK_REQUEST\n");
|
||||
BootloaderInterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_NEW_DATA_CHUNK_CMD);
|
||||
break;
|
||||
}
|
||||
case BOOTLOADER_UPLOAD_FINISHED_REQUEST:
|
||||
{
|
||||
printf("BOOTLOADER_UPLOAD_FINISHED_REQUEST\n");
|
||||
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_UPLOAD_FINISHED_CMD);
|
||||
BootloaderInterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_UPLOAD_FINISHED_CMD);
|
||||
break;
|
||||
}
|
||||
case BOOTLOADER_EXECUTE_UPGRAGE_REQUEST:
|
||||
{
|
||||
printf("BOOTLOADER_EXECUTE_UPGRAGE_REQUEST\n");
|
||||
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_EXECUTE_UPGRAGE_CMD);
|
||||
BootloaderInterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_EXECUTE_UPGRAGE_CMD);
|
||||
break;
|
||||
}
|
||||
case BOOTLOADER_ABORT_OPERATION_REQUEST:
|
||||
{
|
||||
printf("BOOTLOADER_ABORT_OPERATION_REQUEST\n");
|
||||
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_ABORT_CMD);
|
||||
BootloaderInterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_ABORT_CMD);
|
||||
}
|
||||
case BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_REQUEST:
|
||||
{
|
||||
printf("BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_REQUEST\n");
|
||||
BootloaderInterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_CHECK_FLASH_CMD);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
@@ -114,10 +123,10 @@ void BootloaderExecuteCmd(char Cmd)
|
||||
void BootloaderCRCError(char Cmd, int RxCRC, int ExpectedCRC)
|
||||
{
|
||||
printf("BootloaderProtocol detected a CRC error. Cmd: %d, RxCRC:0x%x, Expected:[0x%x]\n",Cmd,RxCRC,ExpectedCRC);
|
||||
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_INVALID_CRC_CMD);
|
||||
BootloaderInterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_INVALID_CRC_CMD);
|
||||
}
|
||||
|
||||
void BootloaderIterfaceStateMachine(int Event, int Param)
|
||||
void BootloaderInterfaceStateMachine(int Event, int Param)
|
||||
{
|
||||
|
||||
switch(BootloaderInterfaceState)
|
||||
@@ -178,6 +187,10 @@ void BootloaderIterfaceStateMachine(int Event, int Param)
|
||||
else
|
||||
{
|
||||
BootloaderProtocolSendInitUploadResponse(BOOTLOADEDR_INIT_TRANSFER_OK);
|
||||
|
||||
//TODO: Shall we prepare something before??
|
||||
BootloaderProtocolSendACK(BOOTLOADER_READY_FOR_DATA_RESPONSE);
|
||||
|
||||
BootloaderInterfaceState = BOOTLOADER_RECEIVING_FIRMWARE_STATE;
|
||||
printf("Bootloader Interface going into Firmware RX state\n");
|
||||
}
|
||||
@@ -204,6 +217,17 @@ void BootloaderIterfaceStateMachine(int Event, int Param)
|
||||
printf("Bootloader upgrade request denied: Firmware not uploaded\n");
|
||||
}
|
||||
}
|
||||
case BOOTLOADER_SM_CHECK_FLASH_CMD:
|
||||
{
|
||||
if(BootloaderCheckFlashBootloaderData() == RET_OK)
|
||||
{
|
||||
BootloaderProtocolSendFlashCheckResult(FLASH_CHECK_SUCCESS);
|
||||
}
|
||||
else
|
||||
{
|
||||
BootloaderProtocolSendFlashCheckResult(FLASH_CHECK_FAILED);
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
{
|
||||
@@ -289,7 +313,7 @@ void BootloaderIterfaceStateMachine(int Event, int Param)
|
||||
{
|
||||
case BOOTLOADER_TICK_EVENT:
|
||||
{
|
||||
int res = BootloaderFlashWriteStateMachine(BOOTLOADER_FLASH_WRITE_SM_NEW_BUFFER_EVENT);
|
||||
int res = BootloaderFlashWriteStateMachine(BOOTLOADER_FLASH_WRITE_SM_TICK_EVENT);
|
||||
switch(res)
|
||||
{
|
||||
case BOOTLOADER_FLASH_WRITING_RES:
|
||||
@@ -329,25 +353,28 @@ void BootloaderIterfaceStateMachine(int Event, int Param)
|
||||
//TODO: Write data to flash
|
||||
|
||||
//Extract index from buffer
|
||||
int DataChunkIndex = 0;
|
||||
int DataChunkSize = 0;
|
||||
unsigned int DataChunkIndex = 0;
|
||||
unsigned int DataChunkSize = 0;
|
||||
DataChunkSize = 0;
|
||||
|
||||
DataChunkIndex = BootloaderBuffer[0];
|
||||
DataChunkIndex <<= 8;
|
||||
DataChunkIndex += BootloaderBuffer[1];
|
||||
DataChunkIndex <<= 8;
|
||||
DataChunkIndex += BootloaderBuffer[2];
|
||||
DataChunkIndex <<= 8;
|
||||
DataChunkIndex += BootloaderBuffer[3];
|
||||
// DataChunkIndex = BootloaderBuffer[0];
|
||||
// DataChunkIndex <<= 8;
|
||||
// DataChunkIndex += BootloaderBuffer[1];
|
||||
// DataChunkIndex <<= 8;
|
||||
// DataChunkIndex += BootloaderBuffer[2];
|
||||
// DataChunkIndex <<= 8;
|
||||
// DataChunkIndex += BootloaderBuffer[3];
|
||||
DataChunkIndex = BootloaderBytesToInt(&BootloaderBuffer[0]);
|
||||
|
||||
// DataChunkSize = BootloaderBuffer[4];
|
||||
// DataChunkSize <<= 8;
|
||||
// DataChunkSize += BootloaderBuffer[5];
|
||||
// DataChunkSize <<= 8;
|
||||
// DataChunkSize += BootloaderBuffer[6];
|
||||
// DataChunkSize <<= 8;
|
||||
// DataChunkSize += BootloaderBuffer[7];
|
||||
DataChunkSize = BootloaderBytesToInt(&BootloaderBuffer[4]);
|
||||
|
||||
DataChunkSize = BootloaderBuffer[4];
|
||||
DataChunkSize <<= 8;
|
||||
DataChunkSize += BootloaderBuffer[5];
|
||||
DataChunkSize <<= 8;
|
||||
DataChunkSize += BootloaderBuffer[6];
|
||||
DataChunkSize <<= 8;
|
||||
DataChunkSize += BootloaderBuffer[7];
|
||||
|
||||
BootloaderFlashWriteDataPtr = &BootloaderBuffer[8];
|
||||
|
||||
@@ -367,6 +394,7 @@ void BootloaderIterfaceStateMachine(int Event, int Param)
|
||||
{
|
||||
CurDataChunkSize = DataChunkSize;
|
||||
BootloaderFlashWriteStateMachine(BOOTLOADER_FLASH_WRITE_SM_NEW_BUFFER_EVENT);
|
||||
printf("Bootloader Interface. Rx new data chunk. Writing to flash. Index: %d\n", DataChunkIndex);
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -376,13 +404,29 @@ void BootloaderIterfaceStateMachine(int Event, int Param)
|
||||
//BootloaderProtocol determined the CRC of the chunk was invalid.
|
||||
BootloaderProtocolSendDataChunkResult(BOOTLOADER_CHUNK_TRANSFER_ERROR_RESEND,CurDataChunkIndex);
|
||||
printf("Bootloader Interface invalid chunk CRC. Requesting resend chunk index [%d]\n", CurDataChunkIndex);
|
||||
break;
|
||||
}
|
||||
case BOOTLOADER_SM_UPLOAD_FINISHED_CMD:
|
||||
{
|
||||
printf("Bootloader Interface firmware upload finished. Going into active state.\n");
|
||||
printf("Bootloader Interface firmware upload finished. Check flash integrity.\n");
|
||||
|
||||
if(BootloaderCheckFlashBootloaderData() == RET_OK)
|
||||
{
|
||||
BootloaderInterfaceState = BOOTLOADER_ACTIVE_STATE;
|
||||
//BootloaderProtocolSendACK(BOOTLOADER_UPLOAD_FINISHED_RESPONSE);
|
||||
BootloaderProtocolSendFirmwareUploadResult(BOOTLOADER_UPLOAD_SUCCESS);
|
||||
FirmwareUploaded = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Firmware integrity check failed. Going back to STANDBY state.\n");
|
||||
// BootloaderProtocolSendNACK(BOOTLOADER_UPLOAD_FINISHED_RESPONSE);
|
||||
BootloaderProtocolSendFirmwareUploadResult(BOOTLOADER_UPLOAD_FAILED_FLASH_VERIFICATION_ERROR);
|
||||
BootloaderResetStateMachine();
|
||||
FirmwareUploaded = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BOOTLOADER_SM_ABORT_CMD:
|
||||
{
|
||||
//TODO invalidate data in Flash
|
||||
@@ -436,6 +480,36 @@ void BootloaderIterfaceStateMachine(int Event, int Param)
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case BOOTLOADER_PRINTING_FIRMWARE_STATE:
|
||||
{
|
||||
switch(Event)
|
||||
{
|
||||
case BOOTLOADER_TICK_EVENT:
|
||||
{
|
||||
break;
|
||||
}
|
||||
case BOOTLOADER_NEW_CMD_EVENT:
|
||||
{
|
||||
switch(Param)
|
||||
{
|
||||
case BOOTLOADER_SM_ABORT_CMD:
|
||||
{
|
||||
//TODO invalidate data in Flash
|
||||
printf("Aborting upload, going into STANDBY mode\n");
|
||||
BootloaderResetStateMachine();
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BOOTLOADER_TIMEOUT_EVENT:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -455,17 +529,20 @@ void BootloaderResetStateMachine()
|
||||
|
||||
ResetBootloaderFlashEraseStateMachine();
|
||||
ResetBootloaderFlashWriteStateMachine();
|
||||
|
||||
CloseBootloaderServer();
|
||||
}
|
||||
|
||||
void BootloaderActivateBootloader()
|
||||
{
|
||||
OpenBootloaderServer();
|
||||
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_ACTIVATE_CMD);
|
||||
BootloaderInterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_ACTIVATE_CMD);
|
||||
}
|
||||
void BootloaderDeactivateBootloader()
|
||||
{
|
||||
CloseBootloaderServer();
|
||||
BootloaderIterfaceStateMachine(BOOTLOADER_SM_ABORT_CMD,0);
|
||||
BootloaderResetStateMachine();
|
||||
// CloseBootloaderServer();
|
||||
// BootloaderIterfaceStateMachine(BOOTLOADER_SM_ABORT_CMD,0);
|
||||
}
|
||||
|
||||
int BootloaderFlashEraseStateMachine(int event)
|
||||
@@ -563,11 +640,19 @@ int BootloaderFlashWriteStateMachine(int event)
|
||||
{
|
||||
case BOOTLOADER_FLASH_WRITE_STANDBY_STATE:
|
||||
{
|
||||
if(event == BOOTLOADER_FLASH_WRITE_SM_NEW_BUFFER_EVENT)
|
||||
if(event == BOOTLOADER_FLASH_WRITE_SM_TICK_EVENT)
|
||||
{
|
||||
//TODO: timeout
|
||||
// return BOOTLOADER_FLASH_WRITE_ERROR_RES;
|
||||
}
|
||||
else if(event == BOOTLOADER_FLASH_WRITE_SM_NEW_BUFFER_EVENT)
|
||||
{
|
||||
// printf("Starting writing data to Flash\nFlash Address : Data\n");
|
||||
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_BUFFER_STATE;
|
||||
BootloaderFirmwareChunkWriteCount = 0;
|
||||
return BOOTLOADER_FLASH_WRITING_RES;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BOOTLOADER_FLASH_WRITE_BUFFER_STATE:
|
||||
{
|
||||
@@ -577,15 +662,18 @@ int BootloaderFlashWriteStateMachine(int event)
|
||||
return BOOTLOADER_FLASH_WRITE_ERROR_RES;
|
||||
}
|
||||
|
||||
while(BootloaderFirmwareChunkWriteCount <= CurDataChunkSize)
|
||||
while(BootloaderFirmwareChunkWriteCount < CurDataChunkSize)
|
||||
{
|
||||
if(SPIFlashWriteByte(BootloaderCurFlashWriteAddress,*BootloaderFlashWriteDataPtr++,0) == RET_ERROR)
|
||||
|
||||
//printf("%d : 0x%x\n",(BootloaderCurFlashWriteAddress-FLASH_BTLDR_FIRMWARE_START_ADDRESS),(unsigned int)*BootloaderFlashWriteDataPtr);
|
||||
if(SPIFlashWriteByte(BootloaderCurFlashWriteAddress++,*BootloaderFlashWriteDataPtr++,1) == RET_ERROR)
|
||||
{
|
||||
printf("Bootloader flash error. Aborting and going back to STANDBY\n");
|
||||
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_ERROR_STATE;
|
||||
return BOOTLOADER_FLASH_WRITE_ERROR_RES;
|
||||
}
|
||||
|
||||
|
||||
int cnt = 0;
|
||||
while(1)
|
||||
{
|
||||
@@ -604,14 +692,31 @@ int BootloaderFlashWriteStateMachine(int event)
|
||||
BootloaderFirmwareChunkWriteCount++;
|
||||
}
|
||||
|
||||
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_STANDBY_STATE;
|
||||
return BOOTLOADER_FLASH_WRITE_FINISHED_RES;
|
||||
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_WAIT_FOR_BYTE_DONE;
|
||||
return BOOTLOADER_FLASH_WRITING_RES;
|
||||
|
||||
// BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_STANDBY_STATE;
|
||||
// return BOOTLOADER_FLASH_WRITE_FINISHED_RES;
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
case BOOTLOADER_FLASH_WRITE_WAIT_FOR_BYTE_DONE:
|
||||
{
|
||||
if(event == BOOTLOADER_FLASH_WRITE_SM_TICK_EVENT)
|
||||
{
|
||||
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_STANDBY_STATE;
|
||||
return BOOTLOADER_FLASH_WRITE_FINISHED_RES;
|
||||
// if(SyslogIsBufferEmpty() == RET_OK)
|
||||
// {
|
||||
// BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_STANDBY_STATE;
|
||||
// return BOOTLOADER_FLASH_WRITE_FINISHED_RES;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// return BOOTLOADER_FLASH_WRITING_RES;
|
||||
// }
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BOOTLOADER_FLASH_WRITE_CHECKBACK_STATE:
|
||||
@@ -632,12 +737,155 @@ int BootloaderFlashWriteStateMachine(int event)
|
||||
}
|
||||
}
|
||||
|
||||
int BootloaderPrintFlashData()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
int BootloaderCheckFlashBootloaderData()
|
||||
{
|
||||
|
||||
unsigned char FlashData[700];
|
||||
unsigned int FlashAddress = FLASH_BTLDR_FIRMWARE_START_ADDRESS;
|
||||
unsigned int FileHeaderCode, FirmwareFlags, NbRecords, FirmwareSize, VersionCode, CRC32;
|
||||
unsigned int ComputedCRC32 = CRC_START_32;
|
||||
|
||||
//SPIFlashReadBuffer(FlashData,700,FlashAddress);
|
||||
|
||||
|
||||
printf("Checking Flash bootloader data integrity... \n");
|
||||
SPIFlashReadBuffer(FlashData,FLASH_BTLDR_HEADER_SIZE,FlashAddress);
|
||||
|
||||
FileHeaderCode = BootloaderBytesToInt(FlashData);
|
||||
FirmwareFlags = BootloaderBytesToInt(&FlashData[4]);
|
||||
NbRecords = BootloaderBytesToInt(&FlashData[8]);
|
||||
FirmwareSize = BootloaderBytesToInt(&FlashData[12]);
|
||||
VersionCode = BootloaderBytesToInt(&FlashData[16]);
|
||||
CRC32 = BootloaderBytesToInt(&FlashData[20]);
|
||||
|
||||
|
||||
printf("File Header: Code:[0x%x] - Flags:[0x%x] - Nb Records:[%d] - Firmware Size:[%d] - Version:[0x%x] - CRC32:[0x%x]\n",FileHeaderCode,FirmwareFlags,NbRecords,FirmwareSize,VersionCode,CRC32);
|
||||
|
||||
|
||||
if(FileHeaderCode != BOOTLOADER_FILE_HEADER_CODE)
|
||||
{
|
||||
printf("Invalid file header code, aborting\n");
|
||||
return RET_ERROR;
|
||||
}
|
||||
if(NbRecords == 0)
|
||||
{
|
||||
printf("No records in file (NbRecords = 0), aborting\n");
|
||||
return RET_ERROR;
|
||||
}
|
||||
|
||||
FlashAddress += FLASH_BTLDR_HEADER_SIZE; //point to the start of bootloader data
|
||||
|
||||
int CurRecord = 0;
|
||||
bool Done = false;
|
||||
int RecHeader, RecSize, RecStartAddress;
|
||||
|
||||
//Check the header of each sector.
|
||||
while(Done == false)
|
||||
{
|
||||
SPIFlashReadBuffer(FlashData,12,FlashAddress);
|
||||
RecHeader = BootloaderBytesToInt(FlashData);
|
||||
RecSize = BootloaderBytesToInt(&FlashData[4]);
|
||||
RecStartAddress = BootloaderBytesToInt(&FlashData[8]);
|
||||
FlashAddress += 12;
|
||||
|
||||
|
||||
if(RecHeader != BOOTLOADER_RECORD_HEADER_CODE)
|
||||
{
|
||||
printf("Error in record #%d. Invalid header code : [0x%x]\n",CurRecord,RecHeader);
|
||||
return RET_ERROR;
|
||||
}
|
||||
if(RecSize == 0)
|
||||
{
|
||||
printf("Error in record #%d. Invalid record size (RecordSize = 0) \n");
|
||||
return RET_ERROR;
|
||||
}
|
||||
|
||||
// printf("Record #%d OK! Header:[0x%x] - Size:[%d] - Start Address:[0x%x]\n",CurRecord,RecHeader,RecSize,RecStartAddress);
|
||||
// while(SyslogIsBufferEmpty() == RET_ERROR)
|
||||
// {
|
||||
// SyslogTick();
|
||||
// TickWiFi();
|
||||
// }
|
||||
|
||||
CurRecord++;
|
||||
if(CurRecord == NbRecords)
|
||||
{
|
||||
// Done = true;
|
||||
printf("All records checked OK! Computing CRC...\n");
|
||||
Done = true;
|
||||
break;
|
||||
//return RET_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
FlashAddress += RecSize;
|
||||
}
|
||||
}
|
||||
|
||||
//Now, compute whole data CRC
|
||||
FlashAddress = FLASH_BTLDR_FIRMWARE_START_ADDRESS + FLASH_BTLDR_HEADER_SIZE;
|
||||
char Byte;
|
||||
int i;
|
||||
for(i = 0; i < FirmwareSize; i++)
|
||||
{
|
||||
SPIFlashReadBuffer(&Byte,1,FlashAddress++);
|
||||
ComputedCRC32 = update_crc_32(ComputedCRC32,Byte);
|
||||
}
|
||||
ComputedCRC32 ^= 0xffffffffL;
|
||||
|
||||
if(ComputedCRC32 == CRC32)
|
||||
{
|
||||
printf("CRC32 matches. Computed:[0x%x] - Expected:[0x%x]\n",ComputedCRC32,CRC32);
|
||||
printf("Flash check success. Firmware is valid\n");
|
||||
return RET_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("CRC32 mismatch. Computed:[0x%x] - Expected:[0x%x]\n",ComputedCRC32,CRC32);
|
||||
printf("Flash check failed.\n");
|
||||
return RET_ERROR;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return RET_OK;
|
||||
|
||||
}
|
||||
|
||||
int ResetBootloaderFlashWriteStateMachine()
|
||||
{
|
||||
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_BUFFER_STATE;
|
||||
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_STANDBY_STATE;
|
||||
BootloaderCurFlashWriteAddress = FLASH_BTLDR_FIRMWARE_START_ADDRESS;
|
||||
BootloaderFlashWritePollCount = 0;
|
||||
BootloaderFirmwareChunkWriteCount = 0;
|
||||
BootloaderFlashWriteDataPtr = 0;
|
||||
BootloaderFirmwareChunkWriteCount = 0;
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
int BootloaderBytesToInt(unsigned char *Bytes)
|
||||
{
|
||||
if(Bytes == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Output = Bytes[0];
|
||||
Output <<= 8;
|
||||
Output += Bytes[1];
|
||||
Output <<= 8;
|
||||
Output += Bytes[2];
|
||||
Output <<= 8;
|
||||
Output += Bytes[3];
|
||||
|
||||
return Output;
|
||||
}
|
||||
@@ -9,6 +9,10 @@
|
||||
#define BOOTLOADERINTERFACE_H
|
||||
#include "define.h"
|
||||
|
||||
|
||||
#define BOOTLOADER_FILE_HEADER_CODE (int)0xBAADBEEF
|
||||
#define BOOTLOADER_RECORD_HEADER_CODE (int)0xDEADBEEF
|
||||
|
||||
enum eBootloaderStates
|
||||
{
|
||||
BOOTLOADER_STANDBY_STATE,
|
||||
@@ -16,6 +20,7 @@ enum eBootloaderStates
|
||||
BOOTLOADER_ERASE_FLASH_STATE,
|
||||
BOOTLOADER_RECEIVING_FIRMWARE_STATE,
|
||||
BOOTLOADER_SENDING_FIRMWARE_COPY_STATE,
|
||||
BOOTLOADER_PRINTING_FIRMWARE_STATE,
|
||||
|
||||
BOOTLOADER_MAX_STATE
|
||||
};
|
||||
@@ -99,20 +104,20 @@ enum eBootloaderStateMachineCmds
|
||||
BOOTLOADER_SM_NEW_DATA_CHUNK_CMD,
|
||||
BOOTLOADER_SM_UPLOAD_FINISHED_CMD,
|
||||
BOOTLOADER_SM_EXECUTE_UPGRAGE_CMD,
|
||||
BOOTLOADER_SM_INVALID_CRC_CMD
|
||||
BOOTLOADER_SM_INVALID_CRC_CMD,
|
||||
BOOTLOADER_SM_CHECK_FLASH_CMD
|
||||
};
|
||||
|
||||
|
||||
extern char BootloaderBuffer[300];
|
||||
extern unsigned char BootloaderBuffer[300];
|
||||
|
||||
int BootloaderInterfaceInit();
|
||||
void BootloaderExecuteCmd(char Cmd);
|
||||
void BootloaderCRCError(char Cmd, int RxCRC, int ExpectedCRC);
|
||||
|
||||
void BootloaderInterfaceStateMachine();
|
||||
|
||||
void BootloaderInterfaceTick();
|
||||
void BootloaderIterfaceStateMachine(int Event, int Param);
|
||||
void BootloaderInterfaceStateMachine(int Event, int Param);
|
||||
void BootloaderResetStateMachine();
|
||||
void BootloaderActivateBootloader();
|
||||
void BootloaderDeactivateBootloader();
|
||||
@@ -123,6 +128,12 @@ int ResetBootloaderFlashEraseStateMachine();
|
||||
int BootloaderFlashWriteStateMachine(int event);
|
||||
int ResetBootloaderFlashWriteStateMachine();
|
||||
|
||||
int BootloaderCheckFlashBootloaderData();
|
||||
int BootloaderPrintFlashData();
|
||||
|
||||
int BootloaderBytesToInt(unsigned char *Bytes);
|
||||
|
||||
|
||||
|
||||
|
||||
#endif /* BOOTLOADERINTERFACE_H */
|
||||
|
||||
@@ -148,7 +148,7 @@ void BootloaderProtocolStateMachine(unsigned char Data)
|
||||
BootloaderDataSize <<= 8;
|
||||
BootloaderDataSize += Data;
|
||||
|
||||
if(BootloaderDataSize > MAX_BOOTLOADER_PAYLOAD_SIZE)
|
||||
if(BootloaderDataSize > MAX_BOOTLOADER_PAYLOAD_SIZE+8) //+8 bytes for the size and index data
|
||||
{
|
||||
//TODO, send NACK?
|
||||
BootloaderProtocolResetStateMachine();
|
||||
@@ -204,7 +204,6 @@ void BootloaderProtocolStateMachine(unsigned char Data)
|
||||
{
|
||||
BootloaderCRC <<= 8;
|
||||
BootloaderCRC += Data;
|
||||
BootloaderState = RxCRC3;
|
||||
|
||||
//TODO: Compute and Compare CRC.
|
||||
if(BootloaderCRC != 0xBAADCAFE)
|
||||
@@ -351,3 +350,30 @@ void BootloaderProtocolSendDataChunkResult(char ErrorCode, int ChunkValue)
|
||||
|
||||
BootloaderProtocolSendFrame(BOOTLOADER_SEND_DATA_CHUNK_RESPONSE,5);
|
||||
}
|
||||
|
||||
void BootloaderProtocolSendBootloaderState(char State)
|
||||
{
|
||||
char* DataPtr = BootloaderProtocolGetDataBufferPtr();
|
||||
|
||||
*DataPtr++ = State;
|
||||
|
||||
BootloaderProtocolSendFrame(BOOTLOADER_GET_STATE_RESPONSE,1);
|
||||
}
|
||||
|
||||
void BootloaderProtocolSendFirmwareUploadResult(char Result)
|
||||
{
|
||||
char* DataPtr = BootloaderProtocolGetDataBufferPtr();
|
||||
|
||||
*DataPtr++ = Result;
|
||||
|
||||
BootloaderProtocolSendFrame(BOOTLOADER_UPLOAD_FINISHED_RESPONSE,1);
|
||||
}
|
||||
|
||||
void BootloaderProtocolSendFlashCheckResult(char Result)
|
||||
{
|
||||
char* DataPtr = BootloaderProtocolGetDataBufferPtr();
|
||||
|
||||
*DataPtr++ = Result;
|
||||
|
||||
BootloaderProtocolSendFrame(BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_RESPONSE,1);
|
||||
}
|
||||
@@ -18,7 +18,7 @@ jean-francois.martel@polymtl.ca
|
||||
|
||||
//Protocol buffer specific definitions
|
||||
|
||||
#define MAX_BOOTLOADER_PAYLOAD_SIZE 256
|
||||
#define MAX_BOOTLOADER_PAYLOAD_SIZE 150
|
||||
#define BOOTLOADER_FRAME_HEADER 0xDEADBEEF
|
||||
#define BOOTLOADER_FRAME_HEADER_1 0xDE
|
||||
#define BOOTLOADER_FRAME_HEADER_2 0xAD
|
||||
@@ -65,6 +65,23 @@ enum eBootloaderProtocolInitTransferError
|
||||
BOOTLOADEDR_INIT_TRANSFER_MAX_ERROR
|
||||
};
|
||||
|
||||
enum eBootloaderUploadResult
|
||||
{
|
||||
BOOTLOADER_UPLOAD_FAILED_UNKNOWN_ERROR = 0,
|
||||
BOOTLOADER_UPLOAD_SUCCESS = 1,
|
||||
BOOTLOADER_UPLOAD_FAILED_FLASH_VERIFICATION_ERROR = 2,
|
||||
|
||||
BOOTLOADER_UPLOAD_MAX_ERROR
|
||||
};
|
||||
|
||||
enum eFlashCheckResult
|
||||
{
|
||||
FLASH_CHECK_FAILED = 0,
|
||||
FLASH_CHECK_SUCCESS = 1,
|
||||
|
||||
FLASH_CHECK_MAX_RESULT
|
||||
};
|
||||
|
||||
//enum DEVICES_IDS
|
||||
//{
|
||||
// ID_MASTER, //Master Controller
|
||||
@@ -98,6 +115,8 @@ void BootloaderProtocolSendACK(unsigned char Cmd);
|
||||
void BootloaderProtocolSendNACK(unsigned char Cmd);
|
||||
void BootloaderProtocolSendInitUploadResponse(char result);
|
||||
void BootloaderProtocolSendDataChunkResult(char ErrorCode, int ChunkValue);
|
||||
|
||||
void BootloaderProtocolSendBootloaderState(char State);
|
||||
void BootloaderProtocolSendFirmwareUploadResult(char Result);
|
||||
void BootloaderProtocolSendFlashCheckResult(char Result);
|
||||
|
||||
#endif
|
||||
@@ -22,5 +22,8 @@
|
||||
#define FLASH_BTLDR_FIRMWARE_LAST_64K_SECTOR_ADD 0x1F0000
|
||||
|
||||
|
||||
#define FLASH_BTLDR_HEADER_SIZE 24
|
||||
|
||||
|
||||
|
||||
#endif /* HARAKIRIRELAY_H */
|
||||
|
||||
@@ -317,6 +317,12 @@ enum BOOTLOADER_CMDS
|
||||
BOOTLOADER_EXECUTE_UPGRADE_RESPONSE,
|
||||
BOOTLOADER_ABORT_OPERATION_REQUEST,
|
||||
BOOTLOADER_ABORT_OPERATION_RESPONSE,
|
||||
BOOTLOADER_SEND_FLASH_DATA_REQUEST,
|
||||
BOOTLOADER_SEND_FLASH_DATA_RESPONSE,
|
||||
BOOTLOADER_SEND_FLASH_DATA_CHUNK,
|
||||
BOOTLOADER_SEND_FLASH_DATA_CHUNK_RESPONSE,
|
||||
BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_REQUEST,
|
||||
BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_RESPONSE,
|
||||
|
||||
MAX_BOOTLOADER_CMD
|
||||
};
|
||||
|
||||
@@ -11,7 +11,8 @@ int InitSPIFlash()
|
||||
FLASH_SS_PIN = 1;
|
||||
|
||||
mSPIFlashBaudrate = SPICalculateBRG(PERIPHERAL_FREQ, 25000000);
|
||||
mSPIFlashHighSpeedBaudrate = SPICalculateBRG(PERIPHERAL_FREQ, 50000000);
|
||||
// mSPIFlashHighSpeedBaudrate = SPICalculateBRG(PERIPHERAL_FREQ, 50000000);
|
||||
mSPIFlashHighSpeedBaudrate = SPICalculateBRG(PERIPHERAL_FREQ, 35000000);
|
||||
}
|
||||
|
||||
int SPIFlashCheckAndConfigure()
|
||||
@@ -119,7 +120,10 @@ int SPIFlashReadBuffer(unsigned char *Buf, int Size, int StartAddress)
|
||||
int i;
|
||||
for(i = 0; i < Size; i++)
|
||||
{
|
||||
*Buf++ = SPITransaction(0xDE,mSPIFlashHighSpeedBaudrate);
|
||||
unsigned char tmp;
|
||||
tmp =SPITransaction(0xDE,mSPIFlashHighSpeedBaudrate);
|
||||
*Buf++ = tmp;
|
||||
// *Buf++ = SPITransaction(0xDE,mSPIFlashHighSpeedBaudrate);
|
||||
}
|
||||
|
||||
FLASH_SS_PIN = 1;
|
||||
@@ -194,20 +198,38 @@ int SPIFlashWriteSectorWorkingBuffer(int SectorAddress, int Erase)
|
||||
SPIFlashEraseSector(SectorAddress);
|
||||
}
|
||||
|
||||
char *DataPtr = &mFlashSectorBuffer[0];
|
||||
unsigned char *DataPtr = &mFlashSectorBuffer[0];
|
||||
int j;
|
||||
for(j = 0; j < SPI_FLASH_SECTOR_SIZE; j++)
|
||||
{
|
||||
unsigned char curbyte;
|
||||
curbyte = *DataPtr;
|
||||
SPIFlashWriteEnable();
|
||||
|
||||
|
||||
|
||||
char Add1, Add2, Add3;
|
||||
Add1 = (unsigned char)((SectorAddress & 0xFF0000) >> 16);
|
||||
Add2 = ((unsigned char)((SectorAddress & 0x00FF00) >> 8));
|
||||
Add3 = ((unsigned char)(SectorAddress & 0x0000FF));
|
||||
|
||||
int t;
|
||||
t = 0;
|
||||
|
||||
FLASH_SS_PIN = 0;
|
||||
SPITransaction(SPI_FLASH_BYTE_PROGRAM,mSPIFlashHighSpeedBaudrate);
|
||||
SPITransaction(((SectorAddress & 0xFF0000) >> 16),mSPIFlashHighSpeedBaudrate);
|
||||
SPITransaction(((SectorAddress & 0x00FF00) >> 8),mSPIFlashHighSpeedBaudrate);
|
||||
SPITransaction((SectorAddress & 0x0000FF),mSPIFlashHighSpeedBaudrate);
|
||||
SPITransaction(*DataPtr++,mSPIFlashHighSpeedBaudrate);
|
||||
// SPITransaction((unsigned char)((SectorAddress & 0xFF0000) >> 16),mSPIFlashHighSpeedBaudrate);
|
||||
// SPITransaction((unsigned char)((SectorAddress & 0x00FF00) >> 8),mSPIFlashHighSpeedBaudrate);
|
||||
// SPITransaction((unsigned char)(SectorAddress & 0x0000FF),mSPIFlashHighSpeedBaudrate);
|
||||
SPITransaction(Add1,mSPIFlashHighSpeedBaudrate);
|
||||
SPITransaction(Add2,mSPIFlashHighSpeedBaudrate);
|
||||
SPITransaction(Add3,mSPIFlashHighSpeedBaudrate);
|
||||
|
||||
SPITransaction(curbyte,mSPIFlashHighSpeedBaudrate);
|
||||
// SPITransaction(*DataPtr,mSPIFlashHighSpeedBaudrate);
|
||||
FLASH_SS_PIN = 1;
|
||||
|
||||
DataPtr++;
|
||||
SectorAddress++;
|
||||
|
||||
while( SPIFlashCheckBusy() == true);
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
#include "WiFiCtrl.h"
|
||||
#include "timer.h"
|
||||
|
||||
#define SYSLOG_BUFFER_SIZE 1024
|
||||
//#define SYSLOG_BUFFER_SIZE 1024
|
||||
#define SYSLOG_BUFFER_SIZE 500
|
||||
char mSyslogBuffer[SYSLOG_BUFFER_SIZE];
|
||||
int mSyslogBufPtr;
|
||||
|
||||
@@ -15,6 +16,7 @@ int InitSyslog()
|
||||
{
|
||||
mSyslogBufPtr = 0;
|
||||
memset(mSyslogBuffer,0,SYSLOG_BUFFER_SIZE);
|
||||
TimerStart(SYSLOG_TX_TIMER,SYSLOG_TX_TIMEOUT);
|
||||
|
||||
}
|
||||
|
||||
@@ -31,6 +33,18 @@ void SyslogTick()
|
||||
{
|
||||
SendSyslogData(mSyslogBuffer,mSyslogBufPtr);
|
||||
mSyslogBufPtr = 0;
|
||||
// if(mSyslogBufPtr >= 150)
|
||||
// {
|
||||
// SendSyslogData(mSyslogBuffer,150);
|
||||
// mSyslogBufPtr -= 150;
|
||||
//
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// SendSyslogData(mSyslogBuffer,mSyslogBufPtr);
|
||||
// mSyslogBufPtr = 0;
|
||||
// }
|
||||
TimerStart(SYSLOG_TX_TIMER,SYSLOG_TX_TIMEOUT);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -52,7 +66,7 @@ int SyslogNewByte(char byte)
|
||||
mSyslogBufPtr = 0;
|
||||
}
|
||||
|
||||
TimerStart(SYSLOG_TX_TIMER,SYSLOG_TX_TIMEOUT);
|
||||
// TimerStart(SYSLOG_TX_TIMER,SYSLOG_TX_TIMEOUT);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -68,3 +82,11 @@ int SyslogNewString(char *string)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int SyslogIsBufferEmpty()
|
||||
{
|
||||
if(mSyslogBufPtr == 0)
|
||||
return RET_OK;
|
||||
|
||||
return RET_ERROR;
|
||||
|
||||
}
|
||||
@@ -1,13 +1,14 @@
|
||||
#ifndef SYSLOG_H
|
||||
#define SYSLOG_H
|
||||
|
||||
#define SYSLOG_TX_TIMEOUT 100 //ms
|
||||
#define SYSLOG_TX_TIMEOUT 200 //ms
|
||||
|
||||
|
||||
int InitSyslog();
|
||||
void SyslogTick();
|
||||
int SyslogNewByte(char byte);
|
||||
int SyslogNewString(char *string);
|
||||
int SyslogIsBufferEmpty();
|
||||
|
||||
|
||||
#endif
|
||||
@@ -399,10 +399,12 @@ void ParseNewBuffer(void)
|
||||
//start bootloader server
|
||||
// OpenBootloaderServer();
|
||||
BootloaderActivateBootloader();
|
||||
TerminalPrintString("Activating bootloader\n");
|
||||
}
|
||||
else if(strncmp(mDataString1,"stop",strlen("stop")) == 0)
|
||||
{
|
||||
//CloseBootloaderServer();
|
||||
TerminalPrintString("Deactivating bootloader\n");
|
||||
BootloaderDeactivateBootloader();
|
||||
}
|
||||
else if(strncmp(mDataString1,"status",strlen("status")) == 0)
|
||||
|
||||
@@ -217,7 +217,11 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
||||
{
|
||||
//Fwd data to Network...
|
||||
|
||||
recv(BootloaderSocket, BootloaderRxBuf, sizeof(BootloaderRxBuf), 0);
|
||||
if(recv(BootloaderSocket, BootloaderRxBuf, sizeof(BootloaderRxBuf), 0) != 0)
|
||||
{
|
||||
char toto;
|
||||
toto = 1;
|
||||
}
|
||||
BootloaderProtocolProtocolAnalyzeNewData(pstrRecvMsg->pu8Buffer, pstrRecvMsg->s16BufferSize);
|
||||
|
||||
}
|
||||
@@ -527,6 +531,7 @@ void TickWiFi()
|
||||
OpenTerminalServer();
|
||||
//OpenNetworkServer();
|
||||
// OpenBootloaderServer();
|
||||
BootloaderActivateBootloader();
|
||||
#ifdef USE_SYSLOG
|
||||
OpenSyslogServer();
|
||||
#endif
|
||||
@@ -684,9 +689,11 @@ int OpenBootloaderServer()
|
||||
int CloseBootloaderServer()
|
||||
{
|
||||
close(BootloaderServerSocket);
|
||||
BootloaderServerSocket = -1;
|
||||
if(BootloaderSocket != -1)
|
||||
{
|
||||
close(BootloaderSocket);
|
||||
BootloaderSocket = -1;
|
||||
}
|
||||
}
|
||||
void SendBootloaderData(uint8 *data, int size)
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
* Library: libcrc
|
||||
* File: include/checksum.h
|
||||
* Author: Lammert Bies
|
||||
*
|
||||
* This file is licensed under the MIT License as stated below
|
||||
*
|
||||
* Copyright (c) 1999-2016 Lammert Bies
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
* Description
|
||||
* -----------
|
||||
* The headerfile include/checksum.h contains the definitions and prototypes
|
||||
* for routines that can be used to calculate several kinds of checksums.
|
||||
*/
|
||||
|
||||
#ifndef DEF_LIBCRC_CHECKSUM_H
|
||||
#define DEF_LIBCRC_CHECKSUM_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/*
|
||||
* #define CRC_POLY_xxxx
|
||||
*
|
||||
* The constants of the form CRC_POLY_xxxx define the polynomials for some well
|
||||
* known CRC calculations.
|
||||
*/
|
||||
|
||||
#define CRC_POLY_16 0xA001
|
||||
#define CRC_POLY_32 0xEDB88320L
|
||||
#define CRC_POLY_CCITT 0x1021
|
||||
#define CRC_POLY_DNP 0xA6BC
|
||||
#define CRC_POLY_KERMIT 0x8408
|
||||
#define CRC_POLY_SICK 0x8005
|
||||
|
||||
/*
|
||||
* #define CRC_START_xxxx
|
||||
*
|
||||
* The constants of the form CRC_START_xxxx define the values that are used for
|
||||
* initialization of a CRC value for common used calculation methods.
|
||||
*/
|
||||
|
||||
#define CRC_START_8 0x00
|
||||
#define CRC_START_16 0x0000
|
||||
#define CRC_START_MODBUS 0xFFFF
|
||||
#define CRC_START_XMODEM 0x0000
|
||||
#define CRC_START_CCITT_1D0F 0x1D0F
|
||||
#define CRC_START_CCITT_FFFF 0xFFFF
|
||||
#define CRC_START_KERMIT 0x0000
|
||||
#define CRC_START_SICK 0x0000
|
||||
#define CRC_START_DNP 0x0000
|
||||
#define CRC_START_32 0xFFFFFFFFL
|
||||
|
||||
/*
|
||||
* Prototype list of global functions
|
||||
*/
|
||||
|
||||
unsigned char * checksum_NMEA( const unsigned char *input_str, unsigned char *result );
|
||||
uint8_t crc_8( const unsigned char *input_str, size_t num_bytes );
|
||||
uint16_t crc_16( const unsigned char *input_str, size_t num_bytes );
|
||||
uint32_t crc_32( const unsigned char *input_str, size_t num_bytes );
|
||||
uint16_t crc_ccitt_1d0f( const unsigned char *input_str, size_t num_bytes );
|
||||
uint16_t crc_ccitt_ffff( const unsigned char *input_str, size_t num_bytes );
|
||||
uint16_t crc_dnp( const unsigned char *input_str, size_t num_bytes );
|
||||
uint16_t crc_kermit( const unsigned char *input_str, size_t num_bytes );
|
||||
uint16_t crc_modbus( const unsigned char *input_str, size_t num_bytes );
|
||||
uint16_t crc_sick( const unsigned char *input_str, size_t num_bytes );
|
||||
uint16_t crc_xmodem( const unsigned char *input_str, size_t num_bytes );
|
||||
uint8_t update_crc_8( uint8_t crc, unsigned char c );
|
||||
uint16_t update_crc_16( uint16_t crc, unsigned char c );
|
||||
uint32_t update_crc_32( uint32_t crc, unsigned char c );
|
||||
uint16_t update_crc_ccitt( uint16_t crc, unsigned char c );
|
||||
uint16_t update_crc_dnp( uint16_t crc, unsigned char c );
|
||||
uint16_t update_crc_kermit( uint16_t crc, unsigned char c );
|
||||
uint16_t update_crc_sick( uint16_t crc, unsigned char c, unsigned char prev_byte );
|
||||
|
||||
#endif // DEF_LIBCRC_CHECKSUM_H
|
||||
@@ -0,0 +1,131 @@
|
||||
/*
|
||||
* Library: libcrc
|
||||
* File: src/crc32.c
|
||||
* Author: Lammert Bies
|
||||
*
|
||||
* This file is licensed under the MIT License as stated below
|
||||
*
|
||||
* Copyright (c) 1999-2016 Lammert Bies
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
* Description
|
||||
* -----------
|
||||
* The source file src/crc32.c contains the routines which are needed to
|
||||
* calculate a 32 bit CRC value of a sequence of bytes.
|
||||
*/
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include "checksum.h"
|
||||
|
||||
static void init_crc32_tab( void );
|
||||
|
||||
static bool crc_tab32_init = false;
|
||||
static uint32_t crc_tab32[256];
|
||||
|
||||
/*
|
||||
* uint32_t crc_32( const unsigned char *input_str, size_t num_bytes );
|
||||
*
|
||||
* The function crc_32() calculates in one pass the common 32 bit CRC value for
|
||||
* a byte string that is passed to the function together with a parameter
|
||||
* indicating the length.
|
||||
*/
|
||||
|
||||
uint32_t crc_32( const unsigned char *input_str, size_t num_bytes ) {
|
||||
|
||||
uint32_t crc;
|
||||
uint32_t tmp;
|
||||
uint32_t long_c;
|
||||
const unsigned char *ptr;
|
||||
size_t a;
|
||||
|
||||
if ( ! crc_tab32_init ) init_crc32_tab();
|
||||
|
||||
crc = CRC_START_32;
|
||||
ptr = input_str;
|
||||
|
||||
if ( ptr != NULL ) for (a=0; a<num_bytes; a++) {
|
||||
|
||||
long_c = 0x000000FFL & (uint32_t) *ptr;
|
||||
tmp = crc ^ long_c;
|
||||
crc = (crc >> 8) ^ crc_tab32[ tmp & 0xff ];
|
||||
|
||||
ptr++;
|
||||
}
|
||||
|
||||
crc ^= 0xffffffffL;
|
||||
|
||||
return crc & 0xffffffffL;
|
||||
|
||||
} /* crc_32 */
|
||||
|
||||
/*
|
||||
* uint32_t update_crc_32( uint32_t crc, unsigned char c );
|
||||
*
|
||||
* The function update_crc_32() calculates a new CRC-32 value based on the
|
||||
* previous value of the CRC and the next byte of the data to be checked.
|
||||
*/
|
||||
|
||||
uint32_t update_crc_32( uint32_t crc, unsigned char c ) {
|
||||
|
||||
uint32_t tmp;
|
||||
uint32_t long_c;
|
||||
|
||||
long_c = 0x000000ffL & (uint32_t) c;
|
||||
|
||||
if ( ! crc_tab32_init ) init_crc32_tab();
|
||||
|
||||
tmp = crc ^ long_c;
|
||||
crc = (crc >> 8) ^ crc_tab32[ tmp & 0xff ];
|
||||
|
||||
return crc & 0xffffffffL;;
|
||||
|
||||
} /* update_crc_32 */
|
||||
|
||||
/*
|
||||
* static void init_crc32_tab( void );
|
||||
*
|
||||
* For optimal speed, the CRC32 calculation uses a table with pre-calculated
|
||||
* bit patterns which are used in the XOR operations in the program. This table
|
||||
* is generated once, the first time the CRC update routine is called.
|
||||
*/
|
||||
|
||||
static void init_crc32_tab( void ) {
|
||||
|
||||
uint32_t i;
|
||||
uint32_t j;
|
||||
uint32_t crc;
|
||||
|
||||
for (i=0; i<256; i++) {
|
||||
|
||||
crc = i;
|
||||
|
||||
for (j=0; j<8; j++) {
|
||||
|
||||
if ( crc & 0x00000001L ) crc = ( crc >> 1 ) ^ CRC_POLY_32;
|
||||
else crc = crc >> 1;
|
||||
}
|
||||
|
||||
crc_tab32[i] = crc;
|
||||
}
|
||||
|
||||
crc_tab32_init = true;
|
||||
|
||||
} /* init_crc32_tab */
|
||||
@@ -224,6 +224,7 @@ typedef unsigned short uint16_t;
|
||||
typedef signed short int16_t;
|
||||
#endif
|
||||
|
||||
/*
|
||||
#ifndef uint32_t
|
||||
typedef unsigned long uint32_t;
|
||||
#endif
|
||||
@@ -231,6 +232,7 @@ typedef unsigned long uint32_t;
|
||||
#ifndef int32_t
|
||||
typedef signed long int32_t;
|
||||
#endif
|
||||
*/
|
||||
|
||||
#ifndef uint64_t
|
||||
typedef unsigned long long uint64_t;
|
||||
|
||||
@@ -73,6 +73,7 @@
|
||||
/**************************************************************************/
|
||||
#include "ina219.h"
|
||||
#include "I2C.h"
|
||||
#include <stdint.h>
|
||||
|
||||
unsigned char I2CMasterBuffer[I2C_BUFSIZE];
|
||||
unsigned char I2CSlaveBuffer[I2C_BUFSIZE];
|
||||
|
||||
@@ -98,6 +98,11 @@ int main(void)
|
||||
|
||||
InitSPIFlash();
|
||||
|
||||
#ifdef USE_SYSLOG
|
||||
InitSyslog();
|
||||
#endif
|
||||
|
||||
|
||||
printf("ChaletDuino V2 Initialized\n");
|
||||
|
||||
SPIFlashCheckAndConfigure();
|
||||
@@ -106,7 +111,26 @@ int main(void)
|
||||
BootloaderInterfaceInit();
|
||||
|
||||
|
||||
|
||||
// SPIFlashErase64KSector(0x180000,1);
|
||||
//
|
||||
// unsigned char test[100];
|
||||
// int i = 0;
|
||||
//
|
||||
// for(i = 0; i < 100; i++)
|
||||
// {
|
||||
// test[i] = i;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// SPIFlashWriteBuffer(test,100,0x180000);
|
||||
//
|
||||
// for(i = 0; i < 100; i++)
|
||||
// {
|
||||
// test[i] = 0;
|
||||
// }
|
||||
//
|
||||
// SPIFlashReadBuffer(test,100,0x180000);
|
||||
//
|
||||
|
||||
|
||||
#ifndef NO_WIFI
|
||||
@@ -152,6 +176,8 @@ int main(void)
|
||||
mRetCode = 1;
|
||||
|
||||
|
||||
|
||||
|
||||
while(mRetCode == 1)
|
||||
{
|
||||
|
||||
|
||||
Binary file not shown.
+1611
-1554
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
+7033
-6829
File diff suppressed because it is too large
Load Diff
+1504
-1478
File diff suppressed because it is too large
Load Diff
@@ -57,17 +57,17 @@ OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
|
||||
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
|
||||
|
||||
# Source Files Quoted if spaced
|
||||
SOURCEFILES_QUOTED_IF_SPACED=Source/ChaletduinoV2Board.c Source/winc3400/bsp/source/nm_bsp.c Source/winc3400/bus_wrapper/source/nm_bus_wrapper.c Source/winc3400/common/source/nm_common.c Source/winc3400/driver/source/m2m_ate_mode.c Source/winc3400/driver/source/m2m_crypto.c Source/winc3400/driver/source/m2m_hif.c Source/winc3400/driver/source/m2m_ota.c Source/winc3400/driver/source/m2m_periph.c Source/winc3400/driver/source/m2m_ssl.c Source/winc3400/driver/source/m2m_wifi.c Source/winc3400/driver/source/nmasic.c Source/winc3400/driver/source/nmbus.c Source/winc3400/driver/source/nmdrv.c Source/winc3400/driver/source/nmi2c.c Source/winc3400/driver/source/nmspi.c Source/winc3400/driver/source/nmuart.c Source/winc3400/socket/source/socket.c Source/winc3400/spi_flash/source/spi_flash.c Source/winc3400/winc_init.c Source/DigitalIO.c Source/InternalUart.c Source/NetworkProtocol.c Source/Terminal.c Source/Uart.c Source/Util.c Source/exceptions.c Source/interrupts.c Source/main.c Source/system.c Source/template.c Source/timer.c Source/WiFiCtrl.c Source/SPI.c Source/LoraNetworkInterface.c Source/ChaletPowerRelay.c Source/HarakiriRelay.c Source/BatteryMonitor.c Source/ina219.c Source/I2C.c Source/SPI_Flash.c Source/Syslog.c Source/Watchdog.c Source/BootloaderInterface.c Source/TemperatureSensor.c Source/TC77.c Source/BootloaderProtocol.c
|
||||
SOURCEFILES_QUOTED_IF_SPACED=Source/ChaletduinoV2Board.c Source/winc3400/bsp/source/nm_bsp.c Source/winc3400/bus_wrapper/source/nm_bus_wrapper.c Source/winc3400/common/source/nm_common.c Source/winc3400/driver/source/m2m_ate_mode.c Source/winc3400/driver/source/m2m_crypto.c Source/winc3400/driver/source/m2m_hif.c Source/winc3400/driver/source/m2m_ota.c Source/winc3400/driver/source/m2m_periph.c Source/winc3400/driver/source/m2m_ssl.c Source/winc3400/driver/source/m2m_wifi.c Source/winc3400/driver/source/nmasic.c Source/winc3400/driver/source/nmbus.c Source/winc3400/driver/source/nmdrv.c Source/winc3400/driver/source/nmi2c.c Source/winc3400/driver/source/nmspi.c Source/winc3400/driver/source/nmuart.c Source/winc3400/socket/source/socket.c Source/winc3400/spi_flash/source/spi_flash.c Source/winc3400/winc_init.c Source/DigitalIO.c Source/InternalUart.c Source/NetworkProtocol.c Source/Terminal.c Source/Uart.c Source/Util.c Source/exceptions.c Source/interrupts.c Source/main.c Source/system.c Source/template.c Source/timer.c Source/WiFiCtrl.c Source/SPI.c Source/LoraNetworkInterface.c Source/ChaletPowerRelay.c Source/HarakiriRelay.c Source/BatteryMonitor.c Source/ina219.c Source/I2C.c Source/SPI_Flash.c Source/Syslog.c Source/Watchdog.c Source/BootloaderInterface.c Source/TemperatureSensor.c Source/TC77.c Source/BootloaderProtocol.c Source/crc32.c
|
||||
|
||||
# Object Files Quoted if spaced
|
||||
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/Source/ChaletduinoV2Board.o ${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o ${OBJECTDIR}/Source/winc3400/bus_wrapper/source/nm_bus_wrapper.o ${OBJECTDIR}/Source/winc3400/common/source/nm_common.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ate_mode.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_crypto.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_hif.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ota.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_periph.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ssl.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_wifi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmasic.o ${OBJECTDIR}/Source/winc3400/driver/source/nmbus.o ${OBJECTDIR}/Source/winc3400/driver/source/nmdrv.o ${OBJECTDIR}/Source/winc3400/driver/source/nmi2c.o ${OBJECTDIR}/Source/winc3400/driver/source/nmspi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmuart.o ${OBJECTDIR}/Source/winc3400/socket/source/socket.o ${OBJECTDIR}/Source/winc3400/spi_flash/source/spi_flash.o ${OBJECTDIR}/Source/winc3400/winc_init.o ${OBJECTDIR}/Source/DigitalIO.o ${OBJECTDIR}/Source/InternalUart.o ${OBJECTDIR}/Source/NetworkProtocol.o ${OBJECTDIR}/Source/Terminal.o ${OBJECTDIR}/Source/Uart.o ${OBJECTDIR}/Source/Util.o ${OBJECTDIR}/Source/exceptions.o ${OBJECTDIR}/Source/interrupts.o ${OBJECTDIR}/Source/main.o ${OBJECTDIR}/Source/system.o ${OBJECTDIR}/Source/template.o ${OBJECTDIR}/Source/timer.o ${OBJECTDIR}/Source/WiFiCtrl.o ${OBJECTDIR}/Source/SPI.o ${OBJECTDIR}/Source/LoraNetworkInterface.o ${OBJECTDIR}/Source/ChaletPowerRelay.o ${OBJECTDIR}/Source/HarakiriRelay.o ${OBJECTDIR}/Source/BatteryMonitor.o ${OBJECTDIR}/Source/ina219.o ${OBJECTDIR}/Source/I2C.o ${OBJECTDIR}/Source/SPI_Flash.o ${OBJECTDIR}/Source/Syslog.o ${OBJECTDIR}/Source/Watchdog.o ${OBJECTDIR}/Source/BootloaderInterface.o ${OBJECTDIR}/Source/TemperatureSensor.o ${OBJECTDIR}/Source/TC77.o ${OBJECTDIR}/Source/BootloaderProtocol.o
|
||||
POSSIBLE_DEPFILES=${OBJECTDIR}/Source/ChaletduinoV2Board.o.d ${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o.d ${OBJECTDIR}/Source/winc3400/bus_wrapper/source/nm_bus_wrapper.o.d ${OBJECTDIR}/Source/winc3400/common/source/nm_common.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ate_mode.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_crypto.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_hif.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ota.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_periph.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ssl.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_wifi.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmasic.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmbus.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmdrv.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmi2c.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmspi.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmuart.o.d ${OBJECTDIR}/Source/winc3400/socket/source/socket.o.d ${OBJECTDIR}/Source/winc3400/spi_flash/source/spi_flash.o.d ${OBJECTDIR}/Source/winc3400/winc_init.o.d ${OBJECTDIR}/Source/DigitalIO.o.d ${OBJECTDIR}/Source/InternalUart.o.d ${OBJECTDIR}/Source/NetworkProtocol.o.d ${OBJECTDIR}/Source/Terminal.o.d ${OBJECTDIR}/Source/Uart.o.d ${OBJECTDIR}/Source/Util.o.d ${OBJECTDIR}/Source/exceptions.o.d ${OBJECTDIR}/Source/interrupts.o.d ${OBJECTDIR}/Source/main.o.d ${OBJECTDIR}/Source/system.o.d ${OBJECTDIR}/Source/template.o.d ${OBJECTDIR}/Source/timer.o.d ${OBJECTDIR}/Source/WiFiCtrl.o.d ${OBJECTDIR}/Source/SPI.o.d ${OBJECTDIR}/Source/LoraNetworkInterface.o.d ${OBJECTDIR}/Source/ChaletPowerRelay.o.d ${OBJECTDIR}/Source/HarakiriRelay.o.d ${OBJECTDIR}/Source/BatteryMonitor.o.d ${OBJECTDIR}/Source/ina219.o.d ${OBJECTDIR}/Source/I2C.o.d ${OBJECTDIR}/Source/SPI_Flash.o.d ${OBJECTDIR}/Source/Syslog.o.d ${OBJECTDIR}/Source/Watchdog.o.d ${OBJECTDIR}/Source/BootloaderInterface.o.d ${OBJECTDIR}/Source/TemperatureSensor.o.d ${OBJECTDIR}/Source/TC77.o.d ${OBJECTDIR}/Source/BootloaderProtocol.o.d
|
||||
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/Source/ChaletduinoV2Board.o ${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o ${OBJECTDIR}/Source/winc3400/bus_wrapper/source/nm_bus_wrapper.o ${OBJECTDIR}/Source/winc3400/common/source/nm_common.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ate_mode.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_crypto.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_hif.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ota.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_periph.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ssl.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_wifi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmasic.o ${OBJECTDIR}/Source/winc3400/driver/source/nmbus.o ${OBJECTDIR}/Source/winc3400/driver/source/nmdrv.o ${OBJECTDIR}/Source/winc3400/driver/source/nmi2c.o ${OBJECTDIR}/Source/winc3400/driver/source/nmspi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmuart.o ${OBJECTDIR}/Source/winc3400/socket/source/socket.o ${OBJECTDIR}/Source/winc3400/spi_flash/source/spi_flash.o ${OBJECTDIR}/Source/winc3400/winc_init.o ${OBJECTDIR}/Source/DigitalIO.o ${OBJECTDIR}/Source/InternalUart.o ${OBJECTDIR}/Source/NetworkProtocol.o ${OBJECTDIR}/Source/Terminal.o ${OBJECTDIR}/Source/Uart.o ${OBJECTDIR}/Source/Util.o ${OBJECTDIR}/Source/exceptions.o ${OBJECTDIR}/Source/interrupts.o ${OBJECTDIR}/Source/main.o ${OBJECTDIR}/Source/system.o ${OBJECTDIR}/Source/template.o ${OBJECTDIR}/Source/timer.o ${OBJECTDIR}/Source/WiFiCtrl.o ${OBJECTDIR}/Source/SPI.o ${OBJECTDIR}/Source/LoraNetworkInterface.o ${OBJECTDIR}/Source/ChaletPowerRelay.o ${OBJECTDIR}/Source/HarakiriRelay.o ${OBJECTDIR}/Source/BatteryMonitor.o ${OBJECTDIR}/Source/ina219.o ${OBJECTDIR}/Source/I2C.o ${OBJECTDIR}/Source/SPI_Flash.o ${OBJECTDIR}/Source/Syslog.o ${OBJECTDIR}/Source/Watchdog.o ${OBJECTDIR}/Source/BootloaderInterface.o ${OBJECTDIR}/Source/TemperatureSensor.o ${OBJECTDIR}/Source/TC77.o ${OBJECTDIR}/Source/BootloaderProtocol.o ${OBJECTDIR}/Source/crc32.o
|
||||
POSSIBLE_DEPFILES=${OBJECTDIR}/Source/ChaletduinoV2Board.o.d ${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o.d ${OBJECTDIR}/Source/winc3400/bus_wrapper/source/nm_bus_wrapper.o.d ${OBJECTDIR}/Source/winc3400/common/source/nm_common.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ate_mode.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_crypto.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_hif.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ota.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_periph.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ssl.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_wifi.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmasic.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmbus.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmdrv.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmi2c.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmspi.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmuart.o.d ${OBJECTDIR}/Source/winc3400/socket/source/socket.o.d ${OBJECTDIR}/Source/winc3400/spi_flash/source/spi_flash.o.d ${OBJECTDIR}/Source/winc3400/winc_init.o.d ${OBJECTDIR}/Source/DigitalIO.o.d ${OBJECTDIR}/Source/InternalUart.o.d ${OBJECTDIR}/Source/NetworkProtocol.o.d ${OBJECTDIR}/Source/Terminal.o.d ${OBJECTDIR}/Source/Uart.o.d ${OBJECTDIR}/Source/Util.o.d ${OBJECTDIR}/Source/exceptions.o.d ${OBJECTDIR}/Source/interrupts.o.d ${OBJECTDIR}/Source/main.o.d ${OBJECTDIR}/Source/system.o.d ${OBJECTDIR}/Source/template.o.d ${OBJECTDIR}/Source/timer.o.d ${OBJECTDIR}/Source/WiFiCtrl.o.d ${OBJECTDIR}/Source/SPI.o.d ${OBJECTDIR}/Source/LoraNetworkInterface.o.d ${OBJECTDIR}/Source/ChaletPowerRelay.o.d ${OBJECTDIR}/Source/HarakiriRelay.o.d ${OBJECTDIR}/Source/BatteryMonitor.o.d ${OBJECTDIR}/Source/ina219.o.d ${OBJECTDIR}/Source/I2C.o.d ${OBJECTDIR}/Source/SPI_Flash.o.d ${OBJECTDIR}/Source/Syslog.o.d ${OBJECTDIR}/Source/Watchdog.o.d ${OBJECTDIR}/Source/BootloaderInterface.o.d ${OBJECTDIR}/Source/TemperatureSensor.o.d ${OBJECTDIR}/Source/TC77.o.d ${OBJECTDIR}/Source/BootloaderProtocol.o.d ${OBJECTDIR}/Source/crc32.o.d
|
||||
|
||||
# Object Files
|
||||
OBJECTFILES=${OBJECTDIR}/Source/ChaletduinoV2Board.o ${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o ${OBJECTDIR}/Source/winc3400/bus_wrapper/source/nm_bus_wrapper.o ${OBJECTDIR}/Source/winc3400/common/source/nm_common.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ate_mode.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_crypto.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_hif.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ota.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_periph.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ssl.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_wifi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmasic.o ${OBJECTDIR}/Source/winc3400/driver/source/nmbus.o ${OBJECTDIR}/Source/winc3400/driver/source/nmdrv.o ${OBJECTDIR}/Source/winc3400/driver/source/nmi2c.o ${OBJECTDIR}/Source/winc3400/driver/source/nmspi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmuart.o ${OBJECTDIR}/Source/winc3400/socket/source/socket.o ${OBJECTDIR}/Source/winc3400/spi_flash/source/spi_flash.o ${OBJECTDIR}/Source/winc3400/winc_init.o ${OBJECTDIR}/Source/DigitalIO.o ${OBJECTDIR}/Source/InternalUart.o ${OBJECTDIR}/Source/NetworkProtocol.o ${OBJECTDIR}/Source/Terminal.o ${OBJECTDIR}/Source/Uart.o ${OBJECTDIR}/Source/Util.o ${OBJECTDIR}/Source/exceptions.o ${OBJECTDIR}/Source/interrupts.o ${OBJECTDIR}/Source/main.o ${OBJECTDIR}/Source/system.o ${OBJECTDIR}/Source/template.o ${OBJECTDIR}/Source/timer.o ${OBJECTDIR}/Source/WiFiCtrl.o ${OBJECTDIR}/Source/SPI.o ${OBJECTDIR}/Source/LoraNetworkInterface.o ${OBJECTDIR}/Source/ChaletPowerRelay.o ${OBJECTDIR}/Source/HarakiriRelay.o ${OBJECTDIR}/Source/BatteryMonitor.o ${OBJECTDIR}/Source/ina219.o ${OBJECTDIR}/Source/I2C.o ${OBJECTDIR}/Source/SPI_Flash.o ${OBJECTDIR}/Source/Syslog.o ${OBJECTDIR}/Source/Watchdog.o ${OBJECTDIR}/Source/BootloaderInterface.o ${OBJECTDIR}/Source/TemperatureSensor.o ${OBJECTDIR}/Source/TC77.o ${OBJECTDIR}/Source/BootloaderProtocol.o
|
||||
OBJECTFILES=${OBJECTDIR}/Source/ChaletduinoV2Board.o ${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o ${OBJECTDIR}/Source/winc3400/bus_wrapper/source/nm_bus_wrapper.o ${OBJECTDIR}/Source/winc3400/common/source/nm_common.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ate_mode.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_crypto.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_hif.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ota.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_periph.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ssl.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_wifi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmasic.o ${OBJECTDIR}/Source/winc3400/driver/source/nmbus.o ${OBJECTDIR}/Source/winc3400/driver/source/nmdrv.o ${OBJECTDIR}/Source/winc3400/driver/source/nmi2c.o ${OBJECTDIR}/Source/winc3400/driver/source/nmspi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmuart.o ${OBJECTDIR}/Source/winc3400/socket/source/socket.o ${OBJECTDIR}/Source/winc3400/spi_flash/source/spi_flash.o ${OBJECTDIR}/Source/winc3400/winc_init.o ${OBJECTDIR}/Source/DigitalIO.o ${OBJECTDIR}/Source/InternalUart.o ${OBJECTDIR}/Source/NetworkProtocol.o ${OBJECTDIR}/Source/Terminal.o ${OBJECTDIR}/Source/Uart.o ${OBJECTDIR}/Source/Util.o ${OBJECTDIR}/Source/exceptions.o ${OBJECTDIR}/Source/interrupts.o ${OBJECTDIR}/Source/main.o ${OBJECTDIR}/Source/system.o ${OBJECTDIR}/Source/template.o ${OBJECTDIR}/Source/timer.o ${OBJECTDIR}/Source/WiFiCtrl.o ${OBJECTDIR}/Source/SPI.o ${OBJECTDIR}/Source/LoraNetworkInterface.o ${OBJECTDIR}/Source/ChaletPowerRelay.o ${OBJECTDIR}/Source/HarakiriRelay.o ${OBJECTDIR}/Source/BatteryMonitor.o ${OBJECTDIR}/Source/ina219.o ${OBJECTDIR}/Source/I2C.o ${OBJECTDIR}/Source/SPI_Flash.o ${OBJECTDIR}/Source/Syslog.o ${OBJECTDIR}/Source/Watchdog.o ${OBJECTDIR}/Source/BootloaderInterface.o ${OBJECTDIR}/Source/TemperatureSensor.o ${OBJECTDIR}/Source/TC77.o ${OBJECTDIR}/Source/BootloaderProtocol.o ${OBJECTDIR}/Source/crc32.o
|
||||
|
||||
# Source Files
|
||||
SOURCEFILES=Source/ChaletduinoV2Board.c Source/winc3400/bsp/source/nm_bsp.c Source/winc3400/bus_wrapper/source/nm_bus_wrapper.c Source/winc3400/common/source/nm_common.c Source/winc3400/driver/source/m2m_ate_mode.c Source/winc3400/driver/source/m2m_crypto.c Source/winc3400/driver/source/m2m_hif.c Source/winc3400/driver/source/m2m_ota.c Source/winc3400/driver/source/m2m_periph.c Source/winc3400/driver/source/m2m_ssl.c Source/winc3400/driver/source/m2m_wifi.c Source/winc3400/driver/source/nmasic.c Source/winc3400/driver/source/nmbus.c Source/winc3400/driver/source/nmdrv.c Source/winc3400/driver/source/nmi2c.c Source/winc3400/driver/source/nmspi.c Source/winc3400/driver/source/nmuart.c Source/winc3400/socket/source/socket.c Source/winc3400/spi_flash/source/spi_flash.c Source/winc3400/winc_init.c Source/DigitalIO.c Source/InternalUart.c Source/NetworkProtocol.c Source/Terminal.c Source/Uart.c Source/Util.c Source/exceptions.c Source/interrupts.c Source/main.c Source/system.c Source/template.c Source/timer.c Source/WiFiCtrl.c Source/SPI.c Source/LoraNetworkInterface.c Source/ChaletPowerRelay.c Source/HarakiriRelay.c Source/BatteryMonitor.c Source/ina219.c Source/I2C.c Source/SPI_Flash.c Source/Syslog.c Source/Watchdog.c Source/BootloaderInterface.c Source/TemperatureSensor.c Source/TC77.c Source/BootloaderProtocol.c
|
||||
SOURCEFILES=Source/ChaletduinoV2Board.c Source/winc3400/bsp/source/nm_bsp.c Source/winc3400/bus_wrapper/source/nm_bus_wrapper.c Source/winc3400/common/source/nm_common.c Source/winc3400/driver/source/m2m_ate_mode.c Source/winc3400/driver/source/m2m_crypto.c Source/winc3400/driver/source/m2m_hif.c Source/winc3400/driver/source/m2m_ota.c Source/winc3400/driver/source/m2m_periph.c Source/winc3400/driver/source/m2m_ssl.c Source/winc3400/driver/source/m2m_wifi.c Source/winc3400/driver/source/nmasic.c Source/winc3400/driver/source/nmbus.c Source/winc3400/driver/source/nmdrv.c Source/winc3400/driver/source/nmi2c.c Source/winc3400/driver/source/nmspi.c Source/winc3400/driver/source/nmuart.c Source/winc3400/socket/source/socket.c Source/winc3400/spi_flash/source/spi_flash.c Source/winc3400/winc_init.c Source/DigitalIO.c Source/InternalUart.c Source/NetworkProtocol.c Source/Terminal.c Source/Uart.c Source/Util.c Source/exceptions.c Source/interrupts.c Source/main.c Source/system.c Source/template.c Source/timer.c Source/WiFiCtrl.c Source/SPI.c Source/LoraNetworkInterface.c Source/ChaletPowerRelay.c Source/HarakiriRelay.c Source/BatteryMonitor.c Source/ina219.c Source/I2C.c Source/SPI_Flash.c Source/Syslog.c Source/Watchdog.c Source/BootloaderInterface.c Source/TemperatureSensor.c Source/TC77.c Source/BootloaderProtocol.c Source/crc32.c
|
||||
|
||||
|
||||
|
||||
@@ -436,6 +436,13 @@ ${OBJECTDIR}/Source/BootloaderProtocol.o: Source/BootloaderProtocol.c nbproject
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/BootloaderProtocol.o.d" -o ${OBJECTDIR}/Source/BootloaderProtocol.o Source/BootloaderProtocol.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
@${FIXDEPS} "${OBJECTDIR}/Source/BootloaderProtocol.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
|
||||
|
||||
${OBJECTDIR}/Source/crc32.o: Source/crc32.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/Source"
|
||||
@${RM} ${OBJECTDIR}/Source/crc32.o.d
|
||||
@${RM} ${OBJECTDIR}/Source/crc32.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/crc32.o.d" -o ${OBJECTDIR}/Source/crc32.o Source/crc32.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
@${FIXDEPS} "${OBJECTDIR}/Source/crc32.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
|
||||
|
||||
else
|
||||
${OBJECTDIR}/Source/ChaletduinoV2Board.o: Source/ChaletduinoV2Board.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/Source"
|
||||
@@ -766,6 +773,13 @@ ${OBJECTDIR}/Source/BootloaderProtocol.o: Source/BootloaderProtocol.c nbproject
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/BootloaderProtocol.o.d" -o ${OBJECTDIR}/Source/BootloaderProtocol.o Source/BootloaderProtocol.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
@${FIXDEPS} "${OBJECTDIR}/Source/BootloaderProtocol.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
|
||||
|
||||
${OBJECTDIR}/Source/crc32.o: Source/crc32.c nbproject/Makefile-${CND_CONF}.mk
|
||||
@${MKDIR} "${OBJECTDIR}/Source"
|
||||
@${RM} ${OBJECTDIR}/Source/crc32.o.d
|
||||
@${RM} ${OBJECTDIR}/Source/crc32.o
|
||||
${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/crc32.o.d" -o ${OBJECTDIR}/Source/crc32.o Source/crc32.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
|
||||
@${FIXDEPS} "${OBJECTDIR}/Source/crc32.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
|
||||
|
||||
endif
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
#Mon Jun 28 17:59:50 EDT 2021
|
||||
#Sat Aug 28 10:15:31 EDT 2021
|
||||
default.languagetoolchain.version=2.41
|
||||
ChaletDuino_775F512H_.languagetoolchain.version=1.33
|
||||
default.Pack.dfplocation=C\:\\Users\\JF\\.mchp_packs\\Microchip\\PIC32MX_DFP\\1.2.228
|
||||
@@ -7,7 +7,7 @@ ChaletDuinoV2_775F512H_.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageTool
|
||||
conf.ids=default,ChaletDuino_775F512H_,ChaletDuinoV2_775F512H_
|
||||
default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v2.41\\bin
|
||||
ChaletDuino_775F512H_.Pack.dfplocation=C\:\\Program Files (x86)\\Microchip\\MPLABX\\v5.40\\packs\\Microchip\\PIC32MX_DFP\\1.3.231
|
||||
configurations-xml=eff83ea92f05b99cc93fc2b768289ae4
|
||||
configurations-xml=83ec9e95b91c56c79e06f45ac017d005
|
||||
default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=a5745c99cb5a5032f17cfaf0ff720282
|
||||
ChaletDuinoV2_775F512H_.Pack.dfplocation=C\:\\Program Files (x86)\\Microchip\\MPLABX\\v5.40\\packs\\Microchip\\PIC32MX_DFP\\1.3.231
|
||||
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=9db8f8a224aa17d0023ea7f468f871dc
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
<itemPath>Source/TC77.h</itemPath>
|
||||
<itemPath>Source/BootloaderProtocol.h</itemPath>
|
||||
<itemPath>Source/FlashMapping.h</itemPath>
|
||||
<itemPath>Source/checksum.h</itemPath>
|
||||
</logicalFolder>
|
||||
<logicalFolder name="LinkerScript"
|
||||
displayName="Linker Files"
|
||||
@@ -214,6 +215,7 @@
|
||||
<itemPath>Source/TemperatureSensor.c</itemPath>
|
||||
<itemPath>Source/TC77.c</itemPath>
|
||||
<itemPath>Source/BootloaderProtocol.c</itemPath>
|
||||
<itemPath>Source/crc32.c</itemPath>
|
||||
</logicalFolder>
|
||||
<logicalFolder name="ExternalFiles"
|
||||
displayName="Important Files"
|
||||
|
||||
@@ -1,9 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
|
||||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
|
||||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="5">
|
||||
<file>
|
||||
<url>Source/BootloaderInterface.c</url>
|
||||
<bookmark id="5">
|
||||
<name/>
|
||||
<line>324</line>
|
||||
<key/>
|
||||
</bookmark>
|
||||
<bookmark id="4">
|
||||
<name/>
|
||||
<line>395</line>
|
||||
<key/>
|
||||
</bookmark>
|
||||
</file>
|
||||
</editor-bookmarks>
|
||||
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
|
||||
<group>
|
||||
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/BootloaderInterface.c</file>
|
||||
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/main.c</file>
|
||||
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/WiFiCtrl.c</file>
|
||||
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/crc32.c</file>
|
||||
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/ProtocolDefs.h</file>
|
||||
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/SPI_Flash.c</file>
|
||||
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/BootloaderInterface.h</file>
|
||||
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/BootloaderProtocol.h</file>
|
||||
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/FlashMapping.h</file>
|
||||
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/BatteryMonitor.c</file>
|
||||
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/BootloaderProtocol.c</file>
|
||||
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/Terminal.c</file>
|
||||
</group>
|
||||
</open-files>
|
||||
</project-private>
|
||||
|
||||
+119504
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user