Forum: Mikrocontroller und Digitale Elektronik Keil uVision4 LPC2148: Startup.s Läuft nicht durch


von Hans H. (hanshamacher)


Lesenswert?

Hallo,

Ich arbeite Mit Keil uVison4 auf einem Windows 7 64-bit System.
Mein Debuggadappter ist Der ULink2 von Keil und men Prozessor ein 
LPC2148.

Wenn ich denn debugger starten will, bleibt er in der Startup.s beim 
punkt: LDR PC, FIQ_Adress hängen. hier mal der Quellcode auszug zu 
dieser Stelle:
1
Vectors         LDR     PC, Reset_Addr         
2
                LDR     PC, Undef_Addr
3
                LDR     PC, SWI_Addr
4
                LDR     PC, PAbt_Addr
5
                LDR     PC, DAbt_Addr
6
                NOP                            ; Reserved Vector 
7
;               LDR     PC, IRQ_Addr
8
                LDR     PC, [PC, #-0x0FF0]     ; Vector from VicVectAddr
9
                LDR     PC, FIQ_Addr

Wenn ich die Zeile auskommentiere bleibt er in der Zeile vorher hängen.
Im Disassembly window von uvision4 sieht man, das der compiler wenn er 
dort hängen bleibt zwischischen folgenden 3 Zeilen immer im Kreis Läuft:
1
0x7FFFD2D6  6808      LDR       R0,[R1,#0x00]
2
0x7FFFD2D8  0780      LSL       R0,R0,#30
3
0x7FFFD2DA  D4FC      BMI       0x7FFFD2D6

ob ich in den Debug optionen "run to main" aktive oder nicht macht 
keinen unterschied.

Wo liegt mein Fehler? muss ich auf irgendwelche einstellungen besonders 
Achten??

Gruß

Hans

von Oliver J. (skriptkiddy)


Lesenswert?

Hans Hamacher schrieb:
> muss ich auf irgendwelche einstellungen besonders
> Achten??
Damit das Debuggen überhaupt funktioniert, musste ich immer Jtag mit 200 
kHz takten.

Hast du das Startupfile von Keil verwendet?
Funktioniert das Debuggen im Simulator?

von Hans H. (hanshamacher)


Lesenswert?

ja, im Simulator läuft es ohne Probleme. JTag auf 200khz takten hat 
leider nicht geholfen, aber danke für die schnellen Tipps

von Sebastian M. (sebastian_m)


Lesenswert?

hi,

kontrollier mal die pll einstellungen, ich hatte beim lpc2468 das 
problem, dass die pll nur mit bestimmten werten lief (fehler im 
silizium). vlt ist das dort auch ein solches problem?

gruß

von Hans H. (hanshamacher)


Lesenswert?

Habe MSEL auf 5 und PSEL auf 2 dürfte dooch eigentlich ok sein so, oder?

von Sebastian M. (sebastian_m)


Lesenswert?

das habe ich nciht mehr im kopf, eventuell dort mal dran drehen, im DB 
von 2468 stand etwas davon, dass die PLL nur in einem gewissen bereich 
(ich glaube es war irgendwas zwischen 180 - 220 MHZ) arbeitet. wie 
gesagt, ist nur ne vermutung.

von Frank B. (f-baer)


Lesenswert?

Die PLL-Einstellungen hängen von dem Quarz ab, den du verwendest, die 
blanken Angaben von Multiplikator und Divider sind nichtssagend.
Die PLL hat damit aber nichts zu tun, die ist schon längst locked, wenn 
es an die Interrupt-Vektoren geht.
Interessant wäre der Inhalt von R1 und der Inhalt des Speicherbereichs, 
auf den R1 zeigt.
Abgesehen davon möchte ich doch fast behaupten, dass ein BMI nach einem 
Links-Shift immer im Kreis hüpft. Vielleicht kompilierst du das nochmal 
mit einem anderen Optimierungsgrad.

@Sebastian M.: Die PLL des 2468 läuft optimal bei 288MHz. mit 
CCLK-Divider 4 und USB-Divider 6.

von Frank B. (f-baer)


Lesenswert?

Korrektur: Die PLL wird erst nach den Interrupt-Vektoren initialisiert, 
wenn ich mir meinen startup-code so ansehe. Hat dennoch nichts 
miteinander zu tun.

von Stumpf (Gast)


Lesenswert?

Hallo,

du kannst dir doch wunderbar mit Keil eine Startup.s erzeugen lassen die 
läuft dann auch wunderbar.


Gruß Stumpf

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
Noch kein Account? Hier anmelden.