54
F. Firouzi et al.
commonly used for building the processing units. Various memory types may
be necessary for a typical IoT think that rely on both volatile and nonvolatile
memories. Power supply and distribution networks are specifically designed and
optimized for IoT things to better serve user applications. The transducers and
communication devices are modular components that may be included in an IoT
thing. The higher-level software may access these devices through device drivers.
• Device Drivers: Software that interfaces with and controls hardware allows
operating system and other programs to access hardware functions without
requiring an understanding of the underlying hardware details
• Hardware Abstraction Layer (HAL): A software layer on top of the device drivers
that defines the protocols, tools, and routines needed to interact with hardware.
HAL is concerned with creating high-level functions required to enable hardware
to function without extensive knowledge of how the hardware works. This is
important for developers working with many microcontroller hardware pieces
that require port applications to connect platforms. A HAL also enables engineers
with less knowledge of lower-level hardware to create useful application code
without knowledge of all the small details. The principal difference between a
driver and HAL is that HAL is constructed on top of device drivers and is capable
of hiding hardware differences from higher software layers. For example, a USB
mouse driver and a PS2 mouse driver are very different, but with the help of
HAL, you can treat them interchangeably.
• Real-Time Operating System (RTOS): Generally, operating systems multitask
to enable many programs to execute simultaneously. The scheduler determines
which program should run and in what order. The scheduler then quickly
switches between programs so that it looks as all programs are executing simultaneously. For example, a desktop OS such as Windows includes a scheduler that
attempts to ensure user responsiveness. In contrast, the scheduler in an RTOS
functions toward creating a more predictable pattern of execution where each task
must complete within a given time budget. Particularly, this feature is important
for IoT systems as they include real-time applications with strict response time
requirements.
• Middleware: IoT devices are often designed and optimized for a class of
target applications using a heterogeneous system on a chip (SoC) with diverse
IP cores for processing, sensing, and communication. Middleware eases the
development process of such systems by supporting interoperability within the
diverse applications and services that compose an IoT device. Along these lines,
numerous operating systems have been developed to support the development of
IoT middleware. Middleware combined with the HAL and device driver layers
provide the necessary functionalities to enable service deployment. Example
constituent services of a diverse application domain for IoT systems are wireless
sensor networks (WSNs), radio frequency identification (RFID), machine-tomachine communication, and supervisory control and data acquisition (SCADA).
Middleware is responsible for managing the interaction between the application
layer and a variety of devices in the system. Various functional components
are often considered to manage this interaction. Interface protocols oversee
F. Firouzi et al.
commonly used for building the processing units. Various memory types may
be necessary for a typical IoT think that rely on both volatile and nonvolatile
memories. Power supply and distribution networks are specifically designed and
optimized for IoT things to better serve user applications. The transducers and
communication devices are modular components that may be included in an IoT
thing. The higher-level software may access these devices through device drivers.
• Device Drivers: Software that interfaces with and controls hardware allows
operating system and other programs to access hardware functions without
requiring an understanding of the underlying hardware details
• Hardware Abstraction Layer (HAL): A software layer on top of the device drivers
that defines the protocols, tools, and routines needed to interact with hardware.
HAL is concerned with creating high-level functions required to enable hardware
to function without extensive knowledge of how the hardware works. This is
important for developers working with many microcontroller hardware pieces
that require port applications to connect platforms. A HAL also enables engineers
with less knowledge of lower-level hardware to create useful application code
without knowledge of all the small details. The principal difference between a
driver and HAL is that HAL is constructed on top of device drivers and is capable
of hiding hardware differences from higher software layers. For example, a USB
mouse driver and a PS2 mouse driver are very different, but with the help of
HAL, you can treat them interchangeably.
• Real-Time Operating System (RTOS): Generally, operating systems multitask
to enable many programs to execute simultaneously. The scheduler determines
which program should run and in what order. The scheduler then quickly
switches between programs so that it looks as all programs are executing simultaneously. For example, a desktop OS such as Windows includes a scheduler that
attempts to ensure user responsiveness. In contrast, the scheduler in an RTOS
functions toward creating a more predictable pattern of execution where each task
must complete within a given time budget. Particularly, this feature is important
for IoT systems as they include real-time applications with strict response time
requirements.
• Middleware: IoT devices are often designed and optimized for a class of
target applications using a heterogeneous system on a chip (SoC) with diverse
IP cores for processing, sensing, and communication. Middleware eases the
development process of such systems by supporting interoperability within the
diverse applications and services that compose an IoT device. Along these lines,
numerous operating systems have been developed to support the development of
IoT middleware. Middleware combined with the HAL and device driver layers
provide the necessary functionalities to enable service deployment. Example
constituent services of a diverse application domain for IoT systems are wireless
sensor networks (WSNs), radio frequency identification (RFID), machine-tomachine communication, and supervisory control and data acquisition (SCADA).
Middleware is responsible for managing the interaction between the application
layer and a variety of devices in the system. Various functional components
are often considered to manage this interaction. Interface protocols oversee
