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 […]
Month: June 2011
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 […]
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 […]
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 […]
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 […]
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. […]
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 […]
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 […]