diff --git a/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer b/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer index 764bdadaa..e5f92d113 100755 Binary files a/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer and b/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer differ diff --git a/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c index d7f9e4f56..e7f914ca1 100644 --- a/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c @@ -15,6 +15,7 @@ #include "loadPattern.h" #include +#include #include #include #include // usleep @@ -93,6 +94,10 @@ void basictests() { LOG(logINFOBLUE, ("********* Chip Test Board Virtual Server *********\n")); #else LOG(logINFOBLUE, ("************* Chip Test Board Server *************\n")); + initError = enableBlackfinAMCExternalAccessExtension(initErrorMessage); + if (initError == FAIL) { + return; + } initError = defineGPIOpins(initErrorMessage); if (initError == FAIL) { return; @@ -438,6 +443,32 @@ uint32_t getDetectorIP() { return res; } +int enableBlackfinAMCExternalAccessExtension(char *mess) { + unsigned int value; + const char *file_path = BFIN_AMC_ACCESS_EXTENSION_FNAME; + FILE *file = fopen(file_path, "r"); + if (!file) { + strcpy(mess, "Failed to enable blackfin AMC access extension. Could " + "not read EBIU_AMBCTL1\n"); + LOG(logERROR, (mess)); + return FAIL; + } + fscanf(file, "%x", &value); + fclose(file); + + value |= BFIN_AMC_ACCESS_EXTENSION_ENA_VAL; + file = fopen(file_path, "w"); + if (!file) { + strcpy(mess, "Failed to enable blackfin AMC access extension. Could " + "not write EBIU_AMBCTL1\n"); + LOG(logERROR, (mess)); + return FAIL; + } + fprintf(file, "0x%x", value); + fclose(file); + return OK; +} + /* initialization */ void initControlServer() { diff --git a/slsDetectorServers/slsDetectorServer/include/blackfin.h b/slsDetectorServers/slsDetectorServer/include/blackfin.h index fef76ad48..672f58c57 100644 --- a/slsDetectorServers/slsDetectorServer/include/blackfin.h +++ b/slsDetectorServers/slsDetectorServer/include/blackfin.h @@ -5,6 +5,23 @@ #include #include +/** enable support for ARDY signal on interface to FPGA + * needed to properly translate avalon_mm_waitrequest in the CTB firmware + * https://www.analog.com/media/en/dsp-documentation/processor-manuals/bf537_hwr_Rev3.2.pdf + * page 274 + * */ +#define BFIN_EBIU_AMBCTL1_B2_ARDY_ENA_OFST (0) +#define BFIN_EBIU_AMBCTL1_B2_ARDY_ENA_MSK \ + (1 << BFIN_EBIU_AMBCTL1_B2_ARDY_ENA_OFST) +#define BFIN_EBIU_AMBCTL1_B2_ARDY_POL_OFST (1) +#define BFIN_EBIU_AMBCTL1_B2_ARDY_POL_MSK \ + (1 << BFIN_EBIU_AMBCTL1_B2_ARDY_POL_OFST) + +#define BFIN_AMC_ACCESS_EXTENSION_ENA_VAL \ + (BFIN_EBIU_AMBCTL1_B2_ARDY_ENA_MSK | BFIN_EBIU_AMBCTL1_B2_ARDY_POL_MSK) +#define BFIN_AMC_ACCESS_EXTENSION_FNAME \ + "/sys/kernel/debug/blackfin/ebiu_amc/EBIU_AMBCTL1" + /** I2C defines */ #define I2C_CLOCK_MHZ (131.25) diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h index f572252bd..8570456f3 100644 --- a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h +++ b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h @@ -113,6 +113,10 @@ void setModuleId(int modid); u_int64_t getDetectorMAC(); u_int32_t getDetectorIP(); +#if defined(CHIPTESTBOARDD) +int enableBlackfinAMCExternalAccessExtension(char *mess); +#endif + // initialization void initControlServer(); void initStopServer(); diff --git a/slsReceiverSoftware/src/DataProcessor.h b/slsReceiverSoftware/src/DataProcessor.h index e21d73c90..2f1c8f4ba 100644 --- a/slsReceiverSoftware/src/DataProcessor.h +++ b/slsReceiverSoftware/src/DataProcessor.h @@ -168,7 +168,7 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject { uint32_t streamingTimerInMs; uint32_t streamingStartFnum; uint32_t currentFreqCount{0}; - struct timespec timerbegin{}; + struct timespec timerbegin {}; bool framePadding; std::atomic startedFlag{false}; std::atomic firstIndex{0}; diff --git a/slsReceiverSoftware/src/GeneralData.h b/slsReceiverSoftware/src/GeneralData.h index 7147d0e2c..34a329542 100644 --- a/slsReceiverSoftware/src/GeneralData.h +++ b/slsReceiverSoftware/src/GeneralData.h @@ -63,8 +63,8 @@ class GeneralData { slsDetectorDefs::frameDiscardPolicy frameDiscardMode{ slsDetectorDefs::NO_DISCARD}; - GeneralData() {}; - virtual ~GeneralData() {}; + GeneralData(){}; + virtual ~GeneralData(){}; // Returns the pixel depth in byte, 4 bits being 0.5 byte float GetPixelDepth() { return float(dynamicRange) / 8; } diff --git a/slsReceiverSoftware/tests/test-ArrangeDataBasedOnBitList.cpp b/slsReceiverSoftware/tests/test-ArrangeDataBasedOnBitList.cpp index 7ad93b908..e8b586184 100644 --- a/slsReceiverSoftware/tests/test-ArrangeDataBasedOnBitList.cpp +++ b/slsReceiverSoftware/tests/test-ArrangeDataBasedOnBitList.cpp @@ -47,8 +47,8 @@ class GeneralDataTest : public GeneralData { // dummy DataProcessor class for testing class DataProcessorTest : public DataProcessor { public: - DataProcessorTest() : DataProcessor(0) {}; - ~DataProcessorTest() {}; + DataProcessorTest() : DataProcessor(0){}; + ~DataProcessorTest(){}; void ArrangeDbitData(size_t &size, char *data) { DataProcessor::ArrangeDbitData(size, data); } diff --git a/slsSupportLib/include/sls/versionAPI.h b/slsSupportLib/include/sls/versionAPI.h index b9a1d824d..b6f8df9b3 100644 --- a/slsSupportLib/include/sls/versionAPI.h +++ b/slsSupportLib/include/sls/versionAPI.h @@ -3,10 +3,10 @@ /** API versions */ #define APILIB "developer 0x241122" #define APIRECEIVER "developer 0x241122" -#define APICTB "developer 0x250310" #define APIGOTTHARD2 "developer 0x250310" #define APIMOENCH "developer 0x250310" #define APIEIGER "developer 0x250310" #define APIXILINXCTB "developer 0x250311" #define APIJUNGFRAU "developer 0x250318" #define APIMYTHEN3 "developer 0x250409" +#define APICTB "developer 0x250519"