Anthony, Are you linking the file that contains main() as the first object? It looks like the linker has put sdcc_call_dptr() at the address of the reset vector which makes it jump to whatever A+DPTR is after reset.
Maarten > another strange observation. If I move the actual declaration of the > sensors_event to a different file everything works. Unfortunately this > is not a suitable long term solution. > > Anthony Asterisk wrote: > > I hit a very frustrating problem yesterday and a solution is still > > alluding me. Unfortunately the problem shows up when trying to > > execute the linked ihx file on the target platform so it is not easy > > for me to provide a testcase. I will give some code snippets, please > > let me know any steps I can take to further debug it. > > > > > > Here is the code that I am altering. A working version looks like this: > > > > printf("\n\npress button "); > > etimer_set(&timer,CLOCK_CONF_SECOND/5); > > while (1) { > > PROCESS_WAIT_EVENT(); > > if (ev==PROCESS_EVENT_TIMER) { > > etimer_reset(&timer); > > lcd_putchar(0x08); > > lcd_putchar(spin[spin_ptr]); > > spin_ptr = (spin_ptr+1)%4; > > } > > else if (ev==PROCESS_EVENT_MSG) { > > //else if (ev == sensors_event) { > > exp_port.fields.leds++; > > } > > else { > > printf("unknown event\n"); > > } > > } > > > > With this code the message "press button" is displayed. > > > > If I switch the commented lines ONLY, press button is never displayed > > and it seems like nothing is even loaded/executed on the target platform. > > > > printf("\n\npress button "); > > etimer_set(&timer,CLOCK_CONF_SECOND/5); > > while (1) { > > PROCESS_WAIT_EVENT(); > > if (ev==PROCESS_EVENT_TIMER) { > > etimer_reset(&timer); > > lcd_putchar(0x08); > > lcd_putchar(spin[spin_ptr]); > > spin_ptr = (spin_ptr+1)%4; > > } > > //else if (ev==PROCESS_EVENT_MSG) { > > else if (ev == sensors_event) { > > exp_port.fields.leds++; > > } > > else { > > printf("unknown event\n"); > > } > > } > > > > > > The extern declaration of sensors_event is in an included header > > file. It looks like this: > > > > extern process_event_t sensors_event; > > > > And the actual declaration (in a code file) looks like this: > > > > process_event_t sensors_event; > > > > > > Nothing surprising there. > > > > > > I've been digging around in the *.sym and linker output *.map file for > > some clue. > > > > In the *.sym file for the module with the code snippet above I see: > > > > _sensors_event > > **** GX > > > > > > In the aslink output *.map file, I see: > > > > Hexadecimal > > > > Area Addr Size Decimal Bytes > > (Attributes) > > -------------------------------- ---- ---- ------- ----- > > ------------ > > XSEG E000 0291 = 657. bytes > > (REL,CON,XDATA) > > > > Value Global > > -------- -------------------------------- > > 0D:E010 _exp_port > > 0D:E016 _ddram_addr > > 0D:E017 _sensors_event > > 0D:E10D _p0ien > > 0D:E10E _p2ien > > > > > > If I diff the *.map from the working and non-working version, the > > results are very similar. The order of several various changes but > > they are all still present. One change that I did notice which has me > > wondering: > > > > > > 431,432c431,432 > > < 0C:0000 __sdcc_call_dptr > > < 0C:0088 __sdcc_program_startup > > --- > > > 0C:0086 __sdcc_program_startup > > > 0C:008B __sdcc_call_dptr > > > > > > these differences are here: > > > > Area Addr Size Decimal Bytes > > (Attributes) > > -------------------------------- ---- ---- ------- ----- > > ------------ > > HOME 0000 008D = 141. bytes > > (REL,CON,CODE) > > > > Value Global > > -------- -------------------------------- > > 0C:0000 __sdcc_call_dptr > > 0C:0088 __sdcc_program_startup > > > > Hexadecimal > > > > > > > > > > The working version seems to have a non-null address for the > > __sdcc_call_dptr code, but the broken version has NULL. 0000 seems to > > me like it might indicate some sort of error. > > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Sdcc-user mailing list > Sdcc-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/sdcc-user > ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Sdcc-user mailing list Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user