diff --git a/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h b/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h index a104092050297690a75fc054ec889c46ec95d5af..37a218a66442ecce485ce1aefc4c98262c1585ee 100644 --- a/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h +++ b/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h @@ -35,7 +35,7 @@ namespace LOFAR { using GCF::TM::GCFPortInterface; namespace TBB { -static const int DRIVER_VERSION = 218; // 2.18 +static const int DRIVER_VERSION = 219; // TBBDriver V2.19 enum BoardStateT {noBoard, setImage1, image1Set, diff --git a/MAC/APL/PIC/TBB_Driver/src/StatusCmd.cc b/MAC/APL/PIC/TBB_Driver/src/StatusCmd.cc index d89082bab41164dd6c3643d030f8e8b5041b0373..dd1ac4f1053e3192115504c929c7c6fa7d8ed42b 100644 --- a/MAC/APL/PIC/TBB_Driver/src/StatusCmd.cc +++ b/MAC/APL/PIC/TBB_Driver/src/StatusCmd.cc @@ -112,7 +112,7 @@ void StatusCmd::saveTpAckEvent(GCFEvent& event) itsWatchDogMode[getBoardNr()] = ((tp_ack.info[5] >> 16) & 0xf); itsPgood[getBoardNr()] = tp_ack.info[0]; - LOG_INFO_STR(formatString("Status info = 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x", + LOG_DEBUG_STR(formatString("Status info = 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x", tp_ack.info[0], tp_ack.info[5], tp_ack.info[6], tp_ack.info[7], tp_ack.info[8], tp_ack.info[9])); } diff --git a/MAC/APL/PIC/TBB_Driver/src/WritefCmd.cc b/MAC/APL/PIC/TBB_Driver/src/WritefCmd.cc index f7f1651ad138f7eb3102362d57b71e99987697fb..491599bb3008ffd1b2f39b9de41023e3fbde04cb 100644 --- a/MAC/APL/PIC/TBB_Driver/src/WritefCmd.cc +++ b/MAC/APL/PIC/TBB_Driver/src/WritefCmd.cc @@ -254,7 +254,7 @@ void WritefCmd::saveTpAckEvent(GCFEvent& event) TPErasefAckEvent tp_ack(event); LOG_DEBUG_STR(formatString("Received ErasefAck from boardnr[%d]", getBoardNr())); if (tp_ack.status != 0) { - setStatus(0, (TBB_FLASH_ERROR | (tp_ack.status << 24))); + setStatus(0, (TBB_FLASH_ERASE_ERROR | (tp_ack.status << 24))); setDone(true); } else { itsSector++; @@ -268,7 +268,7 @@ void WritefCmd::saveTpAckEvent(GCFEvent& event) TPWritefAckEvent tp_ack(event); LOG_DEBUG_STR(formatString("Received WritefAck from boardnr[%d]", getBoardNr())); if (tp_ack.status != 0) { - setStatus(0, (TBB_FLASH_ERROR | (tp_ack.status << 24))); + setStatus(0, (TBB_FLASH_WRITE_ERROR | (tp_ack.status << 24))); setDone(true); } else { itsBlock++; @@ -287,7 +287,7 @@ void WritefCmd::saveTpAckEvent(GCFEvent& event) TPReadfAckEvent tp_ack(event); LOG_DEBUG_STR(formatString("Received ReadfAck from boardnr[%d]", getBoardNr())); if (tp_ack.status != 0) { - setStatus(0, (TBB_FLASH_ERROR | (tp_ack.status << 24))); + setStatus(0, (TBB_FLASH_VERIFY_ERROR | (tp_ack.status << 24))); if (itsImage == 0) { itsStage = protect; } else { @@ -295,15 +295,21 @@ void WritefCmd::saveTpAckEvent(GCFEvent& event) } } else { for (int i = 0; i < (TS->flashBlockSize() / 4); i++) { + testdata = static_cast<uint32>(itsImageData[itsDataPtr]) + + (static_cast<uint32>(itsImageData[itsDataPtr+1]) << 8) + + (static_cast<uint32>(itsImageData[itsDataPtr+2]) << 16) + + (static_cast<uint32>(itsImageData[itsDataPtr+3]) << 24); + itsDataPtr += 4; + /* testdata = itsImageData[itsDataPtr]; itsDataPtr++; testdata |= (itsImageData[itsDataPtr] << 8); itsDataPtr++; testdata |= (itsImageData[itsDataPtr] << 16); itsDataPtr++; testdata |= (itsImageData[itsDataPtr] << 24); itsDataPtr++; - + */ if (tp_ack.data[i] != testdata) { LOG_DEBUG_STR(formatString("block(%d) uint32(%d) NOT same 0x%08X 0x%08X (WritefCmd(verify_flash stage))", itsBlock,i,tp_ack.data[i],testdata)); - setStatus(0, TBB_FLASH_ERROR); + setStatus(0, TBB_FLASH_VERIFY_ERROR); if (itsImage == 0) { itsStage = protect; } else { diff --git a/MAC/APL/PIC/TBB_Driver/src/WritefCmd.h b/MAC/APL/PIC/TBB_Driver/src/WritefCmd.h index 7c1c1f57039f43fb38f6f332eb9f1ec53512c128..8d5afc102fc87b74fbfa4de210405634b1f0670f 100644 --- a/MAC/APL/PIC/TBB_Driver/src/WritefCmd.h +++ b/MAC/APL/PIC/TBB_Driver/src/WritefCmd.h @@ -66,16 +66,16 @@ public: private: TbbSettings *TS; - flashStage itsStage; - int32 itsImage; - int32 itsSector; - int32 itsBlock; - int32 itsImageSize; - int32 itsDataPtr; - char itsFileNameTp[64]; - char itsFileNameMp[64]; - uint32 itsPassword; - uint8 *itsImageData; // data from hex files + flashStage itsStage; + int32 itsImage; + int32 itsSector; + int32 itsBlock; + int32 itsImageSize; + int32 itsDataPtr; + char itsFileNameTp[64]; + char itsFileNameMp[64]; + uint32 itsPassword; + uint8 *itsImageData; // data from hex files }; } // end TBB namespace diff --git a/MAC/APL/PIC/TBB_Driver/src/tbbctl.h b/MAC/APL/PIC/TBB_Driver/src/tbbctl.h index e2e378120ef5a50582b2ff6b80ddca631d4b6f3f..44b563951468e071843b3bb82d2893657da73644 100644 --- a/MAC/APL/PIC/TBB_Driver/src/tbbctl.h +++ b/MAC/APL/PIC/TBB_Driver/src/tbbctl.h @@ -44,7 +44,7 @@ namespace LOFAR { GCFTimerPort* itsCmdTimer; -static const int TBBCTL_VERSION = 215; +static const int TBBCTL_VERSION = 219; // tbbctl V2.19 // MAX_N_TBBOARDS and MAX_N_RCUS come from TBB_protocol.ph @@ -142,8 +142,10 @@ public: case TBB_TIME_OUT : str = "time-out"; break; case TBB_BUSY : str = "driver busy"; break; case TBB_FLASH_FILE_NOT_FIND : str = "hex files not found"; break; - case TBB_FLASH_ERROR : str = "flash error"; break; - case TBB_FLASH_BAD_PASSWORD : str = "bad password for image 0"; break; + case TBB_FLASH_BAD_PASSWORD : str = "bad password for image 0"; break; + case TBB_FLASH_ERASE_ERROR : str = "flash erase error"; break; + case TBB_FLASH_WRITE_ERROR : str = "flash write error"; break; + case TBB_FLASH_VERIFY_ERROR : str = "flash verify error"; break; case TBB_CH_NOT_FREE : str = "channel not free"; break; case TBB_CH_NOT_ALLOCATED : str = "channel not allocated"; break; case TBB_CH_NOT_STOPPED : str = "channel not stopped"; break;