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); }
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.