German Only

NXP LPC2xxx Homepage ARM7

Diese Seite befindet sich noch im Aufbau

Was ist neu?

Im Augenblick alles ;-)

Was gibt es auf dieser Seite?

1. Einen Überblick über die LPC2xxx Mikrocontroller

2. Eine Programmiersoftware für die LPC2xxx Serie

3. Eine Bauanleitung für einen Programmieradapter incl. eines Testboards

Einleitung

Diese Seite beschäftigt sich mit den ARM7 Mikrocontroller von NXP. Insbesondere mit dem LPC2103.

Weitere Typen sind LPC2101, LPC2102, LPC2103, LPC2104, LPC2104/01, LPC2105, LPC2105/01, LPC2106, LPC2106/01. Mit den LPC2103/2102/2101 Typen wurden sogenannte Fast IO Pins eingeführt. Pauschal kann man sagen, daß alle 60MHz Typen ursprünglich langsame IO Pins hatten. Allerdings hat sich dieses mit der /01'er Revision geändert.



Brennen der Software

Alle LPC2xxx Mikrocontroller verfügen ab Werk über einen Bootloader. Hierzu wird nach dem Reset getestet, ob ein bestimmter IO-Pin (Pin P0.14 beim LPC2103) des Mikrocontrollers Low-Pegel hat. Ist dieser Pin einige Millisekunden nachdem die Resetleitung wieder auf High ist Low, wird der Bootloader gestartet. Und der UART0 (RXD0/TXD0) warten darauf, daß über diese die Firmware-Programmierung beginnt.

Es gibt in der Regel eine kleine Programm, welche aus der IDE (Integrierte Entwicklungsumgebung) über die Komandozeile aufgerufen wird. Ein solches Programm ist LPCProg (siehe nächste Abschnitt).

LPCProg

Hinweis: LPCProg ist nur für Mikrocontroller gedacht, die über ein BootROM verfügen. Sollte es Varianten mit einem Bootload im Flashspeicher geben, darf LPCProg nicht verwendet werden. Die meißten MCUs sollten jedoch ein Boot Block im ROM haben. Im zweifel im Datenblatt unter “Flash memory system and Programming” nachsehen.

LPCProg ist ein Komandozeilentool, welches speziell für den virtuellen COM-Port der FTDI-USB-Seriell-Wandler (FT232xx) geschrieben wurde, aber auch mit allen anderen (virtuellen) COM-Ports zusammenarbeitet.

Wichtiger Hinweis: Wer einen FTDI FT232 als Programmer einsetzt muß den Chip unbedingt richtg unter Windows konfigurieren. Standardmäßig werden nur alle 16 Millisekunden Daten mit dem Chip ausgetauscht, was für LPCProg jedoch zu langsam ist und mit einem „Reading MCU ID Fail“ abschließt. Für den FTDI Chip muß man hierzu den Geräte-Manager öffnen (Start/Einstellungen/Systemsteuerung/System) und unter der Registerkarte Hardware den Geräte-Manager auswählen.Unter DESKTOP/Anschlüsse (COM und LPT) sollte ein USB Serial Port auftauchen. Mit der rechten Maustaste darauf klicken und Eigenschaften auswählen und anschließend auf die Registerkarte Anschlusseinstellungen wechseln. Hier auf 'Erweitert...' klicken und im dann erscheinenden Dialogfeld unter BM Einstellungen die Wartezeit auf 1 ms stellen. Ist dieses geschehen, arbeitet der FT232 mit der notwendigen Geschwindigkeit für die Programmierung.

Dabei werden vom Programm zwei Steuerleitungen so geschaltet, daß diese sowohl die Resetleitung als auch die Steuerleitungen zur Erkennung des Bootloaderstarts automatisch schalten. DTR des COM-Ports schaltet dabei die Resetleitung und RTS signalisiert durch einen Low-Pegel, daß der Bootloader gestartet werden soll (Dieses ist die übliche Belegung, wie sie auch vom orginal Philips/NXP Tool verwendet wird). Parameter der Komandozeile:

E:\Projekt\main.hex COM4 218750 14000 1 FF+ 00+ R (Beispiel)

Der erste Parameter ist die Hex-Datei. Sind im Pfad/Dateinamen Leerzeichen enthalten, muß die ganze Zeichenkette in Anführungszeichen gesetzt werden. Der zweite Parameter gibt den COM-Port an. Im Beispiel ist dieses der COM-Port 4. Der dritte Parameter gibt die Baudrate für die Programmierung an. Hat man einen COM-Port mit flexibler Baudrate, wie z.B. die FTDI FT232 Chips, kann man Quarzfrequenz in Hz geteilt durch 64 als Baudrate angeben. Alternativ kann auch ein '-' (Minuszeichen) angegeben werden (der Wert wird dann im Programm aus dem 4. Parameter mal 1000/64 abgeleitet). Hat man einen COM-Port, welcher weniger flexibel ist, was die Baudrate angeht, sollte man den Wert solange Halbieren, bis sich eine gute Übereinstimmung mit einer Möglichen Baudrate des COM-Ports ergibt. Wer will kann für den dritten Parameter auch ein '?' (Fragezeichen) eingeben. Dann probiert die Software alle möglichen Kombinationen aus und schlägt anschließend eine Baudrate vor, welche man dann anstelle des Fragezeichens angeben sollte. Der 4. Parameter gibt die Frequenz des Quarzes in kHz an. Der 5. Parameter ist speziell für virtuelle COM-Ports (USB) gedacht, und dient der Beschleunigung der Programierung. Anfangs sollte man den Wert '1' eingeben. Wenn dann alles funktioniert kann durch erhöhen des Werts der Programmiervorgang beschleunigt werden. Je höher die Quarzfrequenz desto höher kann der Wert werden. Bei 14 MHz kann ich den Wert in meinem Aufbau beispielsweise auf 6 setzen. Werte bis 10 sind möglich. Den optimalen Wert muß man durch Ausprobieren ermitteln. Der 6. Parameter gibt an, daß Flash-Sektoren beim Programmieren übersprungen werden, wenn sich in der Hex-Datei an diesen Adressen nur 0xFF oder garnichts befindet. Hierdurch kann der Programiervorgang teilweise erheblich beschleunigt werden, wenn man am Anfang des Projekts nur eine kleine Hex-Datei in eine MCU mit viel Flashspeicher programmieren will. Es wird dann ebenfalls nicht darauf getestet, ob der Flashspeicher nach dem Löschen auch tatsächlich überall die Werte 0xFF enthält. Will man auch die leeren Sektoren immer schreiben kann man z.B. “FF” anstelle von “FF+” angeben. Ist der 7. Parameter auf 00+ (Null Null Plus) gesetzt, werden Sektoren übersprungen, welche nur aus Nullen bestehen. Beispielsweise wenn man mal mit Keil µVision herumspielt, da hier in der Demoversion am Anfang des Speichers 16 kBytes Nullen eingefügt werden. Diese Sektoren bleiben dann nach dem Löschen (Erase) ebenfalls auf 0xFF stehen. Der 8. Parameter schließlich gibt an, wie nach dem Programmieren die Programmausführung gestartet werden soll. 'R' steht dafür, daß der Programmer am Ende des Programmiervorgangs einen Reset ausführen soll, um das Programm zu starten. Gibt man alternativ 'A' an, wird ab der Adresse 0 über einen Befehl ohne Reset die Programmausführung im ARM-Mode gestartet.

Das Programm habe ich bisher nur mit dem LPC2103 getestet. Im Gegensatz zu anderen Komandozeilentools sind in LPCProg die unterstützten Mikrocontroller nicht fest einprogrammiert, sondern werden aus einer Datei „chip_definition.txt”, die im gleichen Verzeichnis wie die LPCProg.exe liegen muß geholt. So kann jeder, sofern noch nicht durch mich geschehen, seinen MCU-Typ hinzufügen. Hierzu muß man nur die Definition einer anderen MCU kopieren und dann entsprechend editieren.

Wer noch keinen seriellen Programmieradapter hat sollte sich das nachfolgend forgestellte Testboard beziehungsweise den darin enthaltenen Adapter mit FT232BM Chip mal genauer ansehen.

Download LPCProg 0.3 07.08.2008

Beachte! Das Programm erfordert das .NET 2.0 Framework (ca. 23 MB) von Microsoft, sowie das Microsoft Visual C++ 2005 SP1 Redistributable Package (ca. 2,5 MB). Sollte beim Starten des Programms eine Fehlermeldung erscheinen, müssen diese Microsoft-Bibiotheken erst installiert werden.

Testboard mit Programmer

Die nachfolgend präsentierten Leiterplatten stellen einen Minimalaufbau dar, um den LPC2103 zum Laufen zu bringen. Bastelboard und Programmer passen auf eine halbe Europlatine, sind jedoch so layoutet, daß man die Leiterplatte in der Mitte trennen kann.

Download

Die Eagle-Dateien für das Bastelboard und den Programmer gibt's hier. Und Eagle gibt's hier.

Testboard

Von links nach rechts sind die Oberseite, die Unterseite und der Schaltplan des Bastelboards dargestellt. Links ist ein JTAG Stecker vorgesehen. Eine der Stiftleisten ist fest mit den Ports P0.9 bis P0.23 (16 Leitungen) verbunden. Beim Quarz sollte man aufpassen, daß man diesen nicht zu weit auf das Board drückt, unmittelbar unter dem Quarz eine Durchkontaktierung ist. Im mittleren Bild sieht man zum einen einen LPC2103 in der Mitte und am rechten Rand die Spannungserzeugung für 3,3V und 1,8V (welche aufgrund des Errata-Sheets bei mir 1,94V beträgt.

Programmieradapter

Auf der Oberseite sitzt links die USB-Buchse und die Stiftleiste rechts sind die Programmierpins. Der Jumper oben links muß links stehen, damit der Adapter mit 3,3V arbeitet. Ist der Jumper rechts gesteckt, arbeitet der UART mit 5V (USB-Spannung). Rechts ist der FT232BM Chip mit seinem Standardaufbau zu sehen. Am rechten Rand sitzen noch zwei Transistoren über die Reset und Bootloaderselekt (LPC2103 P0.14 Low) betätigt werden. Die nicht bestückte Stiftleiste enthält alle Standardleitungen der seriellen Schnittstelle. Zum Programmieren wird jedoch nur die kurze Leiste mit den Schalttransistoren benötigt.

Der Programmer-Adapter arbeitet auch problemlos mit der Programiersoftware lpc21isp und Flash Magic zusammen, falls man LPCProg (siehe oben) nicht verwenden möchte. Um das lpc21isp Tool herunterladen zu können, muß man sich in der Yahoo-Group registrieren lassen.

Back

E-Mail


Last update: 17.08.2008

© 2008 by Bernhard Michelis