Microchippin'

related: embedded , microchip , PIC , MPLAB , MPLAB X

If I were to describe MPLAB X, the NetBeans-based IDE that Microchip is pushing as the primary development suite for all new PIC32 projects, I believe I would leave it at simply: insufferable.

It is swell that Microchip is kind enough to provide a free IDE to sit on top of free compilers and interface with quite inexpensive debuggers.  But the experience of using said tools isn’t exactly pleasurable.  And, as I recently found out, shelling out lots and lots of cold hard cash for their premium products… doesn’t really improve things much on the tools front.

I have one concern, in particular, that seems totally inexplicable.  Who ships a development suite with NO FUNCTIONAL COMMAND-LINE DEBUGGER?  Forcing me to use your unstable IDE is already bad enough, but when your IDE isn’t even functional, how am I expected to debug my code?

Microchip keeps stating that better command-line support is planned for some unnamed time in the future.  They have begun work, and MPLAB X currently ships with an unfinished command-line debugger that Microchip welcomes you to try.

For Windows platforms this is ‘mdb.bat’, and for POSIX platforms it’s ‘mdb.sh’.

Here is it in one of its rare moments of proper functioning:

$ ./mdb.sh 

>device PIC32MX150F128B

content/mplab/mplab.deviceSupport

content/mplab/MPHeader.xml

content/mplab/PluginBoardSupport.xml

>hwtool RealICE

Nov 21, 2012 12:36:58 AM com.microchip.mplab.mdbcore.RealICETool.RIMessages OutputMessage

INFO: 

*****************************************************

Connecting to MPLAB REAL ICE…

Firmware Suite Version…..01.28.18

Firmware type…………..PIC32MX

Target detected

Device ID Revision = 0x10000000

>program “/Users/<CENSORED>/<CENSORED>.elf”

Programming target…

The following memory area(s) will be programmed:

program memory: start address = 0x0, end address = 0x1ffff

boot config memory

configuration memory

Programming…

Programming/Verify complete

Program succeeded.

>break MainDemo.c:280

Breakpoint 0 at 0x9d00f5ac: file MainDemo.c, line 280.

>continue

Running

>Target Halted

Stop at

        address:0x9d00f5ac

        file:/Users/<CENSORED>/MainDemo.c

        source line:280

>print dwLastIP

dwLastIP=0

>

Cool!  I’ll bet it even handles structs!

>print AppConfig

AppConfig=

>

Hmm, guess not.  Well, let me just recall my breakpoints again:

>breakpoints

Undefined command: “breakpoints”. Try “help”

>break

Error: invalid parameter.

>bp

Undefined command: “bp”. Try “help”

>

Just kidding!  It doesn’t support that.  Well, let’s hit the next line:

>next

It’s not a coincidence that all of the other examples above end on a prompt, and this one doesn’t.  This one never returned to the prompt, it just hung forever.  

It supports watch points and conditional breaks, but it doesn’t support setting a breakpoint on a function name, displaying structures, or viewing the current breakpoints.  And it crashes or hangs all the time.

So, currently mdb is unusable.  Which is expected, since Microchip admits as much.  But MPLAB X is also unusable (confirmed by their forums).  So, that only leaves one option…

Stay tuned.