Bootloader CRC fonctionnel
This commit is contained in:
parent
dd3e8a4a29
commit
0dc94d6704
@ -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,13 +404,29 @@ 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");
|
||||||
|
|
||||||
|
if(BootloaderCheckFlashBootloaderData() == RET_OK)
|
||||||
|
{
|
||||||
BootloaderInterfaceState = BOOTLOADER_ACTIVE_STATE;
|
BootloaderInterfaceState = BOOTLOADER_ACTIVE_STATE;
|
||||||
|
//BootloaderProtocolSendACK(BOOTLOADER_UPLOAD_FINISHED_RESPONSE);
|
||||||
|
BootloaderProtocolSendFirmwareUploadResult(BOOTLOADER_UPLOAD_SUCCESS);
|
||||||
FirmwareUploaded = 1;
|
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:
|
||||||
{
|
{
|
||||||
//TODO invalidate data in Flash
|
//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;
|
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)
|
||||||
|
|||||||
94
ChaletLora.X/Source/checksum.h
Normal file
94
ChaletLora.X/Source/checksum.h
Normal file
@ -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
|
||||||
131
ChaletLora.X/Source/crc32.c
Normal file
131
ChaletLora.X/Source/crc32.c
Normal file
@ -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.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
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
teraterm.log
Normal file
119504
teraterm.log
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user