Just a helpful hint...

Another thing that the script I mentioned in my prior email (but didn't get around to attaching) is to spit out a linker file that defines the registers so you can do things like print them and set them symbolically from gdb.

p PORTA
p PORTA = 0xFF

x/20b &PORTA

etc.

This is very simple (and is something you can do by just linking a text file with your program). It just surprised me that no one seems to mention it when people complain about not seeing the registers in the debugger.

All I did was this:

I made a text file (which I named iom128.a) that contains defines for all the registers:

/* SFR memory addresses */
ACSR = 0x800028;
ADC = 0x800024;
ADCH = 0x800025;
ADCL = 0x800024;
ADCSR = 0x800026;
ADCSRA = 0x800026;
ADCW = 0x800024;
ADMUX = 0x800027;
ASSR = 0x800050;
DDRA = 0x80003a;
DDRB = 0x800037;
DDRC = 0x800034;

And I also came up with a slightly extended linker script (avr5.x), though I'm not sure that it's even needed (it's in the tarball). What it did was just to add two more regions that define the rest of the space:

MEMORY
{
  text   (rx)       : ORIGIN = 0x000000, LENGTH = 128K
  regs   (!a!irw!x) : ORIGIN = 0x800000, LENGTH = 0x20
  sfrs   (!a!irw!x) : ORIGIN = 0x800020, LENGTH = 0x40
  data   (rw!x)     : ORIGIN = 0x800060, LENGTH = 0xffa0
  eeprom (rw!x)     : ORIGIN = 0x810000, LENGTH = 64K
}

Then I added this to the linker line:

 -L. -T iom128.a -T avr5.x

which replaces the stock avr5.x with the concatenation of these two files.

Handy.


Attachment: headerMods.tar.gz
Description: GNU Zip compressed data


--
Ned Konz
[EMAIL PROTECTED]


_______________________________________________
AVR-libc-dev mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-libc-dev

Reply via email to