Erste Experimente mit XMC2Go & Linux

OP #3557847
Lesenswert?

Ich habe jetzt mal ausprobiert, in wie weit man mit Linux auf den XMC2Go 
zugreifen kann. Segger bietet ja unter 
http://www.segger.com/jlink-software.html ja eine CLI Software für Linux 
an. Ich habe die .tgz 32 bit Software ausgewählt. Die Eingabe der 
Seriennummer umgeht man, in dem man "I do not have a serial number 
because I own an eval board with J-Link on-board. How can I download 
J-Link software for it?" auswählt.

Laut README.txt im Archiv muss man die Datei "99-jlink.rules" nach 
/etc/udev/rules.d/ kopieren. Neustart...

Jetzt kann man mit JLinkExe auf den XMC2Go zugreifen.
1
klaus@LittlX:~/JLink_Linux_V480h_i386$ ./JLinkExe 
2
SEGGER J-Link Commander V4.80h ('?' for help)
3
Compiled Feb 28 2014 21:50:35
4
DLL version V4.80h, compiled Feb 28 2014 21:50:32
5
Firmware: J-Link Lite-XMC4200 Rev.1 compiled Jan 10 2014 20:31:33
6
Hardware: V1.00
7
S/N: 591013957 
8
VTarget = 3.300V
9
Info: TotalIRLen = ?, IRPrint = 0x..000000000000000000000000
10
Info: TotalIRLen = ?, IRPrint = 0x..000000000000000000000000
11
No devices found on JTAG chain. Trying to find device on SWD.
12
Info: Found SWD-DP with ID 0x0BB11477
13
Info: Found Cortex-M0 r0p0, Little endian.
14
Info: FPUnit: 4 code (BP) slots and 0 literal slots
15
Cortex-M0 identified.
16
Target interface speed: 100 kHz
17
J-Link>

Ein paar Commandos gehen, andere anscheinden nicht.
h (Halt) und g (Go), mem, savebin gehen. r (Reset) nicht:
1
J-Link>r
2
Reset delay: 0 ms
3
Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit.
4
Info: SYSRESETREQ has confused core. Trying to reconnect and use VECTRESET.
5

6
WARNING: Failed to reset CPU. VECTRESET has confused core.
7

8
WARNING: CPU did not halt after reset.
9

10
WARNING: CPU could not be halted
11
Info: Core did not halt after reset, trying to disable WDT.
12

13
WARNING: CPU did not halt after reset.
14

15
WARNING: CPU could not be halted
16

17
WARNING: Could not set S_RESET_ST
18
Info: SYSRESETREQ has confused core. Trying to reconnect and use VECTRESET.
19

20
WARNING: Failed to reset CPU. VECTRESET has confused core.
21

22
WARNING: CPU did not halt after reset.
23

24
WARNING: CPU could not be halted
25
Info: Core did not halt after reset, trying to disable WDT.
26

27
WARNING: CPU did not halt after reset.
28

29
WARNING: CPU could not be halted
30

31
WARNING: Could not set S_RESET_ST
32
J-Link>

loadbin habe ich jetzt wegen eines noch fehlenden, passenden Programmes 
nicht ausprobiert. Unter 
http://www.infineon.com/cms/de/product/microcontrollers/32-bit-industrial-microcontrollers-based-on-arm-registered-cortex-tm-m/32-bit-xmc4000-industrial-microcontrollers-arm-registered-cortex-tm-m4/xmc-development-tools-software-and-kits/xmc-2go/channel.html?channel=db3a304344134c7a01441ff8216974d9 
(puh, was für ein Link) findet man die "Initial Start" Software. Mal 
sehen, ob ich das Linker Script für meinen arm-none-eabi-gcc 4.8.3 
nehmen kann und ich das kompiliert bekomme. Ich bevorzuge Makefiles, 
weniger Eclipse & Co.
OP #3557861
Lesenswert?

Hm... erase geht irgendwie auch nicht:
1
J-Link>device SWD-DP
2
Info: The selected device "SWD-DP" is unknown to this version of the J-Link software.
3
Info: Selected "UNSPECIFIED".
4
Info: Device "SWD-DP" selected (0 KB flash, 0 KB RAM).
5
Reconnecting to target...
6
Info: Found SWD-DP with ID 0x0BB11477
7
Info: Found Cortex-M0 r0p0, Little endian.
8
Info: FPUnit: 4 code (BP) slots and 0 literal slots
9
J-Link>erase
10
Erasing device (Unspecified)...
11
Erasing done.
12
J-Link>g
Das Geblinke geht munter weiter... oder missverstehe ich "erase"? Das 
"device" Kommando vor "erase" scheint wichtig zu sein, ohne wird erase 
nicht angenommen.
OP #3557868
Lesenswert?

Die Seite http://www.segger.com/jlink-flash-download.html Abschnitt 
"Download into flash memory for development purposes" am Ende der Seite 
beschreibt, wie man mit JLinkExe flashen kann. Leider scheint dazu ein 
funktionierendes Reset-Kommando nötig zu sein. Ich habe es jetzt mal 
ohne probiert:
1
J-Link>loadbin xmc2go.bin 0x10001000
2
Loading binary file... [xmc2go.bin]
3
Writing bin data into target memory @ 0x10001000.
4
J-Link>g
5
J-Link>verifybin xmc2go.bin 0x10001000
6
Loading binary file xmc2go.bin
7
Reading 1472 bytes data from target memory @ 0x10001000.
8
Verify failed @ address 0x10001098.
9
Expected C0 read 40J-Link>g
Obwohl eine Fehelmeldung kommt, blinkt es nach wie vor. Entweder wird 
gar nichts geflashed oder es liegt ein anderes Problem vor. Das binary 
xmc2go.bin habe ich aus dem XMC2Go_Testprogram_V1.1.elf mittels
1
arm-none-eabi-objcopy -O binary XMC2Go_Testprogram_V1.1.elf xmc2go.bin
aus der Initial-Start-Software von Infineon generiert. Evtl. sollte ich 
mal direkt bei Segger nachfragen.
Gast #3561682
Lesenswert?

Hi Klaus,

also, ich steige mal in den "Monolog" (inzwischen sind ja auch andere 
dabei) ein...

1) Der J-Link Commander muss das Device kennen, damit er die 
Flash-Programmierung durchführen kann. "SW-DP" ist kein gültiger 
Device-Name...
Eine Liste von gültigen Device-Namen findest Du hier:
http://www.segger.com/jlink_supported_devices.html

2) Die Infineon XMC-Serie ist etwas "speziell", besonders was Reset ("r" 
Kommando) angeht. Damit dieser funktioniert, muss ebenfalls das Device 
bekannt sein.

3) Auf dem XMC 2Go ist meines Wissens nach ein ein XMC1100 mit 64KB 
Flash verbaut.
Korrektes Device wäre also "XMC1100-0064"

Wir (SEGGER) empfehlen aber generell, dem J-Link schon beim Connect das 
Device mitzuteilen.
Demnach sollte Dein Aufruf für den J-Link Commander, wie folgt aussehen:

./JLinkExe -device XMC1100-0064 -if SWD -speed 4000

Funktionieren nun:
Reset ("r")
loadbin
erase

?

Kurzes Feedback wäre nett.

Gruß,
Alex
#3563745
Lesenswert?

SEGGER - Alex schrieb:
> Wir (SEGGER) empfehlen aber generell, dem J-Link schon beim Connect das

Hi Alex,

schoen dass Du hier hilfst. So bin ich darauf aufmerksam geworden, dass 
ihr Manuals anbietet um freie Software fuer das JLink zu erstellen. 
Respekt!

Nun spiele ich mit dem Gedanken, mir ein JLink zuzulegen, um per JTAG zu 
programmieren und vielleicht mal etwas zu debuggen. Ich brauch normal 
keinen Debugger ausser meinem Hirn ;-) Folglich hab ich mich mit der 
Thematik noch nicht auseinandergesetzt.

Meine Vorgaben sind allerdings recht strikt:
Auf mein System (Gentoo Linux, 64bit) kommt nichts vorkompiliertes, d.h. 
Source Code und bauen oder es kommt NICHT drauf. Ich installier keinen 
Licence key und tipp keine Aktivierungscodes oder eine Seriennummer ein. 
Wenn ich schon etwas ehrlich kaufe, dann will ich 'ne Leistung dafuer, 
nicht Pflichten und Kryptospielchen.

Ich brauche keine IDE, Kommandozeile reicht.

Targets: ARM, sonst nichts.

Nun variiert die Preisspanne der JLink in eurem Webshop beachtlich. Ich 
denke der JLink BASE waere die richtig Wahl fuer mich?
Mit der Software bin ich vermutlich (bei meinen Vorgaben) bei OpenOCD 
richtig!? Und das JLink BASE braucht dann nicht doch wieder irgendwo 
eine Seriennummer, einen Aktivierungscode oder aehnlich im Protokoll 
versteckt?
OP #3564010
Lesenswert?

Hallo Alex,

SEGGER - Alex schrieb:
> ./JLinkExe -device XMC1100-0064 -if SWD -speed 4000
>
> Funktionieren nun:
> Reset ("r")
> loadbin
> erase

ja, das wars. Flashen, Reset, Erase usw. funktioniert. Super, Danke!
Es ist schon toll, wenn man so unkompliziert Support bekommt. Ich war 
(bis jetzt) kein JLink Benutzer und bin erst durch das XMC2Go darauf 
gekommen. Funktioniert gut (wenn man weiß, wie). Es ist schon toll, dass 
ihr auch Linux Support liefert. Das ist nicht selbstverständlich!

Danke, Klaus
Gast #4140100
Lesenswert?

Welche Adresse hast du den bei dem Befehl loadbin angegeben? Wenn ich 0 
angebe scheint er dies zu tun und meldet OK, jedoch geht danach nichts 
mehr.

Stecke ich es wieder aus/ein dann ist wieder die original Anwendung 
drauf.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren