C167 Tutorial -- Getting Started


Was wird für dieses Tutorial benötigt?
  • Ein C167 Kit, ich habe eines der Firma Phytec benutzt
  • Eine IDE samt Compiler, hierbei wurde µVision der Firma Keil verwendet
  • Ein Programm mit dem man den Controller flashen kann, hier wurde Fhlashtool von Phytec verwendet
  • Zeit :-)

Anschluss des C167 Board an den Rechner

Die Programmierung und Kommunikation zwischen C167 und dem PC erfolgt über die serielle Schnittstelle.
Es ist darauf zu Achten, das das serielle Kabel auf der Rechnerseite an
COM-Port 0 angeschlossen ist ( bei neueren Flashtool Versionen ist es egal an welcher Schnittstelle es angeschlossen wird) . Des Weiteren muss auf Seiten des Controllerboards das Kabel um unteren COM-Port angeschlossen werden.

FlashTool

Mit Hilfe dieses Werzeuges werden die Compilierten Programme über das
serielle Kabel in den Flashspeicher des Microcontrollers kopiert. Nur somit
ist es möglich unsere Software auf diesen Controller zu spielen.
Es muss das FlashTool 3 verwendet werden (nicht die Version 16W).
Zu Beginn müssen wir eine Verbindung zum Controller herstellen, dabei
muss die vorhandene Hardware ausgewählt werden.

Bevor wir auf Connect klicken, müssen wir den sogenannten Bootstrap aktivieren. Dies geschieht über folgende Schritte:
  • Gleichzeitiges Drücken der Tasten S1 (Boot) und S2 (Reset)
  • Loslassen des Tasters S2, wobei der Taster S1 weiterhin gedrückt bleibt
  • nach 2-3 Sekunden muss der Taster S1 losgelassen werden
Tritt nach dem Drücken des Buttons Connect folgender Fehler auf, so so können folgende Punkte die Ursache sein:
  • Kabel ist am PC nicht an COM 1 angeschlossen
  • Kabel am Controllerboard ist nicht an unterer Schnittstelle
  • Der Bootstrap wurde nicht korrekt aktiviert (am wahrscheinlichsten)


Konnte sich das Programm mit dem Controller-Board richtig verbinden, so wird automatisch bei den FlashTools in den 2 Tab gewechselt (FlashInfo)

Nun muss der Speicher gelöscht werden, dazu wird auf EraseAll geklickt, im weiteren Schritt wird der Download-Tab aktiviert

Mit Hilfe  des Button Open wird das entssprechende Hex-File, welches in
den Controller kopiert werden soll ausgew¨ahlt. Das Hexfile ist eine binärdatei,
welches nur der Controller verarbeiten kann, dies ist unser compiliertes Programm.

Beispiel

Das folgende Beispiel soll die Programmierung darstellen. Der Controller soll bei Verbindung mittels der Seriellen Schnittstelle der
Gegenstelle ein ”HalloWelt“ schicken. Desweitern ist gefordert das bei einem ankommenden Zeichen (vom z.b. PC gesendet) der Controller den Hex-Wert zurücksendet. Wird das Zeichen ”1“ empfangen, so soll der Controller mit ”Hallo“ antworten. Bei jedem empfangenen Zeichen soll der Zustand der
LED D3 (die mittlere LED) geändert werden. Als Entwicklungsumgebung wird Keil Vision 2 verwendet. IDEs wie Visual Studio und ähnliches sind dazu direkt nicht geeignet, da die Anbindung zu den Entsprechenden Linkern, Compiler und Librarys nur teilweise möglich ist.


Um ein neues Projekt anzulegen muss auf Project  und danach auf  New Project geklickt  werden. Dabei wird die Projektdatei angelegt, der wir einen Namen und Ort
angeben müssen. In diesem Fall ”test“. Im folgenden Schritt geben wir unseren Controller an, es wird der Infineon - C167CR-LM verwendet.


Nach der OK-Bestätigung, erscheint ein Fenster, welches mit Ja bestätigt werden muss.


Hierbei werden spezielle Parameter und Einstellungen unseres Controllers in das Projektverzeichnis kopiert. Wenn dies nicht erfolgt, kann man nicht
weiterarbeiten. Im jetzigen Schritt, wird angegeben, dass ein HEX-File erzeugt wird. Wie bereits erwähnt, wäre dies die Datei, die der Microcontroller ausführen
kann. Dazu klicken wir im Linken Bereich mit der Rechten Maus Taste auf Target1 und wählen Options for Target.

Dabei  öffnet sich ein Fenster


wir müssen uns nun durch alle Tabs durcharbeiten und prüfen, ob die
Einstellungen gesetzt sind, wie auf den folgenden Bildern dargestellt.











Nun müussen wir ein vorhandenes Quellcodefile importieren. Dazu klicken wir im linken Bereich auf Target1, so dass sich die Baumstruktur ¨offnet.
Nun klicken wir mit der rechten Taste auf Source Group1 und sehen dabei folgendes Fenster:

önach dem Klick auf Add Files to Group Source Group1 können wir eine C Datei auswählen. Diese wird dann in das Projekt hinein genommen. Achtung,
das Fenster bleibt so lange geöffnet, bis auf Close geklickt wurde (im gegensatz zu allen anderen Dialogen)

Mögliche Fehlerquellen

Start167.A66
Bei allen Tests hat sich gezeigt, dass die mitgelieferte Start167.A66 von Keil nicht korrekt arbeitet. Dies hat mit diverse Speichertimings,Speicherconfigurationen
und Peripherie zu tun. Es ist deshalb grundsätzlich darauf zu achten, dass die von Phytec modifizierte Datei verwendet wird.

Speicher
Es ist darauf zu achten, dass bei den Options for Target im Reiter Target unter External Memory die richtigen Werte eingetragen sind. Es hat
wie folgt auszusehen


L166: WARNING 22 (CLASS RANGE NOT GIVEN)
Tritt dieser Fehler auf, so sieht dies meistens wie folgt aus
*** WARNING 22: CLASS RANGE NOT GIVEN IN INVOCATION LINE
CLASS: NCONST
*** WARNING 22: CLASS RANGE NOT GIVEN IN INVOCATION LINE
CLASS: NCODE
*** WARNING 22: CLASS RANGE NOT GIVEN IN INVOCATION LINE
CLASS: NDATA
so muss man unter Options for Target im Reiter L166 Locate bei
User Classes folgendes
NDATA(0x008000-0x00BFFF),
NCODE(0x000000-0x003FFF),
NCONST(0x000000-0x003FFF)
eintragen. Falls nicht alle 3 Klassen im Warning auftreten, so muss man nur
die angezeigten eintragen.


Quellcodedatei

Die Quellcodedatei ist hier verfügbar download