Developer Portal
Product Catalog
SOMs
SOMs by Processor
i.MX 8M Plus
i.MX 91
i.MX 93
i.MX 95
STM32MP2
SOMs by Form Factor
OSM-L
SODIMM
LGA
All SOM Boards
00324 — i.MX 93 SODIMM
00359 — LGA with Murata 2EL
00363-91 — i.MX 91 OSM-L with IW612
00363-93 — i.MX 93 OSM-L with IW612
00377 — i.MX 8M Plus OSM-L with IW612
00395 — STM32MP257F OSM-L with IW610
00414 — i.MX 95 OSM-L
Carrier Boards
All Carrier Boards
00326 — SODIMM Carrier Board
00365 — OSM-L Carrier Board
00406 — LGA Carrier Board
00428 — OSM-L Carrier Board
Displays
Other Supported Boards
Thermal Characterization
Thermal Characterization of Cargt SOMs
How to read the results
Summary
i.MX 95 (00414) results
i.MX 8M Plus (00377) results
i.MX 93 (00363) results
STM32MP257F (00395) results
Choosing cooling for your product
Test data
Getting Started
Cargt Provided Software Resources
Public Yocto Source Code Repositories
Public Package Repositories
Public Pre-compiled Images
Running Linux on a Cargt design
Flashing a Pre-compiled image to eMMC / SD card using UUU on an i.MX design
Flashing a Pre-compiled image on an STM32MP2
NXP - Enter UUU mode using U-Boot Environment Variable Method
Identifying Your SOM and Choosing the MACHINE
Finding the SOM Part Number
Decoding an 00363 Part Number
Other SOMs
Choosing the MACHINE
Checking the Image on a Board
What a Mismatch Looks Like
Flashing Troubleshooting and Recovery
Serial Download Mode
i.MX: UUU
Use a Recent UUU
“Wait for Known USB Device Appear…”
The i.MX 95
Flashing Stops Partway
STM32MP2: STM32CubeProgrammer
Storage and Boot
Partition Layout (i.MX)
Checking the Layout
Boot Sequence
eMMC Boot Partitions
Pseudo-SLC Mode
Using a Different Layout
The
/data
Partition
U-Boot Environment
Boards That Boot from eMMC or microSD
The U-Boot Command Line
Getting to the Prompt
Finding Your Way Around
The Environment
Undoing a Bad Change
How i.MX Boards Boot
How STM32MP2 Boards Boot
Looking at Storage
Looking at Hardware
Network and USB
Booting over the Network (TFTP and NFS)
Setting Up the PC
Preparing the Files
Two Changes for an NFS Root
Booting the Board
Booting over the Network by Default
i.MX 95 Boot Firmware and System Manager
The Boot Chain
What the System Manager Does
The Logical Machines
Changing the Configuration
The System Manager Console and Production Builds
Networking with NetworkManager
Basics
NetworkManager and systemd-networkd
Using nmtui
Setting a Static Address with nmtui
Hostname and Radios
DHCP Client
Static IP Address
Running a DHCP Server on a Port
Shared Mode (DHCP Server and NAT)
Standalone dnsmasq (DHCP Server without NAT)
Routing with nftables and Kea
Cellular Modems with ModemManager
Checking the Modem
Creating the Data Connection
Ethernet First, Cellular as Backup
Wi-Fi
Including Connections in Your Image
Troubleshooting
Capturing Packets
Wi-Fi
The Wi-Fi Hardware
Scanning
Regulatory Domain
Connecting to a Network
Joining a Network with nmtui
Access Point Mode
Keeping a Wi-Fi Link Up
Bluetooth
Checking the Controller
Bluetooth Device Address
Scanning for Devices
LE Advertising
GATT Server and Client
Pairing
Bluetooth on Your Own Carrier
Debugging with btmon
When hci0 Does Not Appear
Real-Time Clock
RTC Devices
Reading and Setting the Time
At Boot
Waking from Suspend
Power-Off, Watchdog and Suspend
Powering Off
The Hardware Watchdog
STM32MP2: systemd Uses It
i.MX: Available to Applications
Watching a Service
Suspend
Secure Boot (AHAB) on i.MX 9
Checking the Lifecycle
How AHAB Works
Steps
Authenticating the Kernel
Secure Key Storage (EdgeLock and OP-TEE)
How It Fits Together
Checking the Components
Storing and Using Keys with PKCS#11
Initialize a Token
Generate a Signing Key
Sign and Verify
Encrypt Data with a Secret Key
Managing Keys
Where the Keys Are Stored
Other ELE Features
Supported Touchscreen Displays
10” LVDS 1280×800 – GLT1011280800is1
5.5” MIPI-DSI 720×1280 – GLT0557201280is1
2.8” SPI 240×320 – GLT028240320is1
Connecting Displays on a Cargt design
Electrical Connections
Software Configuration
Taking Screenshots with Weston
With a Keyboard on the Board
Over SSH or the Serial Console
Rotated Displays
Other Options
Remote Desktop (RDP)
The TLS Key
Starting Screen Sharing
Connecting
Connecting through SSH
Cameras
Supported Cameras
Selecting the Camera Device Tree
libcamera: Raw or Processed Images
Capturing Frames with cam
Orientation
GStreamer
Preview on the Display
JPEG Snapshots
Recording H.264 Video
Streaming to a Computer
Machine Learning on the i.MX 93 NPU
How It Works
Turning On the NPU in the Device Tree
Building the Device Tree in Your Layer
Selecting the Device Tree
Adding the Machine Learning Packages
Compiling a Model with Vela
Running a Model on the NPU
Turning the NPU Off Again
Using Hardware from Linux
Device Files and sysfs
GPIO
Finding the GPIO Lines
Driving Outputs
Reading Inputs and Waiting for Edges
Analog Inputs
I²C
The PWM Click
Finding the Device
Using the Registers Directly
Using the Kernel Driver and sysfs PWM
Binding and Unbinding I²C Drivers
Serial Ports
Hardware for the Examples
mikroBUS Pins on the 00365
Debugging in Linux
The Kernel Log: dmesg
The systemd Journal: journalctl
The Journal Is Lost at Reboot
Hardware in sysfs
Which Driver Has a Device?
debugfs
Debugging Applications with gdb and VS Code
Preparing the Build
The Example Program
Debugging in VS Code with devtool ide-sdk
Debugging with gdb on the Command Line
Debugging on the Board with VS Code Remote-SSH
Connecting to the Board
Debugging a Program on the Board
Limits of Remote-SSH
systemd Services and Timers
Running Now vs. Starting at Boot
Finding Problems
Turning a Service Off Completely
Looking at and Changing a Unit
Timers
System and User Services
The Main Cargt Services
Software Updates
SWUpdate
How It Works
Getting an Update File
An Update, Step by Step
SWUpdate Methods
RAUC A/B Updates (STM32MP2)
RAUC A/B OTA Updates — STM32MP2 (00395-01-00365 / 00395-02-00365)
Production Data
SOM EEPROM
Record Format
Reading the EEPROM in U-Boot
How the DRAM Fields Are Used
Ethernet MAC Addresses
Setting Addresses in the U-Boot Environment
Package Management on a Cargt design
Package Feeds
Installing Packages
Hosting Packages from Your Own Build
Setting the Feeds in Your Image
Using a Local Directory
Yocto Development
Yocto Tutorial
Setup build machine
Setup the Yocto environment
Bitbake the image
Deploy to Target
Advanced Yocto Usage
SBOM Generation
Developing Applications and Kernel Modules
Building on the Board
A CMake Program
A Kernel Module
Creating Your Own Layer
A Recipe for a CMake Project
Changing a Recipe’s Source with devtool
A Recipe for a Kernel Module
Adding Your Packages to an Image
Real-Time Linux (PREEMPT_RT) on i.MX 95
What is PREEMPT_RT?
What Cargt provides
Supported hardware
How it relates to NXP Real-time Edge
Kernel configuration
Build the real-time image
Install the image
Verify the real-time kernel
Measuring latency
Reference results
Tuning for determinism
CPU frequency
CPU idle states
Isolating a CPU
Interrupt and kernel thread priorities
Writing a real-time application
Precise time synchronization (PTP)
EtherCAT
Troubleshooting
References
Planned Topics
References
Yocto Development for NXP i.MX Application Processors
NXP Product Documentation
Fact Sheets
Datasheets and Reference Manuals for i.MX 8M Plus
Datasheets and Reference Manuals for i.MX 91, i.MX 93, and i.MX 95
SWUpdate
RAUC
Yocto Project
BitBake
dnsmasq
Teleport SSH
nftables
NXP Documentation for Secure Boot (AHAB) on i.MX Processors
Cargt Developer Documentation
Index
Edit on GitHub
Index