JTAG-Programmierung mit LPC4330

Da das Beispielprojekt für virtuelle serielle Geräte von NXPUSBLib ein Leerzeichen in seiner Verzeichnisstruktur enthält (insbesondere Example_VirtualSerialDevice/LPC43xx M4/...), kann ich Code nicht erfolgreich über das GUI-Programmiertool in LPCXpresso herunterladen.

Also habe ich versucht, eine Binärdatei zu kompilieren und auf den M4-Kern meines LPCXplorer4330 herunterzuladen. Dies führt zu dem Fehler, der am Ende dieses Beitrags enthalten ist.

Haben Sie Vorschläge, wie ich Code herunterladen kann? Ich verwende Ubuntu 12.10 x32 und den LPC-Link-JTAG-Programmierer.

Ich habe die Dateiberechtigungen vierfach überprüft und mehrere Kombinationen von AXF-Dateien oder BIN-Dateien ausprobiert.

Danke schön!

$ crt_emu_lpc18_43_nxp -wire=winusb -pLPC4330 -vendor=NXP -flash-load-exec=~/Desktop/Example_VirtualSerialDevice.bin -load-base-address=0x14000000
Ni: LPCXpresso Debug Driver v4.0 (Sep 19 2012 09:15:29)
Nc: Looked for chip XML file in /usr/local/lpcxpresso_4.3.0_1025/lpcxpresso/bin/LPC4330.xml

Nc: Looked for vendor directory XML file in /usr/local/lpcxpresso_4.3.0_1025/lpcxpresso/bin/nxp_directory.xml

Nc: Found generic directory XML file in /usr/local/lpcxpresso_4.3.0_1025/lpcxpresso/bin/crt_directory.xml

Nc: Emu(0): Conn&Reset. DpID: 2BA01477. Info: LPCLINK_1_1
Nc: SWD Frequency: 3000 KHz. RTCK: False. Vector catch: False.
Nc: Packet delay: 0  Poll delay: 0.
Nc: NXP: LPC4330  Part ID: 0x00000000
Cr:v Registered license, download limit of 128K
Et:58: Cannot open binary file 'Example_VirtualSerialDevice.bin'
Wie groß ist die Binärdatei? Ist es größer als 128kb? Haben Sie (mit ls -l ~/Desktop/Example_VirtualSerialDevice.bin ) überprüft, ob sich die Datei wirklich an der von Ihnen angegebenen Stelle befindet?

Antworten (1)

Ich bin mir nicht sicher, welches Entwicklungsboard Sie hier verwenden, also YMMV damit, aber:

1) Verwenden Sie direkt JTAG mit einem Tool wie OpenOCD. Wenn Sie wie ich den lpc4330-xplorer haben, kann dies jedoch etwas schwierig sein (wenn Sie versuchen, die Flash-Boot-Konfiguration dieses Boards zu debuggen (1-on, 2-off, 3-off, 4-off auf dem Konfigurations-DIP-Schalter), dann ist in 99,9 % der Fälle ein doppelter Reset erforderlich (ich habe ein oder zwei Mal gesehen, wo dies NICHT der Fall war). Nach allem, was ich gefunden habe, war dies auf einen Siliziumfehler zurückzuführen. Jedenfalls lade ich normalerweise keinen Code auf diese Weise.

2) Verwenden Sie das NXP-Onboard-Bootrom, um Ihren Code zu laden. Es funktioniert mit USB0 des lpc4330. Da Sie Ihr Entwicklungsboard wahrscheinlich mit Strom versorgen müssen, ist dieses wahrscheinlich bereits angeschlossen (es sei denn, Sie haben einen separaten Netzstecker). Die Werkzeuge, die Sie benötigen, sind diese:

http://www.lancos.com/lpc_dfu-1.02.tar.gz

Dies kommuniziert mit dem SPIflash-Bootloader von NXP (der im Tar enthalten ist). Sie benötigen außerdem eine aktuelle Kopie von dfu-util. Ich benutze 0.7, aber es gibt viel neuere Versionen. Auf jeden Fall, um in den RAM zu schreiben:

dfu-suffix -a filename -v 0x1fc9 -p 0x000c
dfu-prefix -a filename -L
dfu-util -D filename

Dadurch wird Ihr Code direkt in den Arbeitsspeicher gestellt und ist lauffähig. Der erste Befehl liefert DFU die Informationen zum Auffinden Ihres Entwicklungsboards (daher haben Sie hier möglicherweise ein anderes Vid und eine andere PID). Der zweite Befehl fügt den LPC-Header in die Binärdatei ein, damit der Bootloader ihn verwenden kann. Der letzte Befehl sendet es. Denken Sie daran, dass dies NUR FUNKTIONIERT , wenn Sie eine RAM-Konfiguration verwenden. Das bedeutet, dass JEDE LINKER-DATEI, DIE SIE VERWENDEN, IHREN CODE IN DEN RAM SPEICHERN MUSS! Lies das letzte nochmal. Wenn Sie etwas bauen und es für FLASH verknüpfen und es dann in den RAM schreiben, wird dies fehlschlagen und Ihr Prozessor wird dort sitzen und ungefähr so ​​​​aktiv aussehen wie der Sand, aus dem er gemacht wurde. Wenn Sie den Code flashen möchten:

1)dfu-util -d 0x1fc9:0x000c -D iram_dfu_util_spiflash.bin.hdr

2)lpcdfu -d 3 -e -D "filename" -U -L "logfile name" -C "command logfile" -A 0x14000000

Dies sendet zuerst den Spiflasher. Zweitens verwendet es lpcdfu, um mit dem Spiflasher-Code zu kommunizieren. Jetzt funktioniert dies für einen lpc4330-xplorer. Wenn Sie ein ANDERES Entwicklungsboard haben, das KEINEN Spiflash hat, wird dies wahrscheinlich nicht funktionieren, aber die erste Methode wird Ihnen immer noch erlauben, dass Ihnen der RAM ausgeht. Stellen Sie wie zuvor sicher, dass Ihr LINKER-SKRIPT HIER FÜR FLASH ENTSPRECHEND KONFIGURIERT IST. Lesen Sie das noch einmal. Wenn Sie dies nicht tun, sieht Ihr Prozessor wieder wie Strandsand aus, da er nicht richtig bootet.

Da Sie LPCXpresso verwenden, können Sie in ihren Dateien stöbern (ich habe das nicht getan, aber sie müssen dieses Zeug irgendwo haben) und sehen, ob Sie finden können, welche Dateien sie für Linker-Dateien verwenden. Ich habe mein eigenes geschrieben, da ich nicht wirklich daran glaube, diese seltsamen Tools für die eingebettete Entwicklung zu verwenden, aber ich mag es wirklich, genau zu wissen, wohin mein Code geht.

Viel Glück beim Programmieren Ihres Geräts.