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
@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
@ 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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.