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
> 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.
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
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
@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
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
@ 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 !
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
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 ?
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