-
Notifications
You must be signed in to change notification settings - Fork 2
AMMDK Overview

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.
The AMMDK Common Compute Board (CCB) features an Arm64 System on Module (Snapdragon 820E) running embedded Linux connected via SPI to an Arm Cortex M4 microcontroller (K66F) for external hardware peripherals. Additionally, a second, lower-powered Cortex M4 MCU (kK20) is connected to both the k66f as well as the Snapdragon to enable real-time execution control of the k66f, which greatly facilitates in development and debugging.
Because Arm SoCs feature a hardware architecture known as big.LITTLE, we've dubbed the K66F as 'Tiny' for convenience (and amusement).
The AMMDK-CCB is built around the “Qualcomm® Snapdragon™ 820E high performance embedded platform”, which is designed to provide powerful, energy-efficient, multi-core processing for the next generation of embedded computing applications, with manufacturer support until at least 2025.
To interface with hardware peripherals and enable real-time control, the AMMDK-CCB includes the Kinetis® K66 microcontroller built on the Arm® Cortex®-M4F core. It features connectivity to nearly any hardware peripheral with support for common electrical protocols such as I²C, SPI, CAN, UART, USB, and Ethernet, along with standard GPIO. The Tiny MCU communicate with Snapdragon SoM via SPI (at 50 MHz).
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.
In order to ease the complex burden of embedded software development, the AMMDK-CCB also features a Kinetis® K20 microcontroller configured solely to provide real-time debugging of the Tiny MCU. The Debug MCU is running OpenOCD and requires no direct programming from users.
The Snapdragon SoM runs embedded Linux, modified to support the AMMDK-CCB hardware, as its OS. Specifically, AMMDK Linux is built on Debian 9 "Stretch", which will provide support for the Arm64 architecture through June of 2022.
Every module needs to communicate as described by the AMM standard. This is most easily accomplished by writing an application that run in the Linux environment, as there are libraries and examples available. The application will usually contain all logic for communication with the rest of the AMM, as well as the higher level behavior and 'business rules' for the module.
For AMMDK modules with relatively simple hardware peripherals and controls, the AMM application can leverage the 'Remote Control' API in the AMMDK Software Library and write all of their hardware control code directly in the application, removing the need to write custom code for the Tiny MCU (K66F).
During module development, it is frequently convenient to have the AMM Core Software readily available for testing. The AMMDK comes with this software pre-installed, and has more than enough computational power to run the complete Core Software stack alongside nearly any module AMM application.
The AMMDK Software Library components running on the Tiny MCU are built on the open source FreeRTOS. The software library abstracts the SPI communication between the Snapdragon SoM and Tiny MCU into two different modalities, a lower-level Datagram API, and a high-level Remote API.
The Remote API provides the ability to control many hardware peripherals from the AMM application, as described above. Additionally, AMMDK Software Library provides a lower-level Datagram API to enable robust SPI communication for modules that need more sophisticated access to the Tiny 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
The AMMDK-CCB is designed to provide a standard computational and communications platform for module development. However, connecting to hardware peripherals necessitates additional electronics to ensure electrical compatibility between the Tiny MCU and the peripheral. One of the design goals of the AMMDK-CCB is to help simplify the creation of this additional component. Thus, the Application Board needs only to be a simple board with just the necessary electronics for the module (e.g drivers/signal filters/DC/DC converters to generate any specific voltage rails) that will plug into the AMMDK-CCB via an interconnect.
Because the design for the AMMDK-CCB are 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.
For purchase inquiries, please contact ammdk[at]entropicengineering.com