(Atmega128) externer RAM (z.B. Ethernut-Board 2.1) makefile MCUCR

OP #921739
Hallo,

ich will das mein Atmega128 mallloc() in den externen Speicher 
(0x1100-0x7fff) suchen schickt,
aber irgendwie macht er das nicht :-(

(Ich benutze das sog. Ethernutboard 2.1 mit eingebautem ext. Ram)

Nun habe ich also folgendes gemacht:
Im MCUCR-Register Speicherinterface und waitstates aktiviert.
Dazu habe ich in Assembler in die Datei xram.S geschrieben:
1
.section .init1,"ax",@progbits
2
ldi r16, _BV(SRE)| _BV(SRW00) //Interface aktivieren, 
3
sts MCUCR, r16
4
ldi r16, _BV(SRL2)| _BV(SRW01)|_BV(SRW00)
5
sts XMCRA, r16

In meinem Makefile binde ich das so ein:
1
xram.o: ../xram.S
2
$(CC) $(INCLUDES) $(ASMFLAGS) -c $<

Jetzt sage ich meinem Linker, was er mit dem Speicher tun soll:
1
EXTMEMOPTS= -Wl, --section-start, .data=0x801100, --defsym=__malloc_heap_start=0x801100, --defsym=__malloc_heap_end=0x807fff
2

3
LDFLAGS += $(EXTMEMOPTS)

Wer mehr über das Makefile wissen will: ANHANG

Sehr zu meiner Enttäuschung kriege ich aber nur pointer von malloc, die 
im internen Speicher liegen.

Was mache ich nur Falsch?!?
Moderator Persönliche Seite #921858
Niklas Finck wrote:

> Wer mehr über das Makefile wissen will: ANHANG

Welcher denn?

Ansonsten: die Leerzeichen in den Linkeroptionen gehören da nicht
hin.  Allerdings gehe ich mal davon aus, dass du die im Original
nicht drin hast, sonst würder der Compiler dir das sagen.

Werden die LDFLAGS denn auch benutzt?  Das solltest du auf der
Kommandozeile, die das Linken veranlasst, ja sehen können.
OP #922867
Wurde mir garnicht als Warning angezeigt, aber ich habe dort gesucht, wo 
du es gesagt hast und habe gefunden:
Also:
linker input file unused because linking not done
1
Build started 10.7.2008 at 21:35:29
2

3
(...)
4

5
avr-gcc.exe: -lm: >>>linker input file unused because linking not done<<<
6
avr-gcc.exe -I"C:\.." -mmcu=atmega128 -Wall -gdwarf-2  -g -DF_CPU=14745600UL -O0 -fsigned-char -lm -MD -MP -MT telemetry.o -MF dep/telemetry.o.d  -c  ..
7
/../comm/telemetry.c
8

9
(...)
10

11
AVR Memory Usage
12
----------------
13
Device: atmega128
14

15
Program:   57458 bytes (43.8% Full)
16
(.text + .data + .bootloader)
17

18
Data:       3253 bytes (79.4% Full)
19
(.data + .bss + .noinit)
20

21

22
Build succeeded with 1 Warnings...

Ja, die Leerzeichen waren nur der besseren Lesbarkeit halber. Im 
Eingabefeld schien es noch unlesbar.

Wie mache ich es jetzt richtig?
Gerne auch einen link.

Ein Link zum Linker-Problem ;-)

P.S.:
Die warning ist eine unbenutzte Variable
Angehängte Dateien:
Moderator Persönliche Seite #923120
Das ist nicht die Linker-Kommandozeile (schreibt er ja: ``because
linking not done'').  Das -lm darin ist völlig daneben.  Es wird
natürlich auch nichts schaden (wird halt ignoriert), aber es deutet
darauf hin, dass da manches durcheinander gegangen zu sein scheint.

Kannst du nicht einfach mal ein komplettes Build-Log als Anhang
posten?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.