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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren