Portability for prototyping
The LEC-IMX8MP at the heart of the I-Pi SMARC Plus hosts an Arm Cortex-A53-based NXP i.MX8M Plus quad core system on chip with optional in-SoC Neural Processing Unit (NPU), up to 8 GB of memory. Signals from two GbE LANs, two USB 3.0 ports three USB 2.0 ports and one USB 2.0 OTG port, a four-lane MIPI DSI, a four-lane MIPI CSI and a two-lane MIPI CSI, and CAN, SPI, UART, and I2C serial interfaces are carried to and from the I-Pi carrier board over the MXM 3.0 connector.
The I-Pi is also capable of supporting SMARC modules with processors as advanced as the latest Intel Elkhart Lake processors, which allows engineers to easily swap one module for another while evaluating different features or levels of performance. PCI decoupling capacitors and locks on ADLINK SMARC modules make it easy to swap out modules, so all an engineer has to do is ensure that traces are aligned on the carrier board.
The only high-speed signals on the kit’s carrier board are PCI Express and HDMI, which reduces platform complexity so that engineers can easily evaluate different modules without having to re-engineer basic hardware infrastructure. These interfaces can be modified, added to, or subtracted from, in an optimized application-specific carrier board once design requirements are solidified later on. Of course, hardware modifications precipitate code modifications. Transitioning between an Arm-based compute architecture and an Intel-based processor module as you could with the I-Pi, on the other hand, typically means a complete software redesign.
In the case of the I-Pi, ADLINK has enlisted the MRAA hardware abstraction layer (HAL) to bypass that rework. MRAA is an open-source C/C++ library with Java, JavaScript, and Python integrations that allows software to be ported from one platform to another – even SMARC modules with different processor types (Figure 3). Developed by Intel, MRAA provides drivers and APIs that allow engineers to substitute modules, sensor HATs, and even port code written in Arduino or Raspberry Pi environments to the I-Pi without any rework.