mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme bei SDRAM Initialisierung beim LPC2578


Autor: mkrug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich spiele etwas mit dem LPC2478 EVAL Board von embedded artists herum. 
Programmieren und ausführen von Programmen funktioniert 
soweit(openocd0.3.0, amontec tiny-key, yargato gnu tool-chain). Wenn ich 
allerdings das Beispiel von embedded artists zur LCD Ansteuerung 
debuggen möchte stürzt der Debugger immer bei der Initialisierung des 
SDRAM ab. Das passiert egal ob ich gdb-insight oder eclipse als 
front-end nehme. Das SDRAM wird als 'Video RAM' für den LCD Controller 
benützt. Der eigentliche Programmcode steht bei mir immer im internen 
Flash.

Konkret stürzt der Debugger beim ausführen folgender Zeile ab:
/* Mem clock enable, CLKOUT runs, send command: NOP */
EMC_DYN_CTRL = 0x00000183;

Ich habe genau den selben Effekt wenn ich die SDRAM Initialisierung 
nehme die im NXP code bundle zur Verfügung gestellt wird.

Die Fehlermeldung die gdb ausgibt lautet:
timeout waiting for SYSCOMP & DBGACK, last DBG_STATUS: 0

Untenstehend hab ich noch die komplette Funktion sdramINIT angehängt. 
Ich lasse den LPC2478 derzeit mit 36MHz laufen da es von embedded 
artists den Hinweis gibt das das Board bzgl SDRAM nur bis 48MHz stabil 
läuft. Allerdings habe ich festgestellt das bei der Programmausführung 
aus dem Flash das SDRAM offensichtlich auch bei einem µC Takt von 72MHz 
noch korrekt funktioniert.

Bin für jeden Hinweis dankbar.

Gruss
Markus


sdramInit(void)
{
volatile unsigned int i, dummy = dummy;

// SCS &= ~0x00000002;
// SCS |= 0x00000002;
EMC_CTRL = 0x00000001;
PCONP |= 0x00000800; /* Turn on EMC PCLK */
PINSEL4 = 0x50000000;
PINSEL5 = 0x55010115;
PINSEL7 = 0x55555555;

PINSEL6 = 0x55555555;
PINSEL8 = 0x55555555;
PINSEL9 = 0x50555555;

//all registers...
EMC_DYN_RP = 1;
EMC_DYN_RAS = 3;
EMC_DYN_SREX = 5;
EMC_DYN_APR = 1;
EMC_DYN_DAL = 5;
EMC_DYN_WR = 1;
EMC_DYN_RC = 5;
EMC_DYN_RFC = 5;
EMC_DYN_XSR = 5;
EMC_DYN_RRD = 1;
EMC_DYN_MRD = 1;
EMC_DYN_RD_CFG = 1;

//
EMC_DYN_RASCAS0 = 0x00000202;

//
EMC_DYN_CFG0 = 0x00005488;


//wait 100mS
mdelay(100);

//Send command: NOP
// THE NEXT COMMAND LEADS TO THE DEBUGGER CRASH
EMC_DYN_CTRL = 0x00000183;

//wait 200mS
mdelay(200);


//Send command: PRECHARGE-ALL, shortest possible refresh period
EMC_DYN_CTRL = 0x00000103;
EMC_DYN_RFSH = 0x00000002;

//wait 128 ABH clock cycles
for(i=0; i<0x40; i++)
asm volatile(" nop");

//Set correct refresh period
EMC_DYN_RFSH = (unsigned int)(Fcclk  250  8192) + 1;

//Send command: MODE
EMC_DYN_CTRL = 0x00000083;

//Set mode register in SDRAM
dummy = *((volatile unsigned int*)(SDRAM_BASE | (0x22 << 11)));


//Send command: NORMAL
EMC_DYN_CTRL = 0x00000000;

//Enable buffer
EMC_DYN_CFG0 |= 0x00080000;

//initial system delay
mdelay(1);

}

Autor: Star Keeper (starkeeper)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du das problem lösen können? Ich habe gerade das gleiche Problem. 
Beim ersten Schreiben in EMC_DYN_CTRL scheint der Controller den Abgang 
zu machen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.