Forum: Mikrocontroller und Digitale Elektronik Beispiel aus Standard Peripheral Library mit IAR Workbench 6.2 Discovery Modul zum laufen bringen


von Junikäfer (Gast)


Lesenswert?

Also seit drei Tagen bin ich dabei einen Beispielcode aus der Standard 
Peripheral Library (USART INT Hyperterminal) auf dem Discovery Modul zum 
laufen zu bringen und dazu die IAR Workbench 6.2 (Kickstart Edition) zu 
verwenden.

Zuerst habe ich mal die Demo-Firmware die zum Board geliefert wurde neu 
compiliert. Dazu musste core_cm3.h durch eine neue Fassung ersetzt 
werden, die ich bei der Suche nach dem Problem im Internet fand. Es geht 
um die bei 6.2 geänderte Handhabung der intrinsics.
Das ging dann auch gut und die Software funktionierte.

Dann wollte ich das UART Beispiel auf das Discovery Board portieren. 
Jeder, der das schonmal versucht hat, weiss das einige Schritte nötig 
sind. Insbesondere der Umstand, das die Beispielcode sich auf einige 
bestimmte eval boards bezieht, zieht hier einiges nach sich.

Mangels einer Anleitung habe ich mir eine eigene Vorgehensweise überlegt 
und dann umgesetzt und bin auch so weit gekommen, das sich der Code ohne 
Fehler oder auch nur Warnings kompilieren liess.

Als ich die Software dann debuggen wollte zeigte sich ein Phänomen das 
ich mir so nicht erklären kann. Es gab beim durchsteppen einen 
HardFault. Der Fault trat unmittelbar beim Verlassen der Funktion 
USART_ITConfig auf. Genau wenn der Cursor auf der schliessenden Klammer 
des Funktionsrumpfes steht.

Untersuchung ergab, das es sich wohl um einen nach HardFault umgelenkten 
Fault handelt. in SBC->CFSR war IMPRECISERR und FORCED gesetzt waren.

Ich habe dann mal die SBC Bits in und in SHCSR gesetzt um alle möglichen 
Faults handeln zu lassen. Es gab dann wieder einen HardFault diesmal mit 
gesetztem INPC und IMPRECISERR.

Ich hatte den Verdacht das es am startup-file lag und nochmal die 
startup datei aus dem ZIP-File mit der Discovery Firmware in mein 
Projekt kopiert (obwohl ich dachte ich hätte das schon am Anfang so 
getan). Das half nichts. Ich wollte dann mal den Startup-Code 
durchsteppen und habe in den Projektoptionen das Flag, das einen Lauf 
bis main anfordert disabled. Leider ohne grossen Erkenntnisgewinn und 
ich muss schon so müde und genervt gewesen sein, das ich irgendwas 
verbaselt habe, denn nachdem ich den Debugger wieder zu main laufen 
lassen wollte (Projektoption) hielt die CPU sich lange in dem 
"initxxxx0" Bereich des IAR startcodes auf und kam garnicht mehr zu 
main.

Hat vielleicht jemand einen Tip für mich, bitte? Falls gewünscht kann 
ich das Projekt auch morgen als ZIP posten.
von Junikäfer (Gast)


Lesenswert?

Ich freue mich mitteilen zu können, das ich das Problem gelöst habe.
Wie immer, wenn man mit neuer CPU und neuer IDE gleichzeitig anfängt 
letztlich etwas triviales. Etwas Systematik bei der Suche hat schon 
geholfen.
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.