From 39cd82f0b8455fcfd684f8d1d6e7bf025676592e Mon Sep 17 00:00:00 2001 From: l_brueckner_m Date: Mon, 20 Apr 2015 18:20:02 +0200 Subject: [PATCH] Added Backend board FPGA temperature support --- slsDetectorSoftware/eigerDetectorServer/Beb.c | 32 ++++++++++++++++++ slsDetectorSoftware/eigerDetectorServer/Beb.h | 1 + .../eigerDetectorServer/LocalLinkInterface.c | 2 -- .../LocalLinkInterface.cxx | 2 -- .../eigerDetectorServer/LocalLinkInterface.h | 4 +++ .../bin/eigerDetectorServer | Bin 238025 -> 238037 bytes .../slsDetectorFunctionList.c | 5 +++ .../slsDetectorFunctionList.h | 1 + .../slsDetectorServer_funcs.c | 10 ++++-- 9 files changed, 51 insertions(+), 6 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.c b/slsDetectorSoftware/eigerDetectorServer/Beb.c index b106339ca..32037dcbb 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.c +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.c @@ -609,3 +609,35 @@ int Beb_Test(unsigned int beb_number){ return 1; } +// Returns the FPGA temperature from the xps sysmon ip core +// Temperature value is cropped and not well rounded +int Beb_GetBebFPGATemp() +{ + int temperature=0; + volatile u_int32_t *ptr1; + int fd; + + fd = open("/dev/mem", O_RDWR | O_SYNC, 0); + if (fd == -1) + { + printf("\nCan't find /dev/mem!\n"); + return 0; + } + + u_int32_t CSP0BASE = (u_int32_t)mmap(0, 0x1000, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, XPAR_SYSMON_0_BASEADDR ); + + if (CSP0BASE == (u_int32_t)MAP_FAILED) + { + printf("\nCan't map memmory area!!\n"); + return 0; + } + + ptr1=(u_int32_t*)(CSP0BASE + 0x200); // temperature register in xps sysmon core is at 0x200 + close(fd); + + temperature = ((((float)(*ptr1)/65536.0f)/0.00198421639f ) - 273.15f); // Static conversation, copied from xps sysmon standalone driver + + + return temperature; +} + diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.h b/slsDetectorSoftware/eigerDetectorServer/Beb.h index 8f98e08c0..8cb4fb53a 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.h +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.h @@ -80,6 +80,7 @@ struct BebInfo{ int Beb_Test(unsigned int beb_number); + int Beb_GetBebFPGATemp(); #endif diff --git a/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.c b/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.c index ac59d43a9..a80711ef9 100644 --- a/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.c +++ b/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.c @@ -6,8 +6,6 @@ #include #include //#include -#include -#include #include "HardwareMMappingDefs.h" diff --git a/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.cxx b/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.cxx index ce67842e6..a8b3311ac 100644 --- a/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.cxx +++ b/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.cxx @@ -6,8 +6,6 @@ #include #include //#include -#include -#include #include "HardwareMMappingDefs.h" diff --git a/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.h b/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.h index 5a2ca8efe..725f12125 100644 --- a/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.h +++ b/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.h @@ -8,6 +8,10 @@ #include "HardwareIO.h" #include +#include "ansi.h" +#include +#include + /*class LocalLinkInterface: public HardwareIO{ //*/ diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer index 19376484601d3f5823f8c3f4da96cfab8d713b0c..b83d58ade0b181e9e9d18c3988b66f49f1321e3f 100755 GIT binary patch delta 42836 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 NSwsD`-C6tF*nf_kp8fy; delta 43845 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 } +int getBebFPGATemp() +{ + return Beb_GetBebFPGATemp(); +} + #endif diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h b/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h index 995b431c3..14a0dc2ea 100644 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h @@ -131,6 +131,7 @@ int startReceiver(int d); void setExternalGating(int enable[]); void setAllTrimbits(int val); int getAllTrimbits(); +int getBebFPGATemp(); #endif diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c index f65df5587..8cfa80dd0 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c @@ -1244,7 +1244,7 @@ int set_dac(int file_des) { int get_adc(int file_des) { - int retval; + int retval=-1; int ret=OK,ret1=OK; int arg[2]; enum dacIndex ind; @@ -1271,6 +1271,12 @@ int get_adc(int file_des) { #endif switch (ind) { +#ifdef EIGERD + case TEMPERATURE_FPGA: //dac = TEMP_FPGA; + retval=getBebFPGATemp(); + printf("Temperature: %d°C\n",retval); + break; +#endif #ifdef GOTTHARDD case TEMPERATURE_FPGA: //dac = TEMP_FPGA; break; @@ -1284,7 +1290,7 @@ int get_adc(int file_des) { break; } #ifdef SLS_DETECTOR_FUNCTION_LIST - if (ret==OK) { + if ((ret==OK) && (retval==-1)) { retval=getADC(idac,imod); } #endif