CMP EMBEDDED.COM

Login | Register     Welcome Guest  
HOME DESIGN PRODUCTS COLUMNS E-LEARNING CONFERENCES CODE FORUMS/BLOGS NEWSLETTERS CONTACT FEATURES RSS RSS

Debugging a Shared Memory Problem in a multi-core design with virtual hardware



Embedded.com
With multicore systems becoming the norm, software developers have found the debugging of such systems, using a physical hardware development board, to be very challenging, particularly when it comes to the integration of applications sharing data across multiple cores.

Over the past few years, the virtual hardware platform concept has emerged as a key new capability for software developers to improve their ability to debug software applications.

Virtual platforms are simulations of the device hardware and the environment it evolves in. They represent a new solution for software developers to improve their productivity. The benefits of virtual platforms for software development come from three major areas.

First, they remove the dependency on the physical silicon availability. Second, they provide a far superior solution for debug and analysis. Third, they provide a simplified and more easily sharable environment to the users.

Traditionally, software developers have used three different types of environments for the execution of the software under development: native compilation to the host development system or an OS simulator, reference development boards, or instruction set simulators. Each of them has been used successfully in the context of a simple hardware platform.

However, as hardware platform capabilities are increasing with multi-core support, these approaches are exhibiting some significant limitations, including limited observability and controllability of the hardware, poor representation of the final device hardware, and limited scalability. This article will demonstrate how a virtual platform can be used to debug a shared memory problem on a multi-core platform.

Platform description
The system under consideration is depicted in Figure 1 below. It includes two processor cores and several peripheral elements. One core (ARM926) is used to boot and execute the Linux operating systems and a variety of applications. The second core (ARM968) is used to execute an H.264 decoding algorithm.

Figure 1: A shared memory design with two processor cores and several peripheral elements, one used to boot and execute the Linux operating system and a variety of applications and the second to execute an H.264 decoding algorithm.

Peripherals included in the platform include, interrupt controller, touch screen controller, display controller, ATAPI controller, UART, programmable I/O, timer, clock and memory.

An AHB multi-layer bus is also used to allow mapping different address regions to the two bus masters. A model of the platform has been created using SystemC a standard hardware modeling language and TLM (Transaction Level Modeling), a standard based modeling methodology.

In addition to the hardware model, the platform comes with host application programs that enable the interactive I/O user interface in a realistic device environment.

Each of these applications can directly communicate with the platform model and display the desired information. They include a graphical user interface, connectivity to the host memory file system, and a terminal window showing, for example, the Linux boot sequence.

1 | 2 | 3

Rate this article: Low High
Current rating
  • .
Embedded.com Career Center
Looking for a new job?
SEARCH JOBS

Browse all jobs

SPONSOR
RECENT JOB POSTINGS





 :