no_serial was merged to master

This commit is contained in:
Dhanya Maliakal 2015-05-13 14:41:25 +02:00
commit 1f1581a1fa
11 changed files with 89 additions and 33 deletions

View File

@ -510,9 +510,15 @@ int Beb_SendMultiReadRequest(unsigned int beb_number, unsigned int left_right, i
Beb_send_data[1] = 0x62000000 | (!stop_read_when_fifo_empty) << 27 | (ten_gig==1) << 24 | packet_size << 14 | dst_number << 8 | npackets; Beb_send_data[1] = 0x62000000 | (!stop_read_when_fifo_empty) << 27 | (ten_gig==1) << 24 | packet_size << 14 | dst_number << 8 | npackets;
#ifdef MARTIN
cprintf(GREEN, "Beb_send_data[1]:%X\n",Beb_send_data[1]);
#endif
Beb_send_data[2] = 0; Beb_send_data[2] = 0;
Beb_SwapDataFun(0,2,&(Beb_send_data[1])); Beb_SwapDataFun(0,2,&(Beb_send_data[1]));
#ifdef MARTIN
cprintf(GREEN, "Beb_send_data[1] Swapped:%X\n",Beb_send_data[1]);
#endif
if(!Beb_WriteTo(i)) return 0; if(!Beb_WriteTo(i)) return 0;
@ -559,7 +565,10 @@ int Beb_RequestNImages(unsigned int beb_number, unsigned int left_right, int ten
*/ */
#ifdef MARTIN
cprintf(RED, "----Beb_RequestNImages Start----\n");
cprintf(RED, "beb_number:%X, left_right:%X,ten_gig:%X,dst_number:%X,npackets:%X,Beb_bit_mode:%X,header_size:%X,test_just_send_out_packets_no_wait:%X\n",beb_number,left_right,ten_gig,dst_number,npackets,Beb_bit_mode,header_size,test_just_send_out_packets_no_wait);
#endif
unsigned int i; unsigned int i;
for(i=0;i<nimages;i++){ for(i=0;i<nimages;i++){
//header then data request //header then data request
@ -570,7 +579,9 @@ int Beb_RequestNImages(unsigned int beb_number, unsigned int left_right, int ten
return 0; return 0;
} }
} }
#ifdef MARTIN
cprintf(RED, "----Beb_RequestNImages----\n");
#endif
return 1; return 1;
} }
@ -609,3 +620,35 @@ int Beb_Test(unsigned int beb_number){
return 1; 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;
}

View File

@ -80,6 +80,7 @@ struct BebInfo{
int Beb_Test(unsigned int beb_number); int Beb_Test(unsigned int beb_number);
int Beb_GetBebFPGATemp();
#endif #endif

View File

@ -187,15 +187,13 @@ int Feb_Control_Init(int master, int top){
sscanf(pch,"%d",&res); sscanf(pch,"%d",&res);
Feb_Control_module_number = (res & 0xFF); Feb_Control_module_number = (res & 0xFF);
int serial = !top;
/*
//for Gemmas modules: if master, serial 0, else 1 //for Gemmas modules: if master, serial 0, else 1
int serial = 1; int serial = 1;
if(master) if(master)
serial = 0; serial = 0;
/* else if(top)if slave top, serial = 2
serial = 2;*/
switch(Feb_Control_module_number){ switch(Feb_Control_module_number){
case 34: serial = 0; break; //martin half case 34: serial = 0; break; //martin half
case 26: serial = 0; break; //leo case 26: serial = 0; break; //leo
@ -212,7 +210,7 @@ int Feb_Control_Init(int master, int top){
case 49: serial = 0; break; // Gemma case 49: serial = 0; break; // Gemma
case 48: serial = 1; break; // Gemma case 48: serial = 1; break; // Gemma
} }*/
printf("serial: %d\n",serial); printf("serial: %d\n",serial);
Feb_Control_current_index = 1; Feb_Control_current_index = 1;
@ -1071,17 +1069,17 @@ unsigned int Feb_Control_AddressToAll(){printf("in Feb_Control_AddressToAll()\n"
if(moduleSize==0) return 0; if(moduleSize==0) return 0;
/*
if(Module_BottomAddressIsValid(&modules[1])){ if(Module_BottomAddressIsValid(&modules[1])){
printf("************* bottom\n"); //printf("************* bottom\n");
//if(Feb_Control_am_i_master) //if(Feb_Control_am_i_master)
return Module_GetBottomLeftAddress(&modules[1])|Module_GetBottomRightAddress(&modules[1]); return Module_GetBottomLeftAddress(&modules[1])|Module_GetBottomRightAddress(&modules[1]);
// else return 0; // else return 0;
} }
printf("************* top\n"); // printf("************* top\n");
*/
//return Module_GetTopLeftAddress(&modules[1])|Module_GetTopRightAddress(&modules[1]); return Module_GetTopLeftAddress(&modules[1])|Module_GetTopRightAddress(&modules[1]);
return Module_GetTopLeftAddress(&modules[0])|Module_GetTopRightAddress(&modules[0]); //return Module_GetTopLeftAddress(&modules[0])|Module_GetTopRightAddress(&modules[0]);
} }

View File

@ -72,7 +72,7 @@ int Feb_Interface_WriteTo(unsigned int ch){
if(ch>0xfff) return 0; if(ch>0xfff) return 0;
#ifdef MARTIN #ifdef MARTIN
printf("FIW ch %d\n", ch); cprintf(YELLOW, "FIW ch %d\n", ch);
#endif #endif
Feb_Interface_send_data_raw[0] = 0x8fff0000; Feb_Interface_send_data_raw[0] = 0x8fff0000;

View File

@ -6,8 +6,6 @@
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
//#include <string.h> //#include <string.h>
#include <sys/mman.h>
#include <fcntl.h>
#include "HardwareMMappingDefs.h" #include "HardwareMMappingDefs.h"
@ -127,9 +125,9 @@ int Local_Write(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buf
word_ptr = (unsigned int *)buffer; word_ptr = (unsigned int *)buffer;
#ifdef MARTIN #ifdef MARTIN
printf("LL Write - Len: %2d - If: %X - Data: ",buffer_len, ll->ll_fifo_base); cprintf(BLUE, "LL Write - Len: %2d - If: %X - Data: ",buffer_len, ll->ll_fifo_base);
for (i=0; i < buffer_len/4; i++) for (i=0; i < buffer_len/4; i++)
printf("%.8X ",*(((unsigned *) buffer)+i)); cprintf(BLUE, "%.8X ",*(((unsigned *) buffer)+i));
printf("\n"); printf("\n");
#endif #endif
@ -173,7 +171,7 @@ int Local_Read(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buff
int sof = 0; int sof = 0;
#ifdef MARTIN #ifdef MARTIN
printf("LL Read - If: %X - Data: ",ll->ll_fifo_base); cprintf(CYAN, "LL Read - If: %X - Data: ",ll->ll_fifo_base);
#endif #endif
word_ptr = (unsigned int *)buffer; word_ptr = (unsigned int *)buffer;
@ -202,7 +200,7 @@ int Local_Read(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buff
if ( (buffer_len >> 2) > buffer_ptr) if ( (buffer_len >> 2) > buffer_ptr)
{ {
#ifdef MARTIN #ifdef MARTIN
printf("%.8X ", fifo_val); cprintf(CYAN, "%.8X ", fifo_val);
#endif #endif
word_ptr[buffer_ptr++] = fifo_val; //write to buffer word_ptr[buffer_ptr++] = fifo_val; //write to buffer
} }
@ -216,7 +214,7 @@ int Local_Read(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buff
{ {
len = (buffer_ptr << 2) -3 + ( (status & PLB_LL_FIFO_STATUS_LL_REM)>>PLB_LL_FIFO_STATUS_LL_REM_SHIFT ); len = (buffer_ptr << 2) -3 + ( (status & PLB_LL_FIFO_STATUS_LL_REM)>>PLB_LL_FIFO_STATUS_LL_REM_SHIFT );
#ifdef MARTIN #ifdef MARTIN
printf("Len: %d\n",len); cprintf(CYAN, "Len: %d\n",len);
#endif #endif
// printf(">>>>status=0x%08x EOF len = %d \n\r\n\r",status, len); // printf(">>>>status=0x%08x EOF len = %d \n\r\n\r",status, len);
buffer_ptr = 0; buffer_ptr = 0;

View File

@ -6,8 +6,6 @@
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
//#include <string.h> //#include <string.h>
#include <sys/mman.h>
#include <fcntl.h>
#include "HardwareMMappingDefs.h" #include "HardwareMMappingDefs.h"

View File

@ -8,6 +8,10 @@
#include "HardwareIO.h" #include "HardwareIO.h"
#include <sys/types.h> #include <sys/types.h>
#include "ansi.h"
#include <sys/mman.h>
#include <fcntl.h>
/*class LocalLinkInterface: public HardwareIO{ //*/ /*class LocalLinkInterface: public HardwareIO{ //*/

View File

@ -1,6 +1,6 @@
CC = powerpc-4xx-softfloat-gcc CC = powerpc-4xx-softfloat-gcc
CCX = powerpc-4xx-softfloat-g++ CCX = powerpc-4xx-softfloat-g++
CFLAGS += -Wall -DDACS_INT -DEIGERD -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT -DSTOP_SERVER #-DVERBOSE #-DVIRTUAL -DPCCOMPILE -DMARTIN CFLAGS += -Wall -DDACS_INT -DEIGERD -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT -DSTOP_SERVER #-DVERBOSE #-DVIRTUAL -DPCCOMPILE -DMARTIN
LDLIBS += -lm -lstdc++ LDLIBS += -lm -lstdc++
PROGS = eigerDetectorServer PROGS = eigerDetectorServer

View File

@ -495,7 +495,7 @@ enum detectorSettings setSettings(enum detectorSettings sett, int imod){
int startReceiver(int d){ int startReceiver(int d){
if(master) //if(master)
Feb_Control_PrepareForAcquisition(); Feb_Control_PrepareForAcquisition();
return OK; return OK;
} }
@ -503,10 +503,10 @@ int startReceiver(int d){
int startStateMachine(){ int startStateMachine(){
int ret; int ret;
if(master){ //if(master){
printf("Going to start acquisition\n"); printf("Going to start acquisition\n");
Feb_Control_StartAcquisition(); Feb_Control_StartAcquisition();
} //}
//do not read status here, cannot get images then //do not read status here, cannot get images then
@ -517,7 +517,7 @@ int startStateMachine(){
//if(trialMasterMode == IS_MASTER){ //if(trialMasterMode == IS_MASTER){
if(master){ //if(master){
/* /*
* int i=0; * int i=0;
if(getRunStatus() == IDLE){ if(getRunStatus() == IDLE){
@ -535,9 +535,11 @@ int startStateMachine(){
*/ */
while(getRunStatus() == IDLE); while(getRunStatus() == IDLE){
printf("waiting for being not idle anymore\n");
}
printf("*****Acquiring...\n"); printf("*****Acquiring...\n");
} //}
/*else usleep(1000000); /*else usleep(1000000);
printf("****Returning\n");*/ printf("****Returning\n");*/
@ -1007,4 +1009,9 @@ int getAllTrimbits(){
return *((detectorModules->chanregs)); return *((detectorModules->chanregs));
} }
int getBebFPGATemp()
{
return Beb_GetBebFPGATemp();
}
#endif #endif

View File

@ -131,6 +131,7 @@ int startReceiver(int d);
void setExternalGating(int enable[]); void setExternalGating(int enable[]);
void setAllTrimbits(int val); void setAllTrimbits(int val);
int getAllTrimbits(); int getAllTrimbits();
int getBebFPGATemp();
#endif #endif

View File

@ -1244,7 +1244,7 @@ int set_dac(int file_des) {
int get_adc(int file_des) { int get_adc(int file_des) {
int retval; int retval=-1;
int ret=OK,ret1=OK; int ret=OK,ret1=OK;
int arg[2]; int arg[2];
enum dacIndex ind; enum dacIndex ind;
@ -1271,6 +1271,12 @@ int get_adc(int file_des) {
#endif #endif
switch (ind) { switch (ind) {
#ifdef EIGERD
case TEMPERATURE_FPGA: //dac = TEMP_FPGA;
retval=getBebFPGATemp();
printf("Temperature: %d°C\n",retval);
break;
#endif
#ifdef GOTTHARDD #ifdef GOTTHARDD
case TEMPERATURE_FPGA: //dac = TEMP_FPGA; case TEMPERATURE_FPGA: //dac = TEMP_FPGA;
break; break;
@ -1284,7 +1290,7 @@ int get_adc(int file_des) {
break; break;
} }
#ifdef SLS_DETECTOR_FUNCTION_LIST #ifdef SLS_DETECTOR_FUNCTION_LIST
if (ret==OK) { if ((ret==OK) && (retval==-1)) {
retval=getADC(idac,imod); retval=getADC(idac,imod);
} }
#endif #endif