Forum: Mikrocontroller und Digitale Elektronik ARM-USB-OCD config File für: EFM32, LPC1768, LPC1114, LPC1343


von Daniel S. (dschwab)


Lesenswert?

Hallo

Die neuen ARM Cortex Mikrocontroller arbeiten ja unterdessen alle mit 
Serial Wire Debugger. Olimex bietet zum Programmieren dieser 
Mikrocontroller den ARM-USB-OCD mit openOCD an.

Hat jemand die konfigurationsdateien für folgende Mikrocontroller, damit 
ich die Mikrocontroller Programmieren kann?

- LPC1343
- LPC1114
- LPC1768
- LPC1766
- EFM32G880F128

Danke für die Hilfe.
Gruss, Daniel

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Daniel Schwab schrieb:
> Hallo
>
> Die neuen ARM Cortex Mikrocontroller arbeiten ja unterdessen alle mit
> Serial Wire Debugger. Olimex bietet zum Programmieren dieser
> Mikrocontroller den ARM-USB-OCD mit openOCD an.

Meines Wissens ist ARM-USB-OCD nicht direkt SWD-tauglich, eine der 
Leitungen am SWD-Interface ist bidirektional. Im Zweifel Olimex 
anfragen. Von Rowley gibt es einen Adapter (ARM SWD Adapter) zur 
Anpassung.

> Hat jemand die konfigurationsdateien für folgende Mikrocontroller, damit
> ich die Mikrocontroller Programmieren kann?

SWD wird derzeit noch nicht von OpenOCD unterstützt. Entwicklung scheint 
aber in Bewegung und wird hoffentlich nicht mehr allzu lange zu dauern.

> - LPC1343
> - LPC1114
> - LPC1768
> - LPC1766
> - EFM32G880F128

LPC17xx bieten auch "normales" JTAG-Interface. OpenOCD 
Konfigurationsdateien dafür sind zumindest im Entwicklerquellcode 
(lpc17*.cfg). Man sollte jedoch darin die Reset-Konfiguration prüfen, 
bei mir hat die aus dem Beispiel nicht zufriedenstellend funktioniert. 
Evtl. hilfreich, wenn wirklich OpenOCD im Rennen mit LPC17xx: 
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html#chanfat_lpc_cm3

von Ulrich P. (uprinz)


Lesenswert?

Hi!

Also ich starte auch gerade erst in die CortexM3 Welt, aber wenn ich die 
'Werbung' von ARM richtig verstanden habe, dann ist das doch eines der 
großen Features, nämlich dass der Core endlich einheitlich ist. Und dazu 
gehört auch JTAG.
Das Debugging sollte also ebenso über JTAG gehen, wie das Flashen. 
Jedenfalls hat beides bei meinem STM32F10x funktioniert. Mein Setup ist 
ein openocd-0.4.0 (selbst kompiliert und gegen libftdi gelinkt) und ein 
openocd-usb Dongle hier aus dem Shop.
Lediglich mit dem Zusammenspiel Eclipse+ZylinCDT und dem GDBserver von 
openocd gibt es noch Hakeleien. Oft geht es, meist erst nach ein paar 
Anläufen, gerne auch mal garnicht. Aber da bleibe ich dran.

Also ich würde mir an Deiner Stelle mal die target/stm32.cfg ansehen und 
eventuell auf Deine CPUs anpassen.

Gruß, Ulrich

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Ulrich P. schrieb:
>...
> Also ich starte auch gerade erst in die CortexM3 Welt, aber wenn ich die
> 'Werbung' von ARM richtig verstanden habe, dann ist das doch eines der
> großen Features, nämlich dass der Core endlich einheitlich ist. Und dazu
> gehört auch JTAG.
...und SWD. Die 'kleinen' CM3 von NXP (LPC11xx, LPC13xx) und die EFM32 
von Energy Micro mögen vielleicht im CortexM3-Kern noch JTAG 
unterstützen aber meines Wissens ist bei diesen lediglich eine 
SWD-Schnittstelle herausgeführt (habe selbst bis dato noch nichts mit 
SWD gemacht, nur Dokumentation überflogen).

> Das Debugging sollte also ebenso über JTAG gehen, wie das Flashen.
Anbindung und Programmierung des Flash-Speichers ist nicht Teil des 
"einheitlichen" Cores. Die Software muss entsprechende Routinen bieten. 
Gilt für OpenOCD wie für alle anderen (MDK-ARM, EWARM etc.) auch. Kurzer 
Blick über den STM32-Tellerrand z.B. in die Konfigurationen für LPC17xx 
und LM3Sxxxx (und, da griffbereit, den Quellcode von OpenOCD) zeigt die 
Unterschiede.

Ja, "Debugging" ist weniger vom Hersteller abhängig, zumindest hatte ich 
damit bisher keine Auffälligkeiten mit einigen STM32, LM3S und dem 
LPC1766.

>...

von Daniel S. (dschwab)


Lesenswert?

Hi

Hier eine Anleitung, wie man dem LPC1343 den Programmcode ins Flash 
bringt. Für den LPC1114 nimmt man FlashMagic.


Variante 1:
Der LPC1343 hat einen Programmiermodus mit dem man über USB den USB das 
Flash beschreiben kann. Erscheint der LPC1343 im Explorer als 
Massenspeicher, kann man die Datei "firmware.bin" löschen und seine 
eigene Firmware hineinkopieren. Wichtig ist, dass die Firmware als 
Binary vorliegt. Nun das Programm "checksum.exe firmware.bin" aufrufen 
(liegt im Verzeichnis: C:\nxp\lpcxpresso_3.2\bin\checksum.exe). Nun die 
Firmware auf den LPC1343 kopieren.


Variante 2:
Da die LPCXpresso ein SWD Interface mitliefern, wäre es schade dies 
nicht zu gebrauchen. Beim einstecken des SWD Interfaces erschein im 
Geräte Manager unter USB:"USB Device with DFU Capabilities". Im Moment 
kann man damit noch nicht Debuggen, da erst die Firmware für das SWD 
Interface geladen werden muss. Dies erreicht man mit folgendem Aufruf: 
"DFUAPP /f LPCXpressoWIN.enc". Das Programm inkl. die Datei sind zu 
finden unter: "C:\nxp\lpcxpresso_3.2\bin\". Nun wechselt der Text im 
Geräte Manager auf: "LPC-Link Debug Probe v1.1". Nun kann man den Flash 
des LPC1343 mit folgenden Aufrufen beschreiben:
crt_emu_lpc11_13_nxp.exe -wire=winusb -g -2 -pLPC1343 -flash-mass
crt_emu_lpc11_13_nxp.exe -wire=winusb -g -2 -pLPC1343 
-flash-load=main.bin
Der Erste Aufruf löscht das Flash und der zweite schreibt die Firmware 
ins Flash. Wichtig ist auch hier dass die Firmware als Binary vorliegt 
und mit dem Programm checksum.exe bearbeitet wurde.

Die benötigten Informationen um dies hier so beschreiben zu können, habe 
ich auf der Seite von NXP gefunden (aber wirklich sehr gut versteckt).

Nun kann man das flashen in irgend eine IDE hineinpacken.

WinARM:
Mir ist Programmers Notepad 2 lieber das in WinARM verwendet wird. 
Einfach weil er nicht so schwerfällig ist (startet so schön schnell). 
Man muss das Linker File etwas anpassen, das Makefile etwas anpassen, 
damit Binaries erstellt werden und schon laufen die Beispiele die von 
NXP herausgegeben wurden.

Die EFM32 laufen noch nicht und werde diese mal beiseite legen. Gemäss 
der Idee von LPCXpresso, sollte das SWD Interface auch für andere Boards 
funktionieren mit SWD. Irgendwie geht's aber doch nicht.

Gruss, Daniel

von Tante Käthe (Gast)


Lesenswert?

ALso bei mir läuft das Starter Kit mit EFM32G890F128 (mit Touch Panel 
und LCD) bestens:
IAR Workbench und Energy Profiler, der genial ist, wenn man die 
Energieverbraucher ermitteln will.
Schöne Produkte!

Gruß, TK

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
Noch kein Account? Hier anmelden.