25KB Array anlegen

Gast #2498275
Lesenswert?

Die maximale moegliche Groesse laesst sich nur schwer, wenn ueberhaupt 
berechen. Interrupts und Funktionsaufrufe brauchen Platz auf dem Stack, 
und wenn rekursive Aufrufe vorkommen, haengt die noetige  Stackgroesse 
auch noch von den Daten ab.
OP #2498313
Lesenswert?

Erstmal vielen Dank für die Antworten.

Ich möchte ein Bild auf einem Display darstellen und es dazu in SRAM 
speichern. Ich habe jetz auch verstanden das, dass mit dem internen 
nicht funktioniert.
Ich nutze das AVR X-Plained Board und möchte nun das externe SDRAM 
nutzen und nutze dazu die AVR1312 von Atmel. Nur leider bekomme ich 
einen haufen an Fehlermeldungen, da einige Sachen nicht definiert sind, 
wie zum Beispiel EBI_CS_ASPACE_t
Wo bekomme ich die fehlenden Definitionen her?
OP #2499547
Lesenswert?

Ich möchte zur Laufzeit eimalig Daten von einer SD-Karte lesen und ins 
Flash ablegen und diese dann auslesen und aufs Display schreiben. Ich 
verspreche mir das, dass lesen des Flashs schneller geht als der Zugriff 
auf die SD-Karte über SPI.

Oder halt die Variante mit dem SDRAM, dass ist ja auf jeden Fall 
schneller nur bekomme ich beim Compilieren wie oben beschrieben die 
Fehlermeldungen. Irgendwie drehe ich mich im Kreis und komme kein Stück 
weiter.
OP #2499682
Lesenswert?

Wenn ich die Daten einmalig per SPI ins Flash schreibe und dann zum 
Beispiel zwischen zwei Bildern hin und her wechseln möchte geht das 
denke ich ein bisschen schneller.

Oh man schrieb:
> Hol dir doch nen anderen Controller mit ausreichend RAM.

Ich habe 8MB externes RAM. Kann es nur leider nicht bedienen weil ich 
den Code nicht Compilieren kann, weil er einige Definitionen nicht 
findet und ich keine passende Header finde wo die Variablen definiert 
sind. Hat noch keiner den Code aus der AVR1312 benutzt?
#2499685
Lesenswert?

Matthias Laubnitz schrieb:

> Ich habe 8MB externes RAM. Kann es nur leider nicht bedienen weil ich
> den Code nicht Compilieren kann, weil er einige Definitionen nicht
> findet und ich keine passende Header finde wo die Variablen definiert
> sind.

Wie wäre es, wenn du dieses Problem erst mal angehen würdest, anstelle 
dass du dich in noch komplizierteren Lösungen verstrickst?
#2499781
Lesenswert?

20 Sekunden googeln ergibt, dass Atmel offenbar da ein paar Namen 
geändert hat und es verabsäumt hat, den Driver Code auf neueren Stand zu 
bringen.

Schau ich in meiner älteren WinAvr Installation rein, dann findet sich 
in
iox128a1.h (der Header Datei, die letztendlich durch -include avr/io.h 
hereingezogen wird) zb
1
/* Chip Select adress space */
2
typedef enum EBI_CS_ASPACE_enum
3
{
4
    EBI_CS_ASPACE_256B_gc = (0x00<<2),  /* 256 bytes */
5
    EBI_CS_ASPACE_512B_gc = (0x01<<2),  /* 512 bytes */
6
    EBI_CS_ASPACE_1KB_gc = (0x02<<2),  /* 1K bytes */
7
    EBI_CS_ASPACE_2KB_gc = (0x03<<2),  /* 2K bytes */
8
    EBI_CS_ASPACE_4KB_gc = (0x04<<2),  /* 4K bytes */
9
    EBI_CS_ASPACE_8KB_gc = (0x05<<2),  /* 8K bytes */
10
    EBI_CS_ASPACE_16KB_gc = (0x06<<2),  /* 16K bytes */
11
    EBI_CS_ASPACE_32KB_gc = (0x07<<2),  /* 32K bytes */
12
    EBI_CS_ASPACE_64KB_gc = (0x08<<2),  /* 64K bytes */
13
    EBI_CS_ASPACE_128KB_gc = (0x09<<2),  /* 128K bytes */
14
    EBI_CS_ASPACE_256KB_gc = (0x0A<<2),  /* 256K bytes */
15
    EBI_CS_ASPACE_512KB_gc = (0x0B<<2),  /* 512K bytes */
16
    EBI_CS_ASPACE_1MB_gc = (0x0C<<2),  /* 1M bytes */
17
    EBI_CS_ASPACE_2MB_gc = (0x0D<<2),  /* 2M bytes */
18
    EBI_CS_ASPACE_4MB_gc = (0x0E<<2),  /* 4M bytes */
19
    EBI_CS_ASPACE_8MB_gc = (0x0F<<2),  /* 8M bytes */
20
    EBI_CS_ASPACE_16M_gc = (0x10<<2),  /* 16M bytes */
21
} EBI_CS_ASPACE_t;

jetzt machst du dein iox128a1.h auf und scrollst da mal durch, ob du 
etwas ähnliches da drinnen findest. ("Chip select adress space" könnte 
ein Suchebgriff sein). Wenn ja, dann hast du den Namen auf den 
EBI_CS_ASPACE_t umbenannt wurde und mit diesem Namen tauscht du dann im 
Driver Code erst mal aus.

(Laut meinen Googel Treffern reicht das. Funktional hat sich offenbar 
nichts geändert, die Dinge sind lediglich ein wenig anders benannt 
worden)

Und wenn ich mir die Fehlermeldungen so ansehe, dann ist das grob 
geschätzt immer der gleiche Fehler, der dafür verantwortlich zeichnet: 
EBI_CS_ASPACE_t heisst nicht mehr so, sondern ein wenig anders.

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