:TEP: 2
:Group: Core Working Group
:Type: Best Current Practice
-:Status: Draft
-:TinyOS-Version: 2.0
+:Status: Final
+:TinyOS-Version: 2.x
:Author: Vlado Handziski, Joseph Polastre, Jan-Hinrich Hauer,
Cory Sharp, Adam Wolisz, David Culler, David Gay
-:Draft-Created: 14-Sep-2004
-:Draft-Version: $Revision$
-:Draft-Modified: $Date$
-:Draft-Discuss: TinyOS Developer List <tinyos-devel at mail.millennium.berkeley.edu>
-
.. Note::
This document specifies a Best Current Practices for the TinyOS
::
- +-----------------------------+
- | |
- | Cross-platform applications |
- | |
- +--------------+--------------+
- +-----------------+ | +-----------------+
- |Platform-specific| | |Platform-specific|
- | applications | | | applications |
- +--------+--------+ Platform-independent | hardware interface +--------+--------+
- | +-----------------+--------+--------+-----------------+ |
- | | | | | |
- | +-------+-------+ +-------+-------+ +-------+-------+ +-------+-------+ |
- | |.------+------.| |.------+------.| |.------+------.| |.------+------.| |
- | || || || || || || || HIL 4 || |
- | || HIL 1 || || HIL 2 || || HIL 3 || |`------+------'| |
- | || || |`------+------'| |`------+------'| | | | |
- | |`------+------'| | | | | | | | | +----+--+
- +--+----+ | | |.------+------.| | | | | | | |
- | | | | || || |.------+------.| |.------+--+---.|
- |.---+--+------.| || || || || || ||
- || || || HAL 2 || || || || ||
- || || || || || HAL 3 || || HAL 4 ||
- || HAL 1 || |`------+------'| || || || ||
- || || | | | || || || ||
- || || | | | |`------+------'| |`------+------'|
- |`------+------'| |.------+------.| | | | | | |
- | | | || || |.------+------.| | | |
- |.------+------.| || HPL 2 || || || |.------+------.|
- || HPL 1 || || || || HPL 3 || || HPL 4 ||
- |`------+------'| |`------+------'| |`------+------'| |`------+------'|
- +-------+-------+ +-------+-------+ +-------+-------+ +-------+-------+ HW/SW
- | | | | boundary
- ************************************************************************************
- +------+------+ +------+------+ +------+------+ +------+------+
- |HW Platform 1| |HW Platform 2| |HW Platform 3| |HW Platform 4|
- +-------------+ +-------------+ +-------------+ +-------------+
+ +-----------------------------+
+ | |
+ | Cross-platform applications |
+ | |
+ +--------------+--------------+
+ +-----------------+ | +-----------------+
+ |Platform-specific| | |Platform-specific|
+ | applications | | | applications |
+ +--------+--------+ | +--------+--------+
+ | Platform-independent | hardware interface |
+ | +-------------+--------+----+-------------+ |
+ | | | | | |
+ | +-----+-----+ +-----+-----+ +-----+-----+ +-----+-----+ |
+ | |.----+----.| |.----+----.| |.----+----.| |.----+----.| |
+ | || || || || || || || HIL 4 || |
+ | || HIL 1 || || HIL 2 || || HIL 3 || |`----+----'| |
+ | || || |`----+----'| |`----+----'| | | | |
+ | |`----+----'| | | | | | | | | +--+--+
+ +--+--+ | | |.----+----.| | | | | | | |
+ | | | | || || |.----+----.| |.----+--+-.|
+ |.-+--+----.| || || || || || ||
+ || || || HAL 2 || || || || ||
+ || || || || || HAL 3 || || HAL 4 ||
+ || HAL 1 || |`----+----'| || || || ||
+ || || | | | || || || ||
+ || || | | | |`----+----'| |`----+----'|
+ |`----+----'| |.----+----.| | | | | | |
+ | | | || || |.----+----.| | | |
+ |.----+----.| || HPL 2 || || || |.----+----.|
+ || HPL 1 || || || || HPL 3 || || HPL 4 ||
+ |`----+----'| |`----+----'| |`----+----'| |`----+----'|
+ +-----+-----+ +-----+-----+ +-----+-----+ +-----+-----+ HW/SW
+ | | | | boundary
+ ************************************************************************
+ +------+-----+ +-----+-----+ +-----+-----+ +-----+-----+
+ |HW Plat 1 | |HW Plat 2 | |HW Plat 3 | |HW Plat 4 |
+ +------------+ +-----------+ +-----------+ +-----------+
- Fig.1: The proposed Hardware Abstraction Architecture
+ Fig.1: The proposed Hardware Abstraction Architecture
several terms describing different degrees of alignment with the
concept of a *HIL*. It also uses the following differentiation:
-- *platform-defined X* X is defined on all platforms, but the
+- *platform-defined X:* X is defined on all platforms, but the
definition may be different
-- *platform-specific X* X is defined on just one platform
+- *platform-specific X:* X is defined on just one platform
Strong/Real HILs
----------------
-*Strong Real HILs* mean that "code using these abstractions can
+*Strong/Real HILs* mean that "code using these abstractions can
reasonably be expected to behave the same on all implementations".
-This matches the original definition of the *HIL*-level according to
+This matches the original definition of the *HIL* level according to
the *HAA*. Examples include the *HIL* for the Timer (TimerMilliC,
-[TEP102]_), for LEDs (LedsC), active messages (ActiveMessageC, if not
-using any radio metadata at least), sensor wrappers (DemoSensorC,
-[TEP109]_) or storage ([TEP103]_). Strong *HIL*s may use
+[TEP102]_), for LEDs (LedsC), active messages (ActiveMessageC,
+[TEP116]_, if not using any radio metadata at least), sensor wrappers
+(DemoSensorC, [TEP109]_) or storage ([TEP103]_). Strong *HILs* may use
platform-defined types if they also provide operations to manipulate
them (i.e., they are platform-defined abstract data types), for
example, the TinyOS 2.x message buffer abstraction, ``message_t``
for example, by calculating the max/min or mean of multiple ADC
readings.
-The benefit from weak *HIL* are that one can write portable utility
+The benefit from weak *HILs* are that one can write portable utility
code, e.g., a repeated sampling for an ADC on top of the data path.
While code using these abstractions may not be fully portable, it will
-still be easier to port than code built on top of *HAL*s, because weak
-*HIL*s involve some guidelines on how to expose some functionality,
+still be easier to port than code built on top of *HALs*, because weak
+*HILs* involve some guidelines on how to expose some functionality,
which should help programmers and provide guidance to platform
developers.
P.Buonadonna, L.Nachman, G.Tolle, D.Culler, and A.Wolisz,
"T2: A Second Generation OS For Embedded Sensor Networks",
*Technical Report TKN-05-007*, Telecommunication Networks Group,
- Technische Universitรคt Berlin, November 2005.
+ Technische Universitaet Berlin, November 2005.
.. [WindowsCE] "The WindowsCE operating system home page", *Online*,
http://msdn.microsoft.com/embedded/windowsce
.. [TEP115] Kevin Klues, Vlado Handziski, Jan-Hinrich Hauer, Philip
Levis, "Power Management of Non-Virtualised Devices"
+.. [TEP116] Philip Levis, "Packet Protocols"
+
.. [TEP117] Phil Buonadonna, Jonathan Hui, "Low-Level I/O"
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End: