Skip to content

AMMDK Overview

Benjamin Riggs edited this page Nov 4, 2019 · 33 revisions

Architecture

Introduction

The Advanced Modular Manikin Development Kit (AMMDK) was created to help ease development of new hardware that is compatible with the Advanced Modular Manikin (AMM) standard. The AMMDK generally consists of two main components, the Common Compute Board and the Software Library. To access external hardware peripherals such as sensors and actuators, a third, application-specific component is required, the Application Board.

In AMM, modules are required to communicate via the Data Distribution System (DDS) Interoperability Real-Time Publish Subscribe (DDSI-RTPS) protocol. RTPS is a high-level wire protocol which uses UDP/IP as its transport layer. Modules providing any sort of physical interactivity also need low-level control of arbitrary hardware sensors and actuators. Additionally, AMM segment modules – those comprising the physical body of the patient – must be powered via Power over Ethernet (PoE). The AMMDK is designed to provide tools and resources to help module developers meet these requirements.

AMMDK Hardware Features

AMMDK-CCB Block Diagram

The AMMDK Common Compute Board (AMMDK-CCB) provides a variety of hardware features designed to meet the needs of even the most complex of AMM Modules. The AMMDK-CCB is able to connect to a wide variety of embedded electronics protocols and peripherals via the on-board NXP Kinetis® K66 microcontroller (MCU), built on the Arm® Cortex®-M4F core. In order to connect with the rest of AMM via RTPS, as well as running sophisticated business logic, the AMMDK-CCB includes an Intrinsyc's Open-Q™ 820Pro μSOM (Micro System on Module) based on the Qualcomm® Snapdragon™ 820E platform, running Embedded Linux. Finally, the AMMDK-CCB is fully IEEE 802.3bt PoE compliant, enabling it to draw up to 75W from PoE, and provide that power to attached peripherals.

Microcontroller (MCU)

The AMMDK-CCB includes the K66 MCU, which provides connectivity to a plethora of analog and digital communication protocols, as well as instrumentation for deterministic real-time control. The K66 also includes a full Arm Cortex M4 Core running at 180 MHz. The full data sheet for the K66 is available here.

The K66F was selected because of it's many features as well as broader community support. The chip is used in several other open-source hardware projects and, thus, there is a lot of open-source software available for it. Most notably, the Teensy 3.6 development board uses the same chip and features many compatible open source software libraries provided by it's creator, Paul Stoffregen.

Debug MCU

To facilitate development on the K66, the AMMDK-CCB also includes a Kinetis® K20 MCU as an on-chip-debugger for the K66 MCU. The K20 is running OpenOCD, exposing complete control of the K66 execution to the AMMDK Linux environment, or remote machines, via gdb.

Application Board

In order to connect the K66 to arbitrary electronics peripherals, AMM Module developers will have to create a specific Application Board for their hardware, which connects to a set of connectors exposed on the AMMDK-CCB. These connectors expose most of the signals from the K66, along with power header providing a variety of power rails. An Application Board was developed for early Modules built using the AMMDK and its design and documentation are available here.

System on Module

The Snapdragon 820E processor provides four 64-bit Cortex-A72-like Qualcomm Kryo cores using Arm’s big.LITTLE architecture, with two cores clocked at 2.342 GHz, and two at 1.593 GHz. It also features a Adreno 530 GPU clocked at 652.8 MHz, and a Qualcomm Hexagon 680 DSP running at 825 MHz. The chip is built using a 14nm process and will be produced through at least 2025.

The Open-Q 820Pro SoM also provides a wide array of builtin technical capabilities that Module developers can leverage. These include wireless capabilities (WiFi, Bluetooth, BLE), location capabilities (GPS, GLONASS, compass), video compression (H.264 & H.265), HDMI display (exposed on AMMDK-CCB), and USB 2.0 & 3.0 (exposed on AMMDK-CCB). These features enable greatly expanded Module capabilities beyond what’s possible using a microcontroller, alone.

The SoM provides the AMMDK with computational power and a Linux environment that enables several complementary features: a complete developer workstation with MCU tool-chain pre-installed, the development environment for the AMM standard-library, and the ability to run the full AMM core reference implementation with performance to spare. Taken together, users only need to connect a keyboard, mouse, & monitor in order to begin developing.

Power Delivery

As a fully IEEE 802.3bt compliant Type 4 PD (Powered Device), the AMMDK-CCB is capable of drawing up to 100W via PoE, enabling the board to drive a wide variety of sensors and actuators, including robotics, while only requiring a single cable from a compatible PoE router. Additionally, the AMMDK-CCB can be powered via the onboard 12V DC barrel jack, or from a 12V DC power rail generated by an attached Application Board. The design goal is to provide as much flexibility and capability as feasible, all the way down to how the board is powered.

AMMDK Software Features

While the AMMDK hardware features are centered around providing a platform for developing a diverse body of Modules, the AMMDK software features are centered around reducing the amount of development work required to create a Module. First and foremost, Linux-based AMMDK OS running on the SoM provides the environment for developing and building AMM Module communication software, using the AMM standard library.

The AMM standard library is also used to build the AMM reference implementation core software stack, which also enables it to run on the AMMDK, alongside the Module being developed. With the full AMM core software running, Module developers don’t need to connect to external hardware in order to test Module communications behavior and standards compliance. Developers can create and run AMM scenarios on the AMMDK to evaluate Module performance.

To aid in developing the embedded code for hardware peripherals, the AMMDK comes with the full toolchain required to compile and flash code for the K66 MCU, along with the tools required to perform on-chip-debugging of the K66, namely openOCD and gdb. This completely eliminates the need for an external hardware programmer or debugger, along with the hassle of installing and configuring the compiler toolchain on another computer.

Furthermore, to streamline communication between the Module’s Linux application and the K66 application, the AMMDK includes a message-based communications library which uses the on-board Serial Peripheral Interface (SPI) bridge between the two chips. The SPI library handles the low-level configuration required to establish the SPI link, and provides a high-bandwidth, low-latency link with packet-level reliability, all using a message-based API.

The SPI library abstracts the SPI communication between the Snapdragon SoM and K66 MCU into two different modalities, a lower-level Datagram API, and a high-level Remote API. The Remote API provides the ability to control simple hardware peripherals from the AMM application, without the need to write custom code for the K66 MCU. The lower-level Datagram API enables robust SPI communication for modules that need more sophisticated access to the K66 MCU, such as real-time control or connecting directly via a low-level electrical protocol. The Datagram API provides error-checking and reliability guarantees, preventing data loss in all but the most extreme circumstances. The Remote API is built using the Datagram API

Finally, the AMMDK OS is a fully-fledged Linux desktop environment, allowing developers to use the AMMDK as a stand-alone development workstation. AMMDK is a version of Debian 10 (Buster) Linux that has been customized with a Board Support Package (BSP) that enables the Operating System to interface with all of the peripherals that are exposed by the AMMDK.

Commercialization

Because the design for the AMMDK-CCB is open source, companies that anticipate high production volumes or with limited physical envelopes may want to modify the design, create a new layout, and produce their own custom version. With both the AMMDK Linux and Software Libraries also released open source, companies will be able to leverage existing code on custom hardware with only minimal effort.

Clone this wiki locally