Hardware emulator debugs Linux driver

By Alain Raynaud, EE Times
(09/10/07, 09:00:00 AM EDT)

Implementing electronics design functionality using a combination of hardware blocks and software modules based on advanced, multiprocessor platforms is now commonplace. As the dominant implementation style for leading products such as cell phone handsets and consumer multimedia devices, this architectural trend offers advantages of reduced risk, lower cost and faster time-to-market. However, it also drives traditional design methodology issues to extremes.

Since the design functionality is contained in both hardware and software, hardware engineers and software specialists must work closely to ensure consistent operational interaction between their design components. This interaction is often detailed in a specification using the English language as the medium. This method has often proved inadequate because of ambiguities in operational descriptions, producing particularly obscure bugs. To find the bugs, exhaustive verification methods are required. Today, the only methods available to accomplish the required level of verification are to prototype the design or to use an emulation system.

To illustrate these issues and their resolution, we will describe a relatively simple processor platform and attempt to boot up an operating system on it using an emulation system. We will then demonstrate the effect of a complex bug and detail its resolution.

The hardware design used was an embedded processor core--a Tensilica Diamond 232L--with a random-access and flash memory subsystem and a universal asynchronous receiver/transmitter (UART) controller. We used the Linux OS distribution from Monta Vista based on the version 2.6 kernel, coupled with various software capabilities to complete the necessary OS infrastructure. The OS contained driver routines for the UART and other system components. The entire system was mounted onto an EVE ZeBu-UF 0.5 emulator, connected externally through two transaction-level interfaces. A UART transactor was used to drive the console window on a host workstation, and a JTAG standard transactor connected the Tensilica debug tool set into the system.

Click here to read more ...

×
Semiconductor IP