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

OP #921739
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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

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.