From 8323f81e8acb0960b0df3046802d30365afdf89a Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Mon, 15 Jun 2015 17:41:48 +0200 Subject: [PATCH] beb includes read, write functions, so that it doesnt have to go to locallink interface --- slsDetectorSoftware/eigerDetectorServer/Beb.c | 127 +++++++++++------- slsDetectorSoftware/eigerDetectorServer/Beb.h | 4 + .../eigerDetectorServer/EigerRegisterDefs.h | 5 + .../eigerDetectorServer/FebRegisterDefs.h | 11 ++ .../eigerDetectorServer/LocalLinkInterface.c | 23 ---- .../eigerDetectorServer/LocalLinkInterface.h | 1 - .../bin/eigerDetectorServer | Bin 242164 -> 242151 bytes .../eigerDetectorServer/xparameters.h | 4 +- 8 files changed, 104 insertions(+), 71 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.c b/slsDetectorSoftware/eigerDetectorServer/Beb.c index 77408c82f..771dc74ce 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.c +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.c @@ -15,8 +15,12 @@ #include #include + + + #include "xfs_types.h" #include "xparameters.h" +#include "FebRegisterDefs.h" #include "Beb.h" @@ -26,7 +30,6 @@ int bebInfoSize = 0; struct LocalLinkInterface ll_beb_local,* ll_beb; - struct LocalLinkInterface ll_beb_new_memory_local,* ll_beb_new_memory; struct udp_header_type udp_header; @@ -146,24 +149,24 @@ void Beb_GetModuleCopnfiguration(int* master, int* top){ *top = 0; *master = 0; //mapping new memory to read master top module configuration - ll_beb_new_memory = &ll_beb_new_memory_local; - Local_LocalLinkInterface(ll_beb_new_memory); - int ret = Local_GetModuleConfiguration(ll_beb_new_memory,XPAR_PLB_GPIO_SYS_BASEADDR, MODULE_CONFIGURATION); - if(!ret) - printf("Module Configuration FAIL\n"); - else{ - printf("Module Configuration OK\n"); - printf("Beb: value =0x%x\n",ret); - if(ret&0xf){ - *top = 1; - // printf("Beb.c: TOP\n\n\n\n"); - }//else printf("Beb.c: BOTTOM\n\n\n\n"); - - if(ret&0x200){ - *master = 1; - // printf("Beb.c: MASTER\n\n\n\n"); - }//else printf("Beb.c: SLAVE\n\n\n\n"); - } + u_int32_t baseaddr; + int ret; + //open file pointer + int fd = Beb_open(XPAR_PLB_GPIO_SYS_BASEADDR,&baseaddr); + if(fd < 0){ + cprintf(RED,"Module Configuration FAIL\n"); + }else{ + //read data + ret = Beb_Read32(baseaddr, MODULE_CONFIGURATION_MASK); + printf("Module Configuration OK\n"); + printf("Beb: value =0x%x\n",ret); + if(ret&TOP_BIT_MASK) + *top = 1; + if(ret&MASTER_BIT_MASK) + *master = 1; + //close file pointer + Beb_close(fd); + } } @@ -542,33 +545,29 @@ int Beb_SetUpTransferParameters(short the_bit_mode){ int Beb_StopAcquisition() { + u_int32_t baseaddr; + u_int32_t valuel,valuer; + //open file pointer + int fd = Beb_open(XPAR_STOP_ACQUISITION,&baseaddr); + if(fd < 0){ + cprintf(RED,"Beb Stop Acquisition FAIL\n"); + return 0; + }else{ + //find value + valuel = Beb_Read32(baseaddr, STOP_ACQUISITION_LEFT_OFFSET); + valuer = Beb_Read32(baseaddr, STOP_ACQUISITION_RIGHT_OFFSET); + //high + Beb_Write32(baseaddr, STOP_ACQUISITION_LEFT_OFFSET,(valuel|STOP_ACQUISITION_BIT)); + Beb_Write32(baseaddr, STOP_ACQUISITION_RIGHT_OFFSET,(valuer|STOP_ACQUISITION_BIT)); + //low + Beb_Write32(baseaddr, STOP_ACQUISITION_LEFT_OFFSET,(valuel&(~STOP_ACQUISITION_BIT))); + Beb_Write32(baseaddr, STOP_ACQUISITION_RIGHT_OFFSET,(valuer&(~STOP_ACQUISITION_BIT))); - volatile u_int32_t* ptrl; - volatile u_int32_t* ptrr; - // Mapping - 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, 0xC5000000 ); - if (CSP0BASE == (u_int32_t)MAP_FAILED) - { - printf("\nCan't map memmory area!!\n"); - return 0; - } - - ptrl = (u_int32_t*)(CSP0BASE); - ptrr = (u_int32_t*)(CSP0BASE+0x100); - - *(ptrl+7) = (1 << 30); - *(ptrr+7) = (1 << 30); - *(ptrl+7) = 0; - *(ptrr+7) = 0; - close(fd); - return 1; + printf("Beb Stop Acquisition OK\n"); + //close file pointer + Beb_close(fd); + } + return 1; } int Beb_RequestNImages(unsigned int beb_number, int ten_gig, unsigned int dst_number, unsigned int nimages, int test_just_send_out_packets_no_wait){ @@ -758,3 +757,41 @@ int Beb_GetBebFPGATemp() return temperature; } + + + + +int Beb_open(u_int32_t baseaddr, u_int32_t* csp0base){ + + int fd = open("/dev/mem", O_RDWR | O_SYNC, 0); + if (fd == -1) + cprintf(RED,"\nCan't find /dev/mem!\n"); + else{ + printf("/dev/mem opened\n"); + *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"); + } + return fd; +} + +u_int32_t Beb_Read32 (u_int32_t baseaddr, u_int32_t offset){ + volatile u_int32_t *ptr1; + ptr1=(u_int32_t*)(baseaddr + offset); + return *ptr1; +} + + +u_int32_t Beb_Write32 (u_int32_t baseaddr, u_int32_t offset, u_int32_t data){ + volatile u_int32_t *ptr1; + ptr1=(u_int32_t*)(baseaddr + offset); + *ptr1 = data; + return *ptr1; +} + +void Beb_close(int fd){ + if(fd >= 0) + close(fd); +} diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.h b/slsDetectorSoftware/eigerDetectorServer/Beb.h index 73660be3d..a5c9fc3ba 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.h +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.h @@ -83,6 +83,10 @@ struct BebInfo{ int Beb_GetBebFPGATemp(); + int Beb_open(u_int32_t baseaddr, u_int32_t* csp0base); + u_int32_t Beb_Read32 (u_int32_t baseaddr, u_int32_t offset); + u_int32_t Beb_Write32 (u_int32_t baseaddr, u_int32_t offset, u_int32_t data); + void Beb_close(int fd); #endif diff --git a/slsDetectorSoftware/eigerDetectorServer/EigerRegisterDefs.h b/slsDetectorSoftware/eigerDetectorServer/EigerRegisterDefs.h index 11f712716..0c5fe1b1d 100644 --- a/slsDetectorSoftware/eigerDetectorServer/EigerRegisterDefs.h +++ b/slsDetectorSoftware/eigerDetectorServer/EigerRegisterDefs.h @@ -109,3 +109,8 @@ #define CHIP_DATA_OUT_DELAY_REG3 3 #define CHIP_DATA_OUT_DELAY_REG4 4 #define CHIP_DATA_OUT_DELAY_SET 0x20000000 + + +//module configuration +#define TOP_BIT_MASK 0x00f +#define MASTER_BIT_MASK 0x200 diff --git a/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h b/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h index 11f712716..1d2d680d7 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h +++ b/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h @@ -109,3 +109,14 @@ #define CHIP_DATA_OUT_DELAY_REG3 3 #define CHIP_DATA_OUT_DELAY_REG4 4 #define CHIP_DATA_OUT_DELAY_SET 0x20000000 + +//module configuration +#define TOP_BIT_MASK 0x00f +#define MASTER_BIT_MASK 0x200 +// Master Slave Top Bottom Definition +#define MODULE_CONFIGURATION_MASK 0x84 +//stop acquisition offsets +#define STOP_ACQUISITION_LEFT_OFFSET 0x01c +#define STOP_ACQUISITION_RIGHT_OFFSET 0x11c +#define STOP_ACQUISITION_BIT 0x40000000 + diff --git a/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.c b/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.c index 29bb958c8..8d1b9db1f 100644 --- a/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.c +++ b/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.c @@ -32,29 +32,6 @@ void Local_LocalLinkInterface(struct LocalLinkInterface* ll){ printf("Initializing new memory\n"); } -int Local_GetModuleConfiguration (struct LocalLinkInterface* ll, u_int32_t baseaddr, u_int32_t offset){ - int fd = open("/dev/mem", O_RDWR | O_SYNC, 0); - if (fd == -1) { - printf("\nCan't find /dev/mem!\n"); - return 0; - } - printf("/dev/mem opened\n"); - - u_int32_t CSP0BASE = (u_int32_t)mmap(0, 0x100000, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, baseaddr); - if (CSP0BASE == (u_int32_t)MAP_FAILED) { - printf("\nCan't map memmory area!!\n"); - return 0; - } - printf("CSP0 mapped\n"); - - volatile u_int32_t *ptr1; - ptr1=(u_int32_t*)(CSP0BASE + offset); - //printf("LocalLinkInterface:: value:%d\n",*ptr1); - close(fd); - - return *ptr1; -} - int Local_Init(struct LocalLinkInterface* ll,unsigned int ll_fifo_badr){ diff --git a/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.h b/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.h index 725f12125..e3453361a 100644 --- a/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.h +++ b/slsDetectorSoftware/eigerDetectorServer/LocalLinkInterface.h @@ -40,7 +40,6 @@ struct LocalLinkInterface{ int Local_Test(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buffer); void Local_LocalLinkInterface(struct LocalLinkInterface* ll); - int Local_GetModuleConfiguration (struct LocalLinkInterface* ll, u_int32_t baseaddr, u_int32_t offset); /* int FiFoReset(unsigned int numb); diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer index c4d92e50ac408e73bed8f69d08effb84badc191b..d0b7e96d96f6da5865aaf2594a8f9cc9ba1f6710 100755 GIT binary patch delta 34683 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 diff --git a/slsDetectorSoftware/eigerDetectorServer/xparameters.h b/slsDetectorSoftware/eigerDetectorServer/xparameters.h index b6ef24bcc..ed044fdb6 100644 --- a/slsDetectorSoftware/eigerDetectorServer/xparameters.h +++ b/slsDetectorSoftware/eigerDetectorServer/xparameters.h @@ -49,8 +49,8 @@ XPAR_PLB_LL_FIFO_AURORA_DUAL_CTRL_FEB_LEFT_BASEADDR #define XPAR_PLB_GPIO_SYS_BASEADDR 0xD1000000 #define XPAR_PLB_GPIO_SYS_HIGHADDR 0xD100FFFF -/* Master Slave Top Bottom Definition */ -#define MODULE_CONFIGURATION 0x84 +/** Stop Acquisition */ +#define XPAR_STOP_ACQUISITION 0xC5000000 /* Definitions for peripheral PLB_GPIO_TEST */ #define XPAR_PLB_GPIO_TEST_BASEADDR 0xD1010000