MPLAB-X Review @ 02:23 pm
I first tinkered with MPLAB-X during beta. Although it was promising, it seemed flaky enough that I didn't want to move to it yet, plus, I wasn't doing a lot of PIC stuff anyway.
More recently I've been doing a bit more with the PIC. I had installed the release version but had quite a few problems so I put it on the back burner. I thought maybe it was time to go back and see whether it was going to be a good thing. All of this is based on MPLAB-X version 1.00 on Fedora 16.
For whatever reason, perhaps updated libraries, perhaps the last time I played with it I had got the configuration right, whatever, but it worked quite well for me. Mostly I used the C30 toolchain, although I did tinker with the C18 toolchain.
One of the first things you notice is that the buttons are all different. Nicer looking to be sure, but since they don't look like the old version, confusing.
One of the very nice features is that there is a build, program and run button. That is a departure from MPLAB 8 where they are all separate steps. Also, instead of having production and debug configurations and targets, you can simply click "Debug this project" and the project gets rebuilt for debugging, programmed and started. As in earlier versions, the debug buttons don't show up until you start the debugger.
Another big change is that the window is tiled. You could set MPLAB 8 up that way if you wished, but when debugging you need so many windows that it is pretty unwieldy. On MPLAB-X, though, everything is tabbed, so the tiled model is actually pretty nice. Once you get the idea of where things are, you aren't always hunting for hidden windows like in earlier versions.
The left hand area has a number of surprising choices. The most obvious, perhaps, is the dashboard. This seems to take a page from Piklab, but there are a couple of nice features, like bars showing memory used and a section showing the status of the programmer.
You can have multiple projects open at once, and the "Projects" tab shows all the open projects, and allows you to navigate for files in those projects. the "Files" tab is similar, but also allows navigating the various project subdirectories for object files, executables, etc. Yes, MPLAB-X makes a number of subdirectories so your main project directory doesn't get cluttered with all the odd MPLAB created files.
The services tab allows you to add team servers like java.net to your project, also issue trackers such as bugzilla. I tried adding a local instance of bugzilla with no joy. Not sure if it's broken or something lacking from my bugzilla instance. the only other issue tracker available is JIRA. Whether Trac or similar trackers could be added reasonably I have no idea.
But to a degree that fits. There is also a "Team" menu that allows connecting with CVS, Mercurial or Subversion. Where is git? Who knows. Seems odd to have all these old RCSs and not the most popular. But it appears that perhaps the Pony Express doesn't make it out to Arizona with news more than once a decade. Still a step up from the time when the only choice was SourceSafe.
On the bottom is a tabbed area very similar to the "Output" window in earlier versions, but with a lot more capability. Besides showing you the compiler output and the status of the programmer/debugger, it also has a very cool "variables" tab when debugging. If you halt in a function, this tab shows the values of all the automatic variables in the function, as well as any watches you have defined. This really cuts the need for the various debugging windows, and automatically shows you the exact things you probably want to see.
There is also a tab showing all the breakpoints you have defined, along with checkboxes allowing you to disable them without having to track down the source line. But wait, there's more. When debugging, hovering over a variable will show you its current value (if it is in scope, of course), and if it is a structure, will even show you the bits and pieces -- especially handy for special function registers.
For your static variables, it also shows the address of each element. Very, very handy.
MPLAB-X starts very slowly, being a huge Java app I suppose that isn't much of a surprise, but once started, it seems to be quite speedy. It seems especially quick for compiling and programming, odd, since it apparently uses the same compilers as MPLAB 8. The build, program and run button, one of the most common things to do during development, seems especially quick.
But there are some things that seem to take an inordinate amount of time. When a program is running, placing into reset seems to take forever. A simple task like that shouldn't take visible time, but it is at least 3 seconds on a very fast computer. Releasing from reset also seems slow, but nothing like holding the target in reset.
Probably the biggest win, though, is the editor. It seems to make a lot more sense than the old one, especially with tabs. It automatically puts in closing parentheses and braces, but unlike most other editors, if you habitually type that closing paren, yours simply writes over the provided one, unlike other editors where you may find yourself constantly erasing extra parens.
If you click on a variable or function, it highlights all other occurrences of that variable or function on screen, and places little tic marks to the right of anywhere else that function appears within the file, so you can even track down off screen occurrences easily.
The right-click menu lets you go straight to the declaration (or header or implementation in C++), find other occurrences, etc. It will even generate a call graph.
With all these features, though, I am still left with the feeling that there are important features from earlier versions of MPLAB missing. The more I use MPLAB-X, though, the less I feel that, and the more it does seem like a significant step up.
Now if I can just figure out how to make a git plugin ...