Memory Sections im AVR Studio

Gast #904747
Lesenswert?
• ▲
▼
Hallo,

also ich bekomm es einfach nicht hin ... wahrscheinlich bin ich 
schlichtweg zu blöd dafür.

Ich will im Flash ein Bereich für Konstanten reservieren, der an einer 
ganz bestimmten Stelle steht. Habs nun in erster Linie mit den Memory 
Settings im AVR-Studio versucht, aber meine Angaben werden ganz munter 
ignoriert. ... nachschauen tue ich mit dem Debugger AVR-Studio 4.13 
Build 528.

Ich versteh die Welt nicht mehr ...

MfG
#904805
Lesenswert?
• ▲
▼
Dummy wrote:

> Habs nun in erster Linie mit den Memory
> Settings im AVR-Studio versucht, aber meine Angaben werden ganz munter
> ignoriert. ... nachschauen tue ich mit dem Debugger AVR-Studio 4.13
> Build 528.

Was genau bedeutet denn "ignoriert"?
Bei 4.14 werden aus den Angaben unter "Memory Settings" jedenfalls 
korrekte Linker-Options erzeugt. Man muss nur beachten, dass bei "Memory 
Type" Flash Wort-Adressen einzutragen sind.
Gast #904806
Lesenswert?
• ▲
▼
Oh, entschuldigung ... ich versuch das Problem in C zu lösen.

das ganze müsste dann über _attribute_ ((section (".MySection"))) 
funktionieren. Nur wie gesagt, ich kann unter den Memory Settings 
MySection definieren wie ich will, die Ignoranz seitens des Compilers 
bleibt.

MfG
Gast #904819
Lesenswert?
• ▲
▼
In dem Debugger des AVR-Studios kann man sich doch den Inhalt des 
Programmspeichers, des RAMs, usw. anzeigen lassen. Dort lässt sich die 
Variable, die in meine Section lege aber nicht finden.

Was meinst Du mit Linker-Kommandozeile? Wo finde ich die? Meinst Du das 
Map-File?
#904831
Lesenswert?
• ▲
▼
Dummy wrote:
> In dem Debugger des AVR-Studios kann man sich doch den Inhalt des
> Programmspeichers, des RAMs, usw. anzeigen lassen. Dort lässt sich die
> Variable, die in meine Section lege aber nicht finden.

Das kann aber mehrere Ursachen haben, z.B. auch ein simpler 
Schreibfehler bei dem, was du unter "Memory Settings" eingetragen hast.

> Was meinst Du mit Linker-Kommandozeile? Wo finde ich die? Meinst Du das
> Map-File?

Im Build-Window gibt es mehrere Zeilen, die mit "avr-gcc.exe" beginnen. 
Poste die letzte von diesen.
Gast #904862
Lesenswert?
• ▲
▼
die letzte zeile heisst

avr-gcc.exe -mmcu=attiny2313  -Wl,-section-start=TestSec=0x200 main.o 
-o tiny2313.elf

Word-Adresse hab ich 0x0100 ... folglich ist die ByteAdresse 0x200. Das 
sitmmt also.

Das programm schaut so aus
1
#include <avr/io.h>
2
#include <avr/boot.h>
3
#include <avr/pgmspace.h>
4

5

6

7

8
  const char PROGMEM str0[4] = "1234";
9
  const char __attribute__ ((section (".TestSec"))) str1[4] = "5678";
10

11

12
int main(void)
13
{
14
  DDRB = 0xFF;
15
  unsigned char cnt;
16

17

18
  while(1)
19
  {
20
    cnt = 10;
21
    PORTB = pgm_read_byte(&str0[3]);
22

23
    while(cnt != 0)
24
      cnt--;
25

26

27
    cnt = 10;
28
    PORTB = pgm_read_byte(&str1[3]);
29

30
    while(cnt != 0)
31
      cnt--;
32
  }
33
}


Ich hab es jetzt mal durchlaufen lassen, und er gibt über PortB die 
richtigen Wert aus. Nur sehe ich nicht ob es an der richtigen Adresse 
steht.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.