Index: firmware/App/Common.h =================================================================== diff -u -r012573b1913d1bfd2357acfadcad6bb20b295ad9 -rb8160225a28a2ba4d6dff4d0433e55465c737a14 --- firmware/App/Common.h (.../Common.h) (revision 012573b1913d1bfd2357acfadcad6bb20b295ad9) +++ firmware/App/Common.h (.../Common.h) (revision b8160225a28a2ba4d6dff4d0433e55465c737a14) @@ -128,16 +128,6 @@ NUM_OF_ACK_NACK } ACK_NACK_STATUS_T; -typedef enum -{ - FPGA_UPDATE_NOT_READY = 0, - FPGA_UPDATE_READY, - FPGA_UPDATE_FIFO_FULL, - FPGA_UPDATE_BUSY, - FPGA_UPDATE_FAILED, - NUM_OF_FPGA_FLASH_STATE, -} FPGA_FLASH_STATE_T; - static const SW_UPDATE_CAN_MAIL_BOX_T RECEIVE_MSG_ID[ NUM_OF_FW_STACKS ] = { SW_UPDATE_TD_UPDATE, Index: firmware/App/Services/Download.c =================================================================== diff -u -rfc99f47309c9d96f73a2d4696b42d6d302f334a7 -rb8160225a28a2ba4d6dff4d0433e55465c737a14 --- firmware/App/Services/Download.c (.../Download.c) (revision fc99f47309c9d96f73a2d4696b42d6d302f334a7) +++ firmware/App/Services/Download.c (.../Download.c) (revision b8160225a28a2ba4d6dff4d0433e55465c737a14) @@ -41,7 +41,7 @@ { U08 msgID; U08 updateDest; - U16 cyberIndex; + U16 updatePayloadLen; U32 msgCRC; U08 SWUpdateBuffer[ SW_UPDATE_FLASH_BUFFER_SIZE ]; } SW_UPDATE_RCV_STATUS_T; @@ -119,14 +119,13 @@ getCommBuffer( mailBox, (U08*)&SWUpdateCmdStatus, sizeof( SW_UPDATE_CMD_STATUS_T ) ); - BOOL status = FALSE; BOOL hasCRCPassed = FALSE; ACK_NACK_STATUS_T ackStatus = NACK; U32 calcCRC = 0; U08 msgID = SWUpdateCmdStatus.msgID; SW_UPDATE_DESINTATION_T dest = (SW_UPDATE_DESINTATION_T)( SWUpdateCmdStatus.updateCmd >> SHIFT_BITS_TO_GET_TARGET ); // TODO add more logic for other stacks - calcCRC = crc32( calcCRC, (U08*)&SWUpdateCmdStatus, MAX_CRC_CALC_DATA_SIZE ); + calcCRC = crc32( calcCRC, (U08*)&SWUpdateCmdStatus, sizeof( SW_UPDATE_CMD_STATUS_T ) - sizeof( U32 ) ); hasCRCPassed = ( SWUpdateCmdStatus.msgCRC == calcCRC ? TRUE : FALSE ); // TODO remove @@ -145,7 +144,7 @@ } prepareResponseMessage( msgID, ackStatus, &resp ); - status = sendAckNackStatusFromFirmware( (U08*)&resp ); + sendAckNackStatusFromFirmware( (U08*)&resp ); clearCommBuffer( mailBox ); } } @@ -157,6 +156,7 @@ if ( bytesInBuffer == NUM_OF_CAN_BYTES_FOR_UPDATE ) { SW_UPDATE_RESP_STATUS_T resp; + U08 bufferWithNoCRC[ SW_UPDATE_FLASH_BUFFER_SIZE + sizeof( U32 ) ]; BOOL status = FALSE; U32 calcCRC = 0; @@ -165,7 +165,10 @@ getCommBuffer( mailBox, (U08*)&SWUpdateRCVStatus, NUM_OF_CAN_BYTES_FOR_UPDATE ); - calcCRC = crc32( calcCRC, SWUpdateRCVStatus.SWUpdateBuffer, MAX_CRC_CALC_DATA_SIZE ); // TODO fix the CRC length + memcpy( bufferWithNoCRC, (U08*)&SWUpdateRCVStatus, sizeof( U32 ) ); + memcpy( &bufferWithNoCRC[ sizeof( U32 ) ], SWUpdateRCVStatus.SWUpdateBuffer, sizeof( SWUpdateRCVStatus.SWUpdateBuffer ) ); + + calcCRC = crc32( calcCRC, bufferWithNoCRC, sizeof( bufferWithNoCRC ) ); hasCRCPassed = ( SWUpdateRCVStatus.msgCRC == calcCRC ? TRUE : FALSE ); // TODO remove @@ -219,7 +222,7 @@ ACK_NACK_STATUS_T ackStatus = ACK; BOOL status = FALSE; - if ( SWUpdateRCVStatus.cyberIndex != SW_UPDATE_FINAL_MSG_INDEX ) + if ( SWUpdateRCVStatus.updatePayloadLen != SW_UPDATE_FINAL_MSG_INDEX ) { _disable_IRQ(); status = handleUpdatingFlash( SWUpdateRCVStatus.SWUpdateBuffer ); @@ -238,26 +241,14 @@ { ACK_NACK_STATUS_T ackStatus = NACK; - if ( SWUpdateRCVStatus.cyberIndex != SW_UPDATE_FINAL_MSG_INDEX ) + if ( SWUpdateRCVStatus.updatePayloadLen != SW_UPDATE_FINAL_MSG_INDEX ) { - sizeToWrite = SW_UPDATE_FLASH_BUFFER_SIZE; + sizeToWrite = SWUpdateRCVStatus.updatePayloadLen; + REMOVETHEVAR += sizeToWrite; - BOOL done = FALSE; - - if ( ( 1596144 - REMOVETHEVAR < SW_UPDATE_FLASH_BUFFER_SIZE ) && ( REMOVETHEVAR != 0 ) ) - { - sizeToWrite = 1596144 - REMOVETHEVAR; - REMOVETHEVAR += sizeToWrite; - done = TRUE; - } - else - { - REMOVETHEVAR += SW_UPDATE_FLASH_BUFFER_SIZE; - } - signalFPGAToWriteToFlash( SWUpdateRCVStatus.SWUpdateBuffer, sizeToWrite ); - if ( TRUE == done ) + if ( sizeToWrite < SW_UPDATE_FLASH_BUFFER_SIZE ) { signalFPGAToSelfConfigure(); } Index: firmware/App/Services/FPGA.c =================================================================== diff -u -rfc99f47309c9d96f73a2d4696b42d6d302f334a7 -rb8160225a28a2ba4d6dff4d0433e55465c737a14 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision fc99f47309c9d96f73a2d4696b42d6d302f334a7) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision b8160225a28a2ba4d6dff4d0433e55465c737a14) @@ -126,7 +126,6 @@ BOOL isFPGAFlashComplete; U16 flashStatusBits; U32 preSelfConfigureStartTimeMS; - FPGA_FLASH_STATE_T fpgaFlashState; // TODO remove U32 startTime; } FPGA_FLASH_STATUS_T; @@ -335,8 +334,6 @@ memcpy( fpgaDataToWriteBuffer, data, len ); enqueue( FPGA_FLASH_WRITE_DATA ); - - fpgaFlashStatus.fpgaFlashState = FPGA_UPDATE_BUSY; } } @@ -494,7 +491,6 @@ U16 fifoStatus = MAKE_WORD_OF_BYTES( fpgaReadResponseBuffer[ FPGA_FLASH_STATUS_INDEX + sizeof( U16 ) ], fpgaReadResponseBuffer[ FPGA_FLASH_STATUS_INDEX + sizeof( U16 ) - 1 ] ); - fpgaFlashStatus.fpgaFlashState = FPGA_UPDATE_NOT_READY; fpgaFlashStatus.fifoRemainingCount = FPGA_FIFO_SIZE_BYTES - ( FPGA_FIFO_COUNT_MASK & fifoStatus ); fpgaFlashStatus.hasUpdateRegsBeenRqstd = FALSE; fpgaFlashStatus.flashStatusBits = flashStatus; @@ -779,7 +775,6 @@ { if ( FPGA_FLASH_WRITE_DATA == fpgaJobsQStatus.fpgaCurrentJob ) { - fpgaFlashStatus.fpgaFlashState = FPGA_UPDATE_READY; sendFPGAAckNackStatus( ACK ); tempACkStatus = ACK; Index: firmware/App/Services/Utilities.c =================================================================== diff -u -rf100557efc2f7916054a63bbafb187d8017914d0 -rb8160225a28a2ba4d6dff4d0433e55465c737a14 --- firmware/App/Services/Utilities.c (.../Utilities.c) (revision f100557efc2f7916054a63bbafb187d8017914d0) +++ firmware/App/Services/Utilities.c (.../Utilities.c) (revision b8160225a28a2ba4d6dff4d0433e55465c737a14) @@ -144,8 +144,6 @@ return crc; } - - U32 crc32( U32 initialValue, U08 *address, U32 len ) { U32 crc = initialValue;