Gary Stringham

August 31, 2010

Principle 5: Anticipate the Impacts

In the game of golf, the golfer selects the club, puts the ball on the tee, looks down the fairway, checks the wind, lines up the club to the ball, and checks his stance. He is anticipating the impact of his club on the ball. He does this because he […]
July 31, 2010

Principle 4: Design for Compatibility

This is the fourth in a series of newsletters that present seven principles to help guide your own processes and best practices in hardware/firmware interface design. This month’s principle focuses on maintaining compatibility between versions of hardware and versions of firmware. Designing for compatibility means to design in such a […]
July 14, 2010

Verification: Can We Do More?

A comment in the GABEonEDA blog entry “Accellera Works Toward a Unified Verification Methodology (UVM)” recently caught my attention: Silicon respins due to design errors not only have not diminished in number, they have actually increased. This is an indication that complexity has grown more than the ability of verification […]
June 30, 2010

Principle 3: Balance the Load

This is the third in a series of newsletters that present seven principles to help guide your own processes and best practices in hardware/firmware interface design. This month’s principle focuses on balancing the tasks and work load between hardware and firmware. Hardware and firmware each have their strengths and weaknesses […]
May 31, 2010

Principle 2: Set and Adhere to Standards

This is the second in a series of newsletters that present seven principles to help guide your own processes and best practices in hardware/firmware interface design. This month’s principle focuses on establishing and applying standards for embedded systems development. Standards need to be set and followed within the organization. I […]
April 30, 2010

Principle 1: Collaborate on the Design

Over the course of these newsletters, I’ve been reeling off one best practice after another. Now, I realize that a particular best practice may not apply to a given embedded development project or organization. However, each of these best practices is rooted in one or more fundamental principles of embedded […]
March 31, 2010

Let’s All Be Geniuses

“Intellectuals solve problems; geniuses prevent them.” Albert Einstein This profound quote says very succinctly where and how we should focus our efforts. How many of us are guilty of writing firmware and then getting it to work without thorough testing? Are we likely to make a change to the code […]
February 27, 2010

Testing Device Drivers

I recently asked the owner of a device driver what type of information about the hardware settings does the device driver return to the application after each job. I was asking about one particular piece of information, a setting that the application tells the device driver to configure in the […]
January 30, 2010

Register Design Eliminates Read-Modify-Write Issues

In the last two articles (here and here,) I discussed the dangers of read-modify-write operations on registers that create exposure to collision and corruptions by firmware. I discussed certain firmware and CPU techniques that can reduce these dangers, but not completely eliminate them. As promised, this month I will discuss […]
December 31, 2009

Limited CPU Support for Read-Modify-Write Operations

In last month’s article, I discussed the dangers of read-modify-write operations when multiple device drivers access the same hardware registers, since basic firmware read-modify-write operations are not atomic. I also discussed how firmware techniques such as shadow copies and mutexes can be used to provide atomic read-modify-write operations, but only […]