mikrocontroller.net

Forum: Compiler & IDEs SIMAVR verstehen und um MEGA8 erweitern


Autor: Gerhard Z. (germel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo MC Gemeinde,

Nachdem ich einen Simulator unter Linux für die 8-bit AVRs gesucht habe 
bin ich über SIMAVR gestolpert. Nun möchte ich gerne wissen, wie ich ihn 
verwenden kann und, da er noch keine Unterstützung für MEGA8 hat, man 
ihn erweitern kann. Deshalb hier die Frage, ob schon jemand von euch 
Erfahrung mit dem Simulator gesammelt hat?

Beim Versuch, den Simulator um den MEGA8 zu erweitern stolpere ich im 
folgenden Code-Fragment schon über Verständnisfragen wie - wie sind die 
gesamten Konstrukte mit Punkt davor wie z.B. ".core" oder ".portb" zu 
verstehen? Laut K&R sind als Variablennamen nur "letters", "digits" and 
"_" underscore erlaubt. Hier das Code-Fragment:
--------------------
struct mcu_t {
  avr_t core;
  avr_eeprom_t   eeprom;
  avr_watchdog_t  watchdog;
  avr_flash_t   selfprog;
  avr_extint_t  extint;
  avr_ioport_t  portb,portc,portd;
  avr_uart_t    uart;
  avr_adc_t    adc;
  avr_timer_t    timer0,timer1,timer2;
  avr_spi_t    spi;
  avr_twi_t    twi;
};

#ifdef SIM_CORENAME

#ifndef SIM_VECTOR_SIZE
#error SIM_VECTOR_SIZE is not declared
#endif
#ifndef SIM_MMCU
#error SIM_MMCU is not declared
#endif

struct mcu_t SIM_CORENAME = {
  .core = {
    .mmcu = SIM_MMCU,
    DEFAULT_CORE(SIM_VECTOR_SIZE),

    .init = mx8_init,
    .reset = mx8_reset,
  },
  AVR_EEPROM_DECLARE(EE_READY_vect),
  AVR_SELFPROG_DECLARE(SPMCSR, SELFPRGEN, SPM_READY_vect),
  AVR_WATCHDOG_DECLARE(WDTCSR, WDT_vect),
  .extint = {
    AVR_EXTINT_DECLARE(0, 'D', 2),
    AVR_EXTINT_DECLARE(1, 'D', 3),
  },
  .portb = {
    .name = 'B', .r_port = PORTB, .r_ddr = DDRB, .r_pin = PINB,
    .pcint = {
      .enable = AVR_IO_REGBIT(PCICR, PCIE0),
      .raised = AVR_IO_REGBIT(PCIFR, PCIF0),
      .vector = PCINT0_vect,
    },
    .r_pcint = PCMSK0,
  },
  .portc = {
    .name = 'C', .r_port = PORTC, .r_ddr = DDRC, .r_pin = PINC,
    .pcint = {
      .enable = AVR_IO_REGBIT(PCICR, PCIE1),
      .raised = AVR_IO_REGBIT(PCIFR, PCIF1),
      .vector = PCINT1_vect,
    },
    .r_pcint = PCMSK1,
  },
  .portd = {
    .name = 'D', .r_port = PORTD, .r_ddr = DDRD, .r_pin = PIND,
    .pcint = {
      .enable = AVR_IO_REGBIT(PCICR, PCIE2),
      .raised = AVR_IO_REGBIT(PCIFR, PCIF2),
      .vector = PCINT2_vect,
    },
    .r_pcint = PCMSK2,
  },
.
.
.
-------------------------------
Der Ausschnitt findet sich in der Datei sim_megax8.h.

Kann mir jemand einen Tip geben, wie in der definierten Struktur z.B. 
".core" zu verstehen ist? Hier noch ein paar Links:

Wiki:
http://gitorious.org/simavr/pages

Sources:
http://gitorious.org/simavr/simavr/archive-tarball/master

Mailing List:
http://groups.google.com/group/simavr

Gruß
Gerhard

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerhard Zintel schrieb:
> Kann mir jemand einen Tip geben, wie in der definierten Struktur z.B.
> ".core" zu verstehen ist?

Das sind einfach Initialisierungen der einzelnen Strukturelemente.
struct test {
    uint8_t foo;
    uint8_t bar;
};

struct test a = { 1, 2 };
struct test b = { .foo = 1, .bar = 2 };

BTW: Hast du dir auch schon den Thread zu dem Simulator auf AVR-Freaks 
angesehen? Da steckt möglicherweise auch noch die eine oder andere 
Detailinformation drin.
http://www.avrfreaks.net/index.php?name=PNphpBB2&f...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.