Commit 3e9ad98f authored by Andrey Filippov's avatar Andrey Filippov

debugging FPGA code fro the histograms

parent 9e68784e
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
#define QRY_MAXPARAMS 64 #define QRY_MAXPARAMS 64
//#define THIS_DEBUG #define THIS_DEBUG
// lighttpd requires the following setting to enable logging of the cgi program errors: // lighttpd requires the following setting to enable logging of the cgi program errors:
// ## where cgi stderr output is redirected // ## where cgi stderr output is redirected
// server.breakagelog = "/www/logs/lighttpd_stderr.log" // server.breakagelog = "/www/logs/lighttpd_stderr.log"
...@@ -106,6 +106,8 @@ int main(int argc, char *argv[]) ...@@ -106,6 +106,8 @@ int main(int argc, char *argv[])
int lastmiddle_i,newmiddle_i; int lastmiddle_i,newmiddle_i;
int hist_index; int hist_index;
int before = 1; // by default - previous frame int before = 1; // by default - previous frame
// bitmap: +1 - low bandwidth output, +2 - raw histograms used for PNG, +4 - processed histograms, +8 - all FPGA histograms
int debug_level = 0;
const char colors_calc[]={ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,0xa,0xb,0xc,0xd,0xe,0xf, const char colors_calc[]={ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,0xa,0xb,0xc,0xd,0xe,0xf,
0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
6, 7, 6, 7, 6, 7, 6, 7,0xe,0xf,0xe,0xf,0xe,0xf,0xe,0xf, 6, 7, 6, 7, 6, 7, 6, 7,0xe,0xf,0xe,0xf,0xe,0xf,0xe,0xf,
...@@ -161,6 +163,9 @@ int main(int argc, char *argv[]) ...@@ -161,6 +163,9 @@ int main(int argc, char *argv[])
if((v = paramValue(gparams, "scale")) != NULL) dscale=strtod(v,NULL); if((v = paramValue(gparams, "scale")) != NULL) dscale=strtod(v,NULL);
if((v = paramValue(gparams, "disrq")) != NULL) request_enable=strtol(v, NULL, 10)?0:1; if((v = paramValue(gparams, "disrq")) != NULL) request_enable=strtol(v, NULL, 10)?0:1;
if((v = paramValue(gparams, "before")) != NULL) before=strtol(v, NULL, 10); if((v = paramValue(gparams, "before")) != NULL) before=strtol(v, NULL, 10);
// int debug_fpga = 0;
if((v = paramValue(gparams, "debug")) != NULL) debug_level=strtol(v, NULL, 10);
// before // before
// int request_enable=1; /// enable requesting histogram calculation for the specified frame (0 - use/wait what available) // int request_enable=1; /// enable requesting histogram calculation for the specified frame (0 - use/wait what available)
...@@ -189,19 +194,19 @@ int main(int argc, char *argv[]) ...@@ -189,19 +194,19 @@ int main(int argc, char *argv[])
fflush(stdout); fflush(stdout);
return -1; return -1;
} }
#ifdef THIS_DEBUG if (debug_level &1) {
fprintf (stderr,"LSEEK_HIST_SET_CHN port = %d chn = %d - > 0x%x\n",sensor_port,subchannel, total_hist_entries); fprintf (stderr,"LSEEK_HIST_SET_CHN port = %d chn = %d - > 0x%x\n",sensor_port,subchannel, total_hist_entries);
fflush(stderr); fflush(stderr);
#endif }
// now try to mmap // now try to mmap
histogram_cache = (struct histogram_stuct_t *) mmap(0, sizeof (struct histogram_stuct_t) * total_hist_entries , PROT_READ, MAP_SHARED, fd_histogram_cache, 0); histogram_cache = (struct histogram_stuct_t *) mmap(0, sizeof (struct histogram_stuct_t) * total_hist_entries , PROT_READ, MAP_SHARED, fd_histogram_cache, 0);
if((int)histogram_cache == -1) { if((int)histogram_cache == -1) {
fprintf(stdout, "Pragma: no-cache\n"); fprintf(stdout, "Pragma: no-cache\n");
fprintf(stdout, "Content-Type: text/plain\n\n"); fprintf(stdout, "Content-Type: text/plain\n\n");
fprintf(stdout, "problems with mmap: %s\n", histogram_driver_name); fprintf(stdout, "problems with mmap: %s\n", histogram_driver_name);
fflush(stdout); fflush(stdout);
return -1; return -1;
} }
#if 0 #if 0
if ((offset & ~0xf) == LSEEK_HIST_SET_CHN){ if ((offset & ~0xf) == LSEEK_HIST_SET_CHN){
...@@ -230,10 +235,51 @@ int main(int argc, char *argv[]) ...@@ -230,10 +235,51 @@ int main(int argc, char *argv[])
return -1; return -1;
} }
#ifdef THIS_DEBUG if (debug_level &1) {
fprintf (stderr,"hist_index = 0x%x\n",hist_index); fprintf (stderr,"hist_index = 0x%x\n",hist_index);
fflush(stderr); fflush(stderr);
#endif }
if (debug_level & 8) { // with SEEK_END twice (for first 8 and last 8) copy FPGA data and print for the selected sensor port/channel
// disable histograms DMA
// lseek(fd_histogram_cache, LSEEK_HIST_DIS, SEEK_END);
for (k = 0; k < (PARS_FRAMES/HISTOGRAM_CACHE_NUMBER); k++){
// for (k = 0; k < 1; k++){
j = -32 + (k << 4) + (sensor_port << 2) + subchannel;
// copying half (16/2 = 8) frames from DMA memory to histogram cache
lseek(fd_histogram_cache, j, SEEK_END); /// wait for all histograms, not just Y (G1)
fprintf (stderr,"\nlseek request = 0x%x\n",j);
for (j = 0; j < HISTOGRAM_CACHE_NUMBER; j++){
fprintf (stderr,"\n\nhist_index= %d (%d)",j,k);// , FIRST PASS\n",j,k);
memcpy (hists, histogram_cache[j].hist, HIST_SIZE);
for (i=0;i<1024;i++) {
if ((i & 0x0ff)==0) fprintf (stderr,"\n");
if ((i & 0x0f)==0) fprintf (stderr,"\n0x%05x:",i+1024*j + 8192*k);
fprintf (stderr," %08x",hists[i]);
}
}
}
/*
for (k = 0; k < (PARS_FRAMES/HISTOGRAM_CACHE_NUMBER); k++){
j = -32 + (k << 4) + (sensor_port << 2) + subchannel;
// copying half (16/2 = 8) frames from DMA memory to histogram cache
lseek(fd_histogram_cache, j, SEEK_END); /// wait for all histograms, not just Y (G1)
for (j = 0; j < HISTOGRAM_CACHE_NUMBER; j++){
fprintf (stderr,"\nhist_index= %d (%d), SECOND PASS\n",j,k);
memcpy (hists, histogram_cache[j].hist, HIST_SIZE);
for (i=0;i<1024;i++) {
if ((i & 0x0ff)==0) fprintf (stderr,"\n");
if ((i & 0x0f)==0) fprintf (stderr,"\n0x%05x:",i+1024*j + 8192*k);
fprintf (stderr," %08x",hists[i]);
}
}
}
*/
// re-enable histograms DMA
// lseek(fd_histogram_cache, LSEEK_HIST_EN, SEEK_END); /// wait for all histograms, not just Y (G1)
fprintf (stderr,"\n\n\n");
fflush(stderr);
}
/// Ignore missing histograms here /// Ignore missing histograms here
// ww=(ww*autoexp.width)/100; // ww=(ww*autoexp.width)/100;
...@@ -243,7 +289,7 @@ int main(int argc, char *argv[]) ...@@ -243,7 +289,7 @@ int main(int argc, char *argv[])
memcpy (hists,histogram_cache[hist_index].hist,HIST_SIZE); memcpy (hists,histogram_cache[hist_index].hist,HIST_SIZE);
close (fd_histogram_cache); close (fd_histogram_cache);
coeff=dcoeff*65536; coeff=dcoeff*65536;
#ifdef THIS_DEBUG if (debug_level & 2) {
for (i=0;i<1024;i++) { for (i=0;i<1024;i++) {
if ((i & 0x0ff)==0) fprintf (stderr,"\n"); if ((i & 0x0ff)==0) fprintf (stderr,"\n");
if ((i & 0x0f)==0) fprintf (stderr,"\n0x%03x:",i); if ((i & 0x0f)==0) fprintf (stderr,"\n0x%03x:",i);
...@@ -251,8 +297,7 @@ int main(int argc, char *argv[]) ...@@ -251,8 +297,7 @@ int main(int argc, char *argv[])
} }
fprintf (stderr,"\n\n\n"); fprintf (stderr,"\n\n\n");
fflush(stderr); fflush(stderr);
#endif }
if ((mode & (HPNG_FILL_ZEROS | HPNG_LIN_INTERP)) | (rav>1)) { // spread between zeros - needed at high digital gains (near black with low gammas) if ((mode & (HPNG_FILL_ZEROS | HPNG_LIN_INTERP)) | (rav>1)) { // spread between zeros - needed at high digital gains (near black with low gammas)
for (j=0;j<4;j++) if (colors_calc[colors] & (1<<j)) { for (j=0;j<4;j++) if (colors_calc[colors] & (1<<j)) {
lastmiddle_i=255; lastmiddle_i=255;
...@@ -302,19 +347,19 @@ int main(int argc, char *argv[]) ...@@ -302,19 +347,19 @@ int main(int argc, char *argv[])
hists[i+(j<<8)]=(hists[i+(j<<8)]*coeff) >> 16; hists[i+(j<<8)]=(hists[i+(j<<8)]*coeff) >> 16;
if (hists[i+(j<<8)] > (png_height-1)) hists[i+(j<<8)] = png_height-1; if (hists[i+(j<<8)] > (png_height-1)) hists[i+(j<<8)] = png_height-1;
} }
fprintf(stdout, "Pragma: no-cache\n"); fprintf(stdout, "Pragma: no-cache\n");
fprintf(stdout, "Content-Type: image/png\n\n"); fprintf(stdout, "Content-Type: image/png\n\n");
#ifdef THIS_DEBUG if (debug_level & 4) {
// for (i=0;i<1536;i++) { // for (i=0;i<1536;i++) {
for (i=0;i<1024;i++) { for (i=0;i<1024;i++) {
if ((i & 0x0ff)==0) fprintf (stderr,"\n"); if ((i & 0x0ff)==0) fprintf (stderr,"\n");
if ((i & 0x0f)==0) fprintf (stderr,"\n0x%03x:",i); if ((i & 0x0f)==0) fprintf (stderr,"\n0x%03x:",i);
fprintf (stderr," %05x",hists[i]); fprintf (stderr," %05x",hists[i]);
} }
fprintf (stderr,"\n\n\n"); fprintf (stderr,"\n\n\n");
#endif }
write_png(png_height, hists, mode, colors); write_png(png_height, hists, mode, colors);
fflush(stdout); fflush(stdout);
return 0; return 0;
} }
#define ERROR -1 #define ERROR -1
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment