Hardware/Software Co-design Accelerates Development of Smart Wireless Devices
Handset designers are increasingly using open-source code platforms to develop next-generation wireless devices.
Trends in handheld wireless devices can change quickly. Driven by fickle consumer tastes, technologies and applications can drift in or out of fashion as easily as a pair of sunglasses. To capitalize on market demand for “what’s hot”, embedded device designers must apply new technologies rapidly and time-to-market becomes the Holy Grail.
Recent technology trends have been driven by the success of the Apple iPhone and competitive products in the smartphone category. Increasingly popular features include: touch screen displays with better quality and higher resolution; embedded megapixel cameras; exceedingly thin form factors and various internet based services such as location-based mapping.
These complex features have a significant impact on both hardware and software choices for embedded designers of wireless devices and add a great deal of complexity to an already tedious and time consuming process. During that process, selected features are translated into detailed technical requirements and plans and key components must be selected, integrated and tested.
The functionality of a handset is implemented with a set of interconnected system components such as RF, ASIC’s, memories and various peripherals. Designers must select a set of system components and partition the system’s functionality among these components. Final implementation has to satisfy a set of constrains such as cost, performance and power consumption.
In the design of cell phones, there are only a couple of major handset manufacturers who actually do system design from "scratch" that requires systems partitioning and handling of algorithms. Outside of those few powerhouses, designers are now using open source code platforms, new rapid development program languages and pre-tested software and hardware platforms. These standardized platforms with off the shelf processors from companies such as Texas Instruments and Freescale have changed the embedded design landscape by lowering development costs and providing a faster time to market.
Linux for smart wireless devices
For mobile wireless device designers there are three principal operating system (OS) choices available: Microsoft Mobile, Symbian and Linux. For an Open Source code approach, savvy designers are choosing Linux for its rapid development capabilities and cost savings. With Linux’s open architecture, achieving connectivity becomes straightforward and intellectual propriety rights issues can be efficiently handled with the proper use of licenses.
Linux was originally written in 1991 by Linus Torvalds as an improvement over earlier public domain versions of Unix. Torvalds merged his efforts with a group of visionaries who organized the “free software movement” under what was known as a General Public License. His kernel eventually was adopted as the cornerstone of this movement which became known as “Open Source.”
The Open Source Initiative (OSI) has been gathering steam ever since it first officially organized in 1998. Bolstered by the fact that many governments that have adopted policies favoring and often requiring “open source” solutions for their computer solutions, the notion of Open Source was taken seriously mostly because of Linux.
The use of Linux as an OS in the server market has proliferated because of its modular extensibility, open source code community, vast libraries of existing applications, robustness and, not surprisingly, favorable licensing. The obvious benefits of these same features suggest that Linux will also become the dominant OS for wireless devices. A typical Linux software stack appears in Figure 1.
Figure 1: Linux software stack diagram
The recent introduction of the Linux-based Android software stack by Google is a milestone event in the wireless device development community. Android provides a designer with everything they need to build and run Android applications including a device emulator and advanced debugging tools. Android has been criticized by some designers who feel it is not really free or open-source software despite Google’s claims to the contrary. Some parts of the software development kit are still proprietary and closed source, and some believe it is a conscious decision to control the platform by Google. Despite the criticism and uncertainty of its future, the Android SDK is an option a designer must also consider.
Linux development tools and languages
Wireless device designers making use of Linux can select number of high-level programming languages and development environments for development projects. The Graphical Tool Kit (GTK) and Python programming languages are two popular options.
GTK+ is a feature rich toolkit for implementing graphical user interfaces and features an easy-to-use application programming interface (API). GTK+ was originally written in C language, but has ties to many other popular programming languages such as C++ and Python. GTK+ is licensed under the general public license GNU LGPL 2.1, allowing development of both free and proprietary software with without any license fees or royalties. GTK+ has number of features that today's wireless developers need including an easy look and feel for easy programming, an object oriented approach, theme support, internationalization, localization and accessibility.
GTK consists of four libraries:
- GLIB, which is a low-level core library that is the basis of GTK
- Pango, a library for layout and rendering of text
- Cairo, which is a library for 2D graphics
- ATK, a library for a set of interfaces providing accessibility
As another option, Python is a powerful and fast object-oriented programming language and a great choice to speed application development for wireless devices. Python offers strong support for integration with other languages and tools and performance improvements can be wrapped in C or C++, making it flexible. Implementation of Python is also under the open source license, which makes it freely usable and distributable and supported by a set of extensive standard libraries. Python is popular with developers due to the fact that is can be learned in just a few days. In fact, many programmers report substantial productivity gains when using Python. Python runs in many software environments such as Windows, Linux, .NET, Java, and most interestingly, the Nokia Series 60.
A major trade-off to consider when designing with Python is that applications may require more memory and processing power in order to run seamlessly.
Hardware selection is the key for success in the long run
Software development is critical, but the selection of the correct hardware for wireless device design is paramount. Wireless devices are some of the most complex equipment that people use on a daily basis. Today’s mobile phones process tens of millions of calculations every second to transmit and receive signals. The basic construction of a mobile phone includes hardware components such as: an antenna; battery; keys or touch pad integrated to a LCD; microprocessor and memory; wireless receivers and transmitters; and electromechanical components such as speakers, microphones and buzzers.
The hardware design for a wireless device may look like a simple task but it can become a complicated exercise due to the increasing amount of wireless connections required. Today, it is not uncommon to equip smartphones with 3G, WLAN, GPS and Bluetooth capability. This means that several receivers and transmitters have to be integrated into a compact form factor. The 3G specification alone covers five frequency bands. Most mobile phone antennas today are internal and highly dependent on the handset size, thickness and the materials used for maximum effectiveness.
Today an ARM11 based application processor runs at over a 600 MHz clock frequency and with several megabits of available 16/32-bit SDRAM, DDR, NAND Flash and PSRAM, it has the performance comparable to PCs on the market just a few years ago. Many application processors have vector floating point co-processors, hardware accelerated multimedia coders with graphics acceleration, advanced power management, hardware accelerated image processing unit for H.264 coding supporting VGA 30 fps and security features enabling a hardware and software based fuse box solution. Image processing and graphics processing units can also be used to lower power consumption and perform picture resizing, blending and rotation. Most application processors also support high-speed USB, MMC or memory stick external cards, ATA-6 hard disk interface, various ways to MUX audio signals and several SPI/SSI/UART ports.
Co-designing hardware and software
Traditionally, the approach to wireless device design has been to separate it into hardware and software projects that work independently of each other, while trying to deliver a common result. In order to ensure that critical system design requirements are being met, companies today are relying on silicon solutions and ready made tested platforms to support unified product development. In this approach, the importance of having the right development tools and rapid prototyping tools including both a software and hardware platform that works in tandem are critical to simplify potential issues early in the development stage. These tools enable hardware and software designers to work closely together. In the design process today, the questions have become “what platform do I use as baseline for my development?” and “what applications do I need to have?”
What software development tools are selected has direct impact on how much processing power and memory is needed. Hardware and software plans should be developed according to the features needed, the required form factor, the type of applications required and of course, time-to-market. With high volume designs, component costs need to be minimized, but development cycles are longer and designs can not necessarily be easily adapted to changing market requirements. A pre-tested hardware development platform with a number of built-in functionalities gives designers an early prototyping opportunity to identify issues and avoid problems in later stages. Independent wireless device development companies such as Navicron are building such platforms from the ground-up to optimize wireless device design (Figure 2).
Figure 2: Navicron’s fusionplatform block diagram
Selecting the right technology platform to speed up wireless device development is not an easy task. First and foremost, designers should be able to be integrate software and hardware features quickly. When considering hardware requirements, designers need to look at platform features such as overall maturity, component selections and component costs. A platform must have the ability to serve as the basis of mass manufacturing with the ideal key component selection and optimal bill of materials cost.
From a software perspective, available operating systems as well as middleware and applications are also primary considerations in the platform selection process. The return on the investment in the right platform is often realized in the second and third development project when the hardware is already built and ready for software application development. A technology platform needs to be generic enough to be application independent, and at the same time, specific enough to be relevant for the application supported. Software application development can slow down tremendously without having the right environment available in the early stages of the design process. Having a platform that provides support for early software development becomes critical.
Software applications can be acquired in different ways. First, the necessary applications can be developed in house for the specific project and purpose. Second, open source communities have a wide selection of applications available. Before using open source code applications, designers must verify that the maturity of the code is what is expected and the license agreement is acceptable for the purposes of the project. And finally, applications can be acquired from various commercial sources.
To enable wireless device designers to respond quickly to changing trends in the industry, new development tools and methods are emerging. Use of modern high level programming languages will shorten the development time but at the same time, increase processing power and memory size requirements. Selection of the right development tools has to be made based on the specific design requirements and business objectives of the project.
Designers must understand how they can legally use open source software in commercial products and the implications their choices have on hardware. Designers can use high-level graphical toolkit software frameworks such as GTK+ to make the application development process faster and easier. The trade-off in of using high level languages is that they will consume a great deal more of memory and processing power. Designers can speed development time, but will have the dilemma of adding development costs for processing power and memory.
Although a hardware-centric approach to design of wireless devices is advisable, implications on software must be considered early on in the development cycle. The use of a pre-tested hardware platform optimized for open-source software can be a powerful tool for achieving faster-time-to-market and a cost effective consumer device that will satisfy market demands with the current “must have” technology features.
This article originally appeared in the May, 2008 issue of Portable Design. Reprinted with permission.