Bootloader CRC fonctionnel
This commit is contained in:
@@ -9,6 +9,8 @@
|
|||||||
#include "SPI_Flash.h"
|
#include "SPI_Flash.h"
|
||||||
#include "FlashMapping.h"
|
#include "FlashMapping.h"
|
||||||
#include "NetworkProtocol.h"
|
#include "NetworkProtocol.h"
|
||||||
|
#include "Syslog.h"
|
||||||
|
#include "checksum.h"
|
||||||
|
|
||||||
|
|
||||||
#define BOOTLOADER_FLASH_ERASE_POLL_TIMEOUT 25//100 //ms
|
#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...
|
#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;
|
int BootloaderInterfaceState;
|
||||||
|
|
||||||
|
|
||||||
@@ -42,12 +44,14 @@ int BootloaderInterfaceInit()
|
|||||||
{
|
{
|
||||||
BootloaderProtocolInit();
|
BootloaderProtocolInit();
|
||||||
BootloaderResetStateMachine();
|
BootloaderResetStateMachine();
|
||||||
|
BootloaderCheckFlashBootloaderData();
|
||||||
|
update_crc_32(0,0); //Force to populate the CRC32 table...
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BootloaderInterfaceTick()
|
void BootloaderInterfaceTick()
|
||||||
{
|
{
|
||||||
BootloaderIterfaceStateMachine(BOOTLOADER_TICK_EVENT,0);
|
BootloaderInterfaceStateMachine(BOOTLOADER_TICK_EVENT,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BootloaderExecuteCmd(char Cmd)
|
void BootloaderExecuteCmd(char Cmd)
|
||||||
@@ -65,44 +69,49 @@ void BootloaderExecuteCmd(char Cmd)
|
|||||||
case BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST:
|
case BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST:
|
||||||
{
|
{
|
||||||
printf("BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST\n");
|
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;
|
break;
|
||||||
}
|
}
|
||||||
case BOOTLOADER_INIT_UPLOAD_REQUEST:
|
case BOOTLOADER_INIT_UPLOAD_REQUEST:
|
||||||
{
|
{
|
||||||
printf("BOOTLOADER_INIT_UPLOAD_REQUEST\n");
|
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;
|
break;
|
||||||
}
|
}
|
||||||
case BOOTLOADER_GET_STATE_REQUEST:
|
case BOOTLOADER_GET_STATE_REQUEST:
|
||||||
{
|
{
|
||||||
printf("BOOTLOADER_GET_STATE_REQUEST\n");
|
printf("BOOTLOADER_GET_STATE_REQUEST\n");
|
||||||
*DataBufPtr = (char)BootloaderInterfaceState;
|
BootloaderProtocolSendBootloaderState((char)BootloaderInterfaceState);
|
||||||
BootloaderProtocolSendFrame(BOOTLOADER_GET_STATE_RESPONSE,1);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case BOOTLOADER_SEND_DATA_CHUNK_REQUEST:
|
case BOOTLOADER_SEND_DATA_CHUNK_REQUEST:
|
||||||
{
|
{
|
||||||
printf("BOOTLOADER_SEND_DATA_CHUNK_REQUEST\n");
|
// printf("BOOTLOADER_SEND_DATA_CHUNK_REQUEST\n");
|
||||||
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_NEW_DATA_CHUNK_CMD);
|
BootloaderInterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_NEW_DATA_CHUNK_CMD);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case BOOTLOADER_UPLOAD_FINISHED_REQUEST:
|
case BOOTLOADER_UPLOAD_FINISHED_REQUEST:
|
||||||
{
|
{
|
||||||
printf("BOOTLOADER_UPLOAD_FINISHED_REQUEST\n");
|
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;
|
break;
|
||||||
}
|
}
|
||||||
case BOOTLOADER_EXECUTE_UPGRAGE_REQUEST:
|
case BOOTLOADER_EXECUTE_UPGRAGE_REQUEST:
|
||||||
{
|
{
|
||||||
printf("BOOTLOADER_EXECUTE_UPGRAGE_REQUEST\n");
|
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;
|
break;
|
||||||
}
|
}
|
||||||
case BOOTLOADER_ABORT_OPERATION_REQUEST:
|
case BOOTLOADER_ABORT_OPERATION_REQUEST:
|
||||||
{
|
{
|
||||||
printf("BOOTLOADER_ABORT_OPERATION_REQUEST\n");
|
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:
|
default:
|
||||||
{
|
{
|
||||||
@@ -114,10 +123,10 @@ void BootloaderExecuteCmd(char Cmd)
|
|||||||
void BootloaderCRCError(char Cmd, int RxCRC, int ExpectedCRC)
|
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);
|
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)
|
switch(BootloaderInterfaceState)
|
||||||
@@ -178,6 +187,10 @@ void BootloaderIterfaceStateMachine(int Event, int Param)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
BootloaderProtocolSendInitUploadResponse(BOOTLOADEDR_INIT_TRANSFER_OK);
|
BootloaderProtocolSendInitUploadResponse(BOOTLOADEDR_INIT_TRANSFER_OK);
|
||||||
|
|
||||||
|
//TODO: Shall we prepare something before??
|
||||||
|
BootloaderProtocolSendACK(BOOTLOADER_READY_FOR_DATA_RESPONSE);
|
||||||
|
|
||||||
BootloaderInterfaceState = BOOTLOADER_RECEIVING_FIRMWARE_STATE;
|
BootloaderInterfaceState = BOOTLOADER_RECEIVING_FIRMWARE_STATE;
|
||||||
printf("Bootloader Interface going into Firmware RX state\n");
|
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");
|
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:
|
default:
|
||||||
{
|
{
|
||||||
@@ -289,7 +313,7 @@ void BootloaderIterfaceStateMachine(int Event, int Param)
|
|||||||
{
|
{
|
||||||
case BOOTLOADER_TICK_EVENT:
|
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)
|
switch(res)
|
||||||
{
|
{
|
||||||
case BOOTLOADER_FLASH_WRITING_RES:
|
case BOOTLOADER_FLASH_WRITING_RES:
|
||||||
@@ -329,25 +353,28 @@ void BootloaderIterfaceStateMachine(int Event, int Param)
|
|||||||
//TODO: Write data to flash
|
//TODO: Write data to flash
|
||||||
|
|
||||||
//Extract index from buffer
|
//Extract index from buffer
|
||||||
int DataChunkIndex = 0;
|
unsigned int DataChunkIndex = 0;
|
||||||
int DataChunkSize = 0;
|
unsigned int DataChunkSize = 0;
|
||||||
DataChunkSize = 0;
|
DataChunkSize = 0;
|
||||||
|
|
||||||
DataChunkIndex = BootloaderBuffer[0];
|
// DataChunkIndex = BootloaderBuffer[0];
|
||||||
DataChunkIndex <<= 8;
|
// DataChunkIndex <<= 8;
|
||||||
DataChunkIndex += BootloaderBuffer[1];
|
// DataChunkIndex += BootloaderBuffer[1];
|
||||||
DataChunkIndex <<= 8;
|
// DataChunkIndex <<= 8;
|
||||||
DataChunkIndex += BootloaderBuffer[2];
|
// DataChunkIndex += BootloaderBuffer[2];
|
||||||
DataChunkIndex <<= 8;
|
// DataChunkIndex <<= 8;
|
||||||
DataChunkIndex += BootloaderBuffer[3];
|
// 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];
|
BootloaderFlashWriteDataPtr = &BootloaderBuffer[8];
|
||||||
|
|
||||||
@@ -367,6 +394,7 @@ void BootloaderIterfaceStateMachine(int Event, int Param)
|
|||||||
{
|
{
|
||||||
CurDataChunkSize = DataChunkSize;
|
CurDataChunkSize = DataChunkSize;
|
||||||
BootloaderFlashWriteStateMachine(BOOTLOADER_FLASH_WRITE_SM_NEW_BUFFER_EVENT);
|
BootloaderFlashWriteStateMachine(BOOTLOADER_FLASH_WRITE_SM_NEW_BUFFER_EVENT);
|
||||||
|
printf("Bootloader Interface. Rx new data chunk. Writing to flash. Index: %d\n", DataChunkIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -376,12 +404,28 @@ void BootloaderIterfaceStateMachine(int Event, int Param)
|
|||||||
//BootloaderProtocol determined the CRC of the chunk was invalid.
|
//BootloaderProtocol determined the CRC of the chunk was invalid.
|
||||||
BootloaderProtocolSendDataChunkResult(BOOTLOADER_CHUNK_TRANSFER_ERROR_RESEND,CurDataChunkIndex);
|
BootloaderProtocolSendDataChunkResult(BOOTLOADER_CHUNK_TRANSFER_ERROR_RESEND,CurDataChunkIndex);
|
||||||
printf("Bootloader Interface invalid chunk CRC. Requesting resend chunk index [%d]\n", CurDataChunkIndex);
|
printf("Bootloader Interface invalid chunk CRC. Requesting resend chunk index [%d]\n", CurDataChunkIndex);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case BOOTLOADER_SM_UPLOAD_FINISHED_CMD:
|
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");
|
||||||
BootloaderInterfaceState = BOOTLOADER_ACTIVE_STATE;
|
|
||||||
FirmwareUploaded = 1;
|
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:
|
case BOOTLOADER_SM_ABORT_CMD:
|
||||||
{
|
{
|
||||||
@@ -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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -455,17 +529,20 @@ void BootloaderResetStateMachine()
|
|||||||
|
|
||||||
ResetBootloaderFlashEraseStateMachine();
|
ResetBootloaderFlashEraseStateMachine();
|
||||||
ResetBootloaderFlashWriteStateMachine();
|
ResetBootloaderFlashWriteStateMachine();
|
||||||
|
|
||||||
|
CloseBootloaderServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BootloaderActivateBootloader()
|
void BootloaderActivateBootloader()
|
||||||
{
|
{
|
||||||
OpenBootloaderServer();
|
OpenBootloaderServer();
|
||||||
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_ACTIVATE_CMD);
|
BootloaderInterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_ACTIVATE_CMD);
|
||||||
}
|
}
|
||||||
void BootloaderDeactivateBootloader()
|
void BootloaderDeactivateBootloader()
|
||||||
{
|
{
|
||||||
CloseBootloaderServer();
|
BootloaderResetStateMachine();
|
||||||
BootloaderIterfaceStateMachine(BOOTLOADER_SM_ABORT_CMD,0);
|
// CloseBootloaderServer();
|
||||||
|
// BootloaderIterfaceStateMachine(BOOTLOADER_SM_ABORT_CMD,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int BootloaderFlashEraseStateMachine(int event)
|
int BootloaderFlashEraseStateMachine(int event)
|
||||||
@@ -563,11 +640,19 @@ int BootloaderFlashWriteStateMachine(int event)
|
|||||||
{
|
{
|
||||||
case BOOTLOADER_FLASH_WRITE_STANDBY_STATE:
|
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;
|
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_BUFFER_STATE;
|
||||||
BootloaderFirmwareChunkWriteCount = 0;
|
BootloaderFirmwareChunkWriteCount = 0;
|
||||||
|
return BOOTLOADER_FLASH_WRITING_RES;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case BOOTLOADER_FLASH_WRITE_BUFFER_STATE:
|
case BOOTLOADER_FLASH_WRITE_BUFFER_STATE:
|
||||||
{
|
{
|
||||||
@@ -577,15 +662,18 @@ int BootloaderFlashWriteStateMachine(int event)
|
|||||||
return BOOTLOADER_FLASH_WRITE_ERROR_RES;
|
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");
|
printf("Bootloader flash error. Aborting and going back to STANDBY\n");
|
||||||
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_ERROR_STATE;
|
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_ERROR_STATE;
|
||||||
return BOOTLOADER_FLASH_WRITE_ERROR_RES;
|
return BOOTLOADER_FLASH_WRITE_ERROR_RES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
@@ -604,14 +692,31 @@ int BootloaderFlashWriteStateMachine(int event)
|
|||||||
BootloaderFirmwareChunkWriteCount++;
|
BootloaderFirmwareChunkWriteCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_STANDBY_STATE;
|
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_WAIT_FOR_BYTE_DONE;
|
||||||
return BOOTLOADER_FLASH_WRITE_FINISHED_RES;
|
return BOOTLOADER_FLASH_WRITING_RES;
|
||||||
|
|
||||||
|
// BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_STANDBY_STATE;
|
||||||
|
// return BOOTLOADER_FLASH_WRITE_FINISHED_RES;
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case BOOTLOADER_FLASH_WRITE_WAIT_FOR_BYTE_DONE:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
case BOOTLOADER_FLASH_WRITE_CHECKBACK_STATE:
|
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()
|
int ResetBootloaderFlashWriteStateMachine()
|
||||||
{
|
{
|
||||||
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_BUFFER_STATE;
|
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_STANDBY_STATE;
|
||||||
BootloaderCurFlashWriteAddress = FLASH_BTLDR_FIRMWARE_START_ADDRESS;
|
BootloaderCurFlashWriteAddress = FLASH_BTLDR_FIRMWARE_START_ADDRESS;
|
||||||
BootloaderFlashWritePollCount = 0;
|
BootloaderFlashWritePollCount = 0;
|
||||||
BootloaderFirmwareChunkWriteCount = 0;
|
BootloaderFirmwareChunkWriteCount = 0;
|
||||||
BootloaderFlashWriteDataPtr = 0;
|
BootloaderFlashWriteDataPtr = 0;
|
||||||
BootloaderFirmwareChunkWriteCount = 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
|
#define BOOTLOADERINTERFACE_H
|
||||||
#include "define.h"
|
#include "define.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define BOOTLOADER_FILE_HEADER_CODE (int)0xBAADBEEF
|
||||||
|
#define BOOTLOADER_RECORD_HEADER_CODE (int)0xDEADBEEF
|
||||||
|
|
||||||
enum eBootloaderStates
|
enum eBootloaderStates
|
||||||
{
|
{
|
||||||
BOOTLOADER_STANDBY_STATE,
|
BOOTLOADER_STANDBY_STATE,
|
||||||
@@ -16,6 +20,7 @@ enum eBootloaderStates
|
|||||||
BOOTLOADER_ERASE_FLASH_STATE,
|
BOOTLOADER_ERASE_FLASH_STATE,
|
||||||
BOOTLOADER_RECEIVING_FIRMWARE_STATE,
|
BOOTLOADER_RECEIVING_FIRMWARE_STATE,
|
||||||
BOOTLOADER_SENDING_FIRMWARE_COPY_STATE,
|
BOOTLOADER_SENDING_FIRMWARE_COPY_STATE,
|
||||||
|
BOOTLOADER_PRINTING_FIRMWARE_STATE,
|
||||||
|
|
||||||
BOOTLOADER_MAX_STATE
|
BOOTLOADER_MAX_STATE
|
||||||
};
|
};
|
||||||
@@ -99,20 +104,20 @@ enum eBootloaderStateMachineCmds
|
|||||||
BOOTLOADER_SM_NEW_DATA_CHUNK_CMD,
|
BOOTLOADER_SM_NEW_DATA_CHUNK_CMD,
|
||||||
BOOTLOADER_SM_UPLOAD_FINISHED_CMD,
|
BOOTLOADER_SM_UPLOAD_FINISHED_CMD,
|
||||||
BOOTLOADER_SM_EXECUTE_UPGRAGE_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();
|
int BootloaderInterfaceInit();
|
||||||
void BootloaderExecuteCmd(char Cmd);
|
void BootloaderExecuteCmd(char Cmd);
|
||||||
void BootloaderCRCError(char Cmd, int RxCRC, int ExpectedCRC);
|
void BootloaderCRCError(char Cmd, int RxCRC, int ExpectedCRC);
|
||||||
|
|
||||||
void BootloaderInterfaceStateMachine();
|
|
||||||
|
|
||||||
void BootloaderInterfaceTick();
|
void BootloaderInterfaceTick();
|
||||||
void BootloaderIterfaceStateMachine(int Event, int Param);
|
void BootloaderInterfaceStateMachine(int Event, int Param);
|
||||||
void BootloaderResetStateMachine();
|
void BootloaderResetStateMachine();
|
||||||
void BootloaderActivateBootloader();
|
void BootloaderActivateBootloader();
|
||||||
void BootloaderDeactivateBootloader();
|
void BootloaderDeactivateBootloader();
|
||||||
@@ -123,6 +128,12 @@ int ResetBootloaderFlashEraseStateMachine();
|
|||||||
int BootloaderFlashWriteStateMachine(int event);
|
int BootloaderFlashWriteStateMachine(int event);
|
||||||
int ResetBootloaderFlashWriteStateMachine();
|
int ResetBootloaderFlashWriteStateMachine();
|
||||||
|
|
||||||
|
int BootloaderCheckFlashBootloaderData();
|
||||||
|
int BootloaderPrintFlashData();
|
||||||
|
|
||||||
|
int BootloaderBytesToInt(unsigned char *Bytes);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* BOOTLOADERINTERFACE_H */
|
#endif /* BOOTLOADERINTERFACE_H */
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ void BootloaderProtocolStateMachine(unsigned char Data)
|
|||||||
BootloaderDataSize <<= 8;
|
BootloaderDataSize <<= 8;
|
||||||
BootloaderDataSize += Data;
|
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?
|
//TODO, send NACK?
|
||||||
BootloaderProtocolResetStateMachine();
|
BootloaderProtocolResetStateMachine();
|
||||||
@@ -204,7 +204,6 @@ void BootloaderProtocolStateMachine(unsigned char Data)
|
|||||||
{
|
{
|
||||||
BootloaderCRC <<= 8;
|
BootloaderCRC <<= 8;
|
||||||
BootloaderCRC += Data;
|
BootloaderCRC += Data;
|
||||||
BootloaderState = RxCRC3;
|
|
||||||
|
|
||||||
//TODO: Compute and Compare CRC.
|
//TODO: Compute and Compare CRC.
|
||||||
if(BootloaderCRC != 0xBAADCAFE)
|
if(BootloaderCRC != 0xBAADCAFE)
|
||||||
@@ -351,3 +350,30 @@ void BootloaderProtocolSendDataChunkResult(char ErrorCode, int ChunkValue)
|
|||||||
|
|
||||||
BootloaderProtocolSendFrame(BOOTLOADER_SEND_DATA_CHUNK_RESPONSE,5);
|
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
|
//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 0xDEADBEEF
|
||||||
#define BOOTLOADER_FRAME_HEADER_1 0xDE
|
#define BOOTLOADER_FRAME_HEADER_1 0xDE
|
||||||
#define BOOTLOADER_FRAME_HEADER_2 0xAD
|
#define BOOTLOADER_FRAME_HEADER_2 0xAD
|
||||||
@@ -65,6 +65,23 @@ enum eBootloaderProtocolInitTransferError
|
|||||||
BOOTLOADEDR_INIT_TRANSFER_MAX_ERROR
|
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
|
//enum DEVICES_IDS
|
||||||
//{
|
//{
|
||||||
// ID_MASTER, //Master Controller
|
// ID_MASTER, //Master Controller
|
||||||
@@ -98,6 +115,8 @@ void BootloaderProtocolSendACK(unsigned char Cmd);
|
|||||||
void BootloaderProtocolSendNACK(unsigned char Cmd);
|
void BootloaderProtocolSendNACK(unsigned char Cmd);
|
||||||
void BootloaderProtocolSendInitUploadResponse(char result);
|
void BootloaderProtocolSendInitUploadResponse(char result);
|
||||||
void BootloaderProtocolSendDataChunkResult(char ErrorCode, int ChunkValue);
|
void BootloaderProtocolSendDataChunkResult(char ErrorCode, int ChunkValue);
|
||||||
|
void BootloaderProtocolSendBootloaderState(char State);
|
||||||
|
void BootloaderProtocolSendFirmwareUploadResult(char Result);
|
||||||
|
void BootloaderProtocolSendFlashCheckResult(char Result);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -22,5 +22,8 @@
|
|||||||
#define FLASH_BTLDR_FIRMWARE_LAST_64K_SECTOR_ADD 0x1F0000
|
#define FLASH_BTLDR_FIRMWARE_LAST_64K_SECTOR_ADD 0x1F0000
|
||||||
|
|
||||||
|
|
||||||
|
#define FLASH_BTLDR_HEADER_SIZE 24
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* HARAKIRIRELAY_H */
|
#endif /* HARAKIRIRELAY_H */
|
||||||
|
|||||||
@@ -317,6 +317,12 @@ enum BOOTLOADER_CMDS
|
|||||||
BOOTLOADER_EXECUTE_UPGRADE_RESPONSE,
|
BOOTLOADER_EXECUTE_UPGRADE_RESPONSE,
|
||||||
BOOTLOADER_ABORT_OPERATION_REQUEST,
|
BOOTLOADER_ABORT_OPERATION_REQUEST,
|
||||||
BOOTLOADER_ABORT_OPERATION_RESPONSE,
|
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
|
MAX_BOOTLOADER_CMD
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ int InitSPIFlash()
|
|||||||
FLASH_SS_PIN = 1;
|
FLASH_SS_PIN = 1;
|
||||||
|
|
||||||
mSPIFlashBaudrate = SPICalculateBRG(PERIPHERAL_FREQ, 25000000);
|
mSPIFlashBaudrate = SPICalculateBRG(PERIPHERAL_FREQ, 25000000);
|
||||||
mSPIFlashHighSpeedBaudrate = SPICalculateBRG(PERIPHERAL_FREQ, 50000000);
|
// mSPIFlashHighSpeedBaudrate = SPICalculateBRG(PERIPHERAL_FREQ, 50000000);
|
||||||
|
mSPIFlashHighSpeedBaudrate = SPICalculateBRG(PERIPHERAL_FREQ, 35000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
int SPIFlashCheckAndConfigure()
|
int SPIFlashCheckAndConfigure()
|
||||||
@@ -119,7 +120,10 @@ int SPIFlashReadBuffer(unsigned char *Buf, int Size, int StartAddress)
|
|||||||
int i;
|
int i;
|
||||||
for(i = 0; i < Size; 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;
|
FLASH_SS_PIN = 1;
|
||||||
@@ -194,20 +198,38 @@ int SPIFlashWriteSectorWorkingBuffer(int SectorAddress, int Erase)
|
|||||||
SPIFlashEraseSector(SectorAddress);
|
SPIFlashEraseSector(SectorAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *DataPtr = &mFlashSectorBuffer[0];
|
unsigned char *DataPtr = &mFlashSectorBuffer[0];
|
||||||
int j;
|
int j;
|
||||||
for(j = 0; j < SPI_FLASH_SECTOR_SIZE; j++)
|
for(j = 0; j < SPI_FLASH_SECTOR_SIZE; j++)
|
||||||
{
|
{
|
||||||
|
unsigned char curbyte;
|
||||||
|
curbyte = *DataPtr;
|
||||||
SPIFlashWriteEnable();
|
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;
|
FLASH_SS_PIN = 0;
|
||||||
SPITransaction(SPI_FLASH_BYTE_PROGRAM,mSPIFlashHighSpeedBaudrate);
|
SPITransaction(SPI_FLASH_BYTE_PROGRAM,mSPIFlashHighSpeedBaudrate);
|
||||||
SPITransaction(((SectorAddress & 0xFF0000) >> 16),mSPIFlashHighSpeedBaudrate);
|
// SPITransaction((unsigned char)((SectorAddress & 0xFF0000) >> 16),mSPIFlashHighSpeedBaudrate);
|
||||||
SPITransaction(((SectorAddress & 0x00FF00) >> 8),mSPIFlashHighSpeedBaudrate);
|
// SPITransaction((unsigned char)((SectorAddress & 0x00FF00) >> 8),mSPIFlashHighSpeedBaudrate);
|
||||||
SPITransaction((SectorAddress & 0x0000FF),mSPIFlashHighSpeedBaudrate);
|
// SPITransaction((unsigned char)(SectorAddress & 0x0000FF),mSPIFlashHighSpeedBaudrate);
|
||||||
SPITransaction(*DataPtr++,mSPIFlashHighSpeedBaudrate);
|
SPITransaction(Add1,mSPIFlashHighSpeedBaudrate);
|
||||||
|
SPITransaction(Add2,mSPIFlashHighSpeedBaudrate);
|
||||||
|
SPITransaction(Add3,mSPIFlashHighSpeedBaudrate);
|
||||||
|
|
||||||
|
SPITransaction(curbyte,mSPIFlashHighSpeedBaudrate);
|
||||||
|
// SPITransaction(*DataPtr,mSPIFlashHighSpeedBaudrate);
|
||||||
FLASH_SS_PIN = 1;
|
FLASH_SS_PIN = 1;
|
||||||
|
|
||||||
|
DataPtr++;
|
||||||
SectorAddress++;
|
SectorAddress++;
|
||||||
|
|
||||||
while( SPIFlashCheckBusy() == true);
|
while( SPIFlashCheckBusy() == true);
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
#include "WiFiCtrl.h"
|
#include "WiFiCtrl.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
|
|
||||||
#define SYSLOG_BUFFER_SIZE 1024
|
//#define SYSLOG_BUFFER_SIZE 1024
|
||||||
|
#define SYSLOG_BUFFER_SIZE 500
|
||||||
char mSyslogBuffer[SYSLOG_BUFFER_SIZE];
|
char mSyslogBuffer[SYSLOG_BUFFER_SIZE];
|
||||||
int mSyslogBufPtr;
|
int mSyslogBufPtr;
|
||||||
|
|
||||||
@@ -15,6 +16,7 @@ int InitSyslog()
|
|||||||
{
|
{
|
||||||
mSyslogBufPtr = 0;
|
mSyslogBufPtr = 0;
|
||||||
memset(mSyslogBuffer,0,SYSLOG_BUFFER_SIZE);
|
memset(mSyslogBuffer,0,SYSLOG_BUFFER_SIZE);
|
||||||
|
TimerStart(SYSLOG_TX_TIMER,SYSLOG_TX_TIMEOUT);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,6 +33,18 @@ void SyslogTick()
|
|||||||
{
|
{
|
||||||
SendSyslogData(mSyslogBuffer,mSyslogBufPtr);
|
SendSyslogData(mSyslogBuffer,mSyslogBufPtr);
|
||||||
mSyslogBufPtr = 0;
|
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;
|
mSyslogBufPtr = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
TimerStart(SYSLOG_TX_TIMER,SYSLOG_TX_TIMEOUT);
|
// TimerStart(SYSLOG_TX_TIMER,SYSLOG_TX_TIMEOUT);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,3 +82,11 @@ int SyslogNewString(char *string)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int SyslogIsBufferEmpty()
|
||||||
|
{
|
||||||
|
if(mSyslogBufPtr == 0)
|
||||||
|
return RET_OK;
|
||||||
|
|
||||||
|
return RET_ERROR;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,13 +1,14 @@
|
|||||||
#ifndef SYSLOG_H
|
#ifndef SYSLOG_H
|
||||||
#define SYSLOG_H
|
#define SYSLOG_H
|
||||||
|
|
||||||
#define SYSLOG_TX_TIMEOUT 100 //ms
|
#define SYSLOG_TX_TIMEOUT 200 //ms
|
||||||
|
|
||||||
|
|
||||||
int InitSyslog();
|
int InitSyslog();
|
||||||
void SyslogTick();
|
void SyslogTick();
|
||||||
int SyslogNewByte(char byte);
|
int SyslogNewByte(char byte);
|
||||||
int SyslogNewString(char *string);
|
int SyslogNewString(char *string);
|
||||||
|
int SyslogIsBufferEmpty();
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -399,10 +399,12 @@ void ParseNewBuffer(void)
|
|||||||
//start bootloader server
|
//start bootloader server
|
||||||
// OpenBootloaderServer();
|
// OpenBootloaderServer();
|
||||||
BootloaderActivateBootloader();
|
BootloaderActivateBootloader();
|
||||||
|
TerminalPrintString("Activating bootloader\n");
|
||||||
}
|
}
|
||||||
else if(strncmp(mDataString1,"stop",strlen("stop")) == 0)
|
else if(strncmp(mDataString1,"stop",strlen("stop")) == 0)
|
||||||
{
|
{
|
||||||
//CloseBootloaderServer();
|
//CloseBootloaderServer();
|
||||||
|
TerminalPrintString("Deactivating bootloader\n");
|
||||||
BootloaderDeactivateBootloader();
|
BootloaderDeactivateBootloader();
|
||||||
}
|
}
|
||||||
else if(strncmp(mDataString1,"status",strlen("status")) == 0)
|
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...
|
//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);
|
BootloaderProtocolProtocolAnalyzeNewData(pstrRecvMsg->pu8Buffer, pstrRecvMsg->s16BufferSize);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -527,6 +531,7 @@ void TickWiFi()
|
|||||||
OpenTerminalServer();
|
OpenTerminalServer();
|
||||||
//OpenNetworkServer();
|
//OpenNetworkServer();
|
||||||
// OpenBootloaderServer();
|
// OpenBootloaderServer();
|
||||||
|
BootloaderActivateBootloader();
|
||||||
#ifdef USE_SYSLOG
|
#ifdef USE_SYSLOG
|
||||||
OpenSyslogServer();
|
OpenSyslogServer();
|
||||||
#endif
|
#endif
|
||||||
@@ -684,9 +689,11 @@ int OpenBootloaderServer()
|
|||||||
int CloseBootloaderServer()
|
int CloseBootloaderServer()
|
||||||
{
|
{
|
||||||
close(BootloaderServerSocket);
|
close(BootloaderServerSocket);
|
||||||
|
BootloaderServerSocket = -1;
|
||||||
if(BootloaderSocket != -1)
|
if(BootloaderSocket != -1)
|
||||||
{
|
{
|
||||||
close(BootloaderSocket);
|
close(BootloaderSocket);
|
||||||
|
BootloaderSocket = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void SendBootloaderData(uint8 *data, int size)
|
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;
|
typedef signed short int16_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
#ifndef uint32_t
|
#ifndef uint32_t
|
||||||
typedef unsigned long uint32_t;
|
typedef unsigned long uint32_t;
|
||||||
#endif
|
#endif
|
||||||
@@ -231,6 +232,7 @@ typedef unsigned long uint32_t;
|
|||||||
#ifndef int32_t
|
#ifndef int32_t
|
||||||
typedef signed long int32_t;
|
typedef signed long int32_t;
|
||||||
#endif
|
#endif
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef uint64_t
|
#ifndef uint64_t
|
||||||
typedef unsigned long long uint64_t;
|
typedef unsigned long long uint64_t;
|
||||||
|
|||||||
@@ -73,6 +73,7 @@
|
|||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
#include "ina219.h"
|
#include "ina219.h"
|
||||||
#include "I2C.h"
|
#include "I2C.h"
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
unsigned char I2CMasterBuffer[I2C_BUFSIZE];
|
unsigned char I2CMasterBuffer[I2C_BUFSIZE];
|
||||||
unsigned char I2CSlaveBuffer[I2C_BUFSIZE];
|
unsigned char I2CSlaveBuffer[I2C_BUFSIZE];
|
||||||
|
|||||||
@@ -98,6 +98,11 @@ int main(void)
|
|||||||
|
|
||||||
InitSPIFlash();
|
InitSPIFlash();
|
||||||
|
|
||||||
|
#ifdef USE_SYSLOG
|
||||||
|
InitSyslog();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
printf("ChaletDuino V2 Initialized\n");
|
printf("ChaletDuino V2 Initialized\n");
|
||||||
|
|
||||||
SPIFlashCheckAndConfigure();
|
SPIFlashCheckAndConfigure();
|
||||||
@@ -106,7 +111,26 @@ int main(void)
|
|||||||
BootloaderInterfaceInit();
|
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
|
#ifndef NO_WIFI
|
||||||
@@ -152,6 +176,8 @@ int main(void)
|
|||||||
mRetCode = 1;
|
mRetCode = 1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
while(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}
|
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
|
||||||
|
|
||||||
# Source Files Quoted if spaced
|
# 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
|
# 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
|
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
|
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
|
# 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
|
# 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)
|
${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}../
|
@${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
|
else
|
||||||
${OBJECTDIR}/Source/ChaletduinoV2Board.o: Source/ChaletduinoV2Board.c nbproject/Makefile-${CND_CONF}.mk
|
${OBJECTDIR}/Source/ChaletduinoV2Board.o: Source/ChaletduinoV2Board.c nbproject/Makefile-${CND_CONF}.mk
|
||||||
@${MKDIR} "${OBJECTDIR}/Source"
|
@${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)
|
${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}../
|
@${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
|
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
|
default.languagetoolchain.version=2.41
|
||||||
ChaletDuino_775F512H_.languagetoolchain.version=1.33
|
ChaletDuino_775F512H_.languagetoolchain.version=1.33
|
||||||
default.Pack.dfplocation=C\:\\Users\\JF\\.mchp_packs\\Microchip\\PIC32MX_DFP\\1.2.228
|
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_
|
conf.ids=default,ChaletDuino_775F512H_,ChaletDuinoV2_775F512H_
|
||||||
default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v2.41\\bin
|
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
|
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
|
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
|
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
|
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=9db8f8a224aa17d0023ea7f468f871dc
|
||||||
|
|||||||
@@ -109,6 +109,7 @@
|
|||||||
<itemPath>Source/TC77.h</itemPath>
|
<itemPath>Source/TC77.h</itemPath>
|
||||||
<itemPath>Source/BootloaderProtocol.h</itemPath>
|
<itemPath>Source/BootloaderProtocol.h</itemPath>
|
||||||
<itemPath>Source/FlashMapping.h</itemPath>
|
<itemPath>Source/FlashMapping.h</itemPath>
|
||||||
|
<itemPath>Source/checksum.h</itemPath>
|
||||||
</logicalFolder>
|
</logicalFolder>
|
||||||
<logicalFolder name="LinkerScript"
|
<logicalFolder name="LinkerScript"
|
||||||
displayName="Linker Files"
|
displayName="Linker Files"
|
||||||
@@ -214,6 +215,7 @@
|
|||||||
<itemPath>Source/TemperatureSensor.c</itemPath>
|
<itemPath>Source/TemperatureSensor.c</itemPath>
|
||||||
<itemPath>Source/TC77.c</itemPath>
|
<itemPath>Source/TC77.c</itemPath>
|
||||||
<itemPath>Source/BootloaderProtocol.c</itemPath>
|
<itemPath>Source/BootloaderProtocol.c</itemPath>
|
||||||
|
<itemPath>Source/crc32.c</itemPath>
|
||||||
</logicalFolder>
|
</logicalFolder>
|
||||||
<logicalFolder name="ExternalFiles"
|
<logicalFolder name="ExternalFiles"
|
||||||
displayName="Important Files"
|
displayName="Important Files"
|
||||||
|
|||||||
@@ -1,9 +1,34 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
|
<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">
|
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
|
||||||
<group>
|
<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/BootloaderProtocol.c</file>
|
||||||
|
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/Terminal.c</file>
|
||||||
</group>
|
</group>
|
||||||
</open-files>
|
</open-files>
|
||||||
</project-private>
|
</project-private>
|
||||||
|
|||||||
+119504
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user