IDEs are so popular even hardware companies are selling them. As we mentioned a few weeks ago [Embedded Tech Journal, September 2, “The March of IDEs”], integrated development environments (IDEs) are all-in-one editors, compilers, linkers, and debuggers that allow a programmer to sit down and write, edit, download, and debug all his code from one place with a single user interface. The individual tools within the IDE might change, but overall they behave like one mega-development tool.
Now MIPS Technologies, makers of the eponymous 32-bit RISC processor, have gotten into the act. Their Navigation ICS (hereinafter “NavICS”) is an IDE tailored specifically for – you guessed it – MIPS processors.
MIPS calls its IDE an ICS, or integrated component suite, for no immediately obvious reason. For all intents and purposes it’s an Eclipse-based IDE like most other IDEs. It’s got plug-ins and widgets for compiling, linking, and debugging just as most IDEs do. Obviously, all the software is MIPS-specific, which means it understands MIPS registers, stacks, state, flags, and other MIPS-related arcana.
NavICS is also Linux-specific, which means it also understands Linux tasks, threads, and processes. With NavICS, programmers writing code for a MIPS/Linux system can debug the operating system and drivers as well as their own code, all without resorting to special “debuggable” versions of the Linux kernel. Oftentimes, debugging the OS requires recompiling it with special instrumentation hooks that provide visibility into the workings of the kernel, but that also affect the performance of the operating system. In true Heisenberg style, the kernel never behaves the same way when it’s instrumented. You’re left with the decision to run either a normal production kernel with no debug visibility or a debuggable kernel that’s not the same as the production code. The NavICS debugger aims to fix that.
There’s also an optional Linux Event Analyzer (LEA) plug-in that acts like a code profiler, charting out where your code is spending its time when you’re not looking. Too much time spent in wait loops, interrupt-service routines, or math libraries? The LEA reveals all, and not just in user code. Because the whole NavICS suite is both MIPS- and Linux-aware, it accurately identifies kernel calls, drivers, and other deeply buried subroutines so programmers don’t have to try correlating address maps with source listings.
The price for all this IDE goodness starts at about $2000 for a one-year license. Some of the optional plug-in functions cost extra. If you’re developing with a MIPS processor running Linux, NavICS seems like a no-brainer. If you’re not using a MIPS processor or not running Linux, it may be somewhat less compelling.
Hardware Goes Soft
So why would a microprocessor company start peddling development software? To sell more chips, naturally. The easier it is to develop good-quality code for MIPS processors, the more MIPS stands to gain. Happy programmers make repeat customers, and repeat customers are good business. And as we’ve seen before, software in general – and development tools in particular – are an important factor when it comes to choosing a microprocessor. A good IDE can sway the decision toward MIPS and away from (for instance) ARM or PowerPC.
In that light, it’s not so unusual that MIPS would start supplying development software. Indeed, you could argue that MIPS has always been a software company. After all, it doesn’t really make chips. It licenses its chip designs to semiconductor manufacturers or ASIC designers who then, in turn, have the chips fabricated. Those design licenses often take the form of Verilog or VHDL hardware descriptions, which are really just software-defined hardware.
There’s a saying among scientists to the effect that “in the end, it’s all physics.” With licensed “soft” processors running open-source operating systems and vendor-provided development tools, it appears that, in the end, it’s really all just software.