Home
und Programmierhandbuch (Acrobat-PDF-Format, 1,71
Contents
1. SET_ADDRESS Anforderung 8 Der PC ermittelt die F higkeiten des USB Ger ts PC sendet erneut die GET_DESCRIPTOR Anforderung liest aber diesmal die gesamte Antwort 9 Der PC ordnet dem USB Ger t einen Ger tetreiber zu und l dt ihn Der Treiber wird anhand von Anbieter Produkt ID Release Nummer und Klassen ID zugeordnet Kann kein pas sender Treiber gefunden werden wird der Anwender zur Installation eines neuen Treibers aufgefordert Die Umsetzung der Enumeration in der Firmware des USB Programmers ist in der Quelldatei usb c beschrieben In der Interruptserviceroutine usb_interrupt_process werden die Setup Requests auf Endpunkt 0 Control Transfer erkannt und durch Aufruf der Funktion usb_enumeration_process abgearbeitet 5 5 3 2 Die wichtigsten Deskriptoren Der Informationsaustausch zwischen PC und dem USB Ger t erfolgt mit Hilfe spezieller fest defi nierter Datenstrukturen den so genannten Deskriptoren Das USB Ger t muss zum einen unterschiedliche Anforderungen vom PC empfangen zum anderen m ssen entsprechende Antwort Deskriptoren bereitgestellt und zum PC verschickt werden Die Firmware dieses USB Programmers kann nach entsprechender Anfrage die folgenden Deskrip toren zum PC senden Wert Hex Deskriptor Beschreibung 0x01 DEVICE Enth lt Informationen ber das USB Ger t als Ganzes und die Anzahl der unterst tzten Konfigurationen Anzahl der unterst tzten Schnittstellen End
2. Neben dem Ger tetreiber sind auch zwei Windows Anwendungen zur Steuerung des Uploads von Hex und Bin rdate en auf der beiliegenden CD ROM enthalten usb_programmer exe Die eine Version besitzt eine grafische Oberfl che Windows GUI und ist f r die komfortable Steuerung gedacht Die andere Version ist ein W ndows Konsolenprogramm das nach Aufruf mit korrekten Parametern umgehend einen automatischen Upload durchf hrt z B zum direkten Aufruf aus einem Texteditor w e UltraEdit Die Programmdateien befinden sich im Verzeichnis Software Windows GUN bzw Software Windows Konsole auf der CD ROM und k nnen mit jedem Dateimanager z B Windows Explorer direkt auf die Festplatte kopiert werden Ein eigenes Installationsprogramm ist nicht vor handen Neben der Software s nd noch weitere n tzl che Tools und Informationen auf der CD ROM eine bersicht steht in Kapitel 7 3 Inhalt der CD ROM 3 5 LED Anzeigen auf dem Ger t Gr ne LED leuchtet Power On Ger t ist betriebsbereit Gelbe LED leuchtet Busy Ger t arbeitet Rote LED leuchtet Fehler Befehl war nicht erfolgreich 3 6 Bedienung der Windows Anwendung GUI F r den USB Programmer stehen zwei Windowsanwendungen f r die Uploadsteuerung bereit Eine grafische Version GUI Anwendung die in diesem Kapitel genauer beschrieben wird und eine Konsolenanwendung f r das automatische Flashen z B direkt aus einem Editor heraus gt siehe n
3. angelegt Quelldateien Sonstige Dateien Das Projekt kann durch ffnen der Datei usb _programmer dsw in de IDE von Visual Studio geladen werden Im Arbeitsbereich ist dann der schnelle Zugriff auf alle Projektdateien m glich ber den Men punkt Erstellen Alles neu erstellen oder ber die entsprechenden Buttons in der Toolbar wird die Anwendung kompiliert und erzeugt Je nach Auswahl Debug oder Release Version 5 6 2 Erstellung und Behandlung der Programmoberfl che In der Eintrittsfunktion WinMain in main cpp wird ber die Windows API Funktion CreateDialog das Hauptfenster aus der Dialogresource erzeugt Der eigentliche Aufbau der Oberfl che wie de Buttons angeordnet sind etc ist in der Resourcendatei res rc abgespeichert und kann jederzeit ber den Resource Editor im Visual Studio bearbeitet werden Als n chstes folgt in der Eintrittsfunktion die Ereignis Warteschleife des Programms mit deren Hilfe das Programm die Nachrichten von Windows verarbeiten kann RE while GetMessage amp msg NULL 0 0 if g_hMainWnd 0 IsDialogMessage g_hMainWnd amp msg TranslateMessage amp msg DispatchMessage amp msg Die Callback Routine MainWndProc ist direkt dem Dialogfenster zugeordnet und wird jedes Mal aufgerufen wenn ein Ereignis im Hauptfenster auftritt z B Button gedr ckt Maus bewest Das Ereignis wird abgefragt und einer bestimmten
4. bersprungen alter Wert bleibt erhalten Es wird berpr ft ob die aktuell ausgew hlte Hex Bin rdatei erfolg reich in den Chip bertragen wurde Dazu werden die Hex Bin rdaten erneut zum USB Programmer geschickt und anschlie end mit den Da ten aus dem Flash Speicher des eingelegten Controllers verglichen erity Diese Option erm glicht das automatische L schen Programmieren Autom programmieren und Verifizieren des eingelegten AT89C2051 4051 Controllers Die oberen vier Befehle werden dazu automatisch nacheinander durchge f hrt Zus tzlich wird hier die ben tigte Zeit des Flashvorgangs gemes sen und am Ende im Logfenster ausgegeben i siil 3 6 4 Setzen der Lockbits Die AT89C2051 4051 Controller besitzen zwei Lock Bits mit deren Hilfe es m glich ist das weitere Programmieren zu sper Lock Bits 01 ISP disabled ll Uber das Auswahlmen Lock Bits siehe rechte Abbildung 3 10 kann die gew nschte Einstellung angegeben und durch Klick auf den Button Lockbits setzen n den eingelegten Chip ge k schrieben werden Die Lockbits k nnen nur durch das komplette L schen des Chips zur ckgesetzt werden Abbildung 3 10 Die folgenden Tabelle aus dem Datenblatt zeigt die m glichen Bitkombinationen Program Lock Bits E E LBI Ei A LB2 Protection Type No program lock features 000 program No program lock features 000 features hr Further programming of the Flash is disabled 3 P O JP Sa
5. AN Die Software die f r diese Hardware installiert wird Andis USB Programmer hat den windows Logo Test nicht bestanden der die Kompatibilit t mit windows XP berpr ft warum ist dieser Test wichtig Das Fortsetzen der Installation dieser Software kann die korrekte Funktion des Systems direkt oder in Zukunft beeintr chtigen Microsoft empfiehlt strengstens die Installation jetzt abzubrechen i it d rdwal oftware die den jung zu s Die Software f r die folgende Hardware wurde installiert Andis USB Programmer Klicken Sie auf Fertig stellen um den Vorgang abzuschlie en Fertig stellen K Abbildung 3 7 Ger te Manager Datei Aktion Ansicht 3 gt mM ESP a Ra Ei Anschl sse COM und LPT E Audio video und Gamecontroller d Computer Diskettencontroller H Diskettenlaufwerke DVD CD ROM Laufwerke Eingabeger te Human Interface Devices 2 Grafikkarte IDE ATAJATAPI Controller 231 ze Laufwerke M use und andere Zeigeger te Monitore Andis USB Programmer Standard erweiterter PCI Zu USB universeller Hostcontroller USB Druckerunterst tzung USB Root Hub USB Root Hub USB Root Hub USB Root Hub USB Root Hub VIA Rev 5 oder h her universeller Hostcontroller VIA Rev 5 oder h her universeller Hostcontroller YIA Rev 5 oder h her universeller Hostcontroller YIA Rev 5 oder h her universeller Hostcontroller Abbildung 3 8 Der Ger te Manager 3 4 Software Installation
6. Enumeration des Ger ts sowie Endpoint 04 und 05 im Bulk Modus den einen zum Senden den anderen zum Empfang Der Datenaustausch erfolgt n kurzen Paketen von max 64 Bytes Wie diese Pakete aufgebaut sind wird m n chsten Kapitel beschrieben 5 3 2 Aufbau der verschickten Pakete Die Kommunikation zwischen der PC Software und dem USB Programmer erfolgt in Befehlspake ten von max 64 Bytes Der Inhalt dieser Bytes ist in diesem Projekt wie folgt festgelegt Grunds tzlich entspricht das erste Byte von jedem Befehlspaket der Signaturkennung die den Wert A 41h haben muss Pakete mit einem anderen Wert im ersten Byte sind ung ltig Das zweite Byte gibt an um was f r einen Befehl es sich handelt Im Programmcode sind daf r mehrere Kon stanten abgelegt Als n chstes k nnen befehlsspezifische Datenbytes folgen Die Windowsanwendung usb_programmer exe kann folgende Befehle an das USB Ger t sen den CMD_ERASE Der komplette Flash Speicher soll gel scht werden Signatur Byte Befehls Byte A 41h CMD_ERASE Oih CMD_BLANK_CHECK Es soll berpr ft werden ob der Flash Speicher Jeer ist Signatur Byte Befehls Byte A 41h CMD_BLANK _CHECK 02h CMD_DEBUG Es sollen 64 Bytes aus dem Chip gelesen werden Signatur Byte Befehls Byte A 41h CMD_DEBUG 50h CMD_PROGRAM Eine Programmieranforderung wird gesendet Signatur Byte Befehls Byte A 41h CMD _PROGRAM 03h TA Ee CMD_HEXDA
7. angezeigt 9_ 4 Hardwarehandbuch Im folgenden Abschnitt dieser Dokumentation wird die Hardware des USB Programmers beschrie ben und die Funktionsweise erkl rt Zun chst wird die USB Schnittstelle vorgestellt darauf folgt dann ein Einblick in den kompletten Schaltungsplan der schlie lich in seine einzelnen Funktions bl cke zerlegt und erl utert wird 4 1 Die USB Schnittstelle 4 1 1 Technische Daten Die USB Schnittstelle besitzt im Vergleich zu den lteren RS 232 oder Centronics Anschl ssen viele Vorteile die folgende Liste zeigt einige Features Leichte Anwendbarkeit automatische Konfiguration nach Anschluss keine IRQ Einstellungen vom Anwender notwendig BUS Konzept erm glicht das Anschlie en von bis zu 127 Ger ten D nne Kabel und handlichere Stecker Hot Plugging erm glicht das beliebige An oder Abstecken von Peripherieger ten wobei es keine Rolle spielt ob der PC eingeschaltet ist oder nicht da das laufende Betriebssystem die angeschlossene Hardware erkennt und initialisiert USB Ger te ben tigen oftmals keine eigene Stromversorgung da die USB Schnittstelle 5V Stromversorgungs und Masseleitungen bereitstellt typ 100mA nach besonderer An meldung bus max 500mA USB besitzt eine kaskadierte Stern Topologie d h an einen HUB in der Mitte k nnen so wohl Ger te als auch weitere HUBs angeschlossen werden Flexibilit t Zuverl ssigkeit durch Datenfehlererkennung und rel niedriger Stromve
8. beiliegenden CD ROM Die untenstehende Tabelle gibt eine bersicht ber die wichtigsten zum Projekt geh renden Dateien Headerdateien I U Header Datei f r log cpp commands h Header Datei f r commands cpp Definiert Konstanten und Typen f r die programminternen USB Befehle zur Kommuni kation zwischen Firmware und dem Windows Programm Automatisch generierte Headerdatei die von Visual Studio verwaltet wird und s mtliche Konstanten IDs f r die Resourcen beinhaltet BEN Ouelldateien Jo ooo SOS main cpp Enth lt den Programmeinstiegspunkt WinMain In der Hauptroutine wird das Haupt fenster erzeugt und in die Windows Message Loop eingeklinkt Enth lt au erdem die Callback Funktion des Hauptfensters sowie die Thread Funktionen Routinen zum La den der Hexdateien und andere Enth lt Funktionen zum Abschicken und Empfangen der Programmerbefehle log cpp Enth lt Funktionen f r die Ausgabe im Log Fenster der Anwendung usb cpp Dieses Modul stellt Funktionen f r die direkte Kommunikation mit dem USB Treiber bereit res rc Resource Script der Anwendung Enth lt Dialogvorlage das Hauptmen und eine Ver kn pfung zum Programm Icon usb_programmer dsp Visual C 6 0 Projektdatei den werden In diesem Unterverzeichnis wird das fertige Programm Exe Datei nach dem Kompilie ren Linken gespeichert Debug Verzeichnis In diesem Unterverzeichnis wird die Debug Version des Programms Exe Datei mit integrierten Debuginformationen
9. ben tigt usb_init_pli Endpoint Interrupt Endpoint O Endpoint 4 LU LU Enumeration BulkProcess Initialsieren der USB Register und Konfiguration der Endpoints im Controller usb_init Freigeben der Interrupts f r USB Zum Schluss l uft der Mikrocontroller n einer Endlosschleife USB Kommunikation usb c Wenn ein USB Interrupt auftritt wird die ISR usb_interrupt_process aufgerufen Dort wird zun chst zwischen den Endpoints O und 4 unterschieden Gelangt ein Paket auf Endpoint O f r Control Transfer konfiguriert kann es sich nur um eine Anfrage w hrend des Enumeration Prozesses handeln die weitere Verarbeitung erfolgt durch Aufruf der Funktion usb_enumeration_process Hat ein Paket im Endpoint 4 den In terrupt ausgel st so handelt es sich um Bulk Daten Die eigentliche Kommunikation zwischen der Hardware des USB Programmers und dem Windows Steuerprogramm er folgt im Bulk Transfer entsprechend wird usb_bulk_process aufgerufen Die USB Anmeldung beim Betriebssystem und das Aushandeln der Konfigurationsda ten Enumeration wird im nachfolgenden Kapitel beschrieben 25 Wird ein Bulk Paket empfangen so werden zun chst alle Bytes n ein globales Puffer Array g_buf gespeichert dies geschieht in der Funktion usb_bulk_process an schlie end erfolgt die Untersuchung und Verarbeitung des Pakets durch Aufr
10. chstes Kapitel Im Verzeichnis Software Windows GUN auf der besen en a CD ROM befindet sich die Datei usb_programmer exe TE Die rechte Abbildung 3 9 zeigt die Oberfl che des Beer Programms S ei Zu Beginn muss eine Hex Date oder ein bin res Blank Check ER Speicherabbild geladen werden Dann k nnen Er ber die gezeigten Buttons verschiedene Befehle Eet ES nemme 7 an den USB Programmer abgesetzt werden Wurde EE SSES De noch keine g ltige Hex Date geladen so bleiben einige Funktionen Buttons deaktiviert und k nnen nicht ausgef hrt werden Im Log Fenster im unteren Drittel der Oberfl che werden die durchgef hrten Operationen Status meldungen und evtl auftretende Fehler angezeigt Abbildung 3 9 Das Windows GUI Programm 3 6 1 Laden einer Intel Hex oder Bin rdatei Nachdem das Windowsprogramm gestartet wurde muss EI USB Programmer f r Atmel AT eine Hex Date oder Bin rdatei die alle Daten f r den 2 Befehle Hilfe Flashvorgang enth lt geladen werden Dies geschieht ent weder ber den Durchsuchen Button E oder den Me n aufruf Datei Lade Hex oder Bin rdatei rechts ab Programm beenden Alt F4 gebildet Daraufhin erscheint ein Dateiauswahldialog mit dem die gew nschte Date ge ffnet werden kann Im Auswahlfeld Dateityp kann der Filter f r die Dateierweiterung Bin r oder Hex Date ange geben werden Na
11. http www beyondlogic org ser tetreiber unter Windows 2000 Art Baker Jerry Lozano 41 7 2 Hilfreiche Internetlinks http www atmel com http www maxim ie com USB Implementers Forum http www usb org Allg Informationen zu USB ATMUSB http www technik forum info USB Treiber und Technik Forum http www er tronik de Keil Software http www keil com c51 kommerzielle Entwicklungsumgebung f r C51 Controller Demo arbeitet bis 2k Flash kostenloser C Compiler Beispielanwendungen u v m USB Informationen USB Sniffer f r Windows 7 3 Inhalt der CD ROM Die beiliegende CD ROM hat folgende Verzeichnisstruktur Inhalt Diese Dokumentation PDF und Fotos des USB Programmers Quelltexte Firmware SDCC Windows GUI VISUAL C Windows Konsole VISUAL C Windows Konsole Tools ASMBS51 AT89C2051 Beispiel SDCC AT89C5S131 USB Bootloader Upload Tool Atmel USB Keyboard Example ATMUSB Treiber Quelltext Datenbl tter MLASMS1 SDCC 2 5 0 SnoopyPro 0 22 USB Bowser USB View usb org USB Treiber f r Windows XP 42
12. komplett gel scht indem der Pin P3 2 PROG f r mindestens 10ms auf Low bleibt 5 5 7 Auslesen und Schreiben des Flash Speichers vom AT89C2051 4051 Das Schreiben und Auslesen Verifizieren des Flash Speichers l uft sehr hnlich ab und wird des halb gemeinsam betrachtet Insgesamt stehen dem PC die drei Befehle CMD_PROGRAM CMD_VERIFY CMD_HEXDATA zur Verf gung Zu Beginn wird einer der ersten beiden Befehle zum Ger t gesendet um das Ausle sen Verifizieren oder Schreiben einzuleiten Anschlie end k nnen durch das wiederholte Senden des dritten Befehls CMD_HEXDATA die eigentlichen Daten bertragen werden In der Funktion usb_eval in der Quelldatei flash c werden de Befehle decodiert und entsprechende Rou tinen zur Verarbeitung aufgerufen Wie d e rechte Abbildung verdeutlicht sendet der PC D PC zu Beginn einen Befehl CMD_PROGRAM Ss oder CMD_VERIFY zum Ger t Der Befehl wird E in usb_eval erkannt und ED RORA NE een chip_ in t_burn_or_verify wird aufgerufen Diese Funktion initialisiert die Steuer Ports und schaltet den Reset Pin auf die ben tigte Spannung 12V brennen 5V auslesen Au erdem wird der chip_init_burn_or_verify Adressz hler zur ckgesetzt und eine globale Vari _ Initialisiere Chip Power Up Sequence Einstellen der richtigen able speichert ob gelesen oder geschrieben wer SpannundgsDegel den soll notwendig f r die fol
13. von Visual Studio geladen werden Im Arbeitsbereich ist dann der schnelle Zugriff auf alle Projektdateien m glich ber den Men punkt Erstellen 2Alles neu erstellen oder ber die entsprechenden Buttons in der Toolbar wird die Anwendung kompiliert und erzeugt Je nach Auswahl Debug oder Release Version 5 7 2 Die Kommandozeile Im Gegensatz zum grafischen Windows Programm lautet die Eintrittsfunktion bei der Konsolenan wendung nicht mehr WinMain sondern wieder int main int argc char arsv Die Anwendung kann lediglich f r das automatische Programmieren Erase Blank Check Program und Verify benutzt werden Die Hex oder Bin rdatei muss als erster und einziger Parameter an das Programm bergeben werden Die Hauptfunktion main bekommt dann die Anzahl der ber gebenden Kommandoparameter in der Variablen argc vom Betriebssystem bergeben Da der eigentliche Dateiname usb_programmer exe ebenfalls mit in der Kommandozeile steht muss die Variable bei g ltigem Aufruf den Wert 2 haben ber den Array Zugriff argv 1 kann direkt auf den bergebenen String zugegriffen werden der den Namen der zu bertragenen Datei enth lt 5 8 Der eingesetzte USB Treiber F r die Kommunikation unter Windows wird der Ger tetreiber ATMUSB SYS http www technik forum info eingesetzt Der Treiber basiert auf dem EZUSB Treiber von Cypress und wurde f r den Atmel AT89C5131 Controller angepas
14. 09 SET_CONFIGURATION PC fordert das USB Ger t auf eine bestimmte Konfi guration zu verwenden GET_INTERFACE PC fordert aktuelle Schnittstelleneinstellung an 0x07 SET_DESCRIPTOR Auf diese Anforderungen reagiert der USB 0x0B SET_INTERFACE Programmer lediglich mit einem STALL 0x0C SYNCH_FRAME 5 5 4 Empfang und Auswertung der USB BULK Pakete Wenn das Ger t ein USB Paket empf ngt wird ein In Interrupt terrupt ausgel st und die Interrupt Service Routine usb_interrupt_process aufgerufen Diese Routine berpr ft um was f r ein Paket es sich handelt und an ISR usb_interrupt_process welchen Endpoint m Controller das Paket gerichtet ist Handelt es sich um ein Bulk Paket Usb_bulk_received liefert True so wird die Funk Wera ToN ton usb_bulk_process f r die weitere Verarbeitung aufgerufen Diese Funktion wiederum liest alle ankom menden Daten in das globale Puffer Array g_buf ein Anschlie end kann der Puffer analysiert und der vom PC ausgehende Befehl ermittelt und verarbeitet werden Dazu wird usb_eval g_buf num aufgerufen Diese Funktion pr ft zun chst die Mindestl nge PA CKET_HEADER_LEN des Pakets DATA gt e buff usb_eval g_buf num Ebenso muss das Signaturbyte erstes Byte g ltig sein lt PACKET_SIG Andernfalls ist der Be fehl vom PC bedeutungslos und eine Fehlermeldun
15. 2801DB DBM e Externer aktiver USB 4 Port HUB Typhoon USB2 0 wird f r USBCommandVerifier ben tigt Software e Betriebssystem Windows XP SP2 e Programmierumgebung SDCC Compiler Version May 8 2005 UltraEdit 32 Text Editor Microsoft Visual C C Version 6 0 AT89C5131 USB Bootloader Upload Tool v1 2 ausbprog exe ATMUSB Treiber Diagnose Tool USB View und USB Browser Diagnose Tool USBCommandVerifier von www usb org Hardware S mulation OrCAD PSpice F r das Platinendesign Mentor Graphics PowerLogic bzw PowerPCB und die entspre chenden Bohrfile Tools an der FH Wedel 18 Anmerkung Der von Atmel gelieferte USB Treiber sowie das Atmel Upload Tool Flip werden nicht ben tigt und sollten auch NICHT installiert sein da es dann zu Treiberkonflikten kommen kann 5 2 Einspielen der AT89C5131 Firmware mittels ausbprog exe Der Atmel Controller AT89C5131 unterst tzt In System Programming ISP was bedeutet dass der Chip nicht ber einen externen Brenner beschrieben werden muss sondern er kann direkt n die fertige Schaltung eingesetzt werden und dort ber den USB Bus programmiert werden Damit das m glich ist besitzt der Baustein einen internen Bootloader der die USB Kommunikation beim Starten selbst ndig durchf hrt und anschlie end das Programmieren des Bausteins erm glicht Ob der Chip nach einem Reset bzw nach dem Einschalten mit dem Bootloader hochf hrt oder das vom Anwender geschri
16. FF FF z z Ga FF FF FF 32 FF FF FF FF FF FF FF 02 OC 32 12 00 Z nn 8 x 73 80 FE C2 88 C2 89 DZ A8 C2 AF 75 Fl FF C2 B3 s p z Au eiz BSE EB SBY D2 B5 D2 B6 D2 B7 C2 B5 75 90 FF 75 AO FF D2 BO Goupngtn uuti u 0 D enn enn D2 Bl 12 OD Ap 12 OD 1C D2 B5 80 FE 22 AA 82 EA 0 pE p 60 AA CO DO CO 00 75 00 BC 00 00 00 00 00 D5 00 AP u Mm d HL P3 CF PU FS 00 00 00 00 DO 00 DO DO 1A 80 E3 22 AA 82 EA D DB edr eng enn eng 60 05 00 00 1A 80 F8 22 D2 BO C2 Bl 22 DZ BO DZ Es O r o o e Bl 22 C2 BO D2 Bl 22 12 00 D2 C2 An 75 82 0A 12 4 0 O u Software Security Byte 00 BD 12 00 CD D2 AZ 75 82 OA 02 00 BD D2 A0 00 ideu 0 11 No program locks c2 An 22 12 00 D 75 90 FF CS a3 C2 A4 C2 A5 C2 xuliy siniyi Y EEPROM START APPLICATION H DH RESET 0000 Ol2345657893BCDEF A EEE FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FE mgoe l 0010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF g ACTION 0020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF RRRRHEE 0030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF Z gl d ah 0040 FF FF FF FF FF FF FF FF FF FF FF FF RRRRRFRFH MEAD ERASE RITE 0050 FF FF FF FF FF FF FF FF FF FF FF FF FF FR FR FE Z i 0060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FROH 5 FLASH 1 Geer 0070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF S in ed FF FF FF FF FF FF OFFOFFOFFOFFORRFORF
17. FORFRFOHHE IM EEPROM Flash ll Abb 5 1 Oberfl che von AUSBPROG EXE 5 Nun kann eine neue Hex Datei geladen werden woraufhin die Bytes im Hauptfenster zu se hen sind 6 Als n chstes wird der Uploadvorgang konfiguriert Normalerweise k nnen alle Standardein stellungen beibehalten werden Wichtig ist jedoch dass das BLJB Bit nicht gesetzt wird der Haken bei der entspr Checkbox muss also entfernt werden 19 7 Schlie lich kann die Hexdate durch Klick auf den Write Button in den Chip geschrieben werden gt weitere Informationen zu dem Programm stehen in der Textdatei readme txt 8 Nach dem Schreibvorgang muss das Ger t vom PC getrennt und somit ausgeschaltet wer den Der Jumper X wird wieder auf Run zur ckgesetzt Nach dem erneuten Anschlie Den am PC f hrt der Controller nun das eingespielte Programm aus 5 3 Die Kommunikation zwischen PC und Ger t 5 3 1 Allgemeiner Ablauf der Kommunikation Um Daten vom PC zum USB Ger t zu verschicken oder zu empfangen m ssen mehrere Instanzen durchlaufen werden Der Anwender startet die normale W ndowsanwendung usb_programmer exe die alle Eingaben des Benutzers entgegennimmt Es werden die zu ver schickenden Daten Hexfile geladen und f r die bertragung vorbereitet F r die eigentliche ber tragung wird der USB Treiber atmusb sys nitialisiert CreateFile anschlie end wird mit Hilfe der Windows API DeviceloContro
18. Hardware meldet und zur Trei berinstallation auffordert Schritt 1 Der Assistent zur Treiberinstallation wird automatisch ge startet Die CD ROM mit dem Treiber muss eingelegt wer den Die schnellste M glichkeit den Treiber zu installieren bietet die Option Software von einer Liste oder bestimm ten Quelle installieren Schritt 2 Es kann entweder ein Laufwerk angegeben werden in dem der Treiber gesucht wird oder das Verzeichnis wird direkt angeben Die entsprechende Option lautet dann Nicht su chen sondern den zu installierenden Treiber selbst w h len Schritt 3 Das Verzeichnis in dem sich der Treiber befindet muss ausgew hlt werden Wenn das CD ROM Laufwerk den Laufwerksbuchstaben D besitzt lautet der Pfad typi scherweise D Treiber iy Neue Hardware gefunden USE Device Abbildung 3 1 Assistent f r das Suchen neuer Hardware Willkommen Mit diesem Assistenten k nnen Sie Software f r die folgende Hardwarekomponente installieren USB Device A Falls die Hardwarekomponente mit emer CD oder Diskette geliefert wurde legen Sie diese gt jetzt e n Wie mochten Sie vorgehen O Software automatisch installieren empfohlen Software von einer Liste oder bestimmten Quelle installieren f r fortgeschrittene Benutzer Klicken Sie auf weiter um den Vorgang fortzusetzen Abbildung 3 2 Assistent f r das Suchen neuer Hardware W hlen Sie die Such und In
19. L chip_erase void t_packet d in d EE Log Sende Befehl zum L schen des Chips KE KEE ZeroMemory amp d_out sizeof d_out d ett Se PACKET_SIG d_out command CMD_ERASE dout Ten 0 if send_packet amp d_in amp d_out LOgt E NERR Konnte Chip nicht L schen F 15 return FALSE return TRUE Zun chst werden alle Bytes der lokalen Variable d_out zur ckgesetzt durch ZeroMemory Dann wird die Pakets gnatur gespeichert bei ung ltiger Signatur w rde das USB Ger t den Befehl verweigern Anschlie end wird der durch die Konstante CMD_ERASE codierte Befehl einge stellt Da f r diesen Befehl keine Daten ben tigt werden wird schlie lich noch die L nge der Da tenbytes auf Null gesetzt d_out len 0 249s 5 7 Das Windows Kommandozeilenprogramm 5 7 1 Projekt bersicht und Kompilierung Das Windows Konsolenprogramm usb_programmer exe wurde ebenfalls mit Microsoft Visual C 6 0 geschrieben Die Quell und Projektdateien befinden sich im Verzeichnis Quelltexte Windows Konsole VISUAL C auf der beiliegenden CD ROM Der Projektaufbau ist der GUI Version relativ hnlich Die Eintrittsfunktion main befindet sich jedoch in der Quelldatei usb_programmer cpp Da kein Hauptfenster erstellt und verarbeitet werden muss entfallen viele Funktionen der GUI Version Das Projekt kann durch ffnen der Datei usb_programmer dsw in die IDE
20. Laborprojekt USB Programmer f r Atmel ATSIC2O51 4051 Controller Andreas Schibilla 114900 FH Wedel 2005 1 Inhaltsverzeichnis ls ee ee 2 2 SE 1 1 ee 4 J Be nae Mandoa ar 4 JLS EIERE ses ae ee u 4 LLAMO USS der Ee 4 Se ENEE EE 3 3 4 Sollware Installationa anne te ae Re Ri 7 2S LEDAN eon aur demn GeT en 7 3 6 Bedienung der Windows Anwendung CU 7 3 6 1 baden emer Intel Hex oder eg EE 8 3 0 2 Ermitteln des einselesten e DS ee 8 3 6 3 L schen und Programmieren des Flach Speicherg 8 3 04 Selzen der LOCk DiS en ea este sinne 9 3 7 Bedienung der Wmdows Kkonsolenanwendung 9 3 8 EE Ee e E 9 4 113219 Ww areh ndbuche a er ee edel 10 Sch ech Eeer 10 41h Lech E Dale ee esse R E O T EAA 10 4A 2 Gehauseformen ind Stecker aa era 11 F2 e E le IT EE 11 a A Ee ILTTE EE 11 EE EE EE 12 EE 13 4 3 Der Steuercontroller Ame ATI BL a aa a a a 14 4 3 1 Beschaltuns und Pinbelesine me E a 14 4 3 2 Bereitstellung der Versorgungsspannung aus dem USR 15 4 33 DIES EREECHEN 16 4 4 Erzeugen von 12V aus den 5V des USB a a 16 4 5 Umschalten der Programmierspannung OV 5V SIN 16 5 Prosramm ernandbuch EE 18 5 l Entwicklungskonfisiration han a a a ee 18 5 2 Einspielen der AT89C5131 Firmware mittels ausbprog exe ussesneeeseeeeennnnnnnnnsseeneeeenennnn 19 3 3 Die Kommunikation Zwischen PC und Ger t usa aa aai aiian 20 5 3 1 Allgemeiner Ablauf der Kommunikation sssssssoeeessssssssoerrssssss
21. Pin angeschlossene RC Netzwerk eingestellt wird Program Mode An dem PSEN Pin ist ein Jumper oder alternativ ein Schalter ange schlossen der den Eingang entweder mit Low Masse oder mit High Vdd verbindet PSEN Low Der Controller startet nach einem Resetimpuls den internen Bootloader und erm glicht somit seine Neuprogrammierung Upload in Flash EEPROM Speicher PSEN High Der Controller startet nach einem Resetimpuls das eingespielte Pro gramm aus seinem Flashspeicher Power on Reset Der Reset Pin des Controllers besitzt einen internen Pull Up Widerstand Mit Hilfe des Kondensators der vom Reset Pin auf Masse geschaltet ist wird somit der Re setimpuls beim Einschalten erzeugt I O Ports In der rechten H lfte der Abbildung sind die f r die Schaltung relevanten Ports eingezeichnet 14 O Vec Vec 100n 4 Tu Power Suppl USB Full Speed Ber Connection R4 AT89C5131A M PLL Low Pass Filter R7 hoo Program Mode eh eg C16 Au Jumper C13 100n C2 10n COC COI Power on Reset PROG RUN 0 0 0 I 0 Vide Abb 4 5 Typische Beschaltung des ATS9C5131 und Auff hrung der I O Ports 4 3 2 Bereitstellung der Versorgungsspannung aus dem USB Der Controller AT89C5131A M arbeitet mit einer Betriebsspannung im Bereich von 3 3V bus 5 5V Der USB Bus liefert nahezu eine Spannung von 5V und erlaubt zun chst eine maximale Belastung von 100mA Da die Schaltung einen weitaus geringeren Strombeda
22. Q2 nahezu die vollen 12V abfallen und Q2 sicher gesperrt bleibt Die Dimensionierung von R12 R14 ist so gew hlt dass ein gutes Schaltverhal ten bei relativ geringen Str men erzielt wird R23 wurde deutlich h her ge w hlt damit im durchgeschalteten Zu stand eine m glichst geringe Spannung ber Uer bei Q2 abf llt gt Spannungs teiler Die untenstehenden Abbildungen demonstrieren das Ergebnis der PSpice Simulation zur Span nungsumschaltung Das erste Diagramm zeigt das Verhalten am Ausgang bei unterschiedlichen Eingangsspannungen Man erkennt sehr deutlich dass die Schaltschwelle ungef hr bei 0 5V und somit im sicheren Bereich liegt Das zweite Diagramm zeigt das zeitliche Verhalten der Ausgangs spannung bei mehreren Schaltvorg ngen am Eingang In der dargestellten Aufl sung ist keine kriti sche Verz gerung zu erkennen Au erdem werden die Spannungspegel von ON und 12V sehr gut eingehalten au 8 50 1 8U 1 50 3 au 2 50 a VTR_IN VERST_OUT u u Abb 4 9 DC Sweep Ausgangsspannung Nor our in Abh von der Eingangsspannung V r m 17 Ems HOCRST DUT Time Abb 4 10 Transientenanalyse Umschaltverhalten in Abh der Zeit oben Eingang unten Ausgang 5 Programmierhandbuch 5 1 Entwicklungskonfiguration Die Entwicklung des USB Programmers wurde mit Hilfe folgender Konfiguration durchgef hrt Hardware e Standard Laptop 1 4GHz Pentium M WinXP kompatibel e USB 2 0 Schnittstelle Intel 8
23. Routine zugeordnet So wird f r jeden Button eine entsprechende Funktion zur Verarbeitung aufgerufen 5 6 3 Laden und Verarbeiten neuer Hex und Bin rdateien Wenn der Durchsuchen Button im Hauptfenster gedr ckt wird kann eine Hex oder Bin r datei ausgew hlt werden die anschlie end geladen wird Durch Klick auf den Button wird die Funktion LoadHexFile aufgerufen die einen Dateiauswahldialog anzeigt und nach der Wahl den selektierten Dateinamen speichert Es wird versucht die Datei zu ffnen Createri le filename GENERIC_READ FILE_SHARE_READ NULL OPEN_EXISTING 0 NULL und anhand der Extension wird zwischen Hex und Bin rformat unterschieden HEX Extension Beliebige andere Extension hex oder hx aber Dateigr e darf 4096 Byte nicht berschreiten Handelt es sich um eine Hex Datei wird zun chst berpr ft ob das Intel Hex Format korrekt ein gehalten wurde Dazu liest die Funktion CheckHexFile die gesamte Datei zeilenweise ein und pr ft die einzelnen Bytes der Hex Records Ist alles in Ordnung werden Flashgr e und die letzte Speicheradresse mittels SetDIgItemText angezeigt Soll der eingelegte Chip sp ter beschrieben bzw verifiziert werden m ssen d e Daten aus der Hex oder Bin rdatei zum Ger t geschickt werden Aufgrund berlappender Bereiche mehrfache Nen nung bestimmter Speicheradressen und der Tatsache dass die Speicherbereiche laut Intel Hex Standa
24. TA Ein Hex Record soll in den Chip gebrannt werden Signatur Byte Befehls Byte LEN ADRESSE ADRESSE TYP DATEN A 41h CMD_HEXDATA L nge der fol Hi Byte Low Byte 00h Daten Max 58 Daten 40h genden Daten der Startadresse der Startadresse 01h EOF bytes die ab der bytes im Flashspeicher im Flashspeicher sonst Fehler definierten Ad resse in den Flash Speicher gebrannt oder verifiziert werden sollen CMD_VERIFY Ein Hex Record soll mit dem Flash Speicher verifiziert werden Signatur Byte Befehls Byte A 41h CMD_VERIFY 04h CMD_SET_LOCK Die Lockbits sollen gesetzt werden Signatur Byte Befehls Byte LOCKBITS A 41h CMD_SET 01h Lockbit 1 _LOCK 07h setzen 02h Lockbit 1 und 2 setzen CMD_GET_VERSION Die Version des Programmierger ts soll ausgelesen werden Signatur Byte Befehls Byte A 41h CMD_GET _ VERSION 20h CMD_GET_TYPE Der eingelegte Chiptyp soll ermittelt werden Signatur Byte Befehls Byte A 41h CMD_GET _TYPE 21h lt Antworten vom USB Programmer Ger t Allgemeine Best tigung Wenn ein Befehl erfolgreich ausgef hrt werden konnte schickt das USB Ger t ein Paket mit g ltiger Signatur und dem Befehlsbyte 0 zur ck und ggf angeh ngten Debugginginformationen Fehler Wenn ein empfangenes Paket ung ltig ist oder der Befehl zu einem Fehler f hrt wird ein Paket mit g ltiger Signatur dem Befehlsbyte CMD_ERROR_STR 30h und einem angeh ngten Fehlerstring zur ckgesc
25. Test nicht bestanden hat Diese Meldung kann ignoriert und die Installation fortge setzt werden Button Installation fortsetzen Schritt 6 Der Treiber wurde erfolgreich installiert Der Assistent kann ber den Button Fertig stellen geschlossen werden Die Treiberinstallation st nun abgeschlossen und der USB Programmer kann verwendet werden Installation der zuge h rigen Software m n chsten Abschnitt Beim Neustart oder nach dem erneuten Anst pseln des Ger ts am selben PC muss der Treiber nicht erneut von der CD installiert werden Windows hat den Treiber im Systemordner zwi schengespeichert und wird hn automatisch bei Bedarf la den Im Ger temanager in den Systemsteuerungen taucht das Ger t unter dem Eintrag USB Controller auf rechte Ab bildung Assistent f r das Suchen neuer Hardware W hlen Sie den f r diese Hardware zu installierenden Ger tetreiber W hlen Sie den Hersteller und das Modell der Hardwarekomponente und klicken Sie auf Gin weiter Klicken Sie auf Datentr ger wenn Sie ber einen Datentr ger verf gen der den erforderlichen Treiber enth lt Kompatible Hardware anzeigen Modell Andis USB Programmer Datentr ger A Dieser Treiber ist nicht digital signiert warum ist Treibersignierung wichtig lt Zur ck Abbrechen N Abbildung 3 5 Assistent f r das Suchen neuer Hardware Die Software wird installiert e Andis USB Programmer E
26. altung kommt dazu ein Max m MAX662A Baustein zum Einsatz der ge nau diese Aufgabe bernimmt Abb 4 7 zeigt die Beschaltung ber den Shutdown Eingang SHDN kann die Ausgangsspannung auf 12V SHDN Low oder 5V SHDN Hish Abb 4 7 12 i bb Spannungspumpe 5V gt 12V eingestellt werden 4 5 Umschalten der Programmierspannung OM 5V 12V F r den Flashprogrammiervorgang des m Textool Sockel eingelegten AT89C2051 4051 Control lers werden die Spannungen OV 5V und 12V am Reset Eingang ben tigt Die beiden Spannun gen 5V und 12V k nnen vom Steuercontroller AT89C5131 ber den Shutdown Eingang des MAX662A Bausteins eingestellt werden SHDN Low gt 12V am Ausgang SHDN High gt Vcc 5V am Ausgang Um zus tzlich auch OV schalten zu k nnen kommt folgende Transistor schaltung zum Einsatz 16 Vec_12V R14 TR_IN 10K RST_OUT 0 R23 100k Abb 4 8 Spannungsumschaltung 0V gt 5V 12V Erscheint ein H igh Pegel 5V am Eingang TR_IN so wird der Transistor Q1 durchschalten Da Q2 der Komple ment rtyp zu Q1 ist PNP wird auch er le tend so dass am Ausgang nahezu Vcc liegt 12V oder 5V je nach Ansteue rung des MAX662A Bausteins Wird der Eingang mit Low Pegel ange steuert sperren beide Transistoren und der Ausgang wird ber den Pulldown Widerstand R23 auf definiertes Masse potential gezogen Der Widerstand R13 sorgt im gesperrten Zustand von Q1 daf r dass an der Basis von
27. anf ngl cher Datenaustausch Enumerationsprozess mit dem PC statt der im folgenden Kapitel genauer beschrieben wird 5 5 3 1 Der Ablauf der Enumeration Die nachfolgende bersicht zeigt die typischen Schritte w hrend der Enumeration unter Windows Dabei ist zu beachten dass die Reihenfolge in der die Anforderungen und Ereignisse auftreten nicht festgelegt ist Die Firmware muss also alle Anforderungen zu jedem Zeitpunkt erkennen und bear beiten k nnen der folgende Ablauf ist nur ein Beispiel 1 Anwender verbindet das Ger t mit dem USB Port oder der Rechner wird eingeschaltet 2 Der USB HUB erkennt das Ger t und ordnet es einer Geschwindigkeitsklasse zu Low Speed Ger t hat 1 5k Pullup Widerstand an D Leitung Full High Speed Ger t hat 1 5k Pullup Widerstand an D Leitung 3 Der USB HUB l st einen Interrupt aus um den PC ber das angeschlossene Ger t zu be nachrichtigen 4 Der USB HUB setzt das Ger t zur ck Reset Null Impuls auf den Datenleitungen f r mind 10ms 5 Der USB HUB stellt einen S gnalpfad zwischen dem Ger t und dem Bus her PC sendet GET_PORT_STATUS Anforderung I 6 Der PC ermittelt die maximale Paketl nge des bertragungskanals PC sendet GET_DESCRIPTOR Anforderung liest aber nur die max Paketl nge aus der Antwort 7 Der PC ordnet dem USB Ger t eine neue eindeutige Adresse zu Die bisherige Kommuni kation verlief immer ber die Standardger teadresse 0 Endpunkt 0 PC sendet
28. ch Klick auf den ffnen Button wird die Datei berpr ft und anschlie end ge laden Die Anzahl der Datenbytes sowie die letzte Speicheradresse im Chip werden angezeigt 3 6 2 Ermitteln des eingelegten Chiptyps Mit Hilfe des Chip amp Version ermitteln Buttons oder den Men punkt Befehle 2 gt Chip amp Versi on ermitteln kann der eingelegte Chip und de Versionsnummer des USB Programmers aussgele sen werden Nach Klick auf den Button erscheint einerseits eine Statusmeldung im Logfenster an dererseits steht im rechten Infofeld die USB Programmer Versionsnummer und Informationen zum eingelegten Chip Hersteller Produktbezeichnung und Flashgr e Diese Funktion sollte normalerweise immer vor den anderen Befehle aufgerufen werden 3 6 3 L schen und Programmieren des Flash Speichers Das Windows Programm erm glicht ber die Befehl Buttons oder den entsprechenden Eintr gen im Men Befehle die folgenden Optionen L schen Der komplette Flash Speicher des eingelegten AT90C2O5 1 4051 Cont rollers wird gel scht Evtl gesetzte Lockbits werden ebenfalls zur ck gesetzt Blank Check Es wird berpr ft ob der Flash Speicher erfolgreich gel scht wurde Jedes Byte im Flash Speicher des eingelegten Chips wird dabei ber pr ft Programmieren Die ausgew hlte Hex oder Bin rdate wird in den Flash Speicher des eingelegten Controllers geschrieben Adressen die im Hexfile nicht angegeben s nd werden
29. ebene Programm ausf hrt wird ber den PSEN Pin und das Boot Loader Jump Bit BLJB gesteuert Der Upload eines Programms kann wie folgt erfolgen 1 Setzen des Jumpers X auf Prog damit der PSIN Pin mit Masse verbunden wird Chip f hrt mit Bootloader hoch 2 Verbinden des Programmers mit der USB Schnittstelle des PCs die gr ne Betriebslampe leuchtet nicht auf 3 Windows fordert den Anwender ggf auf einen Treiber anzugeben Die Installation kann wie in Kap 3 3 Treiberinstallation vorgenommen werden 4 Nachdem Windows die Hardware erkannt hat kann das Upload Tool ausbprog exe im Verzeichnis Tools ATSYC5131 USB Bootloader Upload Too auf der CD ROM ge startet werden Die folgende Abbildung zeigt die Oberfl che des Programms Cara eo a e a a a a a e r AH 2 AT89C5131 A Programmer v1 2 mro aE FLASH CONFIGURATION Ge ERTE Laborprojekt12005 07 01a SDECNoutput main hex Pa Cod To 01 02 03 04 05 06 07 08 09 OE OF O0123456789ABCDEF A p ee s ll 02 0E 2D 32 FF FF FF FF FF FF FF 32 FF FF FF FF 2 9tpyypz TER RAN ITS FF FF FF 32 FF FF FF FF FF FF FF 32 FF FF FF RR Zr Bootloader Version FF FF FF 32 FF FF FF FF FF FF FF 32 FF FF FF FF D in FF FE FF 32 FF FF FF FF FF FE FF 32 FF FF FF ER i Oscillator HSE FF FF FF 32 FF FF FF FF FF FF FF 32 FF FF FF FF z y yz 11 0 32 MHz e FB FF FF FF 32 FF FF FF FF FF FF FF 32 FF FF
30. falls werden sie nicht ausgef hrt 6 3 Debugging M glichkeiten Die folgenden Tools und Programme helfen bei der USB Entwicklung und erm glichen das Testen und Debuggen w hrend der Firmware Programmierung 1 USBCommandVerifier von www usb org Dieses Tool vom offiziellen USB Implementers Forum bietet dem Entwickler die M glichkeit den USB Enumeration Prozess detailliert zu analysieren Der Austausch der verschiedenen Descriptoren und USB Standard Requests wird automatisch getestet und auf Fehler berpr ft Testbench Prinzip Wurden alle Anfragen konform zur Spezifikation von der Firmware des Ger ts verarbeitet ist der Test erfolgreich Test Suite Passed und das Ger t sollte unter Windows erfolgreich er kannt werden Um das Programm benutzen zu k nnen muss zwingend ein USB Hub akt v oder pass v an den PC angeschlossen werden An diesen kann dann das zu berpr fende USB Ger t gesteckt werden Wird das Testger t direkt an den PC gest pselt funktioniert die Testsuite nicht Nach dem Aufruf des Tools wird zun chst der Original USB Ger tetreiber ersetzt Stack Switch anschlie end k nnen die verschiedene Tests ausgew hlt und durchgef hrt werden F 3 Test Execution Please walt for stack switch Step Name DeviceDescnptorfest_Devicelonfigured Fassed DeyviceDescnptorlest_Device ddressed Fassed ConfigD escniptorTest_DeviceContigured Fassed ConfigbescnptorT est_DeviceAddressed Fassed Inter aceDesc
31. g wird zur ckgeschickt Anhand des zweiten Bytes wird der eigentliche Befehl decodiert Die m glichen Werte bzw die Zuordnungen werden durch die Defines CMD_ in der Headerdate commands h abgebildet Je nach Befehl wird in eine entsprechende Unterroutine verzweigt Besitzt das Befehlsbyte bei spielsweise den Wert CMD_ERASE so wird die Funktion chip_erase aufgerufen bei CMD_BLANK_CHECK entsprechend chip_blank_check g_flash_size usw 38 5 5 5 Signaturbytes vom AT89C2051 4051 auslesen Wie im Datenblatt zum AT89C2051 4051 zu finden ist k nnen die beiden S gnaturbytes des Chips relativ einfach durch Anlegen entsprechender Spannungen an den Steuerpins und das Einhalten der richtigen Timings ber den Datenbus P1 ausgelesen werden Die Funktion chip_read_signature der Firmware des USB Programmers bernimmt genau diese Aufgabe Zu Beginn wird der eingelegte Chip initialisiert N Dazu wird die Funktion chip_init in 5V FE EE flash c aufgerufen die die im Datenblatt be Rol gt schriebene Power Up Sequence durchf hrt um I a den Adressz hler zur ckzusetzen und das Flas nn u gt hen einzuleiten Dabei wird das in der Abbildung _ en rechts zu sehende Timing Verhalten nachgebil Pan 11 gt det gt 10u gt 10u Abbildung 5 4 Power Up Timing chip_init Nachdem der Chip initialisiert wurde werden die vier Steuerpins P3 3 P3 4 P3 5 und P3 7 ent
32. gen an das USB Ger t senden chip_debug Debug Funktion liest 64 Bytes aus dem Chip aus chip_blank_check F hrt einen Blank Check nach dem L schen durch chip_erase L scht den Flashspeicher des Chips vollst ndig chip_program Sendet Hexdaten an den USB Programmer um den Chip zu Programmieren oder zur Verifizierung chip_set_lockbits Setz die Lockbits des Chips chip_type_and_version Ermittelt den eingelegten Chip Typ und die Version des USB Programmers Alle Funktionen rufen f r die eigentliche bertragung eines USB Pakets die Funktion send_packet t_packet d_in t_packet d_out ebenfalls aus command cpp auf Die Funktion berpr ft und sendet das durch d_out angegebene Paket zum USB Controller und empf ngt au tomatisch eine Best tigung Das empfangene Paket wird ausgewertet und steht wenn kein Fehler vorliegt in der durch d_in angegebene Struktur zur Weiterverarbeitung bereit F r die eigentli che USB bertragung werden die in usb cpp enthaltenen elementaren Funktionen usb_init usb_send_bulk usb_get_bulk und usb_free benutzt Diese kommunizieren direkt mit dem USB Ger tetreiber und werden in Kapitel 5 8 Der eingesetzte USB Treiber genauer erl utert Wie der untenstehende Beispielausschnitt aus dem Quelltext von chip_erase zeigt muss vor dem Aufruf der Funktion send_packet zun chst der Parameter d out in tialisiert werden BOO
33. genden Initialisieren der globalen Variablen CMD_HEXDATA Befehle Anschlie end wird eine Best tigung via USB an den PC zur ckge schickt die eigentlichen Daten die geschrieben Best tigung an PC bzw verifiziert werden sollen k nnen folgen Abbildung 5 6 PC sendet Write Verify Anfrage 30 Nach der Initialisierung schickt der PC die eigent PC lichen Daten der Hex Records die entweder in 4 den eingelegsten Chip geschrieben oder mit den aus dem Chip stammenden Daten verglichen wer den Der Aufbau des Hexdata Pakets wurde be reits in Kapitel 5 3 2 Aufbau der verschickten Pakete beschrieben Die Funktion chip_burn_or_verify berpr ft CMD_HEXDATA chip_burn_or_verify u i z L nge und Typ des Hex Records zun chst die einzelnen Bytes ermittelt die aktuel berpr fen le Adresse aus dem Hex Record und geht bis zu De len s 8 S bis zur richtigen Adresse vorgehen dieser Adresse im Chip durch Inkrementieren des Aktuelle Paket Daten brennen oder verifizieren Schleife Adressz hlers Impulse am XTAL Pin In einer Schleife werden dann die einzelnen Bytes durch Anlegen entsprechender Pegel und Einhalten des Timings in den Chip geschrieben bzw mit den Best tigung an PC alten Daten verglichen Wurde ein Paket Hex Record abgearbeitet wird eine Best tigung zum PC gesendet und das n chste Paket kann folgen Dieser Vorgang wird so lange wiederholt bis a
34. hickt Debug Antwort Erh lt das USB Ger t einen Debug Befehl werden die ersten 64 Bytes aus dem Flashspeicher ausgelesen und direkt als USB Paket zur ckgeschickt ohne Signaturbyte etc 2 Typ oder Versionsanfrage Nach einer Anfrage nach dem eingelegten Chiptyp oder der Program merversion wird ein Paket mit g ltiger Signatur zur ckgeschickt F r die Typanfrage gilt Byte 03h enth lt Manufacturer ID Byte 04h enth lt Product ID F r die Versionsanfrage gilt Ab Byte O3h steht die Versionsnummer als nullterminierter String 5 4 Das Intel HEX Format Das Intel Hex Format ist im Gegensatz zur Bin rdate keine simple Abbildung des Flash Speichers in eine Datei in der Byte und Position 1 zu 1 bernommen werden k nnen Sondern es handelt sich dabei um eine Textdatei meistens mit Endung IHX oder HEX in der jede Zeile ein sog Hex Record in lesbarer Textform enth lt Ein Hex Record definiert jeweils nur einen beliebigen kleinen Teil des Speichers Bei kleinen Programmen muss somit nicht der gesamte Flash Speicher aktuali siert werden sondern es reicht aus nur die notwendigen Bytes die im Hex Record definiert wur den zu berschreiben Die nachfolgenden Tabellen erkl ren die Reihenfolge und den Inhalt der Bytes in einem Hex Record Jeder Record enth lt eine Zahl die die Anzahl seiner Datenbytes angibt Dann folgt die gew nschte Ablageadresse des ersten Datenbytes und zuletzt eine Checksumme Eine solche Pr f
35. in IC mehr Die USB bertragungsgeschwindigkeit ist etwas langsamer f r den USB Programmer nicht relevant Rel leicht zu beschaffen z B bei Reichelt a Cypress EZ USB Controller auf 8051 Basis mit integrierter AN2131 USB Schnittstelle Rel g nstig und leicht zu beschaffen z B bei Reichelt Nicht 5V TTL kompatibel 3 0 3 6V Nur im SMD Geh use erh ltlich schwieriger zu L ten Gute Dokumentation mehrere Beispiele Re SSS PDIUSB12 kinai GE TUSB 3210 Zi o osea OO conductor USBN9604 Auch im Bereich der Software rund um den Mikrocontroller AT89C5131 gibt es Alternativen At mel stellt ebenfalls einen kostenlosen USB Treiber f r Windows zur Verf gung Mit der Anwen dung Flip FLexible In system Programmer ist das Uploaden neuer Programme in den Flash Speicher des Controllers im Zusammenspiel mit dem Atmel Treiber m glich Da die von mir getes tete Version jedoch noch einige Probleme hervorgerufen hat Instabilit t falsche USB Erkennung habe ich mich bei diesem Projekt f r den ATMUSB SYS Treiber entschieden Die folgende Tabelle zeigt einige alternative Compiler zum SDCC Keil u Vision Software Dieses kommerzielle Softwarepaket bietet eine komplette IDE und Projektverwaltung f r die F rmware Entwicklung der C51 Control ler Es gibt sowohl einen C Compiler mit Editor als auch einen Simulator f r komfortables Debuggen Das System bietet viele n tzliche Funktionen und ha
36. l auf die Treiberfunktionen zugegriffen Der Treiber wiederum kommuniziert mit dem USB Host Controller HUB des PCs der f r jeden USB Anschluss mind einen Port bereitstellt Der Port ist ber den USB Bus mit mehreren logischen Verbindungen Pi pes mit dem Controller des Ger ts verbunden Die untenstehenden Abbildung 5 2 zeigt die grund s tzlich beteiligten Instanzen bei der USB Kommunikation Windows Anwendung usb_programmer exe DeviceloControl Windows Treiber atmusb sys USB Ger t AT89C5131 Controller USB Host Controller des PCs HUB Endpoint 00 Control Transfer Enumeration Endpoint 04 Bulk Out Transfer all 05 Bulk In Transfer S USB Pipe Abbildung 5 2 Ablauf der USB Kommunikation zeigt die grunds tzlich beteiligten Instanzen bei der USB Kommunikation 20 Die eigentliche bertragung findet seriell statt Die Serialisierung sowie das Bit Stuffin Syn chronisat on etc wird intern vom Atmel USB Controller bernommen F r die Programmierung ist jedoch wichtig dass der Controller mehrere FIFO Speicher besitzt an die Daten bertragen werden k nnen Zu jedem FIFO Speicher geh rt eine sog Endpoint Adresse 00 06 die angibt wohin die Daten gelangen sollen oder von wo s e geholt werden Die einzelnen Endpoints werden m Pro srammcode des Mikrocontrollers konfiguriert Dieser USB Programmer verwendet Endpoint 00 im Modus Control Transfer f r die
37. lle gew nschten Bytes im Flash Speicher durchlau fen wurden Abbildung 5 7 PC sendet Hex Daten 5 5 8 Setzen der Lockbits vom AT89C2051 4051 Das Schreiben der Lockbits bernimmt die Funktion chip_write_lockbits aus der Quelldatei flash c Nach dem Initialisieren des Chips Power Up Sequence wird zu Beginn die Versor gungsspannung am Reseteingang auf 12V geschaltet Anschlie end werden die Steuerpins f r das erste Lockbit entsprechend der Tabelle Flash Programming Modes gesetzt Ein Impuls am Port P3 2 PROG leitet daraufhin den Schreibvorgang ein Mittels Data Polling am Pin 3 1 RDY BSY kann abgefragt werden wann der Schreibvorgang erfolgreich abgeschlossen wurde Das zweite Lockbit kann optional auf dem gleichen Wege gesetzt werden die Steuerpins m ssen lediglich w e folgt ge ndert werden 5 6 Das Windows GUlI Programm Die Windowsanwendung bietet dem Anwender die komfortable M glichkeit in einer grafischen Oberfl che mit dem USB Programmer zu kommunizieren und Befehle abzusetzen Der Aufbau des Programms und die Programmierung wird in diesem Kapitel n her erl utert al 5 6 1 Projekt bersicht und Kompilierung Das Windows GUI Programm usb_programmer exe wurde mit Microsoft Visual C 6 0 ge schrieben allerdings ohne Verwendung der Klassenbibliothek MFC Die Quell und Projektdateien befinden sich im Verzeichnis Ouelltexte Windows GUI VISUAL C auf der
38. llt verschiedene S gnale und Datenbytes auf der Hardwareseite f r den Flashvorgang bereit 5 5 1 Projektgliederung und der Kompilationsvorgang Die Firmware f r den Atmel Controller ist in der Sprache C geschrieben und kann mit Hilfe des SDCC Compilers bersetzt werden Aufruf von go bat Dabei wird eine Hex Date erzeugt die den Inhalt des Flashspeichers das kompilierte Programm enth lt Diese kann wie in Kapitel 5 2 Einspielen der AT89C5131 Firmware mittels ausbprog exe beschrieben eingespielt werden Zum Projekt geh ren die folgenden Quelldateien eine Projektdatei gibt es nicht Header dateien Definiert die Ports und SFR Register des AT89C5131 und ist an die Syntax des SDCC Compilers angepasst abge nderte Version von Atmels Beispiel Headerdatei Definiert Konstanten und Werte f r die programminternen USB Befehle zur Kommuni kation zwischen Firmware und dem Windows Programm ext_5131 h Atmel Headerdatei f r den 5131 Controller Definiert Konstanten f r Interrupts und Register Flags Definiert Konstanten f r die LEDs und enth lt Deklarationen f r das Modul flash c usb h Definiert USB relevante Typen und Konstanten insbesondere f r die Enumeration Enth lt Deklaration f r das Modul usb c Quelldateien main c Enth lt den Programmeinstiegspunkt main In der Hauptroutine werden Variablen und die USB Einheit initialisiert anschlie end l uft der Controller in einer Endlosschleife Die eigen
39. me as mode 2 also verify is disabled 3 7 Bedienung der Windows Konsolenanwendung Im Verzeichnis Software Windows Konsole auf der CD ROM befindet ach die Konsolenan wendung usb_programmer exe Mit diesem Tool ist es m glich eine automatische Programmie rung eines Chips von der Kommandozeile aus zu starten Somit l sst ach der Flash Vorgang z B in die Werkzeugleiste eines Editors wie UltraEdit oder SciTE einbinden Aufrufparameter Syntax usb_programmer exe Hexfile Hexfile kann eine Intel Hex Datei sein Dateiextension hex oder hx oder eine Bin rdatei andere Dateiextension 3 8 Fehlermeldungen Im Umgang mit der Windowsanwendung des USB Programmers k nnen folgende Fehlermeldun gen auftreten Fehlermeldung Ursache Behebung ERR Ung ltige Hex Date Fehler in Zeile x Die Hexdatei ist nicht im g ltigen Intel Hex Format berpr fen Sie die Dateiangaben und das Zeilenformat in der Zeile x ERR Konnte Hex Datei lt Dateiname gt nicht zum berpr fen Sie die Pfadangaben ist die Datei Lesen ffnen vorhanden und wird nicht von einer anderen Anwendung verwendet und ist somit gesperrt ERR Ung ltige Date ausgew hlt Ihre gew hlte Bin rdatei enth lt kein g ltiges Speicherabbild f r den Chip Vermutlich ist die Datei zu gro oder konnte nicht zum Lesen ge ffnet werden Zu Beachten sind au erdem alle Meldungen im Logfenster Befehlsspezifische Hinweise und Feh ler werden dort
40. n CH oO I cc m CH oO u Q GO j gt 2 V fe N2B bLodLawwen Abbildung 4 4 Best ckungsseite der Platine 3 4 3 Der Steuercontroller Atmel AT89C5131 Der Atmel Controller AT89C5131 stellt das Herzst ck des USB Programmers dar Er enth lt ein Mikroprogramm das die gesamte USB Kommunikation und den Flash Vorgang des eingelegten Chips steuert 4 3 1 Beschaltung und Pinbelegung Um den Atmel ATSIC5131 Controller mit der USB Schnittstelle betreiben zu K nnen ist die in Abb 4 55 gezeigte typische Beschaltung notwendig Power Supply Die St tzkondensatoren k nnen bei kurzeitigen Spannungseinbr chen zu s tzlichen Strom f r den Controller bereitstellen USB Full Speed Connection Die beiden Si gnalleitungen des USB werden jeweils ber einen 27Q Widerstand angeschlossen Damit der USB HUB im PC erkennen kann ob das neu angeschlossene Ger t im Lowspeed oder Fullspeed Betrieb arbeitet muss eine der beiden Signalleitungen ber einen 1 5kQ Widerstand mit 3 3V verbunden werden Da die ser USB Programmer mit Fullspeed arbeitet wird D hochgezogen bei einem Lowspeed Ger t w rde D hochgezogen Clock Oscillator Die Taktfrequenz des Controllers wird mit Hilfe eines 16MHz Quarz ber die X1 und X2 Pins erzeugt PLL Low Pass Filter Die f r den USB ben tigte Taktfrequenz von 48MHz wird intern mit Hilfe einer Phase Locked Loop aus der Quarzfrequenz erzeugt dessen Tiefpass ber das am PLLF
41. n die folgenden vier Funktionen gekapselt usb cpp usb_init Treiber initialisieren Handle wird zur ckgegeben Der Kontextname lautet f r jedes angeschlossene USB Ger t dieser Gruppe max 8 gleichzeitig m glich atmusb 0 atmusb 1 atmusb 2 atmusb 7 Ruft CreateFile auf usb_free Beendet die Verbindung zur USB Pipe mit dem Treiber und gibt das Handle wieder frei Ruft CloseHandle auf usb_send_bulk Sendet Daten zum BULK Port des Ger ts Ruft DeviceloControl mit dem Parameter IOCTL_BULK_WRITE auf usb_get_bulk Empf ngt Daten vom BULK Port des Ger ts Ruft DeviceloControl mit dem Parameter IOCTL_BULK_READ auf 6 Anmerkungen und Probleme 6 1 Alternative Schaltungs und Softwarevarianten Neben dem Atmel AT89C5131 Controller gibt es nat rlich auch weitere USB Chips anderer Her steller die sich ebenfalls f r die Schaltung geeignet h tten Die folgende Tabelle zeigt einige Bei spiele mit Vor und Nachteilen der jeweiligen Bausteine Hersteller Vor Nachteile FTDI FT245BM USB wird zu einer virtuellen COM Schnittstelle RS232 unter Windows Win dows Anwendung kann das USB Ger t nahe zu wie ein Ger t mit einer seriellen Schnitt stelle behandeln es gibt fertige Treiber nur im SMD Geh use erh ltlich schwieriger zu L ten USB ist nicht im Controller integriert sondern ein Zusatzchip ist erforderlich e
42. p eingelegt werden kann so dass sich die abgebildeten Verkn pfungen ergeben DNK USB Buchse A C4 22pF O Vec AT89C5131A M c3 Z 22pF 2 2n C18 PROG RUN Vec 122 Chip im Textool Sockel AT89C4051 RST_OUT 10k 8 Se o o Spannungsumschaltung Abb 4 2 Schaltungsplan 4 2 2 St ckliste Halbleiter Kondensatoren 1 x Controller Atmel AT89C5131A M D2 2 x 22pF C3 C4 1 x Controller Atmel AT89C2051 4051 D1 1 x 2 2nF C13 1 x DC DC Converter MAX662A D4 1x 10nF 014 1 x NPN Transistor z B BC107A oder BC547 V1 2 x 100nF C5 C7 1 x PNP Transistor z B BC177A oder BC559 V2 2 x 0 22uF C11 C12 1 x LED 3mm gr n H3 1x 1uF Elko C15 1 x LED 3mm gelb H2 3 x 4 7uF Elko C6 C9 C10 1 x LED 3mm rot H1 Sonstiges Widerst nde 1 x Quarz 16MHz G1 2x27Q R8 R9 1 x Steckerleiste 3 Pins Jumper 2 Pins X1 1x 1000 R7 1 x USB Buchse Typ B z B ASSMANN X2 1x1kQ R6 1 x IC Sockel 8 Pins f r MAX662A D4 1x 1 5kQ R10 1 x IC Sockel PLCC 52 f r AT89C5131 D2 1x 10KQ IR3 1 x Textool Sockel 20 polig IC Sockel D1 2 x 27KQ R1 R2 4 x Schraube BO M3 0 S SC1 4 1 x 10kQ Widerstandsnetzwerk 8 1 RN1 1 x Platine und pass Geh use 4 2 3 Platinenlayout Die beiden folgende Abbildung zeigen das Platinendesign Die Platine st so aufgebaut dass s e problemlos in ein 10 2x6 lcm Geh use passt z B bei Reichelt zu beziehen nuAlpo19 ke
43. punkte 0x05 ENDPOINT Enth lt f r die Kommunikation wichtige Informationen ber einen Endpunkt Die entsprechenden Typen structs werden in der Headerdatei usb h definiert In der Quelldatei usb c werden die Datenstrukturen nit alisiert und verwendet 5 5 3 3 Die wichtigsten Befehlsanforderungen USB Standard Requests Der USB Programmer muss wie jedes USB Ger t auf die elf untenstehenden Anforderungen vom PC USB Standard Requests genannt reagieren Die Setup Pakete werden vom PC auf der Control Transfer Ebene an Endpoint O geschickt die Firmware des USB Ger ts ist dann f r die korrekte Verarbeitung zust ndig IT Die Auswertung und Verzweigung einer Anfrage wird ber die Funktion usb_enumeration_process in der Datei usb c realisiert Dort wird je nach Anforderung vom PC eine eigene Unterfunktion aufgerufen d e alle gew nschten Informationen ermittelt und ent sprechende Antworten zur cksendet Die folgende Tabelle zeigt welche Anforderungen vom PC Requests m glich sind stellen oder Endpunktstatus 0x01 CLEAR _ FEATURE PC fordert das R cksetzen eines der beiden Features DEVICE_REMOTE_WAKEUFP oder END POINT_HALT 0x05 SET_ADDRESS PC gibt eine Adresse f r die Kommunikation mit dem USB Ger t vor 0x06 GET_DESCRIPTOR PC fordert das USB Ger t zum Senden eines bestimm ten Deskriptors auf gt siehe voriges Kapitel GET_CONFIGURATION PC fordert die aktuelle Konfiguration an 0x
44. rbrauch Aber Komplexes Protokoll erfordert h here Anforderungen an die Entwickler USB unterst tzt drei Busgeschwindigkeiten ow Speed USB 1 0 1 5 Mbit s 800 Byte s Full Speed USB 1 0 12 Mbit s 1 2 MByte s High Speed USB 2 0 480 Mbit s 53 MByte s Pinbelegung Die USB Schnittstelle umfasst 4 Leitungen mit folgender Pinbelegung l 5V rot 2 Data 3 Data gr n 4 Masse schwarz Spannungspegel Die Versorgungsspannung am USB betr gt typ 4 2V bei starker Belastung bis 5 25V Auf den beiden Leitungen D und D werden Differenzsignale mit Spannungspegeln von 0V 3 3V bertragen 10 4 1 2 Geh useformen und Stecker Es gibt zwei verschiedene USB Steckertypen Typ A und Typ B Am PC sind meistens Buchsen vom Typ A zu finden die Peripherieger te haben hingegen h ufig eine USB Buchse vom Typ B wie auch dieser USB Programmer Die Verbindung erfolgt mit Hilfe eines normalen USB Kabels vom Typ A B Buchse Typ A Stecker Typ A Stecker Typ B Buchse Typ B Abb 4 1 USB Typen von Steckern und Buchsen 4 2 Schaltplan 4 2 1 Schaltungsplan Die Abbildung 4 2 auf der n chsten Seite zeigt den vollst ndigen Schaltungsplan des USB Programmers Der in der rechten H lfte eingezeichnete Controller ATS9C4051 geh rt nat rlich nicht mit zur eigentlichen Schaltung des Ger ts An dieser Stelle befindet sich stattdessen ein Tex tool Sockel in den ein zu flashender Chi
45. rd nicht sortiert sein m ssen wird sowohl aus den Hex Records als auch der Bin rdate vor Beginn der bertragung ein Speicherabbild erstellt Dies geschieht im Quellcode in der Routine chip_program in commands cpp durch Aufruf der Funktion read_hexfile hexfile amp m C_MAX_FLASH_SIZE bzw read_binfile hexfile amp m C_MAX_FLASH_SIZE Das Speicherabbild wird durch folgenden Typen repr sentiert typedef struct st_mem unsigned char data C_MAX_FLASH_SIZE BOOL enable C_MAX_FLASH_SIZE LC mem ar Die Abbildung 5 8 verdeutlicht den Aufbau Var_t mem B des Speicherabbilds Es besteht us wi P 7 SE Arrays n der Gr e des max Flash Se f E E Speichers Das Datenfeld enth lt f r jede Adresse das zugeordnete Datenbyte das entsprechende Enable Flag gibt an ob die Zur Ser Ele Adresse m Flashspeicher des eingelegten Chips verarbeitet werden soll e nable True oder ob die Adresse ber sprungen werden soll enable False der alte Werte bleibt erhalten Abbildung 5 8 Das Speicherabbild Array DATAn f Enable n True Um die einzelnen Datenbytes an den USB Programmer zu senden werden die g ltigen Bytes aus dem Speicherabbild vor der Ubertragung wieder in kleine USB gerechte Pakete hnlich den Hex Records aufgeteilt Diese Pakete werden durch Variablen vom Typ t_packet dargestellt typedef struct st_packet unsigned char
46. rf hat st die direkte Speisung aus dem USB Bus problemlos m glich so dass kein weiteres Netzteil ben tigt wird Kleine Spannungseinbr che werden zudem durch mehrere St tzkondensatoren an den Eingangs pins der Halbleiter abgefangen C10 C12 ER 4 3 3 Die Statusanzeige ber LEDs Der AT89C5131 Controller besitzt vier programmierbare P33 P35 P36 LED Stromquellen Jeder dieser vier Ports kann f r 2mA 4mA oder 10mA konfiguriert werden Die LEDs werden dann direkt mit der Kathode ohne Vorwiderstand angeschlossen Anode auf Vcc siehe Abbildung 4 6 e Die Stromquellen werden ber das Register LEDCON konfi D IN guriert Ist ein entspr LED Port auf Low gesetzt flie t der Power Busy Error eingestellte Strom und die LED leuchtet auf Der folgende Quelltextauszug zeigt die In tialisierung e LED Pins definieren LEDS define LED_POWER P3_3 define LED_BUSY E define LED_ERROR P3_6 Vet LED s initialisieren LEDCON OxFF alle vier LEDs auf 10mA Stromquellen Abbildung 4 6 Die Status LEDs LED_POWER D Betriebslampe an LED_BUSY E die anderen beiden LEDs aus LED_ERROR 1 4 4 Erzeugen von 12V aus den 5V des USB W hrend der Flashprogrammierung des Bausteins wird eine Spannung von 12V 0 5V ben tigt Vec 5 Da der Laststrom im Datenblatt mit lt lmA gt angegeben ist k nnen die 12V mit einem DC DC Converter Spannungspumpe aus der 5V Versorgungsspannung des USB erzeugt werden In der Sch
47. riptorT est Fassed EndpointDescnptorT est_Devicelanfigured Fassed EndpointDescnptorTest_Device ddressed Fassed Halt rndpointT est Fassed SetConfigurationT est Fassed SuspendAesumeT est Fassed Remotew akeupTestEnabled Test Results Fassed Remotew akeupT estDisabled Fassed EnumerateT est EE EE Fassed Abbildung 6 1 Zu Beginn des Programms werden die USB Treiber ausgetauscht EC Raum ToMan Test Log Number of Fails 0 Abort 0 wammgos 0 EN gt Now Starting Test Remote Wakeup Test Configuration Index 0 ze US BCommandVerifier The device does not support remote wakeup Stopping Test Remote Wwakeup Test Configuration Indes O Select Test Mode Select Test Suite Number of Fails 0 Aborts 0 Warnings 0 Now Starting Test Enumeration Test repeat 150 times Device speed iz Full e Compliance Test Curent Measurement Test Stopping Test Enumeration Test repeat 150 times HID Tests Number of Fails 0 Aborts 0 Warings 0 a Summary Log Counts Fails 0 Abort DI Warrirgs 4 Debug i S i Launch External Report Wiewer TEST N Abbildung 6 2 Alle USB Standard Requests werden einzeln getestet Beim USB Programmer sind alle Tests e 1 Abbildung 6 3 Chapter 9 Tests berpr ft den Pa erfolgreich durchlaufen ketaustausch w hrend der USB Enumeration 39 _ 2 SnoopyPro 0 22 Bei diesem Programm handelt es sich um einen USB Paket Sniffer mit dem die zwischen PC und Ger t ausgetau
48. rsal Host Controller 2424 7 RoatHub Fort NoDevicelonnected 2 Intel A 82501 0B DBM USE Universal Host Controller 2427 7 RoatHub Fort NoDevicelonnected Fort NoDevicelonnected 2 Inteli S2301DB7 DEM USB 2 0 erweiterter Hosteontroller 24C0 7 RoatHub Fort NoDevicelonnected Fortz NoDevicelonnected Fort3 NoDevicelonnected Fort4 NoDevicelonnected Fort5 NoDevicelonnected ot NoDevicelonnected Device Connected 2 Device Descriptor bedUSE blevicellass bDev iceSubllass bleviceFfrotocol bMaxzFacketS zel dYendor dFroduct beoddevice Manufacturer Froduct 1S5er1 alNumber ENumlonfigurat ons z0110 Us Us Us 0x20 0x03EB xZFFT EA 0x01 0x02 Us 0x01 lLonnectlionStatus Current Config Value Device Bus Speed Full Device Address U 0l Open Fipes 2 0x01 Endpoint Descriptor bEndpsint Address Transfer Type wMaxzFacket5S ze blnterwal 0x04 Bulk 0x004 0x00 Endpoint Descriptor bEndpsintAddress Transter Type wMaxzFacket5S ze Interwal ESyrnchddress BEA Control 0x507 N z0755 EIN AEX 32 Atmel Corporat on Device onnected 1287 Abbildung 6 6 Das Programm zeigt die wichtigsten Konfigurationsdaten zu den einzelnen Ports 7 Anhang 7 1 Weiterf hrende Literatur USB 2 0 Handbuch f r Entwickler Jan Axelson Messen Steuern Regeln mit USB Burkhard Kainka USB Design by Example John Hyde USB in a NutShell
49. rsssssssees 36 9 1 4 Eeer beten Kee 36 3 1 2 DIE ele Ee e EE 36 3 8 Der eingesetzte USB re Der ara 36 HEET 37 6 1 Alternative Schaltungs und Softwarevamanten 37 6 2 Einige Anmerkungen zu anf nglichen Problemen 38 0 gt Eeer eebe 39 E eek 41 AIW eiterf hrende Literatur eu iin 41 EE 42 2 aha LED RON esse ee 42 2 Einleitung Ziel dieses Projekts ist das Erstellen eines USB Programmers f r Atmels AT89IC2O5 1 4051 Mikro controller Das Ger t soll den Flash Speicher eines eingelegten Chips beschreiben und verifizieren k nnen um so den fehlerfreien Upload neuer Programme zu erm glichen Zum Projekt geh ren die folgenden drei Teilbereiche Hardware Entwurf einer Schaltung die den Programmcode ber die USB Schnittstelle vom PC empfangen kann und mit diesen Daten den eigentlichen Flashvorgang im eingeleg ten Chip durchf hrt Die Stromversorgung erfolgt dabei direkt ber die USB Leitungen Erstellen einer Windows Anwendung mit zugeh riger Treibereinbindung mit deren Hilfe der Anwender Programmcode in Form von Intel Hex Dateien oder Bin rdateien laden und ber den USB Bus zum Ger t bertragen kann Ebenso soll der Anwender eine R ckmel dung ber den Status des Vorgangs und eventuell auftretende Fehler bekommen Mikrocontroller Programmierung der Firmware f r das Ger t um die gew nschte Funktio nal t t des Programmers zu erm glichen Behandlung der USB Schnittstelle Auswertung der Befehle Einleiten und D
50. schten Pakete mitgelesen und ausgewertet werden sSniffen Das vereinfacht die Fehlersuche auch wenn der Enumerationsprozess noch nicht vollst ndig implementiert wurde USE Devices Edit view Help able check Readme for instructions Install Service 10368 24 23DEVMOUOT UGBVPROOT HUBAMIDOOGGSAPDI 29 3 USENR OOT_HUE 10968 P1 0244ER EVDOOT UGBVPDOOT HUBAMIDOUDGGSAPDI 2404 USENR OT_HUE lose IE03E amp PI DIL EREYDODT UGBVDOUT HUDBAMIDOUOGAPDI 240r USENROOT_HUEB Up vU T AOE aIv DSOSERPID24CEDE amp REYOOOT USE ROOT_HUBZOSNDSOSERFIDZ4CD USESROOT_HUBZU UGBNUINKNOMKN UGBNINKNOMN UGBNINKNOMKN UGBVINKNOMN UGBNINKNOMN UGDBVWd U eb bd 1111Eb e DOUT USB IDeb bwd 111 UGBVWd U eb bwd T 1Tb e DOUT USB I eb bwd 111 UGDBVWd Odeb Pid_20034A ev UITOD0 USB D eb bwd 2003 UGBVWd Oaeb Fid_22224A ev 0001 USB Uieb bwd 2222 UGBVWd U eb bd 2mtd Pev DOUT UG Uieb bwd 2md UG DU eb td Ztd ev DOUT UGBvud Uieb bwd And Abbildung 6 4 bersicht der USB Ger te im PC Uninstall Service Ed SnoopyPro USBLog3 K File Edit Yiew Tools Window Help Deh EK 12 packets USBEWid_O3eb amp Pid_2ffd amp R ew DUU Eu El Ten LE en El blevicellass 0x00 0 bDev iceSubllass 0x00 CU bDevwicefrotocol 0x00 0 bMa zFPacketSizel USA 32 dYendor Dz 3eb 1003 idFroduct zfffd 12285 bodDevice Us CL Manufacturer 0z01 ili iProduct 0x02 2 k i1SerialHumber Oxz03 3 ENumnlonfigurations Us l 1 2 in do
51. sig unsigned char command unsigned char data PACKET_SIZE 2 size t len t_packet Der Umweg ber das Speicherabbild hat den Vorteil dass auch unsortierte Hex Dateien mit Spei cher berlappungen verwendet werden k nnen wie sie z B der SDCC erzeugt 5 6 4 Reaktion auf Benutzereingaben Ausf hrung in Threads Wird ein Befehl an das USB Ger t gesendet so kann die Verarbeitung je nach Befehl und Anzahl der Datenbytes einige Zeit in Anspruch nehmen Um das Programm f r diesen Zeitraum nicht zu blockieren werden potenziell l ngere Befehle n eigenen Threads ausgef hrt die von Windows separat verwaltet werden und parallel zum Hauptprogramm ablaufen Einfache Befehle werden di rekt bearbeitet da keine lange Verz gerungsdauer entstehen kann Folgende komplexere Befehle werden n Threads ausgef hrt Befehl Thread Funktion Programmieren CMD_PROGRAM ProgramThread PVOID pvoid Verifizieren CMD_VERIFY VerifyThread PVOID pvoid Automatisches Programmieren AutoThread PVOID pvoid Erase Blank Check Program und Verify Die Threads werden unter Windows mit dem Befehl CreateThread bzw dem s mpleren Mak ro _beginthread ThreadProg 0 NULL erzeugt und gestartet Das Konsolenprogramm verwendet keine Threads aA 5 6 5 USB Kommunikation Senden von Befehlen In der Quelldate commands cpp sind die folgenden sechs Funktionen enthalten die die unter schiedlichen Befehle bzw Anfra
52. spre chend der Tabelle Flash Programming Modes auf Low gelegt Anschlie end kann das erste S gnaturbyte am Port Pl eingelesen und abgespeichert werden Durch Aufruf der Funktion inc_addr wird ein Impuls am Adressz hler XTAL Pin erzeugt um zur n chsten Adresse m Flashspeicher zu gelangen Dann kann das zweite S gnaturbyte eingelesen werden Das erste S gnaturbyte enth lt einen Identifier f r den Herstellernamen des Chips das zweite Byte steht f r den Chiptypen Da die verschiedenen Chiptypen unterschiedlich gro e Flash Speicher be s tzen wird die jeweils aktuelle Gr e abgespeichert Die untenstehende Abbildung verdeutlicht noch einmal das Timing Verhalten Power Up Sequence RST a XTALI 0 0 Adresse inkrementieren a P3 2 PROG EE P3 3 4 5 7 a Pl Y Yyy Yy yY a Byte 1 auslesen Byte 2 auslesen Abbildung 5 5 Timing Verhalten beim Auslesen der Signaturbytes 29 5 5 6 L schen des Flash Speichers vom AT89C2051 4051 Das L schen des eingelegten Chips wird durch Aufruf der Funktion chip_erase aus der Quell datei flash c erreicht Die Funktion initialisiert den Chip Power Up Sequence und legt die ent sprechenden Pegel aus der Tabelle Flash Programming Modes an den Steuerpins an Der Reset Eingang wird wie beim Schreibzugriff blich auf 12V geschaltet Der Flash Speicher wird nun
53. sseererssssssssserresssssssererssssss 20 3 3 2 AUIDAU der verschickten Pakete ae ee 21 34A Das MMe HE X Formale a u a 23 5 5 Die Firmware des Steuercontrollers ATSOC3AI3l 24 5 5 1 Projektgliederung und der Komplaponzvorgang 24 5 5 2 Problemanalyse und grunds tzlicher Programmaufbat eessssoeenssssssssoeerrsssssssseerrssss 25 539 2 Der USB En merationsprozess eaaa e 26 3 9 32 Der Ablaurder EEN 26 3 9 3 2 Die wichtigsten Deskripforen uu or era E EA 21 5 5 3 3 Die wichtigsten Befehlsanforderungen USB Standard Requests 21 5 5 4 Empfang und Auswertung der USR BUT K Pakete 28 5 5 5 Signaturbytes vom AT89C2051 4051 auslesen noossseoenensssssssoeerssssssssseerrsssssssseeersssss 29 5 5 6 L schen des Flash Speichers vom AT89C2051 4051 uueesnneesseeeeeeeeennnnnnneeeeeeenennn 30 5 5 7 Auslesen und Schreiben des Flash Speichers vom AT89C2051 4051 o n 30 3 3 8 Sezen der Lockbits vom ATSITZUIVYANIT 2 a a 31 3 0 Das W1ndows GUI Prosamm sn a A Rei 31 9 6 1 Projekt bersicht und Kompilierins aa ade a 32 5 6 2 Erstellung und Behandlung der Programmoberfl che nneessssoennnnsssssseeerressssssseerrsssss 32 5 6 3 Laden und Verarbeiten neuer Hex und Bm rdateien 33 5 6 4 Reaktion auf Benutzereingaben Ausf hrung in Thread 34 5 6 5 USB Kommunikation Senden von Betehlen 35 5 7 Das Windows Kommandozeilenprogramm s seeeesssssssseeerssssssssseterssssssseceeeessssssseer
54. st Zur Kompilierung ist das Microsoft DDK erforderlich Der Treiber hat unter Windows XP fest definierte Schnittstellen f r die Initialisierung und Freigabe Aufr umcode Wird der Treiber erstmalig geladen beim Booten oder Einstecken des Ger ts wird beispielsweise immer die Routine DriverEntry des Treibers vom Windows V O Manager aufgerufen Wird aus der User Mode Anwendung usb_programmer exe eine Anforderung an den Treiber gestellt konvertiert der UC Manager von Windows die Art der Anforderung Schreiben Lesen etc in einen Funktionscode und ruft die zust ndige Dispatch Routine des Treibers auf F r jeden Funk t onscode den der Treiber unterst tzt gibt es eine eigene Dispatch Routine ar Der Kommunikation der Anwendung mit dem ATMUSB Treiber erfolgt mit Hilfe der drei Funkti onen CreateFile Treiber initialisieren Handle wird zur ckgegeben DeviceloContro l Aufrufen einer speziellen Treiberfunktion CloseHandle Handle freigeben und Verbindung zur USB Pipe beenden Welche Konstanten das User Mode Programm f r die Kommunikation mit dem Treiber verwenden kann erkennt man in der Headerdate atmusb h im Abschnitt IOCTL Definitions Da der USB Programmer f r die eigentliche Kommunikation nur den Bulk Transfer Modus verwendet sind im Quellcode von usb cpp nur die beiden Konstanten IOCTL_BULK_READ und I OCTL_BULK_WRITE von Bedeutung Die Treiber Kommunikat on ist i
55. stallationsoptionen En Y Diese Quellen nach dem zutreffendsten Treiber durchsuchen Verwenden Sie die Kontrollk stchen um die Standardsuche zu erweitern oder einzuschr nken Lokale Pfade und Wechselmedien sind in der Standardsuche mit einbegriffen Der zutreffendste Treiber wird installiert Nicht suchen sondern den zu installierenden Treiber selbst w hlen Verwenden Sie diese Option um einen Ger tetreiber aus einer Liste zu w hlen Es wird nicht garantiert dass der von Ihnen gew hlte Treiber der Hardware am besten entspricht Abbildung 3 3 Assistent f r das Suchen neuer Hardware W hlen Sie den f r diese Hardware zu installierenden Ger tetreiber II w hlen Sie den Hersteller und das Modell der Hardwarekomponente und klicken Sie auf Gen weiter Klicken Sie auf Datentr ger wenn Sie ber einen Datentr ger verf gen der den erforderlichen Treiber enth lt Installation von Datentr ger u Legen Sie den Installationsdatentr ger des Herstellers DK Abbrechen ein und stellen Sie sicher dass weiter unten das richtige Laufwerk ausgew hlt ist Dateien des Herstellers kopieren von DATreber E Abbildung 3 4 Schritt 4 Die kompatiblen Modelle f r das Ger t werden aufgelistet Da nur ein Modell zur Auswahl steht kann ber den Button Weiter direkt zum n chsten Schritt gesprungen werden Schritt 5 Es erscheint nun ein Fenster mit dem Warnhinweis dass der Treiber den Windows Logo
56. summe erh lt man wenn von Null die Summe aller Informationsbytes abgezogen wird und das Er gebnis auf das Low Byte begrenzt wird Start und Endkennung z hlen nicht zu den Informations bytes Eine komplette Intel Hex Date enth lt einen oder mehrere solcher Records Die Datei endet mit einem End of File Record EOF Die Informationsbytes und die Checksumme eines Intel Hex Formats werden nicht bin r bertra gen sondern als ASCII codierte Ziffern Start und Endkennungen als ASCIH Zeichen Die Bin r zahl 6Ah wird dementsprechend als 6 36h und A 41h bertragen Die Checksumme wird vor dieser Zerlegung gebildet Bytes Symbol Beschreibung Hex A f Starkennung OSA 2 Inn Anzahl der Datenbytes im Record 4 Laaag Zieladresse des ersten Datenbytes im Record _ 2 ftt Record Typ 00 Daten 01 EOF 02 erweitert m2 fdd Datenbyte Anzahl wie n angegeben Beispiel 02001300A30741 00000001FF In jaaa jdd _ _ jee Jo 10013 00 __ A3 07 CR LF Die Bitfolge 10100011 A3h wird in die 20 und 00000111 07h in die 21 Speicherstelle gebrannt In jaaa jdd Jee Joo 10000 DI JFF CRLF 0 Datenbytes Typ End of File Record 5 5 Die Firmware des Steuercontrollers AT89C5131 Der Controller AT89C5131 stellt das Herzst ck der Schaltung dar Die Firmware erm glicht die Steuerung des Programmers ber den USB Bus Implementation der Kommandos die im vorigen Kapitel genannt wurden und ste
57. t in meinen Tests gut funktioniert bis zur 2k Demo Begrenzung Die Demo Version des Programms erlaubt das Erstellen von Hex Dateien bis zu einer Gr e von 2 kByte A51 EXE ASMS51 EXE 6 2 Einige Anmerkungen zu anf nglichen Problemen In der meisten USB Literatur auch im Atmel Datenblatt werden die IN und OUT Ports Richtung der Endpoints immer aus Sicht des PC s betrachtet Um Verwirrung zu vermei den h er zwei Beispiele a Endpoint 4 ist als Bulk Out definiert Das Ger t empf ngt auf diesem Endpoint Da ten vom PC b Endpoint 5 ist als Bulk In definiert Das Ger t sendet mit diesem Endpoint Daten zum PC Atmel liefert speziell f r den SDCC Compiler eine Headerdatei at8 amp 9c5131 h mit Defines f r Ports und Register des AT89C5131 Controllers mit Mit der von mir verwendeten SDCC Version lies sich die Headerdatei zwar problemlos einbinden die erzeugten Hex Dateien haben jedoch nicht funktioniert Nach Anpassung der Header an die typische SDCC Syntax war das Problem behoben 38 Beim Umgang und Upload einer neuen Firmware mit Atmels Flip ist es wichtig dass die eingespielte Hex Datei den Adressen nach sortierte Hex Records enth lt Falsche Reihen folge und berlappungen erzeugen Probleme Beim SDCC Interrupt Service Routinen ISRs die nicht im Hauptmodul Quelldate mit der main Funktion stehen m ssen unbedingt zus tzlich m Hauptmodul deklariert werden andern
58. tlichen Routinen werden durch Interrupts aufgerufen flash c Enth lt Routinen zur Auswertung eines empfangenen USB Pakets und ist f r s mtliche Flashvorg nge zust ndig wie z B L schen Schreiben Auslesen Chiptyp ermitteln etc usb c Beinhaltet s mtliche USB Funktionen z B Funktionen zur Initialisierung und Konfigu ration der Endpoints und PLL auf 48MHz sowie USB Interrupt Funktionalit t Bulk Transfers und Enumeration Sonstige Dateien go bat Diese Windows Batch Datei vereinfacht das Kompilieren und Linken der drei C Quelldateien Ein Aufruf z B Doppelklick ruft den SDCC zum Compilieren auf und erzeugt im Unterverzeichnis output eine gepackte Intel Hex Datei output Verzeichnis Dieses Unterverzeichnis enth lt die vom SDCC bei der Kompilierung erzeugten Datei en Das sind zum Beispiel Assemblerlistings ASM und Symboldateien SYM sowie die Hex Dateien IHX und HEX 24 5 5 2 Problemanalyse und grunds tzlicher Programmaufbau Die folgenden Abbildung zeigt den grunds tzlichen Programmaufbau der Firmware Programmstart Variablen und Register Init USB Interrupt A PLL Init PM Ereignis USB Init Suspend Resume Ereignis Endlosschleife Abbildung 5 3 Die Firmware Programmstart main c Initialisierung der Variablen und Register Einstellen der PLL des AT89C5131 Controllers auf 48 MHz f r USB
59. uf von usb_eval in flash c Um ein Paket zum PC senden zu k nnen muss zun chst der gew nschte Endpoint aus gew hlt werden O Control Transfer oder 5 Bulk Transfer Dann k nnen die einzelnen Datenbytes in das interne Schieberegister gespeichert und anschlie end durch Setzen des TX Ready Bits bertragen werden gt z B in der Funktion usb_send_data sun der Flash Vorg nge flash c In der Funktion usb_eval w rd eine Anforderung vom PC untersucht Dazu wird das Paket in die einzelnen Bytes zerlegt Stimmt die S gnaturkennung kann das Befehlsbyte ausgewertet und einem Befehl wie z B Typ ermitteln oder Flash L schen zugeord net werden Anschlie end wird die entsprechende Routine aufgerufen gt siehe folgende Kapitel Die einzelnen Routinen f r die Flash Operationen beginnen jeweils mit chip_ z B chip_blank_check oder chip_erase Der Reset Pin des eingelegten AT89C2051 4051 muss f r der Programmierung auf die drei Spannungen OV 5V und 12V gesetzt werden k nnen Das wird in den Funktio nen set_reset_Ov set_reset_5v und set_reset_l2v implementiert indem die Ausgangspins des Controllers entsprechend gesetzt werden 5 5 3 Der USB Enumerationsprozess Bevor das Windows Programm mit dem USB Ger t kommunizieren kann muss der PC das Ger t erkennen und den richtigen Ger tetreiber zuordnen Dazu findet nach dem Einstecken des USB Ger ts ein
60. urchf hren des Flashvorgangs 3 Benutzerhandbuch 3 1 Systemvoraussetzungen F r den erfolgreichen Einsatz des USB Programmers werden folgende Hard und Softwarekompo nenten vorausgesetzt Hardware IBM kompatibler PC mit Windows XP NT mindestens eine freie USB Schnittstelle USB Kabel zum Anschluss des Ger ts Das USB Programmer Ger t mit eingelegtem ATS9C2O5 1 4051 Controllerchip Stromversorgung erfolgt aus dem USB kein Netzteil erforderlich Software Betriebssystem Windows XP NT mit Administratorrechten zum Installieren des USB Treibers USB Treiber f r die Kommunikation mit dem Ger t Windows Anwendung usb_programmer exe zur bertragung des Programmcodes 3 2 Anschluss der Hardware Der Programmer wird mit einem USB Kabel an einem freien USB Port des PCs angeschlossen Aufgrund der Hotplug F higkeit von USB ist das Einstecken und Rausziehen auch im laufenden Betrieb des PCs gefahrlos m glich Sobald das Ger t angest pselt ist oder beim Windows Start wenn der PC ausgeschaltet war erscheint ein Dialogfenster mit der Aufforderung zur Treiberin stallation A 3 3 Treiber Installation Nachdem der PC eingeschaltet Windows vollst ndig hoch gefahren und alle Programme geschlossen wurden kann das Ger t mit einem USB Kabel angeschlossen werden Bei der ersten Inbetriebnahme erscheint daraufhin ein kleines Infofenster am unteren Bildschirmrand rechts abgebildet das die neu angeschlossene
61. wn Dia 0 000 GET_DESCRIFT 2 in up n a 0 000 CONTROL_TRA 09 0z 20 00 01 01 Dal 3 in down Dia 0 000 GET_DESCRIRT 3 in up n a 0 010 CONTROL_TAA 09 02 20 00 01 01 Dal d 777 down n a 0 010 SELECT_CONFIG d 777 up n a 0 050 SELECT_CONFIG Du D 777 down n a 24 135 ABORT_FIFE 5 777 up ma 24 585 ABORT_FIFE Du 6 777 down n a 24 585 ABORT_FIFE 6 777 up na 25 096 ABORT_FPIFE xD Ready lt Snpys status goes here Abbildung 6 5 Das Fenster zeigt die mitgelesenen USB Pakete 40 Snooper installed nooper installed Description USE Aoot Hub USB Aoot Hub USB Root Hub USE Aoot Hub Unbekanntes Ger t Unbekanntes Ger t Unbekanntes Ger t Unbekanntes Ger t Unbekanntes Ger t USB HID Human Interface Device USE HID Human Interface Device USE HID Human Interface Device USE HID Human Interface Device Andis USE Programmer ATMEL OO 31 21 Bootloader 3 USBBrowser und USBView Diese beiden Programme zeigen alle USB Ports in Windows sowie die Konfigurationen End points Strombedarf VendorID und weitere Informationen der einzelnen Ger te an Auch mit die sen Tools l sst sich die korrekte Implementation des USB Enumeration Prozesses berpr fen USB View Fie Options Help Mu Computer 2 Intel A OAOUT DD DDM USE Universal Host Controller 2422 7 RoatHub Fort NoDevicelonnected Fort Devicelonnected Dell TrueMobile Bluetooth Module 2 Intel A 825010 6 DBM USB Unive
Download Pdf Manuals
Related Search
Related Contents
ー安全にご使用いただくために SKP-950 / SKP-1150 WiFly QA5 IP - Amazon Web Services MOLIN MOLETTE - Ligue de l`enseignement du Cher mode d`emploi pour organiser votre sortie au ccam LRCM Extension Board User's Guide Copyright © All rights reserved.
Failed to retrieve file