Conceptions of the Embedded Software World

It often surprises me, the conceptions those outside the embedded software world have of it.

At the one end is the old, hardcoded view; a good example, if a bit old, would be Joel Spolsky’s view of the Embedded Software World.

At the other end, prompted by the increasing presence of Java and other applications for cell phones, there is the idea that it’s all Java and that it’s every bit as easy as desktop development.

Neither of these views is entirely true, but they aren’t entirely false, either.  Joel is correct about limited programming capability in many cases, but as I bet even he is realizing there are flash updates these days even for consumer electronics like Blu-ray players. Others are correct about the increasing availability of tools that make it just like home in some embedded systems.

Where do I find myself in all this? Well, only recently did I find myself working on the first project for my employer where C++ can be used in a fairly embedded environment; previous projects had broken libraries, a lack of space for the generated code, or both. Of course, there’s still bootloader work in C, sometimes with a dab of assembler, too.

The biggest thing I’ve noticed about embedded software is that often it’s solving known-to-be-solved problems without the benefits of a full-up system. Perhaps you don’t have a shell capable of scripting — or the ability to just run Perl or Python, meaning you have to write C code that grovels over I/O that would be trivial in either. Sometimes it’s bringing up a board from scratch, and trying to get a bootloader to work — or writing your own (though, these days, it’s preferable to grab one of the pre-written ones, as you’ll get much more functionality once you get it running).

So what do I think of it? It can be frustrating when you’re writing many lines of code for what you know would be trivial in another language, but it’s also fun to squeeze every last drop out of a hardware solution.

Booting issues after BIOS update on MSI Wind U123

I recently updated my MSI Wind U123’s BIOS for various reasons, and I ran into an problem whose solution I’m offering up in case of issues from out there. Per the instructions from MSI, I flashed the BIOS, powered down, and removed the battery. MSI’s site didn’t specify how long to remove the battery, so I removed it for a 10-count (a slow 10 count).

I put the battery back in, and Windows XP refused to finish booting, instead sitting in the XP startup animation forever. Safe mode booting stopped at Mup.sys. I attempted to boot via CD to use the recovery console, but even that hung up. Frustrated, I made a USB stick with Ubuntu Netbook Remix. That also refused to go far beyond the bootloader.

The solution turned out to be to remove the battery for a good few minutes, then put it back in. Once that was done, all was well again.

Tags: ,