Object Data FileObject TVimmsProj/TimerFuncs#include <vflcalc.h> Object_Control object_control; int varCount = 0; TVarType varTypes[0]={}; //automatic code generation end #include <unistd.h> #include <pthread.h> #include <sys/times.h> #include <time.h> volatile char cont = 0; unsigned iterations = 1; //number of iterations per second void* timerThread(void*) { usleep(1000000); cont = 1; return NULL; }; unsigned waitFunc(unsigned period) { unsigned i; volatile int k=0; //prevent optimization for (i=0;i<period && cont == 0;i++) for (int j=0;j<3;j++) k++; return i; }; void nanowait(unsigned nanoseconds) { //wait time may vary about 5% if (iterations == 1) { //do initialization pthread_t t; tms startTime,endTime; pthread_create(&t,NULL,&timerThread,NULL); times(&startTime); unsigned num = waitFunc(1000000000); times(&endTime); pthread_join(t,NULL); cont = 0; int elapsed = endTime.tms_utime - startTime.tms_utime; //printf("%i",elapsed); iterations = (int) (((double)sysconf(_SC_CLK_TCK) / (double)elapsed) * (double)num); } else { waitFunc((unsigned) (((double)iterations) * ((double)nanoseconds) / 1.0E9) ); }; }; !ELF 44 (  HX %1.*#0%"+ /'$)-,&(!P4t  `  |   ht| >  @ h /t^v - $5`  6;"m 0J  _DYNAMIC_GLOBAL_OFFSET_TABLE___gmon_start___init_fini__cxa_finalize_Jv_RegisterClassesobject_controlvarCountvarTypescontiterations_Z11timerThreadPvusleep_Z8waitFuncj_Z8nanowaitjpthread_createtimespthread_joinsysconflibstdc++.so.5libm.so.6libgcc_s.so.1libc.so.6_edata__bss_start_endGLIBC_2.1.3GLIBC_2.0si 5ii Al!$%).0#()./U< hhhhh h($h0(h8pUS[WRDtX[ÐUS['QHu4<u/tҋuƃH]à P:뽉'US[÷Pt @u ]Í P]ÐUS[dh@Bo8]1ÐUWVSQ}1[/9Es=8u1t&'E@JEyA9stۍt&'Z[^_]Ð&UWVSL[,?tP 1ҋRP,$1҃REP,$}fE´ fEسm}mƒEPe[^_]Éj4QjEPxE؉$$ʚ;qEEȉ$XZjuV 8ujP+u؃V$1҉$E<$}‰$P,$fE´ fEmmƒe[^_]ÐUY} t]Í}u0䍶UhjÐUVS[Vp@t&'Ћu[^]US[PY[(knNx t `  K @4PoooPo GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux),` t #$^v Z/tmp/ccpQSO9i.s/usr/src/packages/BUILD/glibc-2.3.2/csuGNU AS 2.13.90.0.18Zr/tmp/ccVBVKAd.s/usr/src/packages/BUILD/glibc-2.3.2/csuGNU AS 2.13.90.0.18%%n# /tmp/ccpQSO9i.s` ,Wdt9,: !,Wdd,,-K# /tmp/ccVBVKAd.sv (.symtab.strtab.shstrtab.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.data.eh_frame.dynamic.ctors.dtors.jcr.got.bss.comment.debug_aranges.debug_info.debug_abbrev.debug_line`! )K1oPPb>o0M PV 44@ _ttZe  @k` ` q| | y   hh tt ||  H   X  42 ]P4t  `  |   ht|  'h5tC|P T`P v px|   4    , 7>I  Ve@ h r{t - `  6" (- AN initfini.ccall_gmon_startcrtstuff.c__CTOR_LIST____DTOR_LIST____JCR_LIST__p.0completed.1__do_global_dtors_auxframe_dummy__CTOR_END____DTOR_END____FRAME_END____JCR_END____do_global_ctors_auxvfl1.cpp_Z41__static_initialization_and_destruction_0ii_GLOBAL__I_object_control__dso_handleiterationsusleep@@GLIBC_2.0_Z8nanowaitjpthread_create_Z8waitFuncj_DYNAMIC_initobject_controlvarTypessysconf@@GLIBC_2.0_Z11timerThreadPvcont__bss_start_finitimes@@GLIBC_2.0__cxa_finalize@@GLIBC_2.1.3varCount_edata_GLOBAL_OFFSET_TABLE__end_Jv_RegisterClassespthread_join__gmon_start__ Sender#include <vflcalc.h> Object_Control object_control; int varCount = 0; TVarType varTypes[0]={}; //automatic code generation end #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <asm/ioctls.h> #include <sys/ioctl.h> #define SETBIT TIOCMBIS #define CLRBIT TIOCMBIC void nanowait(unsigned t); #define WAITTIME 10000 inline void ClkOn(int fd) { int arg = TIOCM_RTS; ioctl(fd,CLRBIT,&arg); // 5V } inline void ClkOff(int fd) { int arg = TIOCM_RTS; ioctl(fd,SETBIT,&arg); // 0V } inline void SetOutput(char c,int fd) { int arg = TIOCM_DTR; ioctl(fd,c ? CLRBIT : SETBIT,&arg); }; inline unsigned char GetInput(int fd) { int arg = TIOCM_DTR; ioctl(fd,TIOCMGET,&arg); return (((arg & TIOCM_CTS)>0) ? 0 : 0xFF); }; unsigned char SendReceive(int fd,char sc) { ClkOff(fd); char o = 0; for (unsigned char a = 0x80;a > 0; a >>= 1) { SetOutput(sc & a,fd); nanowait(WAITTIME); o += (a & GetInput(fd)); ClkOn(fd); nanowait(WAITTIME); ClkOff(fd); }; return o; }; ELF@44 (   | Ptd %+)$*% ("#'&!(x @    ,Xdlp/^v0 5  ;"m p<J _DYNAMIC_GLOBAL_OFFSET_TABLE___gmon_start___init_fini__cxa_finalize_Jv_RegisterClassesobject_controlvarCountvarTypes_Z11SendReceiveicioctl_Z8nanowaitj__gxx_personality_v0libstdc++.so.5libm.so.6libgcc_s.so.1libc.so.6_edata__bss_start_endGLIBC_2.0GLIBC_2.1.3CXXABI_1.20ii si  үk $\( #)*|#()U] hhhhUS['R(tX[ÐUS[Q,u4 u/tҋuƃ,]à P>뽉'US[ÇPt $u ]Í P]ÐUWVS0E EߍEPhT}W[EEE̍EEЍEEԍEEEؐ&E!<UQRTPWEo$'C EPhTWEJE t1UQRhT!WEE$' EPhTWEZ1Eލe[^_]ÐUY} t]Í}u䍶UhjÐUVS[öp@t&'Ћu[^]US[wPjY[;$< hzPR| 0  &.   # p x@o(ooo &6GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux),  @#$^ Z/tmp/ccpQSO9i.s/usr/src/packages/BUILD/glibc-2.3.2/csuGNU AS 2.13.90.0.18Zr/tmp/ccVBVKAd.s/usr/src/packages/BUILD/glibc-2.3.2/csuGNU AS 2.13.90.0.18%%n# /tmp/ccpQSO9i.s ,Wd9,:@!,Wdd,,-K# /tmp/ccVBVKAd.s (.symtab.strtab.shstrtab.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.eh_frame_hdr.data.eh_frame.dynamic.ctors.dtors.jcr.got.bss.comment.debug_aranges.debug_info.debug_abbrev.debug_lineH! )#1oV>o((PM xx@V   _ZPe@@k q   ,, T XX dd ll pp ,   X   @3 P<(x @    ,Xdlp @ 'X5dClP$ T`p v `h|l  P 4     ,( HU^ds|0   "p< - initfini.ccall_gmon_startcrtstuff.c__CTOR_LIST____DTOR_LIST____JCR_LIST__p.0completed.1__do_global_dtors_auxframe_dummy__CTOR_END____DTOR_END____FRAME_END____JCR_END____do_global_ctors_auxvfl3.cpp_Z41__static_initialization_and_destruction_0ii_GLOBAL__I_object_control__dso_handleDW.ref.__gxx_personality_v0_Z8nanowaitj_DYNAMIC_initobject_controlvarTypes_Z11SendReceiveic__gxx_personality_v0@@CXXABI_1.2__bss_start_fini__cxa_finalize@@GLIBC_2.1.3varCount_edata_GLOBAL_OFFSET_TABLE__endioctl@@GLIBC_2.0_Jv_RegisterClasses__gmon_start__Object TVimmsViewer Viewer0ObjectFileChooserView(dIObjectButtonObjView(ObjectTextObj T(HHelvetica [Wri],-1,24,5,50,0,0,0,0,0AVR ProgrammerObjectTextObj(HHelvetica [Wri],-1,12,5,50,0,1,0,0,0Instructions:ObjectTextObj(|<helvetica,-1,11,5,50,0,0,0,0,01. Check user rights of /dev/ttyS0. This device must be writable. If this is not the case, object "Init" detects an error. 2. Connect board to COM1 3. Switch on Vimms 4. Move all jumpers except JP2 to PROG position. 5. Connect power to board 6. Move JP2 to PROG position 7. Press "Check and erase" button. The message "Received: 53" should appear in the message window. In this case communication with the controller is established successfully. In case of an error or when power is not connected, "FF" is received. Before proceeding, look for an error... 9. Move JP2 to RUN position and then to PROG position again (can sometimes be omitted). 8. Choose the file to be loaded and press load. The file must be in Intel Hex-format. 9. Move all jumpers to "RUN" positions. The controller program starts as soon as jumper JP2 is moved. ObjectBoxObj0ObjectButtonObjView( 2 Y Object TVimmsBlockgWorkspace0Object FileChooser0"File to be loadedAll files (*)Object ButtonObjLPp0LoadObject VarBridgevPpAvrProgFilenameObjectTDotObjX0NailObject StartObj\0PStart objectObjectCalc!9pInit#include <vflcalc.h> Object_Control object_control; int varCount = 1; TVarType varTypes[1]={Integer}; VflVarBase* varData[1]; #define fdout (*((OutputInteger*)(varData[0]))) //automatic code generation end #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <asm/ioctls.h> //#include <asm/termios.h> #include <sys/ioctl.h> #include <sys/times.h> int fd = -1; void nanowait(unsigned); extern "C" bool run() { nanowait(0); fdout = fd; return true; } extern "C" bool init() { fd = open("/dev/ttyS1",O_RDWR|O_NOCTTY); return fd > 0; //initialization successful } extern "C" void stop() { close(fd); } ELF44 (l l l ll PtdX X X %1.)0&"-*#(%',/+! $$NPx  0  J  X  lqx/x^v0 > 50  > ;"|mt ` ) J  _DYNAMIC_GLOBAL_OFFSET_TABLE___gmon_start___init_fini__cxa_finalize_Jv_RegisterClassesobject_controlvarCountvarTypesvarDatafdrun_Z8nanowaitjopenstopclose__gxx_personality_v0libstdc++.so.5libm.so.6libgcc_s.so.1libc.so.6_edata__bss_start_endCXXABI_1.2GLIBC_2.1.3GLIBC_2.0 үk si ii  lp|# './0'(.Umc hhhhh US[R4tX[ÐUS[×Q8u4(u/tҋuƃ8]à P>뽉'US['Pt ,u ]Í P]ÐUS[j0 B B]ÉUS [ÔhP %]ÉUS[T P/]ÐUY(} t]Í}u$䍶UhjÐUVS[p@t&'Ћu[^]US[ÇPY[/dev/ttyS1;$DlzPR| , <> . x 0 $ * (PPoooNo GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux),0 x #$^F Z/tmp/ccpQSO9i.s/usr/src/packages/BUILD/glibc-2.3.2/csuGNU AS 2.13.90.0.18Zr/tmp/ccVBVKAd.s/usr/src/packages/BUILD/glibc-2.3.2/csuGNU AS 2.13.90.0.18%%n# /tmp/ccpQSO9i.s0 ,Wdx9,:!,Wdd,,-K# /tmp/ccVBVKAd.sF (.symtab.strtab.shstrtab.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.eh_frame_hdr.data.eh_frame.dynamic.ctors.dtors.jcr.got.bss.comment.debug_aranges.debug_info.debug_abbrev.debug_line`! )$$*1oNNb>oPM PV PP( _xxZ`e@k0 0 q2J J yX X ll  P     8   XP   ,4 8S$NPx  0  J  X  l  '5CPpT`  v    4   l,|HU^qoxrxx > 0  > "|t#` ) ( <D initfini.ccall_gmon_startcrtstuff.c__CTOR_LIST____DTOR_LIST____JCR_LIST__p.0completed.1__do_global_dtors_auxframe_dummy__CTOR_END____DTOR_END____FRAME_END____JCR_END____do_global_ctors_auxvfl6.cpp_Z41__static_initialization_and_destruction_0ii_GLOBAL__I_object_control__dso_handleDW.ref.__gxx_personality_v0_Z8nanowaitj_DYNAMICclose@@GLIBC_2.0fd_initobject_controlvarTypesinit__gxx_personality_v0@@CXXABI_1.2__bss_start_finirun__cxa_finalize@@GLIBC_2.1.3open@@GLIBC_2.0varCount_edata_GLOBAL_OFFSET_TABLE__endstop_Jv_RegisterClassesvarData__gmon_start__ fdout fdoutObject StartObj\P0pStart objectObject VarBridgePPppAvrProgFile nameObject VarBridgeRStoreFdfdObject StringReader`P p StringReader Object VarBridgeP p  StoreFd  fdObjectCalcOP  p @ Calculator$#include <vflcalc.h> Object_Control object_control; int varCount = 2; TVarType varTypes[2]={String,Integer}; VflVarBase* varData[2]; #define odata (*((InputString*)(varData[0]))) #define handle (*((InputInteger*)(varData[1]))) //automatic code generation end #include <unistd.h> unsigned char SendReceive(int einfd,char sc); bool errout(char* s,int line) { printf("Line %u: %s",line,s); return false; } bool detectChip(int fd) { for (int i=0;i<3;i++) { SendReceive(fd,0xac); SendReceive(fd,0x53); unsigned int c = SendReceive(fd,0); SendReceive(fd,0); if (c == 0x53) return true; }; printf("Chip detection failed."); return false; }; bool eraseChip(int fd) { printf("Erasing chip..."); SendReceive(fd,0xac); SendReceive(fd,0x80); unsigned char c = SendReceive(fd,0); SendReceive(fd,0); if (c == 0x80) { printf("Erase ok"); usleep(8000); //wait 8 ms return true; }; return false; } unsigned char toChar(char* s) { char b[3]; b[0] = s[0]; b[1] = s[1]; b[2] = 0; unsigned int i; sscanf(b,"%x",&i); return (unsigned char)i; }; unsigned short toWord(char* s) { char b[5]; for (int i=0;i<4;i++) b[i] = s[i]; b[4] = 0; unsigned int i; sscanf(b,"%x",&i); return (unsigned short)i; }; bool program_word(int fd,unsigned short word_addr,unsigned short b) { //printf("Programming bytes high: %02x,low: %02x",b & 0xff,b >> 8); SendReceive(fd,0x48); //program high byte SendReceive(fd,word_addr >> 8); unsigned char check = SendReceive(fd,word_addr & 0xFF); SendReceive(fd,b & 0xFF); if (check != (word_addr >> 8)) return false; usleep(8000); SendReceive(fd,0x40); //program low byte SendReceive(fd,word_addr >> 8); check = SendReceive(fd,word_addr & 0xFF); SendReceive(fd,b >> 8); if (check != word_addr >> 8) return false; usleep(8000); return true; }; bool read_word(int fd,unsigned short word_addr,unsigned short* b) { *b = 0; SendReceive(fd,0x28); //read high byte SendReceive(fd,word_addr >> 8); unsigned char check = SendReceive(fd,word_addr & 0xFF); *b += SendReceive(fd,0); if (check != (word_addr >> 8)) return false; SendReceive(fd,0x20); //read low byte SendReceive(fd,word_addr >> 8); check = SendReceive(fd,word_addr & 0xFF); *b += (((unsigned short)SendReceive(fd,0)) << 8); if (check != word_addr >> 8) return false; return true; }; bool doProgram(int fd,char* cursor,int len) { bool first = true; char* dataend = cursor + len; int line = 0; while (cursor < dataend) { line++; if (*cursor != ':') return errout("Illegal file format",line); int num_words = (toChar(++cursor) >> 1); //convert into word count cursor += 2; int address = (toWord(cursor) >> 1); //convert into word address cursor += 4; int record_type = toChar(cursor); cursor += 2; if (record_type == 1) break; //end if (record_type == 0) { //load line if (first) { first = false; if (!detectChip(handle)) return false; printf("Writing, please wait..."); }; for (int i=0;i<num_words;i++) { unsigned short w = toWord(cursor); if (!program_word(fd,address + i,w)) errout("Communications error",line); cursor += 4; }; }; while (cursor < dataend && *cursor != 0x0d) cursor++; cursor++; if (*cursor == 0x0a) cursor++; } printf("Programming ok"); return true; }; bool doVerify(int fd,char* cursor,int len) { printf("Verifying..."); bool ok = true; char* dataend = cursor + len; int line = 0; while (cursor < dataend) { line++; if (*cursor != ':') return errout("Illegal file format",line); int num_words = (toChar(++cursor) >> 1); //convert into word count cursor += 2; int address = (toWord(cursor) >> 1); //convert into word address cursor += 4; int record_type = toChar(cursor); cursor += 2; if (record_type == 1) break; //end if (record_type == 0) { //load line for (int i=0;i<num_words;i++) { unsigned short w,w2; w = toWord(cursor); if (!read_word(fd,address + i,&w2)) errout("Communications error",line); if (w != w2) { printf("Difference at word address %x: In chip: %x, should be: %x",address+i,w2,w); ok = false; }; cursor += 4; }; }; while (cursor < dataend && *cursor != 0x0d) cursor++; cursor++; if (*cursor == 0x0a) cursor++; } if (ok) printf("Verify ok"); else printf("There were differences, programming failed"); return true; }; extern "C" bool run() { //if (!detectChip(handle)) return errout("Aborted...",0); //printf("Chip detection ok"); if (!doProgram(handle,(char*)odata,odata.len())) return false; if (!doVerify(handle,(char*)odata,odata.len())) return false; return true; //continues execution } *ELF 44 (&&((PtdDD%;8*-/6:5+$(140').7392#"!&%, <<l    `   &'(l)x))))> . ( ~ /l  C ^)v&' O)  65` Aq7`Q ;"m&P   1) )) ;8@ S H!J ) _DYNAMIC_GLOBAL_OFFSET_TABLE___gmon_start___init_fini__cxa_finalize_Jv_RegisterClassesobject_controlvarCountvarTypesvarData_Z6erroutPciprintf_Z10detectChipi_Z11SendReceiveic_Z9eraseChipiusleep_Z6toCharPcsscanf_Z6toWordPc_Z12program_worditt_Z9read_worditPt_Z9doProgramiPci_Z8doVerifyiPcirun_Znajmemcpy_ZdaPv__gxx_personality_v0libstdc++.so.5libm.so.6libgcc_s.so.1libc.so.6_edata__bss_start_endGLIBCPP_3.2CXXABI_1.2GLIBC_2.1.3GLIBC_2.0d0r)үksi ii &&p)'%)!),)8)9):)))) )#)$)')()*),)/)0)4)5)6)7)8U9  hhhhh h($h0(h8p,h@`0hHP4hP@8hX0<h` @hhDhpHhxLhUS[R`tX[ÐUS[ÛQdu4Tu/ptpҋpuƃd]à lP뽉'US[+Pt Xu ]Í P]ÐUSURE [PP=1]ÉUWVS [æ}EjWY^jSWXZjW%YXjWStE}~ P1e[^_]ÉUWVS[)PuY_jVfXZjV\Y_jVRXZjVF1te[^_]Í&' /P5$@e[^_]Ð&US(UEB[}EEP8PEPE1]EÐUS$[8M1Ґ& D*B~PEP8PEPEE%]ÐUWVS$EjHfEE[u P_fXQMMQXZVMQuXZEPEPM18te[^_]Ít& h@W^_Mj@QXZEPEP_XuVMQ|fmXZEPEPe%1;Eu h@{&UWVSEu fj(E[öP _fXRMQUXZVMQuXZjEP%UfM18te[^_]Í'Mj QXZEPEPw_XuVMQhXZjEPYUf%;E%e[^_]Ð&'UWVSu E[î9EEE'E>:O FV%4$EIf%4$E%tMu}1;};us> tF;us> uF> ;ub ;PWe[^_]Ít&EPJPv'G;}} V% PE%PEPuFw\@ @ PE}1҄n _PEPwP61҈e[^_]Ít&UWVS[(Pu `E9EEEN&'E>:a FV%4$Eyf%4$E%EE9EEEI&fUf9t*%P%PEEPPEE܋E9E}O Vǃ EPEE%PEP|uMQJPv;us> tF;us> uF> t.;u}t" Pe[^_]Fσ ܃URwPT%e[^_]ÐUWVS [\1҅tPR1UtpF F @P ~F WNQPQV F U\GRv VH Qj1҄tytP\1ztpF F @P< VF RNQPV F \@WV R@ Pt1҈e[^_]Ív' P Pj&'UY} t]Í}uP䍶UhjÐUVS[Zp@t&'Ћu[^]US[PjY[Line %u: %sChip detection failed.Erasing chip...Erase ok%xProgramming okCommunications errorWriting, please wait...Illegal file formatVerifying...Verify okDifference at word address %x: In chip: %x, should be: %xThere were differences, programming failed;X$xH|&|)zPR| 0 ~ .0T .0  .0 .0 H.0$P .0XQ A.ds} l `<  )Ho<ooo(  * : J Z j z GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux),`l #$^v Z/tmp/ccpQSO9i.s/usr/src/packages/BUILD/glibc-2.3.2/csuGNU AS 2.13.90.0.18Zr/tmp/ccVBVKAd.s/usr/src/packages/BUILD/glibc-2.3.2/csuGNU AS 2.13.90.0.18%%n# /tmp/ccpQSO9i.s`,Wdl 9,: !,Wdd,,-K# /tmp/ccVBVKAd.sv( .symtab.strtab.shstrtab.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.eh_frame_hdr.data.eh_frame.dynamic.ctors.dtors.jcr.got.bss.comment.debug_aranges.debug_info.debug_abbrev.debug_line! <<)1ov>o<<`M HV  _l l Z e k``q2+ yD&'(l)l x)x))d)X@ "@4 '"<<l    `   &'(l)x))))  'l)5x)C)P&T)`  vP  t)|)()  4  &,'H>Z . g(p ~ l  C )& )  6` %q7`Q ;"W&`P  n 1))) 8@ S ! ) initfini.ccall_gmon_startcrtstuff.c__CTOR_LIST____DTOR_LIST____JCR_LIST__p.0completed.1__do_global_dtors_auxframe_dummy__CTOR_END____DTOR_END____FRAME_END____JCR_END____do_global_ctors_auxvfl8.cpp_Z41__static_initialization_and_destruction_0ii_GLOBAL__I_object_control__dso_handleDW.ref.__gxx_personality_v0usleep@@GLIBC_2.0_Z6erroutPci_DYNAMIC_Z10detectChipi_init_Z6toCharPcobject_controlvarTypes_Z8doVerifyiPci_Z11SendReceiveic__gxx_personality_v0@@CXXABI_1.2__bss_start_Z12program_wordittprintf@@GLIBC_2.0_finimemcpy@@GLIBC_2.0run__cxa_finalize@@GLIBC_2.1.3varCount_Z9eraseChipi_Z9read_worditPtsscanf@@GLIBC_2.0_edata_GLOBAL_OFFSET_TABLE__end_Z9doProgramiPci_Znaj@@GLIBCPP_3.2_Z6toWordPc_ZdaPv@@GLIBCPP_3.2_Jv_RegisterClassesvarData__gmon_start__ odata handle odata handleObject ButtonObjbP0pPCheck and eraseObject VarBridgevPppStoreFdfdObjectCalc qPpCalculator1#include <vflcalc.h> Object_Control object_control; int varCount = 1; TVarType varTypes[1]={Integer}; VflVarBase* varData[1]; #define fd (*((InputInteger*)(varData[0]))) //automatic code generation end unsigned char SendReceive(int einfd,char sc); extern "C" bool run() { SendReceive(fd,0xac); SendReceive(fd,0x53); unsigned int c = SendReceive(fd,0); SendReceive(fd,0); SendReceive(fd,0xac); SendReceive(fd,0x80); SendReceive(fd,0); SendReceive(fd,0); printf("Received: %X\n",c); if (c == 0x53) printf("Communication ok!"); else printf("Communication failed."); return true; //continues execution } %ELF44 (d d d dd PtdP P P %-*&,$"' #%)+(!T $     P  dt/ ^v65  p ;"ml J  _DYNAMIC_GLOBAL_OFFSET_TABLE___gmon_start___init_fini__cxa_finalize_Jv_RegisterClassesobject_controlvarCountvarTypesvarDatarun_Z11SendReceiveicprintf__gxx_personality_v0libstdc++.so.5libm.so.6libgcc_s.so.1libc.so.6_edata__bss_start_endGLIBC_2.1.3GLIBC_2.0CXXABI_1.20si ii үkdhp %*+,"%*Ui hhhhUS[/R,tX[ÐUS[Q0u4 u/tҋuƃ0]à PB뽉'US[ÏPt $u ]Í P]ÐUWVS[:(jH QXZjS@ P_XjH Q~%XZjH QhXZjH QYXZjH QJXZjH Q;XZjH Q,XZWbP-St! pPe[^_]É Pe[^_]ÐUYP} t]Í}u䍶UhjÐUVS[p@t&'Ћu[^]US[ïPY[Received: %X Communication failed.Communication ok!;  @dzPR| 0  .   #  HoTooo :JZjGCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux)GCC: (GNU) 3.3 20030226 (prerelease) (SuSE Linux),   #$^ !Z/tmp/ccpQSO9i.s/usr/src/packages/BUILD/glibc-2.3.2/csuGNU AS 2.13.90.0.18Zr/tmp/ccVBVKAd.s/usr/src/packages/BUILD/glibc-2.3.2/csuGNU AS 2.13.90.0.18%%n# /tmp/ccpQSO9i.s ,Wd 9,:!,Wdd,,-K# /tmp/ccVBVKAd.s (!.symtab.strtab.shstrtab.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.eh_frame_hdr.data.eh_frame.dynamic.ctors.dtors.jcr.got.bss.comment.debug_aranges.debug_info.debug_abbrev.debug_lineP! )#1oZ>oTTPM HV   _  Z$$Pek q2  6yP P dd tt T     0   X@  `4 =T $     P  dt  '5CPhT` v    ` 4   d-pIR Xgp6  p "l  &. initfini.ccall_gmon_startcrtstuff.c__CTOR_LIST____DTOR_LIST____JCR_LIST__p.0completed.1__do_global_dtors_auxframe_dummy__CTOR_END____DTOR_END____FRAME_END____JCR_END____do_global_ctors_auxvfl10.cpp_Z41__static_initialization_and_destruction_0ii_GLOBAL__I_object_control__dso_handleDW.ref.__gxx_personality_v0_DYNAMIC_initobject_controlvarTypes_Z11SendReceiveic__gxx_personality_v0@@CXXABI_1.2__bss_startprintf@@GLIBC_2.0_finirun__cxa_finalize@@GLIBC_2.1.3varCount_edata_GLOBAL_OFFSET_TABLE__end_Jv_RegisterClassesvarData__gmon_start__fdfdEOF