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.
Re: Beispiel aus Standard Peripheral Library mit IAR Workbench 6.2 Discovery Modul zum laufen bringe
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.