2007

December 31, 2007

More Troubleshooting Support in DMA Controllers

In last month’s issue I discussed how DMA controllers can be used to troubleshoot data flow problems in and out of a block. Since DMA controllers are instantiated in many blocks, the DMA controller is a good place to put additional debugging tools. One such debugging tool is a CRC […]
November 30, 2007

Using DMA Controllers to Troubleshoot Problems

Many blocks within chips process data read from or written to memory using direct memory access (DMA) controllers. Firmware initiates the data processing by setting up the blocks and DMA controllers. When problems occur, the first task is to figure out if the problem is in the block, in the […]
October 31, 2007

Managing Platform-Specific Code

Porting firmware code to a new hardware platform often requires making changes that break support for old platforms. Code maintenance, defect fixes, and new features become cumbersome and error prone when such changes must be made across multiple versions of the same code. In last month’s issue, I talked about […]
September 29, 2007

The Impacts of Debugging Facilities and Platform-Specific Code

I just returned from the Embedded Systems Conference (ESC) in Boston where I taught a course on lessons learned from hardware/firmware interface design. These conferences are always good for interacting with other engineers and learning from them. Two things I learned at ESC apply directly to this month’s topic on […]
August 31, 2007

Identifying Chips and Blocks

The constant drive to announce improved products with new features can force frequent changes in both hardware and firmware. New chips and firmware may be produced that are mostly the same as their predecessors but with a few new features or tweaks. Ideally, any version of firmware will work with […]
July 31, 2007

More on Buffer Zones

In last month’s newsletter I talked about analyzing the size of buffers. Now I will discuss the importance of proper management support for buffers – support in terms of status, interrupts, and errors. For example, when should an interrupt be generated on the receiving buffer? When one byte arrives? When […]
June 30, 2007

Analyzing Buffer Zones

One of the more challenging aspects of an embedded systems design is to maximize the time hardware and firmware can work independently while minimizing the time they have to wait for each other. The proper use and sizing of buffers can help balance the load between hardware and firmware. An […]
May 31, 2007

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 […]
April 30, 2007

The (not so) Exciting World of Documentation

In a survey I conducted of several firmware engineers, lack of good documentation of hardware was the number one complaint. It is because firmware engineers so heavily rely on the hardware documentation to correctly do their job. Some of the engineers said that wrong documentation is worse than no documentation […]
March 31, 2007

Designing a Chip for Unplanned Products

One of the rules of the Extreme Programming design philosophy for software is Never Add Functionality Early. This means that when coding for one product, do not add features or functionality needed for a future product. While this rule does have some merit for software development, it should be applied […]