From 2d66e1f731efaeeb14c36b2950372d9e9487c6f7 Mon Sep 17 00:00:00 2001 From: Anna Bergamaschi Date: Fri, 3 Oct 2014 10:43:12 +0200 Subject: [PATCH] Added pattern generator - must still implement client-server commands --- .../patternGenerator/generate.sh | 20 ++ .../patternGenerator/generator.c | 160 ++++++++++++++ slsDetectorSoftware/patternGenerator/test.p | 197 ++++++++++++++++++ 3 files changed, 377 insertions(+) create mode 100755 slsDetectorSoftware/patternGenerator/generate.sh create mode 100755 slsDetectorSoftware/patternGenerator/generator.c create mode 100644 slsDetectorSoftware/patternGenerator/test.p diff --git a/slsDetectorSoftware/patternGenerator/generate.sh b/slsDetectorSoftware/patternGenerator/generate.sh new file mode 100755 index 000000000..ca44e565c --- /dev/null +++ b/slsDetectorSoftware/patternGenerator/generate.sh @@ -0,0 +1,20 @@ +if [ "$#" -eq 0 ]; then + echo "Wrong number of arguments: usage should be $0 patname" + exit 1 +fi +infile=$1 +outfile=$infile"at" +if [ "$#" -ge 2 ]; then + outfile=$2 +fi +exe=$infile"exe" +if [ "$#" -ge 3 ]; then + exe=$3 +fi + +if [ -f "$infile" ] +then +gcc -DINFILE="\"$infile\"" -DOUTFILE="\"$outfile\"" -o $exe generator.c ; ./$exe ; rm $exe +else + echo "$infile not found." +fi diff --git a/slsDetectorSoftware/patternGenerator/generator.c b/slsDetectorSoftware/patternGenerator/generator.c new file mode 100755 index 000000000..198fe45cd --- /dev/null +++ b/slsDetectorSoftware/patternGenerator/generator.c @@ -0,0 +1,160 @@ +/**************************************************************************** +usage to generate a patter test.pat from test.p + +gcc -DINFILE="\"test.p\"" -DOUTFILE="\"test.pat\"" -o test.exe generator.c ; ./test.exe ; rm test.exe + + +*************************************************************************/ + +#include /* exit() */ +#include /* exit() */ +#include /* memset(), memcpy() */ +#include /* uname() */ +#include +#include /* fork(), write(), close() */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include + +#define MAXLOOPS 3 +#define MAXTIMERS 3 +#define MAXWORDS 1024 + + + +uint64_t pat=0; +uint64_t iopat=0; +uint64_t clkpat=0; + +int iaddr=0; +int waitaddr[3]={-1,-1,-1}; +int startloopaddr[3]={-1,-1,-1}; +int stoploopaddr[3]={-1,-1,-1}; +int start=0, stop=0; +uint64_t waittime[3]={0,0,0}; +int nloop[3]={0,0,0}; + +char infile[10000], outfile[10000]; + +FILE *fd; + +int i,ii,iii,j,jj,jjj,pixx,pixy,memx,memy,muxout,memclk,colclk,rowclk,muxclk,memcol,memrow,loopcounter; +//int W[33]; +//u_int32_t W; + +void setstart() { + start=iaddr; +} + +void setstop() { + stop=iaddr; +} + +void setinput(int bit) { + uint64_t mask=1; + mask=mask<>bit; +} + +void setstartloop(int iloop) { + if (iloop>=0 && iloop=0 && iloop=0 && iloop=0 && iloop=0 && iloop=MAXWORDS) printf("ERROR: too many word in the pattern (%d instead of %d)!",iaddr, MAXWORDS); +} + +main(void) { + int iloop=0; + fd=fopen(OUTFILE,"w"); + +#include INFILE + + fprintf(fd,"patctrl %016llx\n",iopat); + fprintf(fd,"patclkctrl %016llx\n",clkpat); + fprintf(fd,"patlimits %04x %04x\n",start, stop); + + for (iloop=0; iloop