Hallo. Zunächst sei mal zu sagen, dass ich ziemlich unerfahren mit dem LPC2294 bin und mich auch allgemein nicht als Großmeister der Mikrocontroller bezeichnen würde. Jedenfalls habe ich hier das Olimex LPC-H2294-Board, welches über den Olimex ARM-USB-OCD-Adapter am USB-Port hängt. Ich benutze Yagarto mit Eclipse und habe mich an dieses Tutorial gehalten. http://www.yagarto.de/howto.html Das funktioniert auch alles soweit. Allerdings sind die Programme, da ich ja nur in RAM debugge nach Trennung von der Spannungsquelle weg, und ich möchte ja dass das Programm auf dem Controller auch läuft wenn er nicht am PC hängt und er das Programm auch neustartet, nachdem die Spannung einmal weg war. Daraus folgere ich, dass ich das Programm in den Flash-Speicher schreiben muss. Ich bin dazu bereits auf das Philips Flash Utility verwiesen worden, das Problem dass ich dabei habe ist jedoch, dass es das Board nicht finden kann. Ich habe in den Systemeinstellungen den USB-Serial-Port, der bei der Installation des Boards mit installiert wurde auf COM3 gestellt, den ich auch im Philips Tool eingestellt hab, es kommt jedoch immer die Fehlermeldung "Cannot communicate with Test Board!" Muss ich den Controller anders an den PC anschließen, ist andere Software zu verwenden, gibt es sonst Einstellungen, seis an den Jumpern den Switches oder sonstwas was ich beachten muss? Oder braucht Ihr weitere Angaben um mir helfen zu können? Ich habe keine Ahnung was ich nun tun soll, und bin daher für jede Hilfestellung dankbar.
Andreas Kaiser wrote: > http://www.flashmagictool.com/ Dort bekomme ich egal was ich mache den Fehler "Operation failed. (failed to autobaud - Step 1). Habe auch schon dort im Forum gepostet, da jemand das selbe Problem hatte. Muss ich vielleicht den Olimex ARM-USB-OCD-Adapter rausnehmen und das Board direkt an USB-Port anschließen? Wenn ich das tue sucht das System nach Treibern für USB <-> Serial, die es aber nicht findet. Jemand eine Idee wo ich die herbekomme? Wofür genau ist der Adapter überhaupt da?
Sehr wahrscheinlich einen der USB to serial adapters der nicht mit Flashmagic funktioniert. Die sind alle etwas verschieden und leider tun nicht alle. Ich glaube auch DU hast was misverstanden. Flashmagic und auch das Philips Flash Programm arbeitet nicht mit USB! Es kann nur die serielle Schnittstelle bedienen. Falls das Olimexboard keine serielle anbietet bist Du auf den USB OCD angewiesen. Eigentlich denke ich Du brauchst weder Flashmagic noch sonst ein Tool. Yagarto beschreibt doch im howto wie man das Flash programmiert (zumindest glaube ich das). Hab noch nie mit dem Olimex USB OCD gearbeitet, hab ein J-Link zur Verfuegung und da tut alles problemlos. Robert
> (failed to autobaud - Step 1)
Wenn diese Fehlermeldung kommt liegt das in den meisten
Fällen daran das der Bootloader nicht gestartet wurde.
Sofern ich das richtig gelesen habe bietet das Olimex Board
einen Jumper (BL) und eine automatische Steuerung über den
Handshaking-Leitungen der RS232 Schnittstelle.
Um den Loader mit Hilfe des Jumpers zu starten muß dieser gesteckt
sein und das Board muß anschließend gestartet werden (Power-up oder
Reset).
Bei der Verwendung der automatischen Steuerung kann ein evtl.
vorhandener Resetcontroller den Start des Bootloaders zu lange
hinauszögern. Flashmagic hat dafür eine Option (Options->Advanced
options->Hardware Config->Use DTR and RTS. Da kann man die
Timeouts einstellen. Wenn ein Resetcontroller verbaut ist, sind
die Standardwerte zu knapp. Versuche es mal mit T2=500ms.
PS: Die Baudrate darf nicht über 38400 liegen. Die neueren LPCs
(23xx/24xx) können bis 115200 Baud.
> Muss ich den Controller anders an den PC anschließen Es muss eine serielle Verbindung zu UART0 des LPC berstehen. Beim genannten Olimex-Board also per on-board USB-seriell-IC. Philips Flash Tool/Flashmagic können nicht mit dem JTAG-Adatper umgehen. > ist andere Software zu verwenden Schon genanntes Flashmagic ist vorzuziehen, Philips-Tool sollte aber bei dem relativ betagten Controller auch noch funktionieren. > gibt es sonst Einstellungen, seis an den Jumpern den Switches > oder sonstwas was ich beachten muss? Ja, werde versuchen, das im Folgenden zu erklären. > Oder braucht Ihr weitere Angaben um mir helfen zu können? Auf jeden Fall erstmal den Abschnitt "On-chip Bootloader" im User-Manual lesen. > Muss ich vielleicht den Olimex ARM-USB-OCD-Adapter rausnehmen Testweise ja. Was nicht angeschlossen ist, kann nicht stören. > und das Board direkt an USB-Port anschließen? Ja, genauer eine "COM-port" Verbindung zum UART0 des LPC s.o. > Wenn ich das tue sucht das System nach Treibern für USB <-> Serial > die es aber nicht findet. Jemand eine Idee wo ich die herbekomme? www.ftdichip.com > Wofür genau ist der Adapter überhaupt da? Hoffentlich schon klar geworden > Sehr wahrscheinlich einen der USB to serial adapters der nicht > mit Flashmagic funktioniert. Eher ungewöhnlich, dass ein USB-Seriell IC nicht mir Flashmagic "will", zumindest bei eigenen Tests noch keine Probleme mit FTDI und Prolific ICs in Adapterkabeln gehabt. Allerdings nicht mir LPC2294 getestet, da keine Hardware mit diesem Controller zur Hand. Kann mir auch nicht vorstellen (=Spekulation), dass Olimex das nicht getestet hat. Wie schon erläutert, unterstützt OpenOCD - zumindest nach verfügbaren Beispielen - das "Flashen" in internen und externen (CFI) Flash-Speicher auch für diesen Controller über die JTAG-Schnittstelle. Man will möglicherweise dies und sich erst garnicht mit dem Bootloader herumplagen. Augenscheinlich unterstützt das Board nicht den Start des Bootloaders von aussen über RTS (Olimex-typische Schaltung, warum auch immer). Also ein Versuch eines "Rezepts" zum Flashen des internen Flash-Speichers mittels Bootloader ("The bootloader itself does not contain any external memory programming algorithms.") Wie schon geschrieben, habe werder dieses Controllermodell nach das Board. - Software so anpassen, dass für den internen Flash-Adressbereich gelinkt wird (muss man auch tun, wenn man mit OpenOCD "flashen" will) - rebuild - wenn nicht ohnehin schon Teil des Build-Vorgangs: Hex-Datei erzeugen (objcopy) - Stromversorgung bzw. USB-Verbindung trennen - Schalter "Boot" des Boards auf "Internal Flash" (siehe Schaltplan) - Schalter ICSP 1 so einstellen, dass das BSL-Signal über R12 nach GND gezogen wird, sollte "ON" sein, evtl. nachmessen - Schalter ISCP 2 dient dazu, das RST-Signal über "RS232" steuern zu können. Erstmal alles von Hand, also den Schalter so einstellen, dass keine Verbindung zwischen DTR und R9 besteht, wohl "off", evtl. nachmessen - USB-Verbindung herstellen (damit auch die Stromversorgung) - Reset/RST-Taste drücken und loslassen - (LPC sollte nun im Bootloader-Modus sein) - Flashmagic starten, COM-Port wählen, Baudrate erstmal relativ langsam, z.B. 19200 - Device ID auslesen (genauen Namen im Menü grade nicht erinnerlich), wenn das nicht funktioniert: nochmal von vorn und alles doppelt prüfen (oder ich habe etwas vergessen oder falsch beschreiben). Wenn ID angezeigt wird, hat man das Gröbste geschafft - Hex-Datei wählen, "flashen" mit erase der verwendeten Sektoren und anschließendem verify - Schalter ICSP 1 umschalten, Reset-Taste drücken, Programm sollte nun "losrennen" Viel Erfolg Off-Topic: >[...]hab ein J-Link zur Verfuegung und da tut alles problemlos Same procedure as every ... Manchmal fällt es mir schwer, die regelmäßige Lobpreisung des stets problemlosen, alleskönnenden und überhaupt bestimmt ganz superguten J-Link an der Lesefirewall abzublocken. Kann die geschäftlichen Motive dafür ja nachvollziehen aber es muss doch nicht immer wieder betont werden, sobald ein Thread sich auch nur ansatzweise mit ARM und/oder Anschluss über J-TAG Schnittstelle beschäftigt. Ich habe auch ein J-Link hier (ältere Hardwareversion ohne SAM7 aus einem AT91SAM7S-EK Kit) aber nutze es mangels passender Software nur bei den wenigen Experimenten mit der IAR EWARM-eval. FTDI2232-basierte Adapter, Parport-Wiggler und selbst ein altes ULINK"1" sind öfter im Einsatz. Mag sich ändern, wenn die grade laufende OpenOCD-Anpassung für J-Link fertiggestellt ist.)
> "The bootloader itself does not contain any external >memory programming algorithms." Danke, ich hatte mich gerade gefragt ob der Bootloader den externen Flashspeicher programmieren kann.
@MThomas, war nur relativ kurz bei Segger, habe keine geschaeftlichen Motive (mehr). Ich muss gestehen, dass ich immer neueste Software und teure Tools zur Verfuegung habe aber das tut einfach gut. Ich kann die Klagen ueber Funktionsprobleme von Wigglern und OCDs nur schwer ertragen. Dann wird das Forum bemueht die damit verbundenen Probleme zu beseitigen. Nichts fuer ungut, wollte einfach nur sagen, dass mir tatsaechlich etwas daran liegt den Benutzern der Microcontroller das Leben leichter zu machen und nicht in erster Linie Werbung fuer eine Firma zu machen, fuer die ich mal gearbeitet habe. p.s. wenn es das U-Link nicht nur fuer Keil gaebe, wuerde ich es ebensooft hier anpreisen denn (mindestens neueste versionen) tun einfach ;-) Aber die Fragen kommen hier immer zu umsonstigen oder niedrigpreisigen und oft weniger hochwertigen Tools, weil die anderen eben weniger Fragen aufwerfen / dafuer Support da ist. Robert
Zunächst mal Danke für die schnelle Hilfe. Mit Hilfe des FTDI-Treibers kann ich das Board nun direkt an den USB-Port anschließen, die Device-ID auslesen sowohl mit dem Philips-Tool als auch mit Flash-Magic. Die Hex-File die mir der Compiler generiert hat (das ist doch die die ich hochladen muss oder?) ist keine 2kb groß...in Flash Magic kommt die Fehlermeldung "Error Programming the Hex-File: RAM locations 0x40000120 to 0x40000FF1 are used by BootLoader. Please ensure you RAM-based firmware does not use these locations." Philips Flash Utility sagt einfach nur "Code in Hex-file exceeds Flash limitations!", meint aber wohl das Selbe denk ich. Wie kann ich denn einstellen welcher Flash-Bereich beschrieben wird bzw. was muss ich sonst anders machen? Die Sache mit den ganzen Jumpern irritiert mich allerdings. Ich hab schon öfter im Internet gelesen dass man einen BSL-Jumper setzen soll und sowas. Den Jumper gibt es allerdings gar nicht. Es gibt einen DBG-Jumper zum aktivieren und deaktivieren von JTAG, sonst keinen. Selbst auf der Olimex-Seite ist von drei Jumpern die Rede... http://www.olimex.com/dev/lpc-h2294.html In der Dokumentationsdatei gibts für die beiden ICSP-Schalter auch nur 2 Möglichkeiten: Beide ON => Enable ICSP-Programming, beide OFF => Disable ICSP-Programming...also mache ich während des Flashens beide an und danach beide aus?
Da ich meinen Beitrag nicht bearbeiten kann ein Neuer... - Software so anpassen, dass für den internen Flash-Adressbereich gelinkt wird (muss man auch tun, wenn man mit OpenOCD "flashen" will) Wo genau kann man das anpassen, bin leider noch ein ziemlicher Neuling mit Mikrocontrollern und den ganzen dazu benötigten Tools... Wie genau würde ich mit OpenOCD flashen? Dazu benötige ich doch eine andere cfg-file als für das Programmieren über JTAG. Wo bekomme ich die her bzw. wie wichtig sind Kenntnisse über die cfg-Files? Ich habe bisher jedenfalls keine. Ist ICSP - In-Circuit-Serial-Programming in etwa das selbe wie ISP? Zur Zeit versteh ichs jedenfalls in etwa so, dass man den Controller nur über den Serial Port programmieren kann ohne ihn aus dem System zu entfernen...
Steffen Krebs wrote: > Fehlermeldung "Error Programming the Hex-File: RAM locations 0x40000120 > to 0x40000FF1 are used by BootLoader. Please ensure you RAM-based > firmware does not use these locations." Wenn ein Programms ins RAM geschrieben werden soll, dann muss dieser Bereich freigehalten werden. => Linker-Script. Wenn das Programm ins ROM geschrieben werden soll, dann sollte dieser Bereich im Hex garnicht vorkommen. => Linker-Script.
@Steffen Ganz allgemein zur Memory Map im LPC2000 SRAM liegt ab der Adresse 0x40000000 Flash liegt ab Adresse 0x0 mit der Ausnahme des Bootloaders direkt nach dem Power On Reset, bitte dazu Docu LPC2294 lesen und nach Memory Map suchen. Naruerlich hat a-k absolut recht, das alles wird im Linker Script festgelegt. Falls dort falsche Adressen angegeben sind, hilft auch das beste Tool nichts, es ist halt kein Flash ab der Adresse 40000000 Robert
Ich würde mit der Suche im Makefile beginnen. Vielleicht ist das schon für eine ROM Version vorbereitet. Sieh mal nach ob es dort soetwas wie "ROM_RUN" gibt. Ansonsten könntest du auf der Seite von Martin Thomas (google nach WinARM) die Beispiele durchsehen. > Ist ICSP - In-Circuit-Serial-Programming in etwa das selbe wie ISP? Im Prinzip schon. ISP (In System Programming) ist vielleicht etwas allgemeiner, sofern man mit "Serial-Programming" die serielle Schnittstelle meint. Der Baustein läßt sich auch über JTAG programmieren. So wie es aussieht ist das auch die einzige Möglichkeit den externen Speicher zu beschreiben ohne sich einen eigenen Loader zu schreiben. Wie das mit OpenOCD funktioniert weiß ich leider nicht. Nach einigen Tagen herumprobieren habe ich die Versuche aufgegeben. Meist verwende ich den Bootloader oder aber - den JLINK ;)
ROM_RUN kann ich in der makefile nicht finden. Ich hab die makefile mal gepostet, leider bin ich momentan noch nicht imstande damit was anzufangen, ich versuch mich halt überall reinzulesen aber das ist schon ziemlich kompliziert alles, find ich. Welche Datei ist denn das Linkerskript?
Ah, ok. Das Linkerscript wird hier für den jeweiligen Anwendungsfall (RAM, ROM) direkt angegeben. In den Zeilen 54 u. 55 ist es zu tun. Da wird auf das entsprechende Script verwiesen.
LDSCRIPT= ./prj/lpc2294_ram.ld #LDSCRIPT= ./prj/lpc2294_rom.ld Okay, mit meinem äußerst laienhaften Verständnis erkenne ich dass in der makefile die obere der beiden Dateien als Linkerskript angegeben ist, da die untere ja auskommentiert ist. Hab das nunmal vertauscht...und siehe da: Es funzt :-) Tausend Dank an Alle die mir geholfen haben! :-) Aber mal was anderes: Ich hab das Gefühl mir fehlt total viel Hintergrundwissen in zig Sachen: Wie sehr sollte man sich mit makefiles, Linker Files etc. auskennen...könnt ihr sowas intuitiv selbst schreiben? Habt ihr vielleicht Seiten auf denen ich mich einlesen kann in das alles ist ja wirklich n dicker Brocken.
Unter http://www.gnuarm.org/ >> Support gibt es jede menge Doku über Linker, Kompiller usw. die Doku zur make.exe gibt es auch sicher irgendwo.
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.