Skip to content
Snippets Groups Projects
Commit 07b77bbb authored by BRONES Romain's avatar BRONES Romain
Browse files

update archiver test

parent e857e59d
Branches
No related tags found
No related merge requests found
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <errno.h> #include <errno.h>
#include <ctime> #include <ctime>
int main(){ int main(){
int fd_ddr, fd_ddr_sro; // File descriptors for DDR4 int fd_ddr, fd_ddr_sro; // File descriptors for DDR4
...@@ -23,6 +24,7 @@ int main(){ ...@@ -23,6 +24,7 @@ int main(){
char fdate[32]; char fdate[32];
time_t t; time_t t;
char *src; char *src;
uint8_t cur_buf;
struct pollfd pfd; struct pollfd pfd;
// Initialize ChimeraTK =================================================== // Initialize ChimeraTK ===================================================
...@@ -39,8 +41,8 @@ int main(){ ...@@ -39,8 +41,8 @@ int main(){
dev.getScalarRegisterAccessor<uint32_t>("APP/DAQ_CONTROL"); dev.getScalarRegisterAccessor<uint32_t>("APP/DAQ_CONTROL");
ChimeraTK::OneDRegisterAccessor<uint32_t> daq_tabsel = ChimeraTK::OneDRegisterAccessor<uint32_t> daq_tabsel =
dev.getOneDRegisterAccessor<uint32_t>("APP/daq_0/TAB_SEL"); dev.getOneDRegisterAccessor<uint32_t>("APP/daq_0/TAB_SEL");
ChimeraTK::OneDRegisterAccessor<uint32_t> daq_curbuff = ChimeraTK::ScalarRegisterAccessor<uint32_t> daq_curbuff =
dev.getOneDRegisterAccessor<uint32_t>("APP/daq_0/ACTIVE_BUF"); dev.getScalarRegisterAccessor<uint32_t>("APP/daq_0/ACTIVE_BUF");
// Open DDR access ======================================================== // Open DDR access ========================================================
// Open file descriptor for DDR4 // Open file descriptor for DDR4
...@@ -61,10 +63,37 @@ int main(){ ...@@ -61,10 +63,37 @@ int main(){
}; };
// Initialize DAQ ========================================================= // Initialize DAQ =========================================================
// Disable DAQ, mask IRQ // Disable DAQ
daq_enable = 0; daq_enable = 0;
daq_enable.write(); daq_enable.write();
// Flushing interrupts
//*
rp = 1;
while (rp >= 1) {
fprintf(stdout, "Flushing interrupt...\n");
// unmask irq
s_wr = write(fd_ddr, &unmask, sizeof(unmask));
if (s_wr != (ssize_t)sizeof(unmask)) {
fprintf(stderr, "Error when unmasking interrupt !\n");
return -3;
};
rp = poll(&pfd, 1, 1000);
if (rp >= 1) {
read(fd_ddr, &info, sizeof(info));
};
};
// */
// Masking interrupt
s_wr = write(fd_ddr, &mask, sizeof(mask)); s_wr = write(fd_ddr, &mask, sizeof(mask));
if (s_wr != (ssize_t)sizeof(mask)) {
fprintf(stderr, "Error when masking interrupt !\n");
return -3;
};
// Configure DAQ // Configure DAQ
daq_dbuf_ena = 3; daq_dbuf_ena = 3;
...@@ -77,6 +106,7 @@ int main(){ ...@@ -77,6 +106,7 @@ int main(){
daq_enable = 1; daq_enable = 1;
daq_enable.write(); daq_enable.write();
daq_curbuff.read(); daq_curbuff.read();
cur_buf = daq_curbuff & (uint32_t)(1);
// trigger // trigger
daq_trigger = 1; daq_trigger = 1;
...@@ -86,6 +116,7 @@ int main(){ ...@@ -86,6 +116,7 @@ int main(){
// ======================================================================== // ========================================================================
while(fcnt < 5) {
// Unmask interrupt // Unmask interrupt
s_wr = write(fd_ddr, &unmask, sizeof(unmask)); s_wr = write(fd_ddr, &unmask, sizeof(unmask));
if (s_wr != (ssize_t)sizeof(unmask)) { if (s_wr != (ssize_t)sizeof(unmask)) {
...@@ -99,7 +130,7 @@ int main(){ ...@@ -99,7 +130,7 @@ int main(){
if (rp >= 1) { if (rp >= 1) {
read(fd_ddr, &info, sizeof(info)); read(fd_ddr, &info, sizeof(info));
fprintf(stdout, "Read %d interrupts\n", info); fprintf(stdout, "Read interrupt %d\n", info);
} else if (rp == 0) { } else if (rp == 0) {
fprintf(stderr, "Wait for IRQ interrupted, timeout or signal.\n"); fprintf(stderr, "Wait for IRQ interrupted, timeout or signal.\n");
return -4; return -4;
...@@ -110,6 +141,12 @@ int main(){ ...@@ -110,6 +141,12 @@ int main(){
//continue; //continue;
}; };
// Ignore first one
fcnt += 1;
if (fcnt == 1) {
continue;
}
// Open destination file // Open destination file
t=time(0); t=time(0);
strftime(fdate, 32, "%Y%m%d_%H%M%S", localtime(&t)); strftime(fdate, 32, "%Y%m%d_%H%M%S", localtime(&t));
...@@ -133,7 +170,7 @@ int main(){ ...@@ -133,7 +170,7 @@ int main(){
// Copy data, page by page // Copy data, page by page
//* //*
for (i = 0 ; i < 0x08000 ; i++) { for (i = 0 ; i < 0x08000 ; i++) {
s_wr = write(fd_dst, &src[i*0x1000], 0x1000); s_wr = write(fd_dst, &src[i*0x1000+cur_buf*0x08000000], 0x1000);
if (s_wr < 0x1000) { if (s_wr < 0x1000) {
fprintf(stderr, "Error while writing to file '%s' (%d:%d).\n", fname, i, s_wr); fprintf(stderr, "Error while writing to file '%s' (%d:%d).\n", fname, i, s_wr);
return -6; return -6;
...@@ -141,8 +178,27 @@ int main(){ ...@@ -141,8 +178,27 @@ int main(){
}; };
// */ // */
// Copy data, element by element
/*
for (i=0 ; i < 0x00800000 ; i++) {
s_wr = write(fd_dst, &src[i*16 + 0 + cur_buf*0x08000000], 4);
s_wr = s_wr+ write(fd_dst, &src[i*16 + 4 + cur_buf*0x08000000], 4);
s_wr = s_wr+ write(fd_dst, &src[i*16 + 8 + cur_buf*0x08000000], 1);
s_wr = s_wr+ write(fd_dst, &src[i*16 + 12 + cur_buf*0x08000000], 1);
if (s_wr < 10) {
fprintf(stderr, "Error while writing to file '%s' (%d:%d).\n", fname, i, s_wr);
return -6;
};
};
*/
cur_buf = (cur_buf+1)%2;
close(fd_dst); close(fd_dst);
};
// Disable DAQ, mask IRQ // Disable DAQ, mask IRQ
daq_enable = 0; daq_enable = 0;
daq_enable.write(); daq_enable.write();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment