(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

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