motorola v3 problem with white screen
Transcription
motorola v3 problem with white screen
EVBMB90F474 MANUAL © 2003 by GLYN GmbH & Co KG, Microcontroller Group History 28th March 02 02th May 03 SV60 PD78 V0.1 V1.0 Started New Board GLYN EVBMB90F474 Manual Inhaltsverzeichnis 1. Einleitung 1.1. Lieferumfang 3 2. Hardware 2.1. Der Controller: MB90F474 2.2. Das Board: EVBMB90F474 2.3. Die MMC/SD Karte 2.3.1. Die Karte 2.3.2. Der Slot 4 7 8 8 11 3. Software 3.1. Softune Workbench 3.2. Installation 3.3. Erste Schritte 3.3.1.Softune Workbench 3.3.2.FLASH Download 3.4. Detailbeschreibung 3.4.1.Ein neues Projekt 3.4.2.FLASHprogrammierung 3.4.3.Start.asm 3.4.4.vectors.c 3.4.5.MB90474.h & MB90474.asm 3.4.6.Der ROM-Mirror und das Memory Model 3.4.7.Wichtige Einstellungen 3.4.8.Der Simulator 3.4.9.Einige Beispielprogramme 3.5. Utilities 3.5.1.Installation 3.6. Die MMC/SD Karte 3.6.1.Initialisierung 3.6.2.Demoprogramme 3.6.2.1. MMC Projekt_474 3.6.2.2. MMC Projekt_474_Datalogger 3.6.2.3. Messe_Projekt_474 Anhang A Anhang B Anhang C Anhang D Anhang E Pin Assignment & Description, Register Map Liste interessanter FUJITSU Unterlagen Schaltplan EVBMB90F474 Bestückungsplan EVBMB90F474 Stückliste EVBMB90F474 Softune Workbench Customer Registration 12 12 14 15 17 17 17 17 19 20 22 22 23 24 29 30 30 31 31 32 33 34 34 35 41 42 43 44 46 2003 GLYN GmbH & Co. KG Alle Rechte vorbehalten. Kein Teil dieser Dokumentation darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm oder einem anderem Verfahren) ohne schriftliche Genehmigung der GLYN GmbH & Co. KG, D-65510 Idstein reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden. Bezüglich des Inhaltes dieser Dokumentation sowie des EVBMB90F474 Software & Hardware Paketes übernimmt die GLYN GmbH & Co. KG, D-65510 Idstein keinerlei Haftung oder Garantie. Die Firma GLYN GmbH & Co. KG, D-65510 Idstein behält sich das Recht der Überarbeitung dieses Werkes oder des EVBMB90F474 Software & Hardware-Paketes vor. Alle Programme und Beschreibungen wurden nach bestem Wissen erstellt und mit Sorgfalt getestet. Dennoch können wir Fehler nicht ganz ausschließen. Aus diesem Grund übernimmt die GLYN GmbH & Co. KG keine Garantie für mögliche Fehler und Folgeschäden, die in Verbindung mit der Bereitstellung, Leistung oder Verwendung dieses Materials stehen. PD78/02.05.03 -2- GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual 1 Einleitung Mit dem Starterkit EVBMB90F474 bietet GLYN einen günstigen Einstieg in die Welt der FUJITSU16Bit-FLASH-CAN-Mikrocontroller. Auf Basis des MB90F474GPFM ist das Board ein guter Weg zur Evaluierung dieses Controllers. Alle Pins sind auf Pfostenfeldleisten herausgeführt und können extern abgegriffen werden. Durch die jumperbare On-Board Peripherie haben Sie volle Kontrolle über alle Zustände am Controller und können somit alle interessanten Parameter messen. Neben der Evaluierung bietet das Board auch ideale Voraussetzungen für die Verwirklichung erster Entwicklungsideen. Da alle notwendigen Peripherieelemente bestückt sind können direkt Programme ins FLASH geladen und dort ausgeführt werden. Zur Erstellung der Programme steht ein kostenfreier C-Compiler und Assembler zur Verfügung. Die Windows IDE ermöglicht ein komfortables Arbeiten. Durch die genormten Pfostenfeldleisten ist die Anbindung auf standardisierte Lochrasterplatinen und somit zu eigenen Bausteinen einfach zu realisieren. Die neuesten Informationen, Beispiele, Datasheets und Applikation Notes finden Sie unter: http://www.fme.gsdc.de/gsdc.htm 1.1 Lieferumfang Zum Lieferumfang des EVBMB90F474 gehört folgendes: • • • • • • Deutsches Manual FUJITSU CD-ROM “Micros 3.4“ Bitte registrieren Sie sich bei einer Installation der Softune Workbench mit dem "Customer Registration Form" bei Fujitsu (liegt im gleichen Pfad wie die Softune WB auf der CD oder letzte Seite dieses Manuals). • unlimitierte Vollversion des FUJITSU C-Compilers und Assemblers inkl. Windows* IDE (Workbench) • Simulator*-Debugger für den FUJITSU C-Compiler • Flasher *Programm zum seriellen asynchronen Flashen der Mikrocontroller • Datenblätter, Applikation Notes und Beispiele CD-ROM mit Datenblättern und Softwarebeispielen für MMC-Card: Datenlogger, Anzeige der Kartendaten auf RS-232 Terminal, Bitmapviewer (erfordert zusätzliches Grafikdisplay) RS232-Kabel zwei 50-polige Stiftleisten das EVBMB90F474-Board * Win2000/Win 98/95/ME/NT4/XP PD78/02.05.03 (Windows is TM of Microsoft Coorporation) -3- GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual 2. Hardware 2.1 Der Controller: MB90F474H/LPF-G Der MB90F474H/LPF-G bietet: • • • • • • • • • • • • • • • • • • • High Speed CPU F²MC 16LX (ähnlich 8051 strukturiert) 256KByte FLASH, parallel, seriell und aus der eigenen Software programmierbar 6KByte SRAM max. 20 MHz MCU Takt aus PLL (H-Typ, z.B. 5MHz x4 = 20MHz intern / 50ns Instruction Cycle ) 32 kHz Subclock (Dual Voltage Betrieb) 16 MByte linearer Adressraum externes Bus Interface 16x Simple DMA (µDMAC): 16-Bit Reload Timer 16-bit input-output Timer: 2-channel Input Capture, 6-channel Output Compare, 1-channel Free Running Timer 3x16-Bit PPG (Programmable Pulse Generator) Timer 1xUART/2xSIO 1x I2C Schnittstelle 8x 10-Bit A/D Converter 16-bit PWC: 3 Kanäle 2,4(L-Typ bei 10MHz) – 3,6V Programming Voltage. Arbeitet in 3 V single supply Systemen (mit 5 V Interface, realisiert durch Portpins mit 3/5 V dual-supply Möglichkeit) Low Power, diverse Power Save Modi Temperaturbereich –40 bis +85°C Gehäuse: 100 Pin QFP100 0,65mm /LQFP100 0,5mm PD78/02.05.03 -4- GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Das folgende Blockdiagramm (Abb.1) verdeutlicht den internen Aufbau des MB90F474. Sie können ebenfalls die Zuordnung der Ports entnehmen. Abb.1: Block Diagramm MB90F474 In Anhang A zu diesem Manual finden sich das Pin Assignment, Pin Description und die Register Map. Abbildung 2 zeigt die Aufteilung des Adressraumes. PD78/02.05.03 -5- GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Abb.2: Address Space MB90F474 Die Aufteilung des FLASH-Speichers in sieben Segmente ist im Allgemeinen nicht relevant. Sie ist wichtig, wenn im FLASH Daten abgelegt werden sollen. Nur einzelne Segmente sind getrennt löschbar. Das Schreiben ist jedoch Word-Weise auf gelöschte Speicherstellen ( Inhalt 0xFF ) möglich. Die Bedeutung des ROM-Mirrors für die Programmierung wird unter 3.4.6 genauer beschrieben. Abb.3: Sector Configuration of 2M Bit Flash Memory PD78/02.05.03 -6- GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual 2.2 Das Board: EVBMB90F474 Die Main-Clock des EVBMB90F474H ist ein 5 MHz Quarz. Damit kann mittels PLL x4 der intern maximal mögliche Takt von 20 MHz eingestellt werden. Wie diese Einstellung vorzunehmen ist, wird unter 3.4.3 erläutert Der abschaltbare 3,3V Regler dient zur Spannungsversorgung und kann von 5 bis 16V betrieben werden (verpolungssicher, Verlustleistung beachten). Liegt Spannung an, so leuchtet die grüne LED. Als Anschlüsse an den Controller dienen die zwei 50-Pin Stiftleisten, welche je nach Wunsch eingelötet werden können. Der Pegelwandler MAX3232 realisiert die Anbindung an die RS232Schnittstelle. Er ist gesockelt und kann für Strommessungen entfernt werden. In Tabelle 1 findet sich eine Beschreibung der Jumper: Tab. 1 JP4 JP3 JP5 JP6 Jumperbeschreibung RST, kann auf einen Taster gelegt werden MD0/MD2 Rote LED an: MD0 ON; MD1&MD2 OFF => Flashing Modus Rote LED aus:MD2 ON; MD0&MD1 OFF => Single Chip Mode MD1 Pin 23 VCC5 : Wenn JP6 offen, kann am Pin 23 mit 5V gespeist werden JP8 JP9 JP11 JP12 JP13 JP17 Pin 35 (AVCC) Ù VCC Pin 36 (AVRH) Ù VCC VCC Ù Spannungsregler Pin 48 (P81) Ù GND 5MHz Quarz: ON Pin 47 (P80) Ù GND 5MHz Quarz: OFF Power LED ON/OFF Abb. 3 : EVBMB90F474 MB90F474H Modepins UART 9V DC + MMC/SD-Card Slot RESET PD78/02.05.03 P80 P81 -7- GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual 2.3 Die MultiMediaCard / SD Karte 2.3.1 Die Karte: Die MultiMediaCard unterstützt 2 Betriebsmodi. Beide Modi benutzen die gleichen Anschlüsse. Der Default Mode nach einem Power-On ist der MultiMediaCard Mode. Der SPI-Mode wird ausgewählt, wenn CS aktiv ist (CS = 0) und CMD0 (Command 0) gesendet wird. Die genaue Initialisierung wird in Kapitel 3 erläutert. Aufbau der MultiMediaCard: - MultiMediaCard Mode (nur bei MMC-Karte) Dieser Mode erfordert einen MultiMediaCard Host mit speziellem Interface Controller: Vorteil: echtes Bussystem, nur 3 Leitungen, kein CE erforderlich Nachteil: Interface-Hardware notwendig, nicht zur SD-Card kompatibel PD78/02.05.03 -8- GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual - SD Card Mode (nur SD Karte): Dieser Mode ist ähnlich dem MMC Mode, nur dass hier mit Hilfe der zwei zusätzlichen äußeren Pins 8 u. 9 der SD-Karte mit 4-Bit parallel zugegriffen wird. SD Karten Bus Topologie PD78/02.05.03 -9- GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual SPI Mode Der SPI Mode ist der verbreiteste Mode bei MMC/SD Karten. Dieser ist ein synchroner serieller Mode, der die angesprochenen Bauteile über eine Chipselect-Leitung (CS) selektiert. Dieser Mode kann auch mit normalen SIO-Bausteinen, die nicht explizit als SPI ausgeschrieben sind, erzeugt werden. Die notwendigen Signale sind: CS: Host zu Karte Chip Select Signal CLK: Host zu Karte Clock Signal Data in: Host zu Karte Daten Signal Data out: Karte zu Host Daten Signal Vorteil: universeller und weit verbreiteter Bus, kompatibel zur SD Karte Nachteil: bei SD Karte langsamer als SD-Mode. Der SPI-Mode wird auf dem EVBMB90F474 verwendet. Dadurch können sowohl MMC als auch SD Karten angesprochen werden. Zudem erlaubt der eingesetzte Sockel beide Kartentypen. PD78/02.05.03 - 10 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Typische Parameter der MMC/SD Karten: Vdd (full operation) Max. high speed supply current Minimal supply current Max. clock frequency (data transfer mode) Gewicht Länge Breite Dicke Operating temperature 2.3.2 MMC 2,7 - 3,6V 35mA 100µA 20MHz SD 2,7-3,6V 35mA 150µA 25MHz 1,5g 32mm 24mm 1,4mm -25°C .. +85°C 2,0g 32mm 24mm 2,1mm -25°C .. +85°C Der Kartenslot Auf dem EVBMB90F474 wird ein Kartenslot des Typs FPS009-2300-0 (baugleich mit dem neuen Sockel FPS009-2305-0) von Yamaichi verwendet. Dieser Sockel kann sowohl MMC als auch SD Karten aufnehmen und hat einen "Card-Detect" Schalter (geht an P11 des Controllers) als auch einen Schreibschutzschalter (nicht verwendet). Die Karte wird durch eine "Push-in/Push-out" Funktion arretiert und ausgegeben. PD78/02.05.03 - 11 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual 3. Die Software 3.1 Softune Workbench Die freie unbeschränkt nutzbare Vollversion der Win95/98/2000/XP IDE „Softune Workbench“ bietet eine komfortable Arbeitsumgebung für den Fujitsu C-Compiler und Assembler. Im bekannten Windows Stil haben Sie Ihr Projekt im Blick und können mit dem integrierten Core Simulator C-Code debuggen oder den erzeugten Assembler Code analysieren. 3.2 Installation Die Installation der „Softune Workbench“ gestaltet sich im Allgemeinen problemlos. Sie können entweder über die html-Hauptseite unter dem Punkt „Microcontroller / Software / SoftuneWB-16“ das Installationsprogramm starten, oder es direkt auf der CD unter "FME_CD_3_4 \ pdf \ stapack300014fme02.exe“ auswählen. Als Beispiel ist hier die Installation der 3.3 CD aufgezeigt, die Version 3.4 unterscheidet sich hier nur unwesentlich. Abb.:4 Window Dateiausführung Folgt der obligatorische Disclaimer: Abb.5: Window Disclaimer Die Softune Workbench ist mit einem Passwort geschützt. Dieses Passwort erhalten Sie innerhalb eines Tages von Fujitsu nachdem Sie sich dort registriert haben. Das Registrierungformular finden Sie am Ende dieses Manuals oder auf der CD neben der Workbench. PD78/02.05.03 - 12 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Nach dem Disclaimer werden Sie nach einem Passwort gefragt: Abb.6: Window Passwort Mit diesem Passwort können Sie jede der 8/16/32-Bit IDEs freischalten. Nun beginnt die Installation: Abb.7: Window Installationsauswahl Im „Select Components“ können die gewünschten Komponenten zusammengestellt werden. Softune Workbench, der Softune C Compiler und das Softune Assembler Pack sind grundlegend. Die anderen Komponenten sind optional. Die Funktionen werden an späterer Stelle beschrieben. Es ist empfehlenswert bei der Installation einer neueren Version die alte vorher zu deinstallieren. Wollen Sie mehrere verschiedene Workbench Versionen auf Ihrem Rechner haben, so muss vor jeder weiteren Installation die neue Software einmal gestartet werden, damit alle Einträge vorgenommen werden. Standardmäßig wird die Workbench auf C:/Softune/... abgelegt. Sollten Sie mit mehreren verschiedenen Varianten (8,16 & 32-Bit) arbeiten bietet sich die Aufteilung „Softune8“, „Softune16“ und „Softune32“ an. Unter Softune werden dann die Beispiele und Utilities abgelegt. Tief verschachtelte Verzeichnisse und viele Laufwerke werden bei der Installation akzeptiert, können aber bei der Arbeit zu Problemen führen. Nach Beendigung finden Sie unter „Start / Programme / Softune V3“ die Softune Workbench Versionen (8, 16, 32-Bit) die Sie installiert haben, sowie die optionalen Zusatztools C-Checker und C- PD78/02.05.03 - 13 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Analyzer. Unter „FFMC-16 Family Softune Workbench Tools“ befinden sich die Programme „LAN Adress“ und „Monitor Loader“. Sie werden nur in Verbindung mit einem Real-Time-Emulator benötigt. Abb. 8: Window Installationshinweist Hinweise: Die aktuelle Version der Workbench unterstützt Windows XP. Wie bereits erwähnt sollten Sie, falls eine ältere Version der Softune auf Ihrem Rechner ist, diese vorab mit der alten CD entfernen. Zwischen Micros3.2/3.3 und Micros3.4 hat sich der Installer geändert, so dass eine neue Installation zusammen mit den alten Versionen nicht fehlerfrei funktioniert. Die IDE muss nicht zwingend verwendet werden. Die zugrunde liegenden Compiler (fcc907s), Assembler (fasm907s) und Linker (flnk907s) können auch getrennt auf Kommandozeilenebene aufgerufen werden. In den Verzeichnissen von Workbench Projekten finden Sie im OPT-Verzeichnis die Aufrufparameter als ASCII Textdateien. Sie können als Anhaltspunkt für die zu übergebenden Parameter dienen. 3.3 Erste Schritte Im Folgendem sollen die ersten Schritte beschrieben werden die notwendig sind, um ein erstes Programm auf das EVBMB90F474 zu bringen und dort auszuführen. Als Beispielprogramm soll das MB90470-Template dienen. Im Zuge des Funktionstestes werden die Boards mit einem ersten Programm, "MMC Projekt_474", versehen. Ein neues Board sollte bei Power On auf der UART mit 19200 Baud, ohne Parity und einem Stop Bit folgendes senden: Abb.9: Begrüßung PD78/02.05.03 - 14 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual 3.3.1 Softune Workbench Nach dem Öffnen der Workbench wird ein bestehendes Projekt über „File / Open Workspace“ , Dateityp "Project File"ausgewählt. Das Project File wird dann in den Typ "Workspace" konvertiert. Standardmäßig befindet sich die gewünschte Demo unter „C:/ Softune / Sample / Smpl16 / 90470 / Template“ bzw. in dem Verzeichnis, welches Sie bei der Installation angegeben haben. Es sollte sich ein ähnliches Bild wie in Abb.10 zeigen. Abb.10: Softune Workbench Da die FUJITSU-Beispiele alle ohne vorcompiliertes Hex-File (*.mhx) ausgeliefert werden, muss als erstes das Projekt compiliert werden. Die geschieht entweder über „Project / Build“, Strg F8 oder den Button Build Dadurch wird das zum Download notwendige mhx-File erzeugt. Die Warnung: *** I0302L: Debug information not exist (C:\softune16\LIB\907\lib904m.lib) bezieht sich auf fehlenden Quellcode für die Libraries. Diese sind nicht frei und daher wird diese Meldung immer auftreten, wenn Library-Funktionen verwendet werden. Dies hat aber für die Funktionen keine Auswirkung. PD78/02.05.03 - 15 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual 3.3.2 FLASH Download Der FLASH Download erfolgt mit dem Flashing-Tool „„Fujitsu Flash MCU Programmer““. Die Installation wird unter 3.5.1 beschrieben. Er liegt entweder als Shortcut auf dem Desktop oder unter „C:/Programme/FUJITSU/ FUJITSU FLASH MCU Programmer“. Er präsentiert sich folgendermaßen (Abb.11): Abb.11 „Fujitsu Flash MCU Programmer“ Unter "Target.." wird das entsprechende Derivat ausgewählt, "Crystal.." bezieht sich auf den extern angeschlossenen Quarz. In unserem Fall ist dies der MB90F474 und 5MHz. Mit Auswahl der verwendeten Schnittstelle und dem zu verwendenden Hex File sind die Einstellungen hier beendet. Am EVBMB90F474 müssen die Jumper JP3 auf Prog (rechts), JP5 auf OFF,JP12 auf ON und JP13 auf off gesetzt werden. Führt nach dem Power On zu einem kompletten Flashvorgang. Es werden die Punkte „Download“, „Erase“, „Blank Check“, „Program“ sowie „Read + Compare“ nacheinander abgearbeitet. 7 Lädt nur die Software ins RAM, danach können die einzelnen Funktionen ausgeführt werden. Allerdings lassen sich keine Bereiche angeben, welche beschrieben werden sollen. Es lässt sich immer nur das gesamte FLASH beschreiben. Nachdem Jumper JP3 auf RUN (links) gesetzt ist, startet das Programm beim nächsten Power-ON. Das Programm benötigt ein Terminal mit 19200 Baud, keine Parity, 1 Stop Bit und 8 Bit Datenlänge , z.B. den SKwizard wie in Abb.9. Nach dem Start erscheint ein Menue auf dem Terminal und das Programm wartet auf das Einstecken einer MMC/SD Karte und einer Eingabe. Damit läuft das erste Programm erfolgreich auf dem Controller. Hinweis: Mit dem Button „Copy“ kann nach dem „Download“ der Flashinhalt ausgelesen und als mhx-file abgespeichert werden.Das Nachrüsten eines Umschalter erleichtert den Wechsel zwischen Programmieren und Flashen. 3.4 Detailbeschreibung 3.4.1 Ein neues Projekt Ein neues Projekt kann über „File / New / Workspace-Project File“ erzeugt werden. Allerdings ist dies nur ein sehr rudimentärer Rumpf. Elementare Einstellungen, wie etwa die zu verwendenden Register, werden nicht standardmäßig erzeugt. Gerade zu Beginn ist die Gefahr groß, dass wichtige Einstellungen übersehen werden. Deshalb empfiehlt FUJITSU eine andere Vorgehensweise: die „Template-files“. Für alle Controller, also auch den MB90F474, gibt es diese Projekte in den Beispielen. Wie in Abb.15 gezeigt beinhaltet das Template Project alle Grundeinstellungen. PD78/02.05.03 - 16 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Abb.13: Window Template Es sind bereits Dateien eingebunden, welche zur Beschreibung des Controllers verwendet werden. Dies sind die Dateien „start.asm“, „vectors.c“, „mb90470.asm“ und „mb90470.h“, deren Bedeutung an späterer Stelle beschrieben wird. Die Programmierung kann somit direkt in der main-Funktion beginnen. Da die Pfade in den Projekten relativ sind, können sie das Template Projekt in Ihr Entwicklungsverzeichnis kopieren und das Verzeichnis und das prj-File umbenennen. Um auch den abs-Filenamen umzuändern, kann unter „Projekt / Setup“ der Name geändert werden. Neue Dateien werden über „Project / Add Member to folder“ dem bestehenden Projekt hinzugefügt. Erzeugt werden kann solch eine Datei unter „file / New“ als Text file. Dabei ist darauf zu achten, dass die Endung .c bzw. .h mit anzugeben ist, da sie nicht automatisch erzeugt werden. 3.4.2 Flashprogrammierung Prinzipiell unterstützten alle FUJITSU FLASH Controller 3 verschiedene Flashmodi. 1. Parallelprogrammierung Dies stellt die schnellste Variante dar. Allerdings wird hierfür ein Parallelprogrammer benötigt und das Flashen muss vor dem Einlöten erfolgen. Somit ist das parallele Flashen interessant für die Serienproduktion und weniger für das erste Programm. Ein Beispiel für ein Programmiergerät ist der Galep III, welcher über GLYN bezogen werden kann Abb.14: GalepIII-Programmer PD78/02.05.03 - 17 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual 2. Programmierung via Burn in ROM Die übliche Methode der Flashprogrammierung ist via „Burn in ROM“ (BiROM). Dies ist auch die für das EVBMB90F474 zu Beginn verwendete Vorgehensweise. Das BiROM ist keine vorprogrammierte Flashsoftware, sondern fest im Controller verankert. Es bietet die Möglichkeit über eine festgelegte UART Code in das RAM zu laden und dort auszuführen. Welche Art Code dies ist, wird nicht geprüft. Die vorhandene Flashersoftware „Fujitsu Flash MCU Programmer“ nutzt diese Funktion, lädt eigenen Flashercode ins RAM und führt ihn dort aus. Die Bedienung des „Fujitsu Flash MCU Programmer“ wurde bereits unter 3.3.2 beschrieben. Die Baudrate der Verbindung ist fest eingestellt und hängt von dem externen Quarz ab. Mittels PinP81 kann zwischen synchronem und asynchronem Modus und an Pin P80 kann zwischen 4/5 MHz Quarz umgeschaltet werden, wobei die Flashersoftware nur den asynchronen Modus unterstützt. Folgende Baudraten werden zum Erstkontakt verwendet: Synchron: 500kBd bei 8 Daten Bit und externer Clock Asynchron: 4800Bd bei 4MHz (9600Bd@8MHz,19200Bd@16MHz) bei 8 Daten Bit, 1 Stopp Bit und keine Parity Die Flashersoftware erhöht diese Baudrate durch Umstellen der UART um den Faktor 2. Der BiROM-Modus wird in einer Applikation Note genauer beschrieben. Sie ist im Anhang B aufgelistet. FUJITSU bietet zum schnelleren Flashen ein Programmiergerät an. Dieses „Flash-Kit“ kann sowohl seriell als auch parallel an den PC angeschlossen werden. Es bietet höhere Programmiergeschwindigkeiten und kann auch selber die Mode Pins setzen, wenn eine entsprechende Beschaltung in der Hardware vorgesehen ist. Die möglichen Geschwindigkeiten sind: Parallel: 340 KBaud Seriell: 38400 Baud Damit kann das FLASH in wenigen Sekunden beschrieben werden. Die mitgelieferte Software bietet noch Besonderheiten, wie etwas das Beschreiben einzelner Sektions und, bei den Typen mit einer solchen Funktion, auch das Schützen des Flashes. Abb.15: FUJITSU FLASH-KIT 3. Programmierung aus der laufenden Applikation Da FUJITSU-Controller einen Single Voltage FLASH besitzen, kann es auch aus der eigenen Anwendung heraus beschrieben werden. Somit können Daten im ROM abgelegt werden. Damit steht ein nichtflüchtiger Speicher zum Beispiel für Parametrierung oder auch für Messwerte zur Verfügung. Begründet in der Natur des Flashspeichers gibt es bei der Programmierung einige Aspekte zu beachten. 1. Auf das FLASH kann schreibend Wordweise zugegriffen werden. Das Löschen muss aber Sektorweise erfolgen. Die Größe der Sektoren ist im Memory Mapping Abb.2 gezeigt. Die Lebensdauer des Flashes wird allein durch die Anzahl der Löschungen bestimmt. Um das FLASH nicht unnötig abzunutzen kann es sinnvoll sein, einen Bereich möglichst erst einmal komplett zu verwenden, bevor ein ‚Erase‘ durchgeführt wird. Dazu müssen die Daten jedoch geeignet angeordnet werden. 2. Während des Schreibens kann nicht lesend auf das FLASH zugegriffen werden, d.h. das Programm kann nicht im FLASH ablaufen. Der notwendige Code und die Konstanten müssen zu diesem Zeitpunkt im RAM vorliegen. Die FUJITSU Workbench bietet dazu die Möglichkeit des RAM-Codes an. Diesen können Sie entweder permanent im RAM vorhalten oder bei Bedarf kopieren. Interrupts müssen in dieser Zeit ebenfalls deaktiviert sein. Wichtige Interruptflaggs müssen gepollt werden. Für das Flashen aus der eigenen Applikation steht neben einer Application Note, aufgeführt in Anhang B, auch Democode zur Verfügung. PD78/02.05.03 - 18 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual 3.4.3 Der Start.asm Die Datei „start.asm“ enthält den Start-Up Code für die FUJITSU 16-Bit Mikrocontroller mit folgenden Punkten: ;==================================================================== ; 1 Contents ;==================================================================== ; 1 Contents ; 2 Disclaimer ; 3 History ; ; 4 SETTINGS (USER INTERFACE) ; 4.1 Controller Family ; 4.2 Memory model ; 4.3 Constant Data Handling ; 4.4 Stack Type and Stack Size ; 4.5 General Register Bank ; 4.6 Low-Level Library Interface ; 4.7 Clock Selection ; 4.8 External Bus Interface ; 4.9 Reset Vector ; 4.10 Enable RAMCODE Copying ; ; 5 Section and Data Declaration ; 5.1 Several fixed addresses (fixed for MB90xxx controllers) ; 5.2 Declaration of __near addressed data sections ; 5.3 Declaration of RAMCODE section and labels ; 5.4 Declaration of sections containing other sections description ; 5.5 Stack area and stack top definition ; 5.6 Direct page register dummy label definition ; ; 6 Start-Up Code ; 6.1 Import external symbols ; 6.2 "NOT RESET YET" WARNING ; 6.3 Program start (the reset vector should point here) ; 6.4 Set clock ratio ; 6.5 Set external bus configuration ; 6.6 Copy initial values to data areas. ; 6.7 Clear uninitialised data areas to zero ; 6.8 Prepare stacks and set the default stack type ; 6.9 Set Data Bank Register (DTB) and Direct Page Register (DPR) ; 6.10 Wait for PLL to stabilise ; 6.11 Initialise Low-Level Library Interface ; 6.12 Call C-language main function ; 6.13 Shut down library ; 6.14 Program end loop ; 6.15 Debug address specification ; ;==================================================================== Relevant für die Einstellung ist nur Punkt 4 „SETTINGS (User Interface)“. An dieser Stelle wird das grundlegende Verhalten des Controllers eingestellt. Dies sind: 4.1 Controller Family Hier wird die Controllerserie ausgewählt. Der MB90F474 zählt dabei zu der MB90400er-Serie. 4.2 Memory model Unter diesem Punkt wird nicht das verwendete Speichermodel eingestellt ! „SMALL“-„MEDIUM“-„COMPACT“-„LARGE“ stehen zur Verfügung. Diese Einstellung hat allerdings nur Auswirkung auf den Funktionsaufruf „callp“, zur main-Funktion. Dieser wird entsprechend 16 oder 24 Bit breit vorgenommen. Mit „AUTOMODELL“ werden 24 Bit verwendet. Für den Compiler muss diese Einstellung in der Workbench getrennt vorgenommen werden, dazu unter 3.4.7 mehr. Die Bedeutung des Speichermodells wird unter 3.4.5 näher erläutert. 4.3 Constant Data Handling Konstanten können entweder im ROM als auch im RAM abgelegt werden. In den meisten Fällen ist die Einstellung „ROMCONST“ sinnvoller, insbesondere da der ROM-Mirror zur Verfügung steht. PD78/02.05.03 - 19 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Stack Type and Stack Size 4.4 Die Fujitsucontroller bieten 2 Stack Pointer an, den System Stack und den User Stack. Interrupts verwenden immer den System Stack. Im Allgemeinen sind keine getrennten Stackbereiche notwendig, der User Stack dient primär für Betriebssysteme. Somit verwenden die meisten Applikationen als Einstellung „SYSSTACK“ Die Größe des benötigten Stackbedarfes ist schwer abzuschätzen. Als Anhaltspunkt kann der Simulator dienen. 4.5 General Register Bank Es stehen 32 verschiedene Registerbänke zur Verfügung die im User RAM eingebunden werden. Der C-Compiler verwendet für seine Operationen Register Bank 0. Unter 4.5 wird die Hauptregisterbank festgelegt , welche in der start.asm verwendet wird. Das Schalten auf eine andere muss explizit erfolgen. Die zur Verfügung stehenden Registerbänke müssen in der Workbench eingestellt werden. Im „Template Projekt“ ist dies nur Registerbank 0. 4.6 Low-Level Library Interface Sollen im C-Programm Funktionen wie printf etc. verwendet werden, so müssen dafür Low-Level Funktionen geschrieben werden. Außerdem muss die Option „CLIBINIT“ auf ON gesetzt werden. Wie die Low Level Funktionen definiert wird unter 3.4.10 beschrieben. 4.7 Clock Selection Mit Hilfe der integrierten PLL kann die externe Quarzfrequenz mit den Faktoren ½,1, 2 , 3 oder 4 multipliziert werden. Beim Power On startet der Controller mit der halben externen Frequenz. 4.8 External Bus Interface Das externe Businterface der Fujitsucontroller kann sehr variabel eingestellt werden. Wenn es verwendet werden soll, kann für jeden Bereich HIGH, LOW und IO die Anzahl der Wait States und die Busbreite festgelegt werden. Auch die Verwendung von einzelnen Ports als General I/O kann eingestellt werden. Punkt 4.8 bietet hierfür alle notwendigen Parameter an. 4.9 Reset Vector Der MB90F474 hat keinen „hardwired“ Resetvektor, d.h. der Programmstart kann beliebig liegen. Wo genau steht am Beginn der Interrupttabelle auf der Adresse 0xFFFFDC. Mit RESETVECTOR ON wird der Resetvektor erzeugt, bei OFF nicht. Die OFF-Option war für ältere Bootloaderbeispiele gedacht, kann aber auch für relocatiblen Code verwendet werden. 4.10 Enable RAMCODE Copying Wie bereits erwähnt, unterstützt die FUJITSU Software das Ausführen von Code im RAM. Die entsprechenden Bereiche können hier automatisch beim Start Up vom ROM ins RAM kopiert werden. Die start.asm muss nicht zwingend verwendet werden. Es empfiehlt sich jedoch dies zu tun. Wie an der langen Historie zu sehen ist, wird dieser Code ausgiebig gepflegt und Änderungen eingebracht. Mit Hilfe der start.asm ist es möglich, die komplette Softwareentwicklung in C zu gestalten. Aber auch Assembler-Code kann sowohl in der Workbench als auch im eigenen C-Code eingebunden werden. 3.4.4 vectors.c In der vectors.c werden die Interruptvektoren festgelegt. Es gibt 8 Interrupt Level wobei 0 die höchste, 6 die niedrigste Priorität hat. Level 7 ist gleichbedeutend mit einem deaktiviertem Interrupt. Die Level werden in den entsprechenden Interrupt Control Registern (ICR) festgelegt. Ein ICR fasst zwei Interruptsourcen zusammen. Damit teilen sich immer zwei Interrupts eine Priorität. Zu beachten ist, dass dadurch beim EI²OS ebenfalls zwei Interrupts aufeinanderliegen. Die Definition der ICR befindet sich in der MB90470.asm & .h . Die Vergabe der Prioritäten wird in der vectors.c vorgenommen: ICR00 = 7; ICR01 = 7; /* /* IRQ11 & IRQ12 */ IRQ13 & IRQ14 */ /* /* /* IRQ37 & IRQ38 */ IRQ39 & IRQ40 */ IRQ41 & IRQ42 */ • • • ICR13 = 7; ICR14 = 7; ICR15 = 7; Die aufzurufende Interrupt-Service-Routine kann über folgende Liste eingetragen werden: PD78/02.05.03 - 20 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual #pragma intvect #pragma intvect #pragma intvect #pragma intvect transition) */ #pragma intvect #pragma intvect transition) */ #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect #pragma intvect DefaultIRQHandler 9 DefaultIRQHandler 10 DefaultIRQHandler 11 DefaultIRQHandler 12 /* /* /* /* DefaultIRQHandler 13 DefaultIRQHandler 14 /* CAN #1 (receive complete) */ /* CAN #1 (transmission complete /node status DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler DefaultIRQHandler /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 software interrupt 9 */ exeception handler */ CAN #0 (receive complete) */ CAN #0 (transmission complete/node status external interrupt INT0/INT1 */ timebase timer */ 16-bit reload timer #0 */ A/D converter */ I/O timer */ external interrupt INT2/INT3 */ serial I/O */ PPG #0/1 */ input capture CH.0 */ external interrupt INT4/INT5 */ input capture CH.1 */ PPG #2/3 */ external interrupt INT6/INT7 */ watch timer */ PPG #4/5 */ input capture CH.2/3 */ PPG #6/7 */ output compare CH.0 */ output compare CH.1 */ input capture CH.4/5 */ output compare CH.2/3 or input capture CH.6/7*/ 16-bit reload timer #1 */ UART #0 (receive complete) */ UART #0 (transmission compl.)*/ UART #1 (receive complete) */ UART #1 (transmission compl.)*/ IRQ41-handler */ delayed interrupt */ Bei der Funktion „DefaultIRQHandler“ handelt es sich um eine Routine die als Dummy dient, um ungewollt ausgelöste Interrupts abzufangen. Dabei bleibt das System stehen. __interrupt void DefaultIRQHandler (void) { __DI(); while(1) __wait_nop(); } /* disable interrupts */ /* halt system */ Das Schlüsselwort „__interrupt“ kennzeichnet die Funktion als Interrupt-Service-Routine. Entsprechend werden auch Ihre eigenen Funktionen als Interruptfunktion gekennzeichnet. Sie muss nicht in der vectors.c geschrieben werden, nur der Prototyp muss eingetragen sein. Hinweise: Es können verschachtelte Interrupts auftreten (Interrupt Nesting), wobei ein Interrupt von niedriger Priorität von einem mit höherer unterbrochen wird. Bei Annahme eines Interrupts wird das Interrupt Masc Register auf dessen Priorität gesetzt. Soll verhindert werden, dass ein Interrupt unterbrochen wird, der nicht die höchste Priorität (0) hat, müssen die Interrupts mit „__DI()“ deaktiviert werden. Interrupts mit gleichem Level unterbrechen sich nicht. Bei gleichzeitigem Auftreten von zwei Interrupts mit gleichem Level, werden sie entsprechend einem festen Schema abgearbeitet. Dabei haben wie bei den Leveln die niedrigeren Interruptnummern die höhere Priorität. Die Interruptflaggs werden nicht automatisch gelöscht, sondern müssen in der Serviceroutine zurückgesetzt werden. Nur bei den UART-Interrupts werden sie bei Annahme der Interruptanforderung gelöscht. 3.4.5 MB90470.h & MB90470.asm In der MB90470.asm & mb90470.h werden den Speicherbereichen im I/O-RAM die dem Handbuch entsprechenden Namen zugewiesen. Somit lassen sich alle Register entsprechend ihren Manualnamen ansprechen. Auch einzelne Bits werden definiert, z.B. PDR0_P00 beschreibt Pin 0 von Port 0. Als weiteres Beispiel kann man den Port 4 über sein Data Direction Register (DDR) mit DDR4 PD78/02.05.03 - 21 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual = 0xFF; auf Ausgang stellen und via Port Data Register (PDR) und PDR4 =~PDR4; in einer Schleife toggeln. Hinweis: Auch bei der Verwendung von Bitvariablen muss immer das gesamte Register betrachtet werden, da auch aus einer Bitmanipulation immer eine Read-Modify-Write Anweisung auf das komplette Register ausführt. Damit können solche Manipulationen nur auf als Read/Write ausgewiesenen Registern ausgeführt werden. Zu Seiteneffekten kann dies auch bei Ports führen, bei denen einzelne Pins auf Ein- andere auf Ausgang stehen. Bei Pins die auf Eingang stehen wird beim Lesen direkt der Wert vom Port, bei Ausgangspins der Wert vom Register eingelesen. Durch die Read-Modify-Write Anweisung wird beim Rückschreiben in das Register für die Portpins welche auf Ausgang stehen der aktuelle Pegel geschrieben. Dies kann u.U. ein vom vorherigen Wert unterschiedlicher sein. Damit besteht beim Umschalten auf Ausgang kein definierter Zustand mehr. Möchte man dies vermeiden, so empfiehlt sich das Arbeiten mit „Shadow-Registern“, dh. Kopien im RAM, welche nach Veränderung auf das eigentliche Register geschrieben werden. 3.4.6 Der ROM-Mirror und das Memory Modell Der ROM-Mirror ist ein wichtiges Hilfsmittel um effiziente C-Programmierung zu ermöglichen. Die Funktion des ROM-Mirrors ist einfach erklärt. Bei Aktivierung führt jeder Zugriff in Speicherbereiche von 0x004000 bis 0x00FFFF physikalisch zu einem Zugriff auf 0xFF4000 bis 0xFFFFFF, wie in Abb.2 dargestellt. Die Notwendigkeit des ROM-Mirrors ergibt sich aus der Tatsache, dass bei den F²MC-16LX-Controllern das FLASH-ROM von 0xFFFFFF ab nach unten liegt und damit nur durch 24 Bit adressierbar wird. Der FUJITSU C-Compiler unterstützt folgende Memory Modelle: Tab.2: Memory Model Modell SMALL MEDIUM COMPACT LARGE Adressgröße Adressgröße Daten Code 16 Bit 16 Bit 16 Bit 24 Bit 24 Bit 16 Bit 24 Bit 24 Bit Tab.3: Adressierungsmöglichkeiten Qualifier __direct __near __far Adressgröße Adressraum 8 Bit 256 Byte 16 Bit 64 KByte 24 Bit 16 MByte Die Verwendung von 24 Bit Adressen vergrößert den notwendigen Code und verringert die Geschwindigkeit, da mit dem 16 Bit breiten Bus immer zwei Buszyklen benötigt werden. Die Verwendung von 16 Bit Adressierung erhöht die Performance um bis zu 30%. Dazu dient der ROM-Mirror. Er ermöglicht einen Zugriff z.B. auf Konstanten die im ROM liegen mit einem 16 Bit Zugriff. Dazu muss nur die Section, in welcher die Konstanten abgelegt werden, ab 0xFF4000 liegen. Wie dies realisiert wird dazu unter 3.4.7 mehr. FUJITSU empfiehlt die Verwendung des MEDIUM Memory Modells. Natürlich lassen sich auch Daten in Bereichen unterhalb von 0xFF4000 adressieren. Diese müssen allerdings explizit mit dem __far Identifier qualifiziert werden. Dadurch wird für dieser Wert mit 24 Bit angesprochen. Im Gegenzug lassen sich bei dem LARGE Modell durch __direct oder __near auch kürzere Adressierungen einstellen (Tab.3). Hinweis: Die Adresszeiger bei den FUJITSU F²MC-16LX Controllern setzen sich aus einem 16 Bit Pointer und einem 8 Bit Bank Register zusammen. Für die Daten ist dies das Data Bank Register (DTB), für Code das Programm Bank Register (PCB). Diese Bänke unterteilen den Adressraum in 256 64kByte große Blöcke, von 0x00 bis 0xFF. Das FLASH des MB90F474 passt mit seinen 128 KByte nicht in die 0xFF Bank. Es ist trotzdem möglich im Single Chip Modus mit dem SMALL Memory Modell zu arbeiten. Dazu müssen mittels Sektoren ein oder mehrere Bereiche angelegt werden die in der 0xFE-Bank liegen. Code in diesem Bereich muss explizit mit __far angesprochen werden. Auch beim „Internal ROM-External-Bus“ Modus kann das SMALL-Modell verwendet werden, wobei der I/O und der LOW Bereich direkt, der HIGH Bereich mit __far angesprochen werden können. 3.4.7 Wichtige Einstellungen Viele der für die Workbench relevanten Einstellungen werden unter dem Punkt Punkt „Project“ / "Setup Project")vorgenommen. Im Folgendem werden exemplarisch die Wichtigsten vorgestellt. PD78/02.05.03 - 22 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Ö C Compiler General: Unter General kann der „Warning Level“ des C-Compilers eingestellt werden. „Other Options“ ermöglicht die Eingabe von speziellen Aufrufen. Die Parameter „-T p,-B“ z.B. ermöglichen die Verwendung von dem C++ Kommentar „//“ Optimize: Die Optimierung bietet „Speed“, „Size“ und die Level 1-4. Unter „Detail Optimize“ können nochmals Detaileinstellungen vorgenommen werden. Genaueres über die Optimierungslevel findet sich im C-Compiler Manual. Target Depend: Die Einstellung des Memory-Models wird an dieser Stelle vorgenommen. Der Punkt „Const variable in RAM“ aktiviert das automatische Kopieren der Konstanten ins RAM. Ö Linker General: Wieder kann der Warning Level eingestellt werden. Disposition/Connection: Bei der embedded Programmierung ist es auch in C oft unumgänglich auf das Linken und die verwendeten Sections Einfluss zu nehmen. Dies ist z.B. auch für den ROMMirror wichtig. Abb.16 zeigt das „Disposition/Connection-Window“. Die Einstellung der generell vorhandenen Speicherbereiche und der Speichertypen wird an dieser Stelle vorgenommen. Auch evtl. verwendete externe Bereiche können eingetragen Abb.16: Setup Tool Option / Linker Abb.17: Setup Tool Option / Set Section werden. Das Mapping wird aber nicht automatisch für den Debugger übernommen. Die Einträge erscheinen unter Option als Parameter und Details können im Linker Manual nachgelesen werden. Eine wichtige Option ist „Set Section“ (Abb.17). Diese Option ermöglicht das Festlegen von Bereichen auf bestimmte Adressen. In allen Beispielen sollte unter „Specify in Address“ auf 0xFF4000 die Section CONST eingetragen sein. Erst hiermit wir dem Linker die Position der Konstanten am Anfang des ROM-Mirrors mitgeteilt. Definiert werden die Sections im C-Code mit „ #pragma section...“. Zu beachten ist, dass pro Datei nur eine Definition möglich ist. Adressen sollten nicht direkt im C-Code angegeben werden, da dies zu Problemen mit dem Linker führen kann. Folgende Definitionen sollen beispielhaft die Syntax zeigen, wobei sie für das SMALL bzw. MEDIUM Memory Modell gedacht sind: #pragma section DATA=daten_section_name legt eine Variablen Section im RAM an. #pragma section FAR_DATA=fardaten_section_name, legt eine Variablen Section mit 24 Bit z.B. für externes RAM an. #pragma section CONST=const_section_name legt eine Konstanten Section im ROM an. (16Bit) #pragma section FAR_CONST=farconst_section_name legt eine Konstanten Section im ROM an. (24Bit) PD78/02.05.03 - 23 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual #pragma section IO=io_section_name legt eine Variablen Section im RAM an (8Bit) Register Bank: Es muss mindestens eine Registerbank ausgewählt werden. Bank 0 wird standardmäßig vom C-Compiler verwendet. Diese Einstellung wird im Linker vorgenommen, da die Register im User RAM liegen und die entsprechenden Speicherstellen freigehalten werden müssen. Aus diesem Grund tauchen die Register auch im ListFile auf. Mit „#pragma register (‚Registerbanknummer‘)“ und „#pragma noregister“ lassen sich einzelne Bereiche explizit auf bestimmte Registerbänke umschalten. Dadurch können Stackoperationen vermieden werden. Output List: Unter diesem Punkt können die im List-file aufgenommen Einträge bestimmt werden. Die List-Files lassen sich mit der rechten Maustaste auf dem Eintrag des abs-Files (Abb.18) im Symbolbaum öffnen. Je nach Auswahl werden die entsprechenden Dateien zur Auswahl stehen. Sie lassen sich aber auch direkt im Unterverzeichnis „lst“ öffnen. In dem standardmäßig erzeugten mp1-File ist das Memory Mapping und die verwendeten Variablen zu erkennen. Abb.18: Open List File Ö Converter Im Converter wird das zu erzeugende File ausgewählt. Die Fujitsuprogrammiertools arbeiten alle mit Motorola S Records mit der Endung „mhx“. Beim Umstellen auf Intel ist darauf zu achten, dass 16 Bit Adressierung verwendet und somit direkt das 24 Bit FUJITSU-Speichermodell nicht unterstützt wird. 3.4.8 Der Simulator Die FUJITSU Workbench bietet die Möglichkeit den eigenen Code mit Hilfe eines Software-Core Simulators zu testen. Im Folgendem soll mit Hilfe der UART1-Demo die Verwendung des Simulators an einem Beispiel gezeigt werden. Zu Beginn wird der Simulator als Debugger eingetragen. Dies geschieht unter „Project / Setup“. Es öffnet sich ein Fenster nach Abb.19 . Relevant ist die Auswahl unter „Available Setup Name“ in diesem Fall ist „simulate“ die aktive Einstellung. Abb.19: Setup / Debug / Simulate PD78/02.05.03 - 24 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Es empfiehlt sich aber immer die Einstellungen zu prüfen, da es sich hierbei um einen frei wählbaren Namen handelt. Ein Neuer kann unter „Setup Name“ eingetragen und mit „Add“ der Liste hinzugefügt werden. Dabei öffnet sich automatisch der „Setup Wizard“ zur Konfigurierung des Debuggers. Er kann aber auch durch Anklicken des Namens und dem „Change“-Button aufgerufen werden. Es zeigt sich ein Bild nach Abb.20 . Mit „Simulator“ wird dieser ausgewählt, „Weiter“ führt den Dialog fort. Abb.20: Setup Wizard / Simulator Debugger Abb.21: Setup Wizard / Batch Files Im nächsten Dialogfenster besteht die Möglichkeit Batch-Files auszuwählen, welche entweder vor oder nach dem Start des Debuggers ausgeführt werden. Der Emulator von FUJITSU unterstützt sogenannte „Procedure Files“ in denen zusätzlich Kommandos automatisiert durchgeführt werden können. Diese Befehle beherrscht auch der Simulator. Da er die ROMMirror Funktion nicht kennt, muss dies dem Simulator extra mitgeteilt werden. Dies geschieht durch Einbinden des prc-Files „romconst“, welches allen FUJITSU Beispielen im prc-Verzeichnis Abb.22: Auswahl / Procedure File beiliegt (Abb.22). Wichtig ist, diese Batch-Datei unter „After“ einzutragen, nicht wie fälschlicherweise in manchen Beispielen unter „Before“. Aufgabe dieser Routine ist das Kopieren der Bereiche ab 0xFF4000 in den ab 0x004000 und damit das Nachbilden des ROM-Mirrors. Mit dem Schalter „Auto load when starting debug“ wird das aktuelle Projekt automatisch beim Start geladen, anderenfalls muss es manuell geladen werden. Im nächsten Dialog können die Einstellungen definiert werden, welche beim Beenden abgespeichert werden sollen. „Select All“ ist dabei Standard. Im letzten Dialog kann mit „Fertig stellen“ der Wizard beendet werden. Dieser Button ist auch schon vorher vorhanden. Da der Simulator ein reiner Core Simulator ist, besteht keine Möglichkeit die Initialisierung und Funktion von Peripherieelementen zu testen. Es ist auch nicht möglich auf bestimmte HardwareFlaggs zu triggern, es sei den man setzt sie selber in der eigenen Software. Aus diesem Grund muss der C-Code der UART1-Demo wie folgt geändert werden. PD78/02.05.03 - 25 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Abb.23: C-Code Änderungen Durch das Auskommentieren der UART-Status Flaggs wird der Simulator an den entsprechenden Stellen nicht stehen bleiben. Zu beachten ist, dass das UART1-Sende und Empfangsregister weiter verwendet wird, allerdings rein als Speicherzelle. Nach dem Compilieren kann nun unter „Debug / Start Debug“ der Simulator gestartet werden. Danach sollte der Simulator starten. Als Erstes erscheint die Meldung des prc-Files (Abb.24) im CommandWindow. Mit dem CommandWindow steht ein Interface zum Debugger zur Verfügung mit dem auf Command-Line Ebene Befehle ausgeführt werden. Die möglichen Instruktionen sind im „Command Reference Manual“ beschrieben. Die wichtigsten Funktionen sind allerdings direkt im Workbench Debugger integriert und können von dort aus aufgerufen werden. Aus diesem Grund kann dieses Fenster vorerst auch geschlossen werden. Abb.24: Command Window Das nächste Fenster welches sich öffnet ist das eigentliche Debug-Window (Abb.25). Es zeigt den Code ab dem Reset-Vektor und damit die start.asm. PD78/02.05.03 - 26 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Abb.25: Simulator Debugger Gelb hinterlegt ist die Position des Program Counters, die grünen Kreise zeigen mögliche BreakPoints an. Um das Programm zu testen müssen im Simulator noch einige Einstellungen gemacht werden. Unter „Setup / Debug enviroment / I/O Port“ (Abb.26) werden die verwendeten I/O Kanäle und ihre Quellen bzw. Ziele definiert. Abb.26: Setup/Debug enviroment / I/O-Port Abb.27 & Abb.28 zeigen die vorzunehmenden Einstellungen. Die Port Adresse 0x26h wird sowohl als Input als auch als Output definiert, wobei jeweils ein ASCII-Terminal geöffnet werden soll. Es besteht auch die Möglichkeit ein solche Aus- bzw. Eingabe über eine Datei zu realisieren. Dies bietet gute Voraussetzungen um die korrekte Funktion von Routinen zu testen. Leider werden die Einstellungen nicht in den Projektdaten abgespeichert und müssen deshalb nach jedem Beenden des Debuggers erneut eingetragen werden. PD78/02.05.03 - 27 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Abb.27: Setup I/O-Port / Input Abb. 28: Setup I/O-Port / Output Nach diesen Einstellungen sollte sich mit dem „Run“-Button folgendes Fenster zeigen (Abb.29), wobei die Anzeige je nach Controller variieren kann: Abb29: Output & Input Debugger Window PD78/02.05.03 - 28 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Hinweise: Neben den I/O-Ports lässt sich für den Simulator auch das Aufrufen von Interruptfunktionen testen (Abb.30). Dazu steht ein Timer zur Verfügung, der periodisch die spezifizierte Routine aufruft. Damit kann die korrekte Annahme und Abarbeitung getestet werden. Bei größeren Projekten kann der zu ändernde Code zur Verwendung des Simulators relativ umfangreich werden. Insbesondere bei paralleler Verwendung von Simulator und EVBMB90F474Board lässt sich dies nicht mehr vertretbar von Hand erledigen. Deshalb empfiehlt sich die Verwendung des Präcompilers. Mit den Befehlen #define (z.B. SIMULATOR), #ifndef .... #endif und #ifdef ... #endif lassen sich gezielt Codezeilen mit einem Eintrag auskommentieren. Zum Navigieren stellt der Simulator folgende Buttons zur Verfügung: Abb.30: Simulator Interrupt Setup RUN startet die Simulation im „Free Run Modus“ STOP beendet die Simulation RESET setzt den Programm Counter auf Anfang zurück STEP IN Programm wird in Einzelschritten abgearbeitet STEP OVER Abarbeitung stoppt nach dem folgendem Funktionsaufruf STEP OUT momentane Funktion wird bis zu Ende abgearbeitet, dann erfolgt der Stop TO CURSOR der Code wird bis zur aktuellen Cursorposition abgearbeitet BREAK POINT an der Position wird ein Breakpoint gesetzt bzw. ein bestehender gelöscht 3.4.9 Einige Beispielprogramme Neben den allgemeinen Beispielen für die MB90470 in denen die Verwendung von Peripherieeinheiten wie z.B. der UART u. I2C gezeigt wird, gibt es auch ein Verzeichnis in dem allgemeine Beispiele enthalten sind. Dieses Verzeichnis MB90xxx enthält unter anderem: - FLASH In diesem Beispiel sind Routinen zum Beschreiben und Löschen vom FLASH-ROM enthalten. Diese können in der eigenen Applikation eingebunden werden. - Printf / sprintf Um diese Funktionen nutzen zu können, müssen sogenannte „Low-Level“ Funktionen definiert werden. Erst mit Ihrer Hilfe können die Standard C Aufrufe eine formatierte Ausgabe erzeugen. Die Definition wird in diesem Beispiel gezeigt. Auch die „malloc“-Funktion benötigt diese „Low Level“ Funktionen. - Soft_I2C Für Controller die kein I2C-Interface besitzen stellt diese Software Routinen zur Verfügung, um über normale Port Pins diesen Bus zu emulieren. - ramcode Wie bereits beschrieben, wird beim Flashen Code im RAM benötigt, da ein normaler Lesezugriff auf das FLASH beim Beschreiben nicht möglich ist. Dieses Beispiel zeigt eine Möglichkeit Code im RAM abzulegen und zu verwenden. PD78/02.05.03 - 29 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Die Beispiele finden sich auch unter der im Eingang angegebenen Homepage. Dort sollten Sie sich die aktuellsten Versionen der Beispiele downloaden. Der Pool an Beispielen wird kontinuierlich erweitert. 3.5 Utilities Neben der reinen Entwicklungssoftware bietet Fujitsu einige zusätzliche Hilfsprogramme an. Diese sind in dem Paket „Utilities“ zusammengefasst. Im Gegensatz zur „Softune Workbench“ finden Sie die Utilities im Internet, auf der unter 1. genannten Homepage oder natürlich auf der CD. 3.5.1 Installation - Die Utilities Die Installation des Softwarepaketes gestaltet sich sehr einfach. Das selbstextrahierende Archiv entpackt alle Einträge in die entsprechenden Verzeichnisse. Es sind keine Systemeinträge nötig. Abb.31: Window Utility-Extraktion Standardmäßig ist dies das Verzeichnis C:/Softune/Utility.... Abb.32: Window Speichern unter mit den Unterverzeichnissen: - Bitmixer - Flash91100 - Flash91360 - FlashDevKit - FlashVxxxxx - HexloadW - SKWizard Der Flasher Abb.33: Installation Starten Abb.34: Zielverzeichnis Nach der Extraktion der Utilities muss noch der Flasher installiert werden. Mit dem Start der „Setup.exe“ erscheint Abb.33 und danach Abb.34. In dem angegebenen Verzeichnis werden neben dem eigentlichen Programm auch die benötigten Downloadkernel abgelegt. PD78/02.05.03 - 30 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual 3.6 Die MMC/SD Karte 3.6.1 Initialisierung Folgende Initialisierung muß erfolgen, damit die Karte nach einem Power-On in den SPI-Mode geht: • Sende 80 clock pulses zum Start der Bus-Kommunikation. • Anlegen des Chip Select Signalsan den (CS) pin, (active low). • Sende CMD 0 • Sende 8 Clock Pulse zur Verzögerung • Warte auf eine gültige Antwort • Sende 8 Clock Pulse zur Verzögerung • Sende CMD 1 • Sende 8 Clock Pulse zur Verzögerung Warte auf eine gültige Antwort • • Sende 8 Clock Pulse zur Verzögerung • Sende CMD1 bis Antwort = ready Die folgende Abbildung zeigt das Flow-Chart des Initialisierungsprozesses: Power On Send 80 Clocks to Start bus communication Assert Chip Select (/CS) Send CMD0 Wait for Response Is Response Valid ? No Yes Send One Byte Delay Send CMD1 Wait for Response Send One Byte Delay No Is Response 0x00 ? Yes Send One Byte Delay MultiMediaCard Ready in SPI Mode PD78/02.05.03 - 31 - Error Handler GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual 3.6.2 Demoprogramme Die Demoprogramme sind nur für Demonstrationszwecke gedacht und können jederzeit von Glyn überarbeitet werden. Sie enthalten u.a.. folgende Programmodule: MMC.c Dieses Modul enthält die Routinen zum initialisieren und ansprechen der MMC/SD Karte und der SIO: Init_SIO(); Init_MMC(); read_status(); read(); write(); start_seq(); stop_seq(); send_command(); read_response(); Get_R1(); Get_DR1(); get_start_byte(); setdelay(); initSPI(); Send_CID(); Send_CSD(); set_blocklen(); read_single_block(); write_block(); waitm(); uart.c Hier liegen die Routinen zum initialisieren der UART und für die Ein/Ausgabe von Daten an ein Terminalprogramm: InitUart(); Putch (); Getch(); empty_ser(); Puts(); Print_Byte(); getchar(); Gets(); Get_long(); Get_pat(); Lf(); utils.c Hilfsfunktionen für das jeweilige Projekt spi.def Definitionen von Konstanten und Portpins. PD78/02.05.03 - 32 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual 3.6.2.1 MMC Projekt_474 Alle ausgelieferten EVBMB90F474 sind mit dem MMC Projekt_474 geflasht. Das MMC Projekt_474 analysiert eine MMC/SD Karte im Slot und wird über ein Terminalprogramm bedient. Die Parameter für das Terminalprogramm sind: 19200 Baud, keine Parity, 1 Stop Bit und 8 Bit Datenlänge. MultiMedia-Card Demo for EVBMB90F474 V1.0 03/2003 PD GLYN GmbH Am Woertzgarten8 D-65510 Idstein/Ts. Germany Menue GLYN MMC/SD Demo: **************************************** * 1 - Initialisierung * * 2 - CID/CSD anzeigen * * 3 - Hexdump (n -> weiter) * * 4 - Suche String * * 5 - Suche Hex-Pattern * * 6 - Daten aendern * * 7 - Demoprogamm: schreibe in Datei * * ohne FAT zu benuetzen * * 8 - Low Level Formatierung * **************************************** Die Erläuterung der Befehle im einzelnen: 1 - Initialisierung Hiermit wird die Karte zum SPI-Mode initialisiert. Dieser Befehl ist aber normalerweise nicht notwendig, da die Karte beim Stecken über Card Detect erkannt und initialisiert wird. 2 - CID/CSD anzeigen Zeigt den Inhalt der CID/CSD als 16 Bytes im Hexformat an. Zusätzlich werden noch "Manufacturer ID", "OEM/Application ID" und "Product name" angezeigt. 3 - Hexdump (n -> weiter) Erzeugt einen Hexdump ab einer einzugebenden Adresse. Die Ausgabe erfolgt immer blockweise (512 Byte). Wenn mit 'n' bestätigt wird, wird der nächste Block angezeigt. 4 - Suche String Nach Eingabe eines Strings wird nach diesem auf der Karte gesucht und bei der ersten Übereinstimmung ein Hexdump ausgegeben. 5 - Suche Hex-Pattern Wie Punkt 4, nur daß hier nach einem Hex-Wert (max 32 Byte) gesucht wird. 6 - Daten aendern Nach Eingabe einer Adresse lässt sich das adressierte Byte ändern. 7 - Demoprogamm: schreibe in Datei ohne FAT zu benuetzen Dieser Befehl zeigt wie vom PC lesbare Daten auf die Speicherkarte geschrieben werden können, ohne auf der Microcontroller-Seite ein FAT Filesystem implementieren zu müssen. Hierzu sucht der Controller das Wort "STARTKENNUNG:" auf der Speicherkarte und man kann dann 64 ASCII-Zeichen dahinter eingeben. Das ist natürlich nur ein Beispiel und kann beliebig ausgebaut werden. Das Programm "MMC Projekt_474 Datalogger" benutzt diese Vorgehensweise zum Aufzeichnen von ASCII-Daten. PD78/02.05.03 - 33 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Für diesen Befehl muß die Karte wie folgt vorbereitet werden: - Karte formatieren und Textfile "Leer240.txt" oder "Leer1MB.txt" von der CD in die Root kopieren - Wird ein eigenes Textfile benutzt, muss dieses am Anfang das Wort 'STARTKENNUNG:' enthalten. Der Schreibstring (max. 64 Zeichen) wird hinter 'STARTKENNUNG:' angehängt. - Es dürfen keine Unterverzeichnisse und andere Files auf dem Speichermedium sein. - Falls das File auf dem PC gelöscht und wieder neu aufgespielt wird, kann es sein, dass Reste des Headers vor dem aktuellen File auf dem Datenträger liegen. Diese würde das Suchprogramm vor dem gültigen File finden. Um absolut sicherzugehen dass nur das File beschrieben wird, ist es sinnvoll die Karte vorher "Low-Level" zu formatieren, dann mit dem PC neu formatieren und das File aufzuspielen. 8 - Low Level Formatierung Die Karte wird mit einem vorzugebenden Hexwert beschrieben. 3.6.2.2 MMC Projekt_474_Datalogger (in Vorbereitung) Mit diesem Programm werden alle Daten im ASCII Format der seriellen Schnittstelle (UART) in einem Textfile der SD/MMC Karte gespeichert. Die Baudrate liegt fest und die Filegröße des Textfiles ist in einer 9-stelligen ASCII-Zahl vor dem Wort "STARTKENNUNG:" festgelegt. Die Memorykarte muß wie in Punkt 3.6.2.1, Befehl 7, beschrieben vorbereitet werden. Weiterführende Beschreibung innerhalb des Projektes. 3.6.2.2 Messe_Projekt_474 Dieses Programm wurde auf verschiedenen Messen vorgeführt und stellt Bitmaps der Speicherkarte auf einem Grafikdisplay dar. Die Bitmaps sind schwarz/weiss im Format 64x128 Pixel. Sie werden mit dem PC auf der Speicherkarte ohne Unterverzeichnis gespeichert und in der dort abgelegten Reihenfolge wieder ausgelesen ohne das FAT-System zu benützen. Das Grafikdisplay ist ein monochromes 3 Volt Display der Firma Displaytech Ltd. des Typs "64128E" mit der Auflösung 64 x 128 Pixel. Die Routinen zur Ansteuerung sind im Modul "lcddriver_displaytech.c" enthalten. Die Zuordnung der Portpins zum Display erfolgt in " hardware_displaytech.h". PD78/02.05.03 - 34 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Anhang A PD78/02.05.03 Pin Assignment & Description of MB90470 (QFP-100) - 35 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual PD78/02.05.03 - 36 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual PD78/02.05.03 - 37 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual PD78/02.05.03 - 38 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual PD78/02.05.03 - 39 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual PD78/02.05.03 - 40 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Anhang B Liste interessanter FUJITSU Unterlagen pdf-File Grundlagen an-installation-v1-0 an-startworkbench-v1-1 an-Template-v1-0 an-startup-v1-0 Weiterführende Dokumentation an-flashprg-v1-4 an-birom16lx-v2-2 an-baudgen-v1-1 an-businterface-v1-4 an-canpaper-v1-0 PD78/02.05.03 Inhalt Installation der Workbench Beschreibungen zur Softune Workbench Erzeugung eines Projektes via Template Beschreibung der Einträge der start.asm und des Memory Models. Außerdem werden die standardmäßig von dem Compiler verwendeten Sections für Daten beschrieben. Wichtige Beschreibung zur Flashprogrammierung der 16LXController. Verwendung des Flashprogramms, Beschaltung des Controllers und Zusatzprogramme. Beschreibung zum BiROM Dokument zur Baudratenberechnung der UARTs Verwendung des externen Businterfaces. Elektrisches Verhalten der Pins wird beschrieben. Dokumentation zum CAN Bus - 41 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Anhang D PD78/02.05.03 Schaltplan EVBMB90F474 - 42 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Anhang E PD78/02.05.03 Bestückungsplanplan EVBMB90F474 - 43 - GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Anhang F Stückliste EVBMB90474 Bauteil C1 C2 C3 C4 C5 C6 C7 C9 C10 C11 C12 C13 C14 C15 C16 C17 C19 D1 D2 D3 D4 FPS009.. G1 IC2 IC3 JP1 JP2 JP3 JP4 JP5 JP6 JP8 JP9 JP11 JP12 JP13 JP17 Q2 Q3 R1 R2 R3 R4 R5 R6 R7 R8 Wert Bauform 22pF 1206 22pF 1206 30pF C1206 30pF C1206 100nF C1210 220uF/35V ES-5 470nF/100nF C1206 100nF C1206 100nF C1206 10uF/10V E2,5100nF C1206 1u/35V E2,5-5 1u/35V E2,5-5 1u/35V E2,5-5 1u/35V E2,5-5 100nF C1206 100nF C1206 1N4448 SOD-80 1N4002 DO41-10 LED3MM/grün LED3MM LED3MM/rot LED3MM FPS009-2300-0 AB9V AB9V MAX3232 DIL16 3,3V Regler TO220H PINHD-2X25 2X25 PINHD-2X25 2X25 Programming JP2 RESET JP1 MD1 JP1 Vcc5 JP1 AVCC JP1 AVRH JP1 VCC JP1 P80 JP1 P81 JP1 Power LED JP1 5MHz HC49/S 32,768KHz TC38H 47K R1206 47K R1206 47K R1206 47K R1206 5,1k R1206 39K R1206 100K R1206 100K R1206 PD78/02.05.03 - 44 - Bemerkung nicht bestückt nicht bestückt Elko Elko Elko Elko Elko Elko SD/MMC-Slot, Yamaichi gesockelt z.B. LF33CV nicht bestückt nicht bestückt GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Bauteil R9 R10 R11 R12 R13 R14 U$1 X1 PD78/02.05.03 Wert Bauform 270 R1206 270 R1206 510k R1206 0 Ohm R0805 100k R1206 100k R1206 MB90F474HPF-G/Fujitsu 9p. Sub-D F09H - 45 - Bemerkung nicht bestücken oder Lötbrücke Buchse GLYN GmbH & Co. KG GLYN EVBMB90F474 Manual Fujitsu Microcontroller Softune Workbench Customer Registration This registration form must be used to register your Softune Workbench Software Development environment. Before installing Softune Workbench, please check the Fujitsu Disclaimer! Unregistered Installation Licenses are just evaluation versions only! Please take care that your personal information given here is correct and complete. To register Softune Workbench, please fill this form and send it by email or Fax to micro_info@fme.fujitsu.com Note: Boldface indicates required fields. Fujitsu Microelectronics Europe GmbH Automotive & Appliances Am Siebenstein 6-10 D-63303 Dreieich-Buchschlag, Germany Tel.: (++49) (0)6103-690-0 Fax: (++49) (0)6103-690-122 Email: micro_info@fme.fujitsu.com. Company Name: Department: Name: Street: City: ZIP/Postal code: Country: If location of installation differs from above address, specify local Company Address Name: Street: City: ZIP/Postal code: Country: Phone: Fax: Email address: Local Fujitsu or Distribution Sales Office: (please add correct location) Installed Version of Softune Workbench: ( e.g. STAPACK16_300010FME01) Number of personal installations: Number of Network installations: Windows Operating System used: PD78/02.05.03 - 46 - GLYN GmbH & Co. KG