Global Sources
EE Times-Asia
Stay in touch with EE Times Asia
EE Times-Asia > Embedded

Virtual prototype for Android HW-SW dev't (Part 1)

Posted: 16 Nov 2012 ?? ?Print Version ?Bookmark and Share

Keywords:Android? Software Development Kit? Virtual prototyping?

The Android Software Development Kit (SDK) [1] enables the software community to design applications that take advantage of the latest handset features before the handset is even available. SDKs are tailored and extended by handset providers to design devices with their key differentiating product capabilities.

Prominent examples include Kyocera's SDK support for their dual screen devices, Samsung's SDK extensions for S-Pen, or LG's modified SDK for 3D application software development. The core of these SDKs is a simulator based on the QEMU [2] simulation framework. The SDKs guarantee that at the Java level, the programming interface (Android API) is consistent between the real handset and the SDK's simulator.

However, these SDKs target application developers. The execution and architecture underneath the Java software layer is not guaranteed to match the execution of the real handset. This is due to the fact that the SDKs simulate a generic hardware platform, the so-called "Goldfish" platform. For this reason, SDKs fall short when it comes to full end-to-end hardware/software integration.

In the case of a full integration, the Linux operating system, device drivers, and the Android hardware abstraction layer (HAL) need to be brought up for the specific product hardware. These software layers execute natively on the CPU (native code) in comparison to Android applications that are based on Java (interpreted code). Therefore, the required simulator needs to be able to simulate the exact CPU instruction-set architecture (ISA) as the final product's CPU would do. Furthermore, other simulated aspects such as memory maps, interrupts, and peripherals need to match the hardware, as they are directly accessed by lower level software development.

Typical SDKs have not been designed to fulfil the lower level requirements, yet the software developer requires deeper transparency to such functionality and a way to program at the register level. We'll take the integration of a specific new sensor hardware peripheral as an example.

Here, the device driver has to interact with the peripheral through the memory mapped register interface, exactly as it is specified in the sensor's technical reference manual. The correct implementation of low level functions such as interrupt handlers, clocks, and voltage regulation are important for a complete integration. These details are not reflected by the generic simulation model of a sensor which the typical SDK provides.

Thus, it seems obvious that we need to wait until hardware becomes available before we can start the lower level software development. But, due to time-to-market pressure and the short product amortisation windows (time in market), this is not an option anymore. Software has to be almost entirely ready by the time the first hardware samples arrive. This is not only comprised of the product's software stack, but also the test and validation software, which is required for the quality assurance and sign-off process. Furthermore, this doesn't take into account the entire handset supply chain, comprising IP suppliers, semiconductor firms, and OEMs. Each of these stakeholders has a different software focus.

IP supplier's software
IP companies supply key IP functionality to the semiconductor firms. The IP is then integrated into a system-on-chip (SoC). The integration is conducted at both the hardware level and the software level. Knowing that software development is 50 per cent of the engineering cost, IP suppliers cannot afford to fall short by not providing the respective software integration out of the box. Each semiconductor will perform its own SoC specific IP hardware integration. However, on the software side a manageable set of operating systems (Android, Windows etc.) will be used among all semiconductors and OEMs. The IP supplier's software integration is comprised of the OS-specific device drivers and middleware, which are expected by the semis and ultimately integrated as modules into the semi's SoC OS board-support package (BSP). In a BSP, the driver is configured for board-specific properties such as memory map, interrupts, clocks, and voltages.

Thus, driver and middleware development can be done outside the SoC context. As an example, a generic prototyping board, such as the ARM Versatile Express prototyping system [3] can be used. For this system, a large set of operating systems are maintained and developed by the software community (e.g. Linaro [4]) and can be leveraged by the IP provider as a development framework. The downside is that RTL is required in order to start software development since the IP has to be mapped onto an FPGA. This has severe consequences since even the IP providers need to be ready with their software long before they can provide stable RTL. This demand is coming from the semiconductor software project timeline as well as from the company's ability to win customers early.

Semiconductor software
Semiconductor firms need to provide board support packages (BSP) for all major operating systems to their customers. The heart of a BSP is an operating system kernel, which is ported to the semiconductor's specific SoC. A core BSP is typically comprised of approximately 20,000 lines of platform-specific code. Lower level properties, such as memory maps, interrupts, clocks, voltages, device driver configurations, as well as higher level functions such as CPU run-management, system power management, security, and others are also part of the core BSP. In contrast to the IP supplier, the semi is concerned with the whole platform rather than a single piece of IP. Thus, the completion of the low-level software requires a platform-specific prototype.

1???2???3?Next Page?Last Page

Article Comments - Virtual prototype for Android HW-SW ...
*? You can enter [0] more charecters.
*Verify code:


Visit Asia Webinars to learn about the latest in technology and get practical design tips.

Back to Top