Sei sulla pagina 1di 22

Debug External Processors with USBDM and Freedom Board | MCU o...

1 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

Debug External Processors with USBDM


and Freedom Board
Posted on April 27, 2013
6 Votes
Teaching at a university means to work in a very special environment. What students love is
Open Source: because it allows them to see things and learn from the technology. The
other thing is: students have a low budgets, so they appreciate if they can use inexpensive or
low-cost hardware and software. The FRDM-KL25Z Freedom board for sure meets that low
price, and no extra programming device needed.
Now they are building their own boards, and they wish to program and debug it. They can
borrow the Segger J-Links and P&E Multilinks we have available at the university. But why not
use the Freedom board as hobby debug and programming solution? As explored in Using
the Freedom Board as SWD Programmer, they can use the default factory installed
OpenSDA to program another microcontroller of same type. But not to debug it.
While writing the Using the Freedom Board as SWD Programmer article, I was looking into
USBDM. USBDM has added in January 2013 support for OpenSDA. But at that time, it was
somehow not working for me, and I had not enough time to find out what the problem was.
Time to get that fixed. Good news: With help and tips from the USBDM community, I have it
finally working

USBDM Debugging another FRDM-KL25Z

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

2 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

USBDM is a free open source (GPLv2) debugging/programming interface for a range of


Freescale microntrollers.
Note: USBDM is *not* OSBDM. OSBDM (or OSJTAG) is an older free
debugging interface present on many of the Freescale Tower Boards.
It currently supports CodeWarrior and CodeSourcery Eclipse. With it, I wanted to overcome
the OpenSDA limitation and using it as general purpose debug/programming device with
CodeWarrior for MCU10.3.
USBDM comes with a standalone flash programmer and scripting engine.
But I had not had the time to look into that (yet).
Installation
The installer is available for download from http://sourceforge.net/projects/usbdm/files
/Version%204.10.4/Installation/ (USBDM_4_10_4a_Win.msi).

USBDM_4_10_4a_Win.msi

Initially I had used the USBDM_4_10_1_Win.msi (the one without the


a. It worked at the beginning, somehow I ran into connection problems later
on. Note sure what has caused this, maybe the problem I describe at the end
of this post. So I decided to go with a fresh MCU10.3 (b121211), installed the
USBDM_4_10_4a_Win.msi, and since then things are working ok.
The setup provides the flexibility only to install what is needed:

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

3 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

USBDM Setup

In above dialog, I need to verify/specify the path to my CodeWarrior


installation.
I would have expected that this would install the drivers for me too. Maybe it does, but it did
not work for me. What I had to do is download the USBDM_Drivers file
(USBDM_Drivers_1_0_1_Win_x64.msi for my Windows7 64bit machine) from
http://sourceforge.net/projects/usbdm/files/Version%204.10.4/Installation/ and to install it.

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

4 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

USBDM_Drivers for Windows

Not sure if this was just a problem with my machine, but: afterwards my
OpenSDA/OSBDM/OSJTAG device drivers did not enumerate properly. I had
to browse to the driver files e.g. in C:\Freescale\CW MCU v10.3\Drivers
\P&E\Drivers\osbdm to have them installed again.
OpenSDA USBDM Firmware Installation
For OpenSDA, I need a special firmware. I did download the USBDM_OpenSDA firmware zip
file:

USBDM_OpenSDA Firmware

Then updated the firmware on the Freedom board, following the instructions in the
OpenSDA.txt in the archive. After that, the device should enumerate properly as USBDM
BDM Interface:

CodeWarrior for MCU10.3

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

5 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

If everything is working out, you should have now an extra connection setting in the new
bareboard project wizard:

USBDM in the new project wizard of CodeWarrior

I dont know why, but for whatever reason this option and the
corresponding functions (debug connections) were not showing up in
CodeWarrior first. Since I tried it the first time (and it did not work), I have
for sure rebooted my machine. Fact is: it is working now

. So if you see the

same issue, maybe a reboot or re-running the setup will help.


To verify that things are properly installed, I can check the plugin using the Help > About
dialog, then press Installation Details button:

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

6 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

USBDM Debug Connection Plugin

It adds a new Connection Type to the CodeWarrior debugger: USBDM ARM Interface

USBDM ARM Interface

It is very easy to switch between the original OpenSDA and USBDM:


simply USBDM ARM Device from that drop-down box.
By default, it has set up a connection speed of 1.5 MHz: I was able to increase it to 12 MHz
and that worked fine:

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

7 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

USBDM Connection Speed

Using USBDM as SWD Debugging Probe (FRDM-KL25Z to FRDM-KL25Z)


To use USBDM on FRDM-KL25Z to debug another external processor, following is needed
1. Having a 10pin ARM Cortex Debug (SWD) header populated on two boards
2. Connecting the two boards with a 10pin flat cable
3. Having J11 cut on the master board to disconnect the SWD clock from the resident
processor
4. No change needed on the slave board to be debugged.
And indeed: this worked :-): Im able to use my USBDM to debug the other KL25Z Freedom
board:

Two boards hooked up for debugging

FRDM-KL25Z debugging FRDM-K20D50M

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

8 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

Debugging the FRDM-K20D50M with the FRDM-KL25Z the same way as debugging the the
FRDM-KL25Z above:

FRDM-KL25Z debugging FRDM-K20D50M

As above, the master boards needs to have the J11 trace disconnected.
Using FRDM-KL05Z to Debug an External Board
Next one is the FRDM-KL05Z. However, this did not work out of the box. Until I have found
this post in the Freescale Forum: The problem is a wrong wiring to the J6 header: the
OpenSDA signal from U4 goes to pin1 of J6, and this pin1 goes as well to the KL05Z. This
means that it is not possible to disconnect the OpenSDA from the KL05Z

. The solution is

to cut a trace and connect it to either pin 4 of J1 (SWD header) or to pin2 of J1. I did the
second solution.
First, I need to cut the J6 trace:

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

9 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

Cutting J6 Connection on FRDM-KL05Z

I always install a jumper afterwards so I can undo the cut.


For the next step, a magnifying glass or a microscope is a good thing, plus some good
soldering skills :-): I need to re-route the Pin11 from U4 to Pin2 of J6. For this I need to cut
the trace just before the via hole to the KL05Z:

Cutting Trace on FRDM-K05Z

After that, install a wire to route the Pin11 of U4 to Pin2 of J6:

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

10 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

Wire to re-route Signal

Instead to Pin2 of J6, the signal can be routed to Pin4 of J1 instead. But J6
was much easier to do for me.
With this, the FRDM-KL05Z is prepared to debug an external processor:
With J6 removed, I can debug an external processor
With J6 installed, I debug the KL05Z processor on the FRDM-KL05Z board

FRDM-KL05Z debugging FRDM-KL25Z

Same way it works to debug the FRDM-K20D50M:

FRDM-KL05Z debugs FRDM-

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

11 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

Note: I have not managed to debug the changed FRDM-KL05Z say from the
FRDM-KL25Z or FRDM-K20D50M. Im using a pre-production board here,
so this might be the reasons. I can debug the other Freedom boards with the
FRDM-KL05Z, just not the other way round. I have solved this problem, see
Debugging FRDM-KL05Z with USBDM.
FRDM-K20D50M debugging FRDM-KL25Z
This time the FRDM-K20D50M hooked up to the FRDM-KL25Z: For this I have to cut/remove
the jumper J11 on the FRDM-K20D50M:

FRDM-K20D50M debugging FRDM-KL25Z

Why a professional Probe is a Good Thing: bad FRDM-KL25Z Board


Then I tried it with another FRDM-KL25Z board: A student used that board in my class, and
somehow managed to break the OpenSDA on it: it keeps staying in MSD bootloader mode,
and cannot be debugged through OpenSDA.
So tried to debug that board with USBDM too, but I received Failed to resume target
process error message:

Failed to resume target process

I tried different powering (just in case) and even have cut the J11 and J3 to disconnect

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

12 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

OpenSDA power and SWD clock:

Cut J3 and J11 Connection

But this did not help

However, with the P&E Multilink Im still able to debug that board with the SWD debug header
. So there are definitely good reasons to use a probe like this: to recover from cases
where USBDM cannot help. As always: as second source and backup is what an engineer
always needs.
The other problem I was running into was this one with a 60 KByte application:

Failed to resume target process

Not sure if I have hit a limit, but after that I had to restart Eclipse to
recover from this issue, as any other USBDM debug session failed. Maybe it
has corrupted the DLL? In any case, I need to follow up on this.
Summary
With USBDM, I have an Open Source run control solution with CodeWarrior and the Freedom

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

13 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

boards. So far I just have explored OpenSDA Freedom boards, but it should support boards
and microcontroller beyond that: I can now download *and* debug other microcontroller with
the Freedom board

. What Im missing with USBDM is the USB CDC support which the

original OpenSDA provides (or I have not seen how to enable that).
While professional solutions like P&E and Segger worked for me out of the box, I had to
invest time to get USBDM up and running. After that, it was working nicely. Spending that
extra time is like with any other Open Source projects I did or used: I trade in time for less
costs, or to learn new things on return. I hope that this article saves you some time and is
useful for you.
Many thanks and kudos to pgo, dieter and Brion for their help and posts, and all the ones
who developed USBDM!
Happy USBDMing
Links
USBDM Version 4.10.4 announcement: https://community.freescale.com/thread/303257
USBDM Documentation on SourceForge: http://usbdm.sourceforge.net/
USBDM Project on SourceForge: http://sourceforge.net/projects/usbdm/
USBDM Sources on GitHub: https://github.com/podonoghue
USBDM/OSBDM discussion forum: https://community.freescale.com/community/bdm

S H AR E TH IS :

G O O G LE +
Erich Styger

44

Be the first to like this.

Using the Freedom Board


as SWD Programmer

USBDM 4.10.5 supports


now MCU10.4

Using the FRDM-KL25Z


with CMSIS-DAP to
program non-Freescale
ARM Microcontrollers

This entry was posted in Boards, CodeWarrior, Debugging, Eclipse, Embedded,


K20D50M Freedom Board, Kinetis, KL05Z Freedom Board, KL25Z Freedom Board, Tips
& Tricks and tagged CodeWarrior, Debugging, Flashing, freedom board, K20D50M

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

14 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

Freedom Board, KL05Z Freedom Board, KL25Z Freedom Board, open source projects,
OSBDM/OSJTAG, P&E, technology, Tips&Tricks, USBDM by Erich Styger. Bookmark
the permalink [http://mcuoneclipse.com/2013/04/27/debug-external-processorswith-usbdm-and-freedom-board/] .
33 THOUGHTS ON DEBUG EXTERNAL PROCESSORS WITH USBDM AND FREEDOM BOARD

Pingback: Debugging FRDM-KL05Z with USBDM | MCU on Eclipse


Pingback: Serial Bootloader for the Freedom Board with Processor
Expert | MCU on Eclipse
Pingback: Can MCU10.4 recover a bricked OpenSDA Freedom
Board? | MCU on Eclipse
Pingback: Adding USBDM to CodeWarrior for MCU10.4 | MCU on
Eclipse

Allan K Liu
on May 14, 2013 at 03:47 said:

Does it work for Iar ewarm? I am designing a general purpose USB


OTG board based upon KL25Z.

Erich Styger
on May 14, 2013 at 07:41 said:

Hi Allan,
USBDM does not support IAR (to my knowledge). But I just
saw this: http://www.segger.com/opensda.html
I need to try this out shortly, and if I do this, Ill write a post in
my blog.
I hope this helps.

Pingback: Freedom Board with Segger OpenSDA Debug Firmware |


MCU on Eclipse

Bill Lewis
on July 8, 2013 at 17:05 said:

I am considering trying a MK20DN512VLK10 on a by-hand wired


prototype. Do you suspect USBDM would be able to program and

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

15 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

debug one of those chips?

Erich Styger
on July 8, 2013 at 17:11 said:

Hi Bill,
I did it with the K20D50M on the FRDM-K20D50M board, so
this should work.

warcomeb
on July 16, 2013 at 11:05 said:

Hi Erich,
I using Universal Multilink rev.A with MKL15128VLH4. I have
connected in a dummy board SWD_DIO, SWD_CLK, TVCC, RESET
and GND on PORT G. I try to program microcontroller by CW 10.3
or CW 10.4 but I fail and the software tell me that this isnt possible
to connect to the programmer do you know any issue on this
microcontroller with U-Multilink? Can you help me? I choose this
microcontroller for two project and now Im desperate!
Thanks
Marco

Erich Styger
on July 16, 2013 at 11:15 said:

Hi Marco,
no I have not seen any issues on my side with using the P&E
Multilink to program Kinetis devices, at least not such kind of
issues. Does it work with a non-custom board? Like the
FRDM board (solder the SWD header on it). That way you
know your setup is working. Then check your wiring to the
KL15. Best if you do it like e.g. on the FRDM board to make
sure you have the traces right, with the proper resistors/etc.
For our boards we replicated 11 the schematics as on the
FRDM boards, and this worked very well.
I hope this helps.

warcomeb
on July 16, 2013 at 11:33 said:

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

16 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

Thanks for the replay!


I have the same issue with FRDM-KL25 at this
point I think that U-Multilink is broken! what do you
think?
Thanks
Marco

Erich Styger
on July 16, 2013 at 12:15 said:

Have you configured it to use SWD (use SWD reduced pin protocol for communication)? Note that if
you use the JTAG protocol, this will not work, you
need SWD enabled. See bitmap USB Multilinke instead of OpenSDA in CodeWarrior

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

17 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

warcomeb
on July 16, 2013 at 12:45 said:

Yes I have setted this check in the configuration box!

Erich Styger
on July 16, 2013 at 12:58 said:

Maybe check the SWD cable (orientation, broken wires). It


happend to me that I had a bad cable. Otherwise: get in
touch with P&E support?

warcomeb
on July 16, 2013 at 14:25 said:

Yes, I tested this solutions I contacted the technical


support of P&E, without results, their solutions have
not worked.

Marko
on September 2, 2013 at 11:01 said:

Im going to use a Kinetis KL15 for my project but I have a FRDM


KL25Z board where I have tested some code. Am I able to program
my KL15 with the FRDM KL25Z board?

Erich Styger
on September 2, 2013 at 18:10 said:

Hi Marko,
In general, the answer is no. But it all depends on what you
are using: the instruction set and the main core is the same.
But the peripherals and memory map very likely is different.
Then it will not work. But I think for very simply things you
could do this. But no guarantee.

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

18 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

Pingback: Getting Started with ARM Microcontrollers | Mobile


Communication & Coding Laboratory

Jems
on December 17, 2013 at 17:36 said:

Hi Erich !
I read many article that you post ! I can not thank you enough for all
this share !
I did the DIY about the toolchain and also the Debug External
Processors with USBDM and Freedom Board but there is little
things knotted on my mind !
I would like to program now a TWRK70 with the freedomboard
KL25! But i was asking me if a software existing to use USBDM
without using CW. I mean is there something that could be running
on KEPLER ?
Thanks again !

Erich Styger
on December 17, 2013 at 19:56 said:

Hi Jems,
the KL25Z has a SWD debug interface, while the K70 has
JTAG. So you cannot use the KL25Z (OpenSDA SWD) for
this. And to my knowledge USBDM is only supported by
CodeWarrior.

Karibe
on February 14, 2014 at 17:14 said:

Yeah, this is the problem i had with the boards today as i told you,
So it doesnt work yet, even after I cut J6, I was still debugging the
onboard controller

. Until I cut and jump that trace

Karibe
on February 15, 2014 at 09:20 said:

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

19 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

I have no idea why my custom kl05z board will not work, I checked
the pinout over and over agani, nothing wrong. Both freedom boards
FRDM-KL25Z and FRDM-KL05Z are able to debug my kl24z custom
board, but openocd just gets an error on the kl05z board at the end
of initialization:
Info : only one transport option; autoselect cmsis-dap
Info : CMSIS-DAP: SWD Supported
Info : CMSIS-DAP: Interface Initialised (SWD)
Info : add flash_bank kinetis kl05.flash
cortex_m reset_config sysresetreq
adapter speed: 50 kHz
Info : CMSIS-DAP: FW Version = 1.0
Info : SWCLK/TCK = 0 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST =
0 nRESET = 0
Info : DAP_SWJ Sequence (reset: 50+ 1 followed by 0)
Info : CMSIS-DAP: Interface ready
Info : clock speed 50 kHz
Info : IDCODE 0x0bc11477
Error: CMSIS-DAP: Write Error (004)
Info : kl05.cpu: hardware has 0 breakpoints, 0 watchpoints
Error: CMSIS-DAP: Write Error (004)
Polling target kl05.cpu failed, GDB will be halted. Polling again in
100ms
Error: CMSIS-DAP: Read Error (004)
Polling target kl05.cpu failed, GDB will be halted. Polling again in
300ms
Error: CMSIS-DAP: Read Error (004)
Polling target kl05.cpu failed, GDB will be halted. Polling again in
700ms
Error: CMSIS-DAP: Read Error (004)
Polling target kl05.cpu failed, GDB will be halted. Polling again in
1500ms
Error: CMSIS-DAP: Read Error (004)
Polling target kl05.cpu failed, GDB will be halted. Polling again in
3100ms
I think i will stick with the kl24z for now

and redo my boards.

Karibe
on February 15, 2014 at 13:04 said:

At least I can report that I am able to debug either of the two


freedom boards using the other, and the kl24z custom board
from either as well.

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

20 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

Amreen
on May 27, 2014 at 13:03 said:

Hello Erich,
I want use this USBDM with Freedom Board to debug another
board.
I am using KL25Z128 controller.
I have my old code without USBDM in it.
So in debug configuration setting i added new connection for
USBDM and i added USBDM target.
Now i can Run or debug the code only for the first time.
But after reconnecting the board i am not able to burn the code.
Error occurred as : -Failed to resume target process.
I have created new project with USBDM addition.
It is working. But I want the USBDM in my previous project.
Is it possible to add new connection through debug configuration
setting?
Please suggest if I am missing something.
Or I need to create new project?
Regards,
Amreen

Erich Styger
on May 27, 2014 at 21:35 said:

Hi Amreen,
yes, you can add/create a new debug configuration any time.
But your problem looks more like a USBDM problem? I just
saw that there is a new versio nof USBDM out now, so you
might give it a try.

Durgesh
on June 6, 2014 at 12:08 said:

Hello Erich,
I have followed the same procedure as above to program my target
board(with MKL25Z32M4 MCU) using freedom board.

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

21 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

Its giving the same error


Failed to resume target process., Downloading binary to target

Erich Styger
on June 6, 2014 at 14:00 said:

Hello Durgesh,
can you verify that it works with another FRDM-KL25Z
board? I suggest to check your wiring. Failed to resume target processor means that it is not able to reset and halt the
processor, so have a look at the reset line.
I hope this helps.

Durgesh
on June 6, 2014 at 15:14 said:

Hello Erich,
Thanks for replying.
Before cutting the J2, I have downloaded the test
code onto freedom board through SWD debug
header. It worked fine. That means my SWD connections are correct.
Again I could able to program my target(MKL25Z32M4) using Multilink through SWD. So
my target board SWD connections are also correct.
But i am unable to program my target(MKL25Z32M4)
using my freedom board(both are connected with
SWD),after cutting J2

Erich Styger
on June 6, 2014 at 18:31 said:

What debug firmware do you have on the FRDM


board?

Durgesh
on June 6, 2014 at 15:16 said:

22/07/2014 11:03 p.m.

Debug External Processors with USBDM and Freedom Board | MCU o...

22 of 22

http://mcuoneclipse.com/2013/04/27/debug-external-processors-with-u...

Sorry I have typed J2 instead of J11 in before reply

Durgesh
on June 9, 2014 at 16:50 said:

I have USBDM HCS08 programmer on my freedom


board.
As you have suggested, I have tried to program another freedom board with USBDM. Its working fine.
Another thing I want to mention is I have programmed
my target controller using ARM Programmer(Flash
Programmer) tool of USBDM, through Freedom
board. Its working.
I am unable to guess what could be the problem of
same USBDM while working with codewarrior to program different microcontroller(other than the freedom
board)?
I want to program my target with codewarrior using
USBDM as it provides me debugging facility.
Guide me if there is any other debugging work I need
to do
Is there any way to log my information to you, If i
dont find any solution.
Thanks in advance

Erich Styger
on June 9, 2014 at 18:21 said:

I suggest that you ask the forum on http://sourceforge.net/projects/usbdm/ as additional help on


USBDM.

22/07/2014 11:03 p.m.

Potrebbero piacerti anche