From f3d5de70bf85aca86ef1a9a4477d5480d9d6df50 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Mon, 22 Jun 2015 17:09:47 +0200 Subject: [PATCH] firmware version for eiger added --- slsDetectorSoftware/eigerDetectorServer/Beb.c | 39 +++++++++++++++++- slsDetectorSoftware/eigerDetectorServer/Beb.h | 3 +- .../eigerDetectorServer/FebRegisterDefs.h | 7 +++- .../bin/eigerDetectorServer | Bin 242151 -> 242191 bytes .../slsDetectorFunctionList.c | 2 +- .../eigerDetectorServer/xparameters.h | 6 ++- 6 files changed, 51 insertions(+), 6 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.c b/slsDetectorSoftware/eigerDetectorServer/Beb.c index 64f78e1cc..b0522622f 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.c +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.c @@ -170,6 +170,38 @@ void Beb_GetModuleCopnfiguration(int* master, int* top){ } +u_int32_t Beb_GetFirmwareRevision(){ + //mapping new memory + u_int32_t baseaddr, value = 0; + + //open file pointer + int fd = Beb_open(XPAR_VERSION,&baseaddr); + if(fd < 0) + cprintf(RED,"Firmware Revision Read FAIL\n"); + + else{ + //read revision existing bit + value = Beb_Read32(baseaddr, REVISION_EXISTING_OFFSET); + printf("Firmware Revision Read OK\n"); + //error reading + if(!(value&REVISION_EXISTING_BIT)){ + cprintf(RED,"Firmware Revision Number does not exist in this version\n"); + value = 0; + }else{ + //read revision number + value = Beb_Read32(baseaddr, 0); + printf("Firmware Revision Number Read OK\n"); + printf("Rev: 0x%x.%x\n\n",value & REVISION_MASK,value & SUB_REVISION_MASK); + value &= REVISION_MASK; + } + } + + //close file pointer + if(fd > 0) + Beb_close(fd); + + return value; +} void Beb_ClearBebInfos(){ //unsigned int i; @@ -760,12 +792,17 @@ int Beb_open(u_int32_t baseaddr, u_int32_t* csp0base){ if (fd == -1) cprintf(RED,"\nCan't find /dev/mem!\n"); else{ +#ifdef VERBOSE printf("/dev/mem opened\n"); +#endif *csp0base = (u_int32_t)mmap(0, 0x1000, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, baseaddr); if (*csp0base == (u_int32_t)MAP_FAILED) { cprintf(RED,"\nCan't map memmory area!!\n"); fd = -1; - }else printf("CSP0 mapped\n"); + } +#ifdef VERBOSE + else printf("CSP0 mapped\n"); +#endif } return fd; } diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.h b/slsDetectorSoftware/eigerDetectorServer/Beb.h index a5c9fc3ba..2e6f9d2a0 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.h +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.h @@ -48,8 +48,7 @@ struct BebInfo{ void Beb_GetModuleCopnfiguration(int* master, int* top); - - + u_int32_t Beb_GetFirmwareRevision(); int Beb_WriteTo(unsigned int index); diff --git a/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h b/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h index 1f9b522c1..a0380c848 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h +++ b/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h @@ -116,7 +116,7 @@ // Master Slave Top Bottom Definition #define MODULE_CONFIGURATION_MASK 0x84 -//new memory +//command memory #define LEFT_OFFSET 0x0 #define RIGHT_OFFSET 0x100 @@ -130,4 +130,9 @@ #define TWO_REQUESTS_OFFSET 0x1c #define TWO_REQUESTS_BIT 0x80000000 +//firmware version +#define REVISION_EXISTING_OFFSET 8 +#define REVISION_EXISTING_BIT 0x80000000 +#define REVISION_MASK 0x0FFFFFFF +#define SUB_REVISION_MASK 0xF0000000 diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer index 2aa58e4fad06b5e18982e46d55f6d3a1aaa25559..ef98c4c4d06090f0302ac101e44b7d271fc659cc 100755 GIT binary patch delta 24043 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