Ich versuche gerade ein für einen C167 geschriebenes Programm auf einem Motorola MC9S12 zum laufen zu bringen, natürlich muss man dazu einige Dinge ändern, allerdings weiß ich nicht genau welche. Wäre nett, wenn mir jemand einen Tip geben könnte.
1: Einfach compilieren und 1. Fehlermeldung ansehen. Wenn kein Fehler goto 4: 2: Fehler beheben 3: goto 1: 4: ende Peter
Darauf wäre ich auch ohne Hilfe gekommen. Aber meine eigentliche Frage wird damit keineswegs beantwortet.
Also eine bessere Antwort kann dir keiner auf Deine Flut an Informationen geben. Aber wenn Du was konkreteres willst, must erstmal Du konkret werden (Stichwort Dateianhang). In den Kopf schauen kann Dir keiner. Peter
Man kann sich auch etwas anstellen "Herr Dannegger". Ich weiß nicht wie oft ich schon die überflüssigen Worte "In den Kopf schauen kann Dir keiner" in diesem Forum lesen musste. Etwas weniger altklug wäre nicht schlecht :-) Viele Grüße
@Benjamin, offensichtlich erwartet das doch jemand, der fragt, wie er sein Programm zum laufen bringen kann, ohne dieses beizustellen. Peter
@Peter Ja das ist schon richtig, allerdings könnte man immer schon einmal pauschal einige grundlegende Dinge beantworten (Initialisierung der Ports, blabla). Daraus könnte sich dann so etwas wie ein Dialog ergeben (der dann nicht im Keim erstickt wird), in dem man dann konkreter werden kann, ohne dass im Vorfeld gleich der Lehrmeister herausgekehrt wird. Also Peter, etwas weniger Phrasen bitte. Benjamin
Hallo Malve, bin auch gerade von einem C166 Derivat am portieren. Zwar nicht auf einen Motorola aber ich mußte auch mal ins Datenblatt des Motorola Controllers gucken. Wenn deine Software gut gekapselt ist, hast Du die meisten probleme eigentlich nur bei der Portierung der hardwarenahen Teile des Programms. Also bei den Ports, AD-Wandlern und bei den anderen Perepherieschnittstellen. Weiterhin mußt du dir evtl. ein paar gedanken machen, wie du deine Interruptstruktur organisierst. Der MC9S12 unterstützt ja keine gegenseitig unterbrechbaren Interrupts. Bei mir waren das bis jetzt die wesentlichen Punkte, wo was zu ändern war. Am besten nimmt man sich Modul für Modul vor und tested es nach dem Umschreiben z.B. mit dem Emulator. Was wahrscheinlich auch noch Fehler verursachen kann, ist die Verwendung unterschiedlicher Compiler und der damit verbundenen Eigenschaften wie z.B. andere Spracherweiterungen wie z.B. #Pragmas oder Interruptaufrufe. Hoffe ich konnte dir etwas helfen. Viele Grüße, Ralf
@Ralf Ich denke mein Problem liegt darin, dass ich zwei verschiedene Compiler verwende. Zum einen ist das µVision2 von Keil und zum anderen ICC von Imagecraft. Die Software, die ich versuche auf dem Motorola zum laufen zu bringen, soll eine Tabelleninterpolation erzeugen. Das Problem ist nun, dass diese Software bei µVision2 einwandfrei lief, sobald ich sie aber mit dem ICC laufen lassen will, kommen verschiedene Fehler, mit denen ich nicht wirklich etwas anfangen kann. Das Programm lege ich als Dateianhang bei.
Moin Moin, kann auf den ersten Blick so keinen Fehler erkennen. Was vielleicht eine Ursache sein kann ist die Bitvariable. Hat der MC9S12 einen Bitadressierbaren Bereich? Bei meinem Controller ist es jetzt nämlich so, dass dieser keine mehr hat, im Vergleich zum C164. Bin jetzt an einem Hitachi dran. Was bei mir auch ziemlich blöde Fehler erzeugt hat waren die C++ Kommentare '//'. Diese werden beim IAR nicht default mäßig unterstützt und brachten dann Fehler wie z.B. "Identifier expected" oder so. Hänge vielleicht nochmal deine Fehlerliste an, dann kann man vielleicht doch noch was erkennen.
kann es sein, dass des MC9s12 keine far Zeiger unterstützt? er hat doch nur einen Speicherbereich von 64k, oder? Da braucht man dann keine far Zeiger.
Das hab ich mir auch schon gedacht, allerdings kenn ich mich mit Zeigern nicht aus. Ich kann den Zeiger doch nicht einfach weglassen, oder?
Nein, das nicht, aber die Tabelle wird ja beim Motorola auch innerhalb der 64k liegen und dann kannst du dieser far weg lassen. Der Zeiger ist ja auf jeden Fall near, wenn du nur 64k Speicher hast.
Vielen Dank Ralf, ich hab ihn jetzt weggelassen und das scheint auch kein Problem zu sein. Jetzt hab ich nur noch das Problem, die einzelnen Pins umzubenennen. Kann man eigentlich bei Motorola die Pins der jeweiligen Ports auch einzeln ansprechen,z.B. mit PTP^3 oder so ähnlich? Oder muss man immer den ganzen Port ansprechen?
Das weiß ich nicht. Habe bis jetzt nur mal ins Datenblatt schauen müssen und sonst noch nicht mit Motorola gearbeitet. Normalerweise sollte das aber möglich sein. Ich würde mal in der Beschreibung des Compilers nachsehen. Normalerweise gibt es für sowas C-Funktionen, die sowas ermöglichen. Beim IAR-Compiler für den Hitachi heißen die z.B. bset(Bit, Register) und bclr(Bit, Register). Die beiden funktionen sind dort in der Headerdatei inh8.h abgelegt. Sowas sollte es für den Motorola auch geben. Ich würde mal in den Header-Dateien für die Grundlegenden Ein- Ausgabefunktionen nachsehen. Befehle zum setzen oder löschen von Bits gibt es im Assembler bestimmt und dann gibt es bestimmt auch Definitionen für C.
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.