Bootloader fonctionnel

This commit is contained in:
jfmartel 2021-09-24 11:36:06 -04:00
parent b48426afc4
commit d9c2cfdc19
12 changed files with 10450 additions and 10367 deletions

View File

@ -11,6 +11,7 @@
#include "NetworkProtocol.h" #include "NetworkProtocol.h"
#include "Syslog.h" #include "Syslog.h"
#include "checksum.h" #include "checksum.h"
#include "FlashMapping.h"
#define BOOTLOADER_FLASH_ERASE_POLL_TIMEOUT 25//100 //ms #define BOOTLOADER_FLASH_ERASE_POLL_TIMEOUT 25//100 //ms
@ -91,7 +92,7 @@ void BootloaderExecuteCmd(char Cmd,bool CRCValid)
} }
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");
BootloaderInterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_NEW_DATA_CHUNK_CMD); BootloaderInterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_NEW_DATA_CHUNK_CMD);
break; break;
} }
@ -210,11 +211,21 @@ void BootloaderInterfaceStateMachine(int Event, int Param)
} }
case BOOTLOADER_SM_EXECUTE_UPGRAGE_CMD: case BOOTLOADER_SM_EXECUTE_UPGRAGE_CMD:
{ {
if(FirmwareUploaded == 1) if(BootloaderCheckFlashBootloaderData() == RET_OK)
{ {
//TODO: Do that!
BootloaderProtocolSendACK(BOOTLOADER_EXECUTE_UPGRADE_RESPONSE); BootloaderProtocolSendACK(BOOTLOADER_EXECUTE_UPGRADE_RESPONSE);
printf("Bootloader will now upgrade and reboot!!\n"); printf("Bootloader will now upgrade and reboot!!\n");
char Flags[2];
Flags[BOOTLOADER_FLAGS_ACTION_FLAG_INDEX] = BOOTLOADER_ACTION_FLASH_FIRMWARE_VALUE;
Flags[BOOTLOADER_FLAGS_ACTION_VALIDATOR_INDEX] = BOOTLOADER_FLASH_FIRMWARE_VALIDATOR;
SPIFlashWriteBuffer(Flags,2,FLASH_BTLDR_FLAGS_ADDRESS);
Sleep(100);
TurnOFFWiFi();
Sleep(100);
SoftReset();
} }
else else
{ {
@ -235,6 +246,29 @@ void BootloaderInterfaceStateMachine(int Event, int Param)
} }
break; break;
} }
case BOOTLOADER_SM_GET_FIRMWARE_DATA_CMD:
{
char Response[21];
memset(Response,0xFF,sizeof(Response));
if(BootloaderCheckFlashBootloaderData() != RET_OK)
{
Response[0] = 0;
}
else
{
Response[0] = 1;
BootloaderIntToBytes(&Response[1],mStoredBootloaderInfo.Firmwareflags);
BootloaderIntToBytes(&Response[1],mStoredBootloaderInfo.NbRecords);
BootloaderIntToBytes(&Response[1],mStoredBootloaderInfo.FirmwareSize);
BootloaderIntToBytes(&Response[1],mStoredBootloaderInfo.Versioncode);
BootloaderIntToBytes(&Response[1],mStoredBootloaderInfo.DataCRC32);
}
BootloaderProtocolSendStoredFirmwareInfoResponse(Response,sizeof(Response));
break;
}
default: default:
{ {
//SEND NACK //SEND NACK
@ -355,7 +389,7 @@ void BootloaderInterfaceStateMachine(int Event, int Param)
break; break;
} }
} }
break; break;
} }
case BOOTLOADER_NEW_CMD_EVENT: case BOOTLOADER_NEW_CMD_EVENT:
@ -373,25 +407,25 @@ void BootloaderInterfaceStateMachine(int Event, int Param)
unsigned 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]); DataChunkIndex = BootloaderBytesToInt(&BootloaderBuffer[0]);
// DataChunkSize = BootloaderBuffer[4]; // DataChunkSize = BootloaderBuffer[4];
// DataChunkSize <<= 8; // DataChunkSize <<= 8;
// DataChunkSize += BootloaderBuffer[5]; // DataChunkSize += BootloaderBuffer[5];
// DataChunkSize <<= 8; // DataChunkSize <<= 8;
// DataChunkSize += BootloaderBuffer[6]; // DataChunkSize += BootloaderBuffer[6];
// DataChunkSize <<= 8; // DataChunkSize <<= 8;
// DataChunkSize += BootloaderBuffer[7]; // DataChunkSize += BootloaderBuffer[7];
DataChunkSize = BootloaderBytesToInt(&BootloaderBuffer[4]); DataChunkSize = BootloaderBytesToInt(&BootloaderBuffer[4]);
BootloaderFlashWriteDataPtr = &BootloaderBuffer[8]; BootloaderFlashWriteDataPtr = &BootloaderBuffer[8];
//Check CRC //Check CRC
@ -436,7 +470,7 @@ void BootloaderInterfaceStateMachine(int Event, int Param)
else else
{ {
printf("Firmware integrity check failed. Going back to STANDBY state.\n"); printf("Firmware integrity check failed. Going back to STANDBY state.\n");
// BootloaderProtocolSendNACK(BOOTLOADER_UPLOAD_FINISHED_RESPONSE); // BootloaderProtocolSendNACK(BOOTLOADER_UPLOAD_FINISHED_RESPONSE);
BootloaderProtocolSendFirmwareUploadResult(BOOTLOADER_UPLOAD_FAILED_FLASH_VERIFICATION_ERROR); BootloaderProtocolSendFirmwareUploadResult(BOOTLOADER_UPLOAD_FAILED_FLASH_VERIFICATION_ERROR);
BootloaderResetStateMachine(); BootloaderResetStateMachine();
FirmwareUploaded = 0; FirmwareUploaded = 0;
@ -569,8 +603,8 @@ void BootloaderActivateBootloader()
void BootloaderDeactivateBootloader() void BootloaderDeactivateBootloader()
{ {
BootloaderResetStateMachine(); BootloaderResetStateMachine();
// CloseBootloaderServer(); // CloseBootloaderServer();
// BootloaderIterfaceStateMachine(BOOTLOADER_SM_ABORT_CMD,0); // BootloaderIterfaceStateMachine(BOOTLOADER_SM_ABORT_CMD,0);
} }
int BootloaderFlashEraseStateMachine(int event) int BootloaderFlashEraseStateMachine(int event)
@ -671,11 +705,11 @@ int BootloaderFlashWriteStateMachine(int event)
if(event == BOOTLOADER_FLASH_WRITE_SM_TICK_EVENT) if(event == BOOTLOADER_FLASH_WRITE_SM_TICK_EVENT)
{ {
//TODO: timeout //TODO: timeout
// return BOOTLOADER_FLASH_WRITE_ERROR_RES; // return BOOTLOADER_FLASH_WRITE_ERROR_RES;
} }
else if(event == BOOTLOADER_FLASH_WRITE_SM_NEW_BUFFER_EVENT) else if(event == BOOTLOADER_FLASH_WRITE_SM_NEW_BUFFER_EVENT)
{ {
// printf("Starting writing data to Flash\nFlash Address : Data\n"); // 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; return BOOTLOADER_FLASH_WRITING_RES;
@ -716,15 +750,15 @@ int BootloaderFlashWriteStateMachine(int event)
return BOOTLOADER_FLASH_WRITE_ERROR_RES; return BOOTLOADER_FLASH_WRITE_ERROR_RES;
} }
} }
BootloaderFirmwareChunkWriteCount++; BootloaderFirmwareChunkWriteCount++;
} }
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_WAIT_FOR_BYTE_DONE; BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_WAIT_FOR_BYTE_DONE;
return BOOTLOADER_FLASH_WRITING_RES; return BOOTLOADER_FLASH_WRITING_RES;
// BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_STANDBY_STATE; // BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_STANDBY_STATE;
// return BOOTLOADER_FLASH_WRITE_FINISHED_RES; // return BOOTLOADER_FLASH_WRITE_FINISHED_RES;
break; break;
@ -735,15 +769,15 @@ int BootloaderFlashWriteStateMachine(int event)
{ {
BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_STANDBY_STATE; BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_STANDBY_STATE;
return BOOTLOADER_FLASH_WRITE_FINISHED_RES; return BOOTLOADER_FLASH_WRITE_FINISHED_RES;
// if(SyslogIsBufferEmpty() == RET_OK) // if(SyslogIsBufferEmpty() == RET_OK)
// { // {
// BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_STANDBY_STATE; // BootloaderFlashWriteState = BOOTLOADER_FLASH_WRITE_STANDBY_STATE;
// return BOOTLOADER_FLASH_WRITE_FINISHED_RES; // return BOOTLOADER_FLASH_WRITE_FINISHED_RES;
// } // }
// else // else
// { // {
// return BOOTLOADER_FLASH_WRITING_RES; // return BOOTLOADER_FLASH_WRITING_RES;
// } // }
} }
break; break;
} }
@ -791,18 +825,23 @@ int BootloaderCheckFlashBootloaderData()
VersionCode = BootloaderBytesToInt(&FlashData[16]); VersionCode = BootloaderBytesToInt(&FlashData[16]);
CRC32 = BootloaderBytesToInt(&FlashData[20]); CRC32 = BootloaderBytesToInt(&FlashData[20]);
mStoredBootloaderInfo.Firmwareflags = FirmwareFlags;
mStoredBootloaderInfo.NbRecords = NbRecords;
mStoredBootloaderInfo.FirmwareSize = FirmwareSize;
mStoredBootloaderInfo.Versioncode = VersionCode;
mStoredBootloaderInfo.DataCRC32 = CRC32;
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); //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) if(FileHeaderCode != BOOTLOADER_FILE_HEADER_CODE)
{ {
printf("Invalid file header code, aborting\n"); // printf("Invalid file header code, aborting\n");
return RET_ERROR; return RET_ERROR;
} }
if(NbRecords == 0) if(NbRecords == 0)
{ {
printf("No records in file (NbRecords = 0), aborting\n"); // printf("No records in file (NbRecords = 0), aborting\n");
return RET_ERROR; return RET_ERROR;
} }
@ -820,31 +859,31 @@ int BootloaderCheckFlashBootloaderData()
RecSize = BootloaderBytesToInt(&FlashData[4]); RecSize = BootloaderBytesToInt(&FlashData[4]);
RecStartAddress = BootloaderBytesToInt(&FlashData[8]); RecStartAddress = BootloaderBytesToInt(&FlashData[8]);
FlashAddress += 12; FlashAddress += 12;
if(RecHeader != BOOTLOADER_RECORD_HEADER_CODE) if(RecHeader != BOOTLOADER_RECORD_HEADER_CODE)
{ {
printf("Error in record #%d. Invalid header code : [0x%x]\n",CurRecord,RecHeader); // printf("Error in record #%d. Invalid header code : [0x%x]\n",CurRecord,RecHeader);
return RET_ERROR; return RET_ERROR;
} }
if(RecSize == 0) if(RecSize == 0)
{ {
printf("Error in record #%d. Invalid record size (RecordSize = 0) \n"); // printf("Error in record #%d. Invalid record size (RecordSize = 0) \n");
return RET_ERROR; return RET_ERROR;
} }
// printf("Record #%d OK! Header:[0x%x] - Size:[%d] - Start Address:[0x%x]\n",CurRecord,RecHeader,RecSize,RecStartAddress); // printf("Record #%d OK! Header:[0x%x] - Size:[%d] - Start Address:[0x%x]\n",CurRecord,RecHeader,RecSize,RecStartAddress);
// while(SyslogIsBufferEmpty() == RET_ERROR) // while(SyslogIsBufferEmpty() == RET_ERROR)
// { // {
// SyslogTick(); // SyslogTick();
// TickWiFi(); // TickWiFi();
// } // }
CurRecord++; CurRecord++;
if(CurRecord == NbRecords) if(CurRecord == NbRecords)
{ {
// Done = true; // Done = true;
printf("All records checked OK! Computing CRC...\n"); // printf("All records checked OK! Computing CRC...\n");
Done = true; Done = true;
break; break;
//return RET_OK; //return RET_OK;
@ -854,7 +893,7 @@ int BootloaderCheckFlashBootloaderData()
FlashAddress += RecSize; FlashAddress += RecSize;
} }
} }
//Now, compute whole data CRC //Now, compute whole data CRC
FlashAddress = FLASH_BTLDR_FIRMWARE_START_ADDRESS + FLASH_BTLDR_HEADER_SIZE; FlashAddress = FLASH_BTLDR_FIRMWARE_START_ADDRESS + FLASH_BTLDR_HEADER_SIZE;
char Byte; char Byte;
@ -868,14 +907,14 @@ int BootloaderCheckFlashBootloaderData()
if(ComputedCRC32 == CRC32) if(ComputedCRC32 == CRC32)
{ {
printf("CRC32 matches. Computed:[0x%x] - Expected:[0x%x]\n",ComputedCRC32,CRC32); // printf("CRC32 matches. Computed:[0x%x] - Expected:[0x%x]\n",ComputedCRC32,CRC32);
printf("Flash check success. Firmware is valid\n"); // printf("Flash check success. Firmware is valid\n");
return RET_OK; return RET_OK;
} }
else else
{ {
printf("CRC32 mismatch. Computed:[0x%x] - Expected:[0x%x]\n",ComputedCRC32,CRC32); // printf("CRC32 mismatch. Computed:[0x%x] - Expected:[0x%x]\n",ComputedCRC32,CRC32);
printf("Flash check failed.\n"); // printf("Flash check failed.\n");
return RET_ERROR; return RET_ERROR;
} }
@ -916,4 +955,24 @@ int BootloaderBytesToInt(unsigned char *Bytes)
Output += Bytes[3]; Output += Bytes[3];
return Output; return Output;
}
int BootloaderIntToBytes(unsigned char *Buf, unsigned int Input)
{
if(Buf == 0)
{
return 0;
}
Buf[3] = (unsigned char)(Input & 0xFF);
Input >>= 8;
Buf[2] = (unsigned char)(Input & 0xFF);
Input >>= 8;
Buf[1] = (unsigned char)(Input & 0xFF);
Input >>= 8;
Buf[0] = (unsigned char)(Input & 0xFF);
Input >>= 8;
return 1;
} }

View File

@ -12,6 +12,47 @@
#define BOOTLOADER_FILE_HEADER_CODE (int)0xBAADBEEF #define BOOTLOADER_FILE_HEADER_CODE (int)0xBAADBEEF
#define BOOTLOADER_RECORD_HEADER_CODE (int)0xDEADBEEF #define BOOTLOADER_RECORD_HEADER_CODE (int)0xDEADBEEF
#define BOOTLOADER_FLASH_FIRMWARE_VALIDATOR 0xA8
#define BOOTLOADER_ENTER_UPLOAD_MODE_VALIDATOR 0x5A
typedef struct
{
unsigned char BootloaderAction;
unsigned char BootloaderActionValidator;
}stBootloaderFlags_t;
typedef struct
{
unsigned int Firmwareflags;
unsigned int NbRecords;
unsigned int FirmwareSize;
unsigned int Versioncode;
unsigned int DataCRC32;
}stStoredBootloaderInfo;
extern stBootloaderFlags_t mBootloaderFlags;
stStoredBootloaderInfo mStoredBootloaderInfo;
enum eBootloaderFlagsIndex
{
BOOTLOADER_FLAGS_ACTION_FLAG_INDEX = 0,
BOOTLOADER_FLAGS_ACTION_VALIDATOR_INDEX,
BOOTLOADER_FLAGS_MAX_INDEX = 12
};
enum eBootloaderActionFlagValues
{
BOOTLOADER_ACTION_JUMP_TO_APP_VALUE = 0,
BOOTLOADER_ACTION_FLASH_FIRMWARE_VALUE = 1,
BOOTLOADER_ACTION_ENTER_UPDATE_MODE_VALUE = 2,
BOOTLOADER_ACTION_MAX_VALUE
};
enum eBootloaderStates enum eBootloaderStates
{ {
@ -105,7 +146,8 @@ enum eBootloaderStateMachineCmds
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 BOOTLOADER_SM_CHECK_FLASH_CMD,
BOOTLOADER_SM_GET_FIRMWARE_DATA_CMD
}; };
@ -132,7 +174,7 @@ int BootloaderCheckFlashBootloaderData();
int BootloaderPrintFlashData(); int BootloaderPrintFlashData();
int BootloaderBytesToInt(unsigned char *Bytes); int BootloaderBytesToInt(unsigned char *Bytes);
int BootloaderIntToBytes(unsigned char *Buf, unsigned int Input);

View File

@ -301,10 +301,10 @@ void BootloaderProtocolSendFrame(unsigned char Cmd, int Size)
nibble = (char)(CRC &0x000000FF); nibble = (char)(CRC &0x000000FF);
*CRCPtr++ = nibble; *CRCPtr++ = nibble;
// *CRCPtr++ = 0xBA; // *CRCPtr++ = 0xBA;
// *CRCPtr++ = 0xAD; // *CRCPtr++ = 0xAD;
// *CRCPtr++ = 0xCA; // *CRCPtr++ = 0xCA;
// *CRCPtr++ = 0xFE; // *CRCPtr++ = 0xFE;
SendBootloaderData(&BootloaderBuffer[0],Size + PROTOCOL_INFO_DATA_SIZE); SendBootloaderData(&BootloaderBuffer[0],Size + PROTOCOL_INFO_DATA_SIZE);
} }
@ -409,4 +409,18 @@ void BootloaderProtocolSendFlashCheckResult(char Result)
*DataPtr++ = Result; *DataPtr++ = Result;
BootloaderProtocolSendFrame(BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_RESPONSE,1); BootloaderProtocolSendFrame(BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_RESPONSE,1);
}
void BootloaderProtocolSendStoredFirmwareInfoResponse(unsigned char* FirmwareData, int size)
{
char* DataPtr = BootloaderProtocolGetDataBufferPtr();
int i = 0;
for(i = 0; i < size; i++)
{
*DataPtr++ = *FirmwareData++;
}
BootloaderProtocolSendFrame(BOOTLOADER_GET_STORED_FIRMWARE_INFO_RESPONSE,size);
} }

View File

@ -118,5 +118,6 @@ void BootloaderProtocolSendDataChunkResult(char ErrorCode, int ChunkValue);
void BootloaderProtocolSendBootloaderState(char State); void BootloaderProtocolSendBootloaderState(char State);
void BootloaderProtocolSendFirmwareUploadResult(char Result); void BootloaderProtocolSendFirmwareUploadResult(char Result);
void BootloaderProtocolSendFlashCheckResult(char Result); void BootloaderProtocolSendFlashCheckResult(char Result);
void BootloaderProtocolSendStoredFirmwareInfoResponse(unsigned char* FirmwareData, int size);
#endif #endif

View File

@ -20,6 +20,8 @@
#define FLASH_BTLDR_FIRMWARE_START_ADDRESS 0x180000 #define FLASH_BTLDR_FIRMWARE_START_ADDRESS 0x180000
#define FLASH_BTLDR_FIRMWARE_LAST_64K_SECTOR_ADD 0x1F0000 #define FLASH_BTLDR_FIRMWARE_LAST_64K_SECTOR_ADD 0x1F0000
#define FLASH_BTLDR_FLAGS_ADDRESS 0x000000
#define FLASH_BTLDR_HEADER_SIZE 24 #define FLASH_BTLDR_HEADER_SIZE 24

View File

@ -323,6 +323,8 @@ enum BOOTLOADER_CMDS
BOOTLOADER_SEND_FLASH_DATA_CHUNK_RESPONSE, BOOTLOADER_SEND_FLASH_DATA_CHUNK_RESPONSE,
BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_REQUEST, BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_REQUEST,
BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_RESPONSE, BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_RESPONSE,
BOOTLOADER_GET_STORED_FIRMWARE_INFO_REQUEST,
BOOTLOADER_GET_STORED_FIRMWARE_INFO_RESPONSE,
MAX_BOOTLOADER_CMD MAX_BOOTLOADER_CMD
}; };

View File

@ -1,5 +1,5 @@
# #
#Tue Sep 07 10:50:35 EDT 2021 #Mon Sep 20 15:45:16 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 @@ conf.ids=default,ChaletDuino_775F512H_,ChaletDuinoV2_795F512H_
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
ChaletDuinoV2_795F512H_.Pack.dfplocation=C\:\\Program Files (x86)\\Microchip\\MPLABX\\v5.40\\packs\\Microchip\\PIC32MX_DFP\\1.3.231 ChaletDuinoV2_795F512H_.Pack.dfplocation=C\:\\Program Files (x86)\\Microchip\\MPLABX\\v5.40\\packs\\Microchip\\PIC32MX_DFP\\1.3.231
configurations-xml=770efc8c94a6281a3a2c647b3673efaf configurations-xml=cd1eb0091a6192efa5b728f7adc16270
default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=a5745c99cb5a5032f17cfaf0ff720282 default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=a5745c99cb5a5032f17cfaf0ff720282
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=9db8f8a224aa17d0023ea7f468f871dc com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=9db8f8a224aa17d0023ea7f468f871dc
ChaletDuino_775F512H_.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v1.33\\bin ChaletDuino_775F512H_.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v1.33\\bin

View File

@ -114,8 +114,8 @@
<logicalFolder name="LinkerScript" <logicalFolder name="LinkerScript"
displayName="Linker Files" displayName="Linker Files"
projectFiles="true"> projectFiles="true">
<itemPath>elf32pic32mx.x</itemPath>
<itemPath>procdefs.ld</itemPath> <itemPath>procdefs.ld</itemPath>
<itemPath>elf32pic32mx.x</itemPath>
</logicalFolder> </logicalFolder>
<logicalFolder name="SourceFiles" <logicalFolder name="SourceFiles"
displayName="Source Files" displayName="Source Files"
@ -962,38 +962,6 @@
<C32Global> <C32Global>
</C32Global> </C32Global>
</item> </item>
<item path="elf32pic32mx.x" ex="true" overriding="false">
<C32>
</C32>
<C32-AR>
</C32-AR>
<C32-AS>
</C32-AS>
<C32-CO>
</C32-CO>
<C32-LD>
</C32-LD>
<C32CPP>
</C32CPP>
<C32Global>
</C32Global>
</item>
<item path="procdefs.ld" ex="true" overriding="false">
<C32>
</C32>
<C32-AR>
</C32-AR>
<C32-AS>
</C32-AS>
<C32-CO>
</C32-CO>
<C32-LD>
</C32-LD>
<C32CPP>
</C32CPP>
<C32Global>
</C32Global>
</item>
</conf> </conf>
<conf name="ChaletDuinoV2_795F512H_" type="2"> <conf name="ChaletDuinoV2_795F512H_" type="2">
<toolsSet> <toolsSet>
@ -1476,37 +1444,7 @@
<C32Global> <C32Global>
</C32Global> </C32Global>
</item> </item>
<item path="elf32pic32mx.x" ex="false" overriding="false"> <item path="procdefs.ld" ex="true" overriding="false">
<C32>
</C32>
<C32-AR>
</C32-AR>
<C32-AS>
</C32-AS>
<C32-CO>
</C32-CO>
<C32-LD>
</C32-LD>
<C32CPP>
</C32CPP>
<C32Global>
</C32Global>
</item>
<item path="procdefs.ld" ex="false" overriding="false">
<C32>
</C32>
<C32-AR>
</C32-AR>
<C32-AS>
</C32-AS>
<C32-CO>
</C32-CO>
<C32-LD>
</C32-LD>
<C32CPP>
</C32CPP>
<C32Global>
</C32Global>
</item> </item>
</conf> </conf>
</confs> </confs>

View File

@ -13,7 +13,7 @@ OPTIONAL("libmchp_peripheral_32MX795F512H.a")
* For interrupt vector handling * For interrupt vector handling
*************************************************************************/ *************************************************************************/
PROVIDE(_vector_spacing = 0x00000001); PROVIDE(_vector_spacing = 0x00000001);
_ebase_address = 0x9D002000; /*0x9FC01000;*/ _ebase_address = 0x9D004000; /*0x9FC01000;*/
/************************************************************************* /*************************************************************************
* Memory Address Equates * Memory Address Equates
@ -49,9 +49,14 @@ MEMORY
/*kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970*/ /*kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970*/
/*kexception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000*/ /*kexception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000*/
kseg0_program_mem (rx) : ORIGIN = 0x9D003800, LENGTH = 0x7C7FF /*App code. MAX address = 9D07FFFF */ /* kseg0_program_mem (rx) : ORIGIN = 0x9D003800, LENGTH = 0x7C7FF*/ /*App code. MAX address = 9D07FFFF */
kseg0_boot_mem : ORIGIN = 0x9D003000, LENGTH = 0x7F0 /* startup code */ /* kseg0_boot_mem : ORIGIN = 0x9D003000, LENGTH = 0x7F0*/ /* startup code */
exception_mem : ORIGIN = 0x9D002000, LENGTH = 0x1000 /* exception_mem : ORIGIN = 0x9D002000, LENGTH = 0x1000*/
kseg0_program_mem (rx) : ORIGIN = 0x9D005800, LENGTH = 0x7A7FF /*App code. MAX address = 9D07FFFF */
kseg0_boot_mem : ORIGIN = 0x9D005000, LENGTH = 0x7F0 /* startup code */
exception_mem : ORIGIN = 0x9D004000, LENGTH = 0x1000
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490 kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490
debug_exec_mem : ORIGIN = 0xBFC02000, LENGTH = 0xFF0 debug_exec_mem : ORIGIN = 0xBFC02000, LENGTH = 0xFF0
config3 : ORIGIN = 0xBFC02FF0, LENGTH = 0x4 config3 : ORIGIN = 0xBFC02FF0, LENGTH = 0x4