Flexible Hardware Abstraction for Wireless Sensor Networks
Total Page:16
File Type:pdf, Size:1020Kb
Flexible Hardware Abstraction for Wireless Sensor Networks Vlado Handziski∗, Joseph Polastrey, Jan-Hinrich Hauer∗, Cory Sharpy, Adam Wolisz∗ and David Cullery ∗Technische Universitat¨ Berlin; Telecommunication Networks Group Sekr. FT 5, Einsteinufer 25, 10587 Berlin, GERMANY yUniversity of California, Berkeley; Computer Science Department Berkeley, CA 94720 US Abstract— We present a flexible Hardware Abstraction Our analysis of several embedded and general- Architecture (HAA) that balances conflicting requirements purpose operating systems (eCos [1], WindowsCE [2], of Wireless Sensor Networks (WSNs) applications and the NetBSD [3] and Linux[4]) that have mature hardware ab- desire for increased portability and streamlined develop- straction architectures has shown us that existing designs ment of applications. Our three-layer design gradually are poorly suited to the flexible abstraction required by adapts the capabilities of the underlying hardware plat- forms to the selected platform-independent hardware inter- WSNs. Their interfaces are rigid and expose the capa- face between the operating system core and the application bilities of the hardware at a single level of abstraction, code. At the same time, it allows the applications to utilize preventing an application from taking full advantage of a platform’s full capabilities – exported at the second layer, the hardware’s capabilities when needed. when the performance requirements outweigh the need for Thus, we need a better Hardware Abstraction Archi- cross-platform compatibility. We demonstrate the practical tecture (HAA) that can strike a balance between the value of our approach by presenting how it can be applied two conflicting goals that are present in the WSNs to the most important hardware modules that are found context. The component-based model [5] is one frame- in a typical WSN platform. We support our claims using work that can provide the required tools to resolve this concrete examples from existing hardware abstractions in TinyOS and our implementation of the MSP430 platform tension. The separation between the exposed interfaces that follows the architecture proposed in this paper. and the internal implementation promotes modularity and reuse [6]. At the same time it allows rich interaction I. INTRODUCTION between building blocks. The main challenge is to select The introduction of hardware abstraction in modern an appropriate organization of abstraction functionality operating systems has proved valuable for increasing in form of components to support reusability while portability and simplifying application development by maintaining energy-efficiency through access to the full hiding the hardware intricacies from the rest of the hardware capabilities when it is needed. Based on our system. Although enabling portability, hardware ab- experience in porting TinyOS [7], [8] to new platforms stractions come into conflict with the performance and we believe that an effective organization is possible energy-efficiency requirements of Wireless Sensor Net- when the strengths of the component-based approach are work (WSN) applications. combined with a flexible, three-tier organization of the WSNs, with their application specific nature and hardware abstraction architecture. severely constrained resources, push customization, The rest of the paper is structured as follows: In rather than more general and reusable hardware abstrac- Section II we introduce the details of the proposed archi- tion designs. For maximum performance, the unique tecture focusing on the functionality of each of the three capabilities of the hardware should be made available un- tiers separately and the flexibility that the architecture hindered to the application, but this can impede porting provides in total. The following Section III, illustrates and rapid application development. By directly accessing the practical applicability of our approach to the major the hardware, the application couples the evolution of the hardware modules of a typical WSN platform. After system with the underlying hardware. discussing the related work in Section IV, we outline Fig. 1. The proposed hardware abstraction architecture our planned future work (Section V) and conclude the The HPL components should be stateless and expose paper in Section VI. For clarity, at the very end, we an interface that is fully determined by the capabilities provide a list of the acronyms used in the text and their of the hardware module that is abstracted. This tight definitions. coupling with the hardware leaves little freedom in the design and the implementation of the components. Even II. ARCHITECTURE though each HPL component will be as unique as the In our architecture (Fig. 1), the hardware abstraction underlying hardware, all of them will have a similar functionality is organized in three distinct layers of com- general structure. For optimal integration with the rest ponents. Each layer has clearly defined responsibilities of the architecture, each HPL component should have: and is dependent on interfaces provided by lower layers. • commands for initialization, starting, and stopping The capabilities of the underlying hardware are gradually of the hardware module that are necessary for adapted to the established platform-independent interface effective power management policy between the operating system and the applications. As • “get” and “set” commands for the register(s) that we move from the hardware towards this top interface, control the operation of the hardware the components become less and less hardware depen- • separate commands with descriptive names for the dent, giving the developer more freedom in the design most frequently used flag-setting/testing operations and the implementation of reusable applications. • commands for enabling and disabling of the inter- A. Hardware Presentation Layer (HPL) rupts generated by the hardware module • service routines for the interrupts that are generated The components belonging to the HPL are positioned by the hardware module directly over the HW/SW interface. As the name sug- gests, their major task is to “present” the capabilities of The interrupt service routines in the HPL components the hardware using the native concepts of the operating perform only the most time critical operations (like system. They access the hardware in the usual way, copying a single value, clearing some flags, etc.), and either by memory or by port mapped I/O. In the reverse delegate the rest of the processing to the higher level direction, the hardware can request servicing by signal- components that possess extended knowledge about the ing an interrupt. Using these communication channels state of the system. internally, the HPL hides the hardware intricacies and Our HPL structure eases manipulation of the hard- exports a more usable interface (simple function calls) ware. Instead of using cryptic macros and register names for the rest of the system. whose definitions are hidden deep in the header files of compiler libraries, the programmer can now access provided by the HAL and convert them to hardware- hardware through a familiar interface. independent interfaces used by cross-platform applica- This HPL does not provide any substantial abstraction tions. These interfaces provide a platform independent over the hardware beyond automating frequently used abstraction over the hardware that simplifies the develop- command sequences. Nonetheless, it hides the most ment of the application software by hiding the hardware hardware-dependent code and opens the way for devel- differences. To be successful, this API “contract” should oping higher-level abstraction components. These higher reflect the typical hardware services that are required in abstractions can be used with different HPL hardware- a WSN application. modules of the same class. For example, many of the The complexity of the HIL components mainly de- microcontrollers used on the existing WSN platforms pends on how advanced the capabilities of the abstracted have two USART modules for serial communication. hardware are with respect to the platform-independent They have the same functionality but are accessed using interface. When the capabilities of the hardware exceed slightly different register names and generate different the current API contract, the HIL “downgrades” the interrupt vectors. The HPL components can hide these platform-specific abstractions provided by the HAL until small differences behind a consistent interface (Sec- they are leveled-off with the chosen standard interface. tion III-E), making the higher-level abstractions resource Consequently, when the underlying hardware is inferior, independent. The programmer can then switch between the HIL might have to resort to software simulation of the different USART modules by simple rewiring (not the missing hardware capabilities. As newer and more rewriting) the HPL components, without any changes to capable platforms are introduced in the system, the the implementation code. pressure to break the current API contract will increase. When the performance requirements outweigh the bene- B. Hardware Adaptation Layer (HAL) fits of the stable interface, a discrete jump will be made that realigns the API with the abstractions provided in the The adaptation layer components represent the core of newer Hardware Adaptation Layers (HALs). The evolu- the architecture. They use the raw interfaces provided by tion of the platform-independent interface will force a the HPL components to build