Microchip's Embedded Software Development on the NetBeans Platform
Join the DZone community and get the full member experience.
Join For FreeMicrochip Technology Inc., headquartered in Chandler, Arizona, was spun off from General Instrument in 1989. The Company went public in 1993, and is a leading provider of microcontroller, analog, and Flash-IP solutions, providing low-risk product development, lower total system cost and faster time to market for thousands of diverse customer applications worldwide. Headquartered in Chandler, Arizona, Microchip offers outstanding technical support along with dependable delivery and quality.
For more information, visit the Microchip
website at http://www.microchip.com. (The MPLAB X landing page is http://www.microchip.com/mplabx, which will be available in the next few days.)
Hi, Vince. What's MPLAB, in a nutshell?
MPLAB®
is an integrated development environment or IDE.
It is similar to
other IDEs, but there are two important differences. The first
difference is that the MPLAB IDE is our customers’ window into
Microchip’s PIC®
microcontrollers embedded in their designs. Many people believe they
understand their PC, because it is “right here.” An embedded
device is more difficult to get a handle on. It’s the brain of a
product “over there.” It’s not a computer, it’s a thing. The
MPLAB IDE gives embedded developers an opportunity to dig into the
brain of that thing. The
second important difference is that the MPLAB IDE seamlessly covers
Microchip’s entire portfolio of more than 700 8-bit, 16-bit and
32-bit PIC microcontrollers. The differences between these devices
are massive, from a tiny 6-pin, 8-bit microcontroller that could fit
under your fingernail, to a huge 32-bit microcontroller that is much
more powerful than the iconic IBM mainframe of last century. The
MPLAB IDE provides a consistent and supportive environment in which
to debug our customers’ original, creative works of software that
differentiate their products.
What are the MPLAB IDE’s main features and how does it distinguish
itself from its competitors? Integrated
development environments share many features: project creation and
management, programmers’ editor, language tool integration and
build tools, image preparation and programming, and debug facilities.
These are the MPLAB X IDE’s main features, too. A large difference
comes in the presentation of an embedded target, rather than a PC
target, which presents a developer with a less coupled and less
easily controlled object for their development. That tightens the
focus, but there are other IDEs that support embedded development.
The MPLAB X IDE is distinguished by its seamless and timely support
of Microchip devices, the vast ecosystem of tightly integrated
compilers and hardware tools that also support those devices, and the
evolutionary grace of a tool that has grown with our customers and
technologies until the three form a smooth and supportive system for
developing innovative embedded products. What are the typical technical challenges of an application of this
kind?
The
principal challenge we face is how to provide the facilities
developers need in the most intuitive and useful way possible. It’s
easy to provide tons and tons of features, but with the GUI
technologies of today, one can only present a small fraction of what
is provided and available for use. One of the gauges for how well
we’ve done our job is when our customers present a fine point of
usage that we’ve already discussed and disagreed on how to
implement. Those "complaints" are really wonderful because they
come from expert tool users who understand the tools they are using.
Of course, we are always hustling to present new Microchip devices in
the same light that we present established devices. We’re also
challenged to exploit the advanced debug facilities of new devices in
a way that is most beneficial for our customers. What's the architecture of the application and why did you make the
choices that you did? We’re
moving away from a Windows
OS-only, COM-based
architecture. As our customers’ development sophistication has
grown, so have their needs. Our customers now require Linux, Mac, and
Windows support. Microchip is a worldwide company with customers who
may only be fluent in a single language, so that impacts our choices.
We also have a number of educational institutions who place
interesting demands on the IDE, along with a number of advanced
customers who are very forward-looking and are really pushing the
envelope of what was previously thought possible. The most telling
choice we had to make, though, was the choice of NetBeans as a fully
capable, modern, lightweight and flexible platform for our
next-generation MPLAB X IDE:
Where does the NetBeans Platform fit into all of this?
NetBeans
is unique among current open-source IDE platform offerings, in that
it is the most advanced for addressing our primary challenge, which I
described above. The NetBeans IDE presents standard operations in a
way that really minimizes hunting around and wasting time, to find
out how to accomplish what you need to do. Take, for instance, the
classic edit, compile, debug “cycle.” In NetBeans, like in other
IDEs, the edit part is pretty easy: open the source file in the
programmers’ editor and make the changes you need. It’s really
not much different than editing a document with a word processor. The
next step is where the difference really shows. In
some IDEs, you have to compile or build an image and then figure out
how to load it and start a debugging session. In some IDEs, that’s
just brutal to figure out, especially in embedded systems where, as
we said, the target is not “right here,” it’s “over there.”
In NetBeans, it’s a single button press (DebugRun), even in an
embedded context like ours. After that, the rest of the steps are
taken care of. If any errors occur during the sequence, we take it
home by capturing the errors and placing the user in context for an
easy solution; and the ability to move on. That’s just one example.
NetBeans is way ahead of the curve compared to other
menu/toolbar/property sheet IDEs. What are the 3 main benefits of the NetBeans Platform, in this
context?
First and foremost is the ability to really optimize developers’ time. That’s a major factor in our customers’ focus.
Second is the fact that NetBeans is a modern, lightweight and fully capable IDE platform. It doesn’t suffer from the bloat and outdated aspects of some other IDE platforms. Included with these benefits are the abilities to localize the IDE and to utilize it on multiple operating systems.
Last, but not least, is the huge benefit of a professionally executed development, maintained by a focused organizing committee and maintained by a tight-knit development community—all headed by the Oracle contributions. That’s a significant departure from some other high-profile, open-source platforms that are available.
How did you end up choosing the NetBeans Platform over its
alternatives? When
you consider all of the benefits I just mentioned, I think it’s
pretty much a no-brainer. How did you get started with it?
We
first discussed the concepts with Sun Microsystems, as we wanted to
provide a benefit to the overall NetBeans IDE from an embedded side.
We created a proof of concept by plugging in our existing debuggers
to the NetBeans IDE on a Windows operating system. We were fortunate
to find someone who previously worked within Sun Microsystems on the
NetBeans Platform, who came in on contract and gave us some
one-on-one training. This was mainly because we had an aggressive
schedule and wanted to be able to get up to speed faster. Any tips and tricks for others going down the same road? The
mail lists are very helpful. We found many things we wanted to do
being asked by others on the mailing lists. Many of the developers
monitor these lists frequently, and respond more often than not in a
timely fashion. The documentation suite, videos, written documents
and interaction with the community are all extremely helpful in
getting to the root of any matter quickly. The
IDE is well organized and uses common techniques within the code
base, which quickly become familiar.
Other platforms treat information as job security. Some people may
know, but they want you to pay for the information, in one way or
another. Not so with NetBeans; everyone involved is completely open
and collaborative.
Any specific things that surprised you about the NetBeans Platform
(in a good or bad way)? NetBeans
prevents development with any form of interdependency between
modules. For instance, you cannot have A->B and B->A. This
really is a good thing and ensures that you break your modules up
more to create a common module. The way JUnit is integrated into the
IDE makes it so seamless to create your unit tests while developing
the code. Source-code revision control worked quite smoothly from
within the IDE. A
hindrance for us is that there is no way to view a block of memory in
hex form, when running under Java (using the JVM debugger). This is
something often required when doing embedded development. Since we
are developing code for our debug tools, we wanted to see the code
blocks being transported from the IDE to the tool in hex, but could
not. Anything else you'd like to share? It
is great how fully featured the editor is. We are often so deep in
developing what is required for the embedded side that we still
discover things the editor does that we hadn’t come across.
We
are using the NetBeans IDE to create our own IDE, which is a
completely new, yet compatible, incarnation of our IDE.
The
NetBeans developers at Oracle/Sun are extremely open to assist in
getting value added to the current IDE, which makes our job even
easier.
Opinions expressed by DZone contributors are their own.
Comments