How to lockup the in-flight entertainment system on a Boeing 777

I have recently returned from  a short trip to the UK. I flew both ways on what appeared to be a relatively new Boeing 777 courtesy of  United Airlines. As is now common place on trans-Atlantic wide-body aircraft, my seat came with its own in-flight entertainment system. After I took my seat to fly to […]

Read More

Getting The UI Right

Hey – we’re engineers, not artists, so why ever would you want us to do a user interface?  Well, one reason is possibly that we’re the only game in town. I’ve lived through a number of situations where I, or a coworker, was asked to do a user interface.  Often (usually…) management would assert, “Don’t […]

Read More

How to Enforce Coding Standards Using PC-Lint

In an earlier blog post, I introduced the concept of automatic enforcement of coding standards by stating that: Enforcement of coding standards too often depends on programmers already under deadline pressure to be disciplined while they code and/or to make time to perform peer code reviews. … To ensure your selected coding standard is followed, and […]

Read More

Condition Based Maintenance For Automotive Systems

Modern cars have dozens of embedded systems – from adjusting the air/fuel mixture to preventing the brakes from locking – it seems nearly everything in the car is controller by embedded software. This folks, is a revolution.  For a hundred years the automotive industry struggled to beat mechanical complexity into submission.  As progress was gradually […]

Read More

Protothreads versus State Machines

For a number of years I’ve been getting questions regarding Protothreads and comparisons to state machines. Here is what I think. Protothreads are an attempt to write event-driven code in a sequential way. To do so, protothreads introduce a concept of “blocking abstraction” to event-driven programming–something that event-driven programming is trying to get rid of in the […]

Read More

Is an RTOS really the best way to design embedded systems?

Recently I’ve been involved in a discussion on the LinkedIn Real-Time Embedded Engineering group, which I started with the question “Is an RTOS really the best way to design embedded systems?“. The discussion, which has swollen to way over 600 comments by now, has sometimes low signal to noise ratio, but I believe it is still interesting. […]

Read More

Abiding by Industry Standards

A printer ASIC was designed to be just a PCI Express endpoint so some of the configuration registers were hard-coded as such and it was used in a printer model. Sometime later, for a new printer model, the engineers wanted to use the ASIC as a root complex to bridge to other PCI Express devices […]

Read More

Is “(uint16_t) -1″ Portable C Code?

Twice recently, I’ve run across third-party middleware that included a statement of the form: uint16_t variable = (uint16_t) -1; which I take as the author’s clever way of coding: 0xFFFF I’m not naturally inclined to like the obfuscation, but wondered if “(uint16_t) -1″ is even portable C code? And, supposing it is portable, is there […]

Read More