mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik @Robert Teufel: Frage zu LPC2103 Programmierung


Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Robert,

da ja allseits bekannt ist, dass du für NXP arbeitest,hätte ich da mal 
eine Frage bezüglich der LPC210x (1/2/3).
Ich habe den Umstieg auf den LPC2103 zwar gut hinbekommen, aber was mir 
auffällt ist, dass die Programmierung über den Bootloader sehr langsam 
ist. Für den 32k Chip dauert der Upload 8 s und dann auch noch ohne 
Verifying.
Nun die Frage: Gibt es irgendwo eine Flash Programmierspezifikation, wie 
man den Chip über JTAG programmiert? Ich würde nähmlich gerne den 
Programmieralgorithmus in meinen eigenen Programmer einbauen. Auf der 
Website war leider nichts zu finden.

Wieso dauert der Upload über den Bootloader eigenlich so lange? In der 
Spezifikation steht 1 ms für 256 Bytes. Eigentlich sollte das 
Programmieren doch weniger als eine Sekunde dauern.

Danke,
Bernd

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nun die Frage: Gibt es irgendwo eine Flash Programmierspezifikation, wie
> man den Chip über JTAG programmiert? Ich würde nähmlich gerne den
> Programmieralgorithmus in meinen eigenen Programmer einbauen. Auf der
> Website war leider nichts zu finden.

Hast Du Dir mal das OpenOCD-Projekt angesehen? Vielleicht findest Du da 
weiterführende Informationen.

Autor: Robert Teufel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum ist das Programmieren ueber den Bootloader so langsam? Weil beim 
Autobauding sehr viel software und wenig hardware im Spiel ist. Das 
bedeutet, dass im Endeffekt die Baudratenbestimmung nicht sehr genau ist 
und mit einer langsameren Baudrate legt man sich auf die sichere Seite.

Flash Programmierspezifikation ueber JTAG gibt es in dieser Form nicht. 
Was die Emulatorhersteller tun ist ein kleines Programm ins SRAM zu 
laden, ueber JTAG die zu programmierenden Daten auch ins SRAM laden und 
dann die Programmierroutinen, die im Users Manual bescchrieben sind 
aufrufen. Dadurch sind Programmierzeiten erreichbar von ca. 1 sek mit 
U-Link und noch deutlich schneller mit J-Link.

Wiederum ist U-Link optimiert fuer einen moeglichst simplen Ablauf und 
nimmt standard Windows Treiber, dadurch entstehen normalerweisse 
keinerlei Installationsprobleme, J-Link hat optimierte Treiber und ist 
deshalb um einiges flotter, fast Faktor 20. bei dem LPC2103 spielt das 
noch keine so grosse Rolle, bei den 512kB Typen ist der unterschied 
allerdings spuerbar.

p.s. der bootloader ist bei einen "UART-Quartz" wie z.B. 14.756MHz um 
einiges schneller als bei einem 12 MHz Quartz.

Hoffe das hilft etwas, Robert

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erst einmal.

Ich habe einen 15MHz Quarz in meiner Schaltung. Habe ihn gerade mal 
gegen einen 14,7456MHz ausgetauscht. Hat aber keinen Vorteil gebracht. 
Die maximale Baudrate liegt bei 230400 kBit/s. Bei 14MHz funktionniert 
es, wenn man 218700 kBit/s als Übertragungsrate wählt. Leider kann man 
solche Werte nur über die Komandozeile eingeben. Das Flash-Utility UI 
unterstütz sie nicht.

@Rufus t. Firefly: Habe mir den Quellcode des OOCD mal angesehen. Ist 
leider nur sehr spärlich dokumentiert.

Ich werde jetzt erst einmal die in den LPC2103 eingebauten 
Flash-Routinen ausprobieren.

Danke und Grüße,
Bernd

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Bernd:

Ich verstehe die Frage noch nicht so ganz:

>Wieso dauert der Upload über den Bootloader eigenlich so lange? In der
>Spezifikation steht 1 ms für 256 Bytes. Eigentlich sollte das
>Programmieren doch weniger als eine Sekunde dauern.

1 ms für 256 Bytes, das ist die reine Flash-Programmierzeit innerhalb 
des Chips, und hat nichts mit der Datenübertragung (RS232, oder wie auch 
immer) zu tun. Das haut schon hin, wie ich selbst testete.

Wer, verdammt, zur Hölle, oder zum Teufel, hat dir eigentlich einen 
15-MHz-Quarz vorgeschlagen? Natürlich, das sollte aber auch gehen. Die 
vom Bootloader gefundenen Baudraten kenne ich jedoch nicht.

Dank integrierter PLL, sollte der Quarz doch so niedrig als möglich 
gewählt werden, um das kleinste gemeinsame Vielfache zu wählen, wegen 
des Boot-Loaders aber auch nicht unter 10 MHz.

Über JTAG zu flashen, hat mal gar nichts mit dem Quarz des Controllers 
zu tun. Das ist eine eigene Geschichte.

Bei RS232, jedoch schon. Da gibt es einen Hinweis im User Manual, daß 10 
MHz eine RS232-Baudrate von 115200 Baud unterstützen. Der Bootloader 
sucht sich die passende Baudrate anhand des Quarzes aus.

Auf meinem Evaluation-Board Keil MCB2100 ist ein Quarz 12 MHz verbaut. 
Diese Wahl, halte ich bei weitem nicht für die schlechteste, wir wählten 
die auch für unsere eigenen Anwendungen, damit erreiche ich über das 
Philips Flash Utility eine Download-Baudrate von "nur" 38400 Baud.

Im Einzelfall ist das tolerierbar, und das ist aber auch der einzige 
Nachteil.

Das Flash Utility dient hauptsächlich auch dem Zweck, den Controller 
wieder ins Leben zurück zu holen, z.B. wenn sich in der 
Entwicklungsphase der Watchdog aufgehängt hat, oder die Code Read 
Protection aktiviert wurde, und über JTAG nie mehr ein Zugriff möglich 
ist.

Mit dem 12-MHz-Quarz, ist aber auch eine flexible Einstellung der 
CPU-Frequenz mit Maximalfrequenz 60 MHz möglich, die VPB-Clock für die 
Peripherals, ein glattes Timing im ms-Raster, ein guter Kompromiß für 
alle Timings für Timer, UART mit verschiedenen Baudraten, CAN-Controller 
mit verschiedenen Bitraten, im Gegensatz zu solch krummen Werten wie 
14,7456MHz, die nur für den UART alleine perfekt sind.

Warum krumme UART-Quarze??? Die versauen alle übrigen Timings. Ein UART 
mit modernem hoch auflösendem Teiler wie im LPC stellt locker auch 
Baudraten mit "runden" Quarzen ein, die dann vielleicht um 0,2 Prozent 
abweichen. Mit dem 12-MHz-Quarz funktioniert die Standard-Baudrate 
230400 Baud mit Windows-Hyperterminal absolut sauber.

Die verschiedenen Quarzfrequenzen, stellen immer irgendwo einen 
Kompromiß dar.

Die LPC2300/2400 flashen langsamer auch über JTAG, als die LPC2100/2200, 
auch mit neueren schnelleren JTAG-Adaptern? Habe ich da richtig gehört?

Gruß

Dietmar

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den 15MHz Quarz hatte ich anfangs nur genommen, weil ich keinen krummen 
14,xxxxMHz Wert haben wollte. Ideal für den LPC2103 ist ein 14MHz Quarz 
oder ein 10MHz Quarz (habe ich noch nicht ausprobiert), weil man damit 
auch auf die 70MHz kommt, die der Prozessor ja auch verarbeiten kann.

Was die Baudrate bei 12MHz angeht, kannst Du davon ausgehen, dass es 
auch mit mehr als mit 38400 Baud geht, wenn man untypische Werte wählt, 
wie z.B. 218700 Baud für 14MHz. Mit einem FTDI Controller als USB/Seriel 
Wandler sind solche krummen Werte ohne weiteres Möglich.

Grüße,
Bernd

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Bernd:

Können die LPC2103 nicht 72 MHz? Oder bin ich da falsch informiert? Da 
wäre doch eben schon wieder ein 12-MHz-Quarz optimal?

Gruß

Dietmar

Autor: Robert Teufel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LPC2103 laeuft mit 70 MHz, LPC23xx und 24xx (in kuerze) mit 72 MHz.

Robert

Autor: Micro Mann (micromann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Robert Teufel

Sorry, dass ich den alten Thread nochmal rauskrame, aber ich habe grad 
ein sehr passendes Problem zu dem Thema.

Gibt es Bestrebungen den LPC2194 / 2294 mit höherer Frequenz (>=64MHz) 
zu zertifizieren, bzw. gibt es Bedenken den LPC2194 auf 64 MHz laufen zu 
lassen ?

Für welche interne Peripherie könnte das ein Problem sein ?

(Selbstverständlich betrachte ich das als unverbindliche Auskunft)

Herzlichen Dank !

Autor: Robert Teufel (robertteufel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

der 2194 is fuer hohe Temperatur spezifiziert, wenn der z.B. lediglich 
bei 70C und die 1.8V recht genau sind duerfte da (unverbindlich) gar 
nichts schief gehen.
Sobald die 1.8V in Richtung 1.65V geht kanns eng werden. Also ein 2% 
Regler fuer 1.8V waere nicht schlecht.

Robert

Autor: Micro Mann (micromann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Robert !
Danke für die Antwort. Das hat mir sehr geholfen.

> Robert Teufel (Firma Segger)

Bist du gewechselt ? Ich dachte du wärst bei NXP bzw. Philips. Oder habe 
ich da was nicht mitbekommen ?

Autor: Robert Teufel (robertteufel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab gewechselt, bin den Microcontrollern aber treu geblieben. Vom besten 
ARM7 zum besten Hersteller von J-TAG Debuggern und vielem mehr.

Schon gut, schon gut, hat sich einfach angeboten (und stimmt)  ;-)

Robert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.