Software Architecture

Block Diagram and Interface Model

This section describes the high-level MAC CoProcessor-based system architecture, the various software components, and the overall system architecture (see Figure 12.). The MAC CoProcessor is an entity that implements the MAC IEEE 802.15.4e/g standard in a dedicated system on a chip and provides a serial interface to an external processor for control and processing of the CoProcessor operations. A description of the API is provided in the /docs folder of the TI 15.4-Stack 2.1.0 Linux SDK install.

The MAC CoProcessor approach is a scalable architecture split that fits perfectly for configurations where the host CoProcessor runs protocol stack layers over the IEEE 802.15.4 e/g MAC/PHY (for example, generic IP over 6LoWPAN, ZigBee® IP, or ZigBee Pro) or even an application that must use the MAC/PHY as a data link.

With the TI 15.4-Stack Linux Example Application, the external host software is running on a Linux-based platform. Though the high-level software, partitioning for layers can be conceptually applied to nonLinux- based hosts. The software components developed and described in this document are specific to a Linux- host implementation for an x86 or ARM®-based platform.

The interface between the host and the MAC CoProcessor is defined at different logical layers in this split architecture: a physical layer (for example, a USB or a universal asynchronous receiver/transmitter [UART]), a logical data-link layer, and a presentation layer.

The physical layer interface is used to transport the serial frames over the physical link. Several physical interfaces can be used (for example, USB or UART). This serial protocol is known as the management and test (MT) protocol.

The frames transported over the physical serial link follow the format specified in the MAC CoProcessor Interface Guide in the /docs folder with the TI 15.4-Stack Linux SDK install.

The Collector Example Application delivered with this package illustrates an example of how to implement a high-level application that is intended to use the MAC CoProcessor services.


Figure 2. High-Level Software Architecture of TI 15.4-Stack 2.1.0 Linux® Applications

Software system components:

  • MAC CoProcessor Embedded Example Application:

    MAC CoProcessor Embedded Example Application is embedded software running on a CC1310 device. This example application implements a 802.15.4e/g MAC/PHY layer and provides a (serial port) MT-based interface to the applications running on the Linux host.

  • NPI Server v2:

    The network processor interface (NPI) server provides a socket-based communication channel to the MAC CoProcessor that abstracts the physical serial-communication mechanism (for example, UART or USB).


    The NPI server is an optional module; therefore, the API MAC can interface directly to the Linux kernel through the dev interface as well.

  • Linux kernel:

    The Linux kernel provides a device-driver model for the serial interface that is available as a character device over the selected physical port (for example, USB). In the USB case for instance, the MAC CoProcessor implements a CDC USB driver class; therefore, the kernel should provide a USB modem (ACM) service over /dev.

  • TI 15.4-Stack Application:

    This application module implements a specific application using the 802.15.4e/g protocol and the MT structure-based model as an application-level interface.

    • Application: TI 15.4-Stack Linux SDK Sample Application provides a starting point to use the MAC CoProcessor by illustrating how to initialize the network, join a network, and perform data communication between the personal area network (PAN) Coordinator and the devices (that is, implementing a star-network topology).

    • API MAC: This is the application programming interface (API) for the TI 802.15.4 MAC software.

      This API provides an interface to the management and data services of the 802.15.4 stack using the CoProcessor embedded example application. This module supports two communication methods. Method 1 is direct through a /dev/tty (serial-port) interface, and Method 2 uses a TCP/IP stream socket that connects to the NPI Server. The NPI server translates the TCP/IP connection into a /dev/tty (serial port) interface.