14 #include <sys/types.h>
15 #include <sys/timeb.h>
18 #include "CAENVMElib.h"
25 #define FIRST_FIRMWARE_PAGE_BASE_WORD_ADDRESS 0x000000
26 #define SECOND_FIRMWARE_PAGE_BASE_WORD_ADDRESS 0x200000
27 #define THIRD_FIRMWARE_PAGE_BASE_WORD_ADDRESS 0x400000
28 #define FOURTH_FIRMWARE_PAGE_BASE_WORD_ADDRESS 0x600000
37 struct _timeb timebuffer;
39 _ftime( &timebuffer );
40 time_ms = (long)timebuffer.time * 1000 + (
long)timebuffer.millitm;
45 gettimeofday(&t1, &tz);
46 time_ms = (t1.tv_sec) * 1000 + t1.tv_usec / 1000;
55 long currentTime, elapsedTime;
59 uint32_t bufferLength;
62 unsigned int verifyErrors = 0;
90 c = (
unsigned char)fgetc(binfile);
91 c1 = (
unsigned char)fgetc(binfile);
97 for(
i = 0;
i < 8;
i++ )
99 swap = swap | (0x80 >>
i);
103 for(
i = 0;
i < 8;
i++ )
105 swap1 = swap1 | (0x80 >>
i);
107 buffer[bp] = (uint32_t) ((swap1 <<8) | swap);
109 buffer[bp] = (uint32_t) ((c1 <<8) |
c);
117 bufferLength = (--bp);
120 printf(
"\nERROR: Input BIN file length (%d bytes) is different than expected bitstream size (%d bytes). Exiting.....\n", bufferLength*2,
BITSTREAM_BYTES);
125 elapsedTime =
get_time() - currentTime;
126 printf(
"\nBitstream (%d bytes) loaded in %ld milliseconds\n", bufferLength*2, elapsedTime);
137 elapsedTime =
get_time() - currentTime;
138 printf(
"\nFlash erased in %ld milliseconds\n", elapsedTime);
144 writeFlash(A3818_handle, buffer, bufferLength, baseAddress);
145 elapsedTime =
get_time() - currentTime;
146 printf(
"\n%d 16-bit words programmed in %ld milliseconds\n", bufferLength, elapsedTime);
153 verifyErrors =
verifyFlash(A3818_handle, buffer, bufferLength, baseAddress);
154 elapsedTime =
get_time() - currentTime;
155 printf(
"\n%d 16-bit words verified in %ld milliseconds\n", bufferLength, elapsedTime);
161 if( verifyErrors > 0 ) {
162 printf(
"\n\n%d errors found during verify!\n",verifyErrors);
164 printf(
"\n\nFirmware updated without errors. Written %d words\n",bufferLength);
173 uint32_t baseAddress;
174 long currentTime, elapsedTime;
178 uint32_t bufferLength;
181 unsigned int verifyErrors = 0;
209 c = (
unsigned char)fwdata[fi++];
210 c1 = (
unsigned char)fwdata[fi++];
216 for(
i = 0;
i < 8;
i++ )
218 swap = swap | (0x80 >>
i);
222 for(
i = 0;
i < 8;
i++ )
224 swap1 = swap1 | (0x80 >>
i);
226 buffer[bp] = (uint32_t) ((swap1 <<8) | swap);
228 buffer[bp] = (uint32_t) ((c1 <<8) |
c);
236 bufferLength = (--bp);
239 printf(
"\nERROR: Input BIN file length (%d bytes) is different than expected bitstream size (%d bytes). Exiting.....\n", bufferLength*2,
BITSTREAM_BYTES);
244 elapsedTime =
get_time() - currentTime;
245 printf(
"\nBitstream (%d bytes) loaded in %ld milliseconds\n", bufferLength*2, elapsedTime);
256 elapsedTime =
get_time() - currentTime;
257 printf(
"\nFlash erased in %ld milliseconds\n", elapsedTime);
263 writeFlash(A3818_handle, buffer, bufferLength, baseAddress);
264 elapsedTime =
get_time() - currentTime;
265 printf(
"\n%d 16-bit words programmed in %ld milliseconds\n", bufferLength, elapsedTime);
272 verifyErrors =
verifyFlash(A3818_handle, buffer, bufferLength, baseAddress);
273 elapsedTime =
get_time() - currentTime;
274 printf(
"\n%d 16-bit words verified in %ld milliseconds\n", bufferLength, elapsedTime);
280 if( verifyErrors > 0 ) {
281 printf(
"\n\n%d errors found during verify!\n",verifyErrors);
283 printf(
"\n\nFirmware updated without errors. Written %d words\n",bufferLength);