iMX8M Mini 3 Days
iMX8M Mini 3 Days
iMX8M Mini 3 Days
with i.MX8M Mini SoC
The i.MX8M Mini processor family brings together high‐performance computing,
power efficiency, enhanced system reliability and embedded security that is needed
to drive the growth of fast‐growing edge node computing, streaming multimedia,
and machine learning applications.
At the heart is a scalable core complex of up to four Arm Cortex‐A53 cores running at
up to 2GHz plus Cortex‐M4 for real‐time processing domain at 400+MHz.
The i.MX8M Mini also packs‐in 1080p video acceleration, 2D/3D graphics for a rich
visual HMI experience, and advanced audio capabilities to enable audio‐rich
applications.
Course Description
i.MX8M Mini is a rich features SoC, encapsulating many sub‐modules, which makes it
a challenge to comprehend. ‘Designing with i.MX8M Mini SoC’ is a 3‐day training
that aims providing a deep understanding of the i.MX8M Mini SoC, and speed up the
software design process, enabling you to focus on your added value as soon as
possible.
Practical work enriches the learning experience and provides an added value to our
students, therefore this training blends both, technical data deep‐dive and practical
labs on hardware platform. During the labs, you’ll take an active part in coding and
building functional use‐cases, both on Cortex‐M4 and Cortex‐A53. You’ll experience
developing applications and kernel modules under Linux, and software under free‐
RTOS.
Course Goals
Introduce i.MX8M Mini architecture
Introduce heterogenous ARM cores: Cortex‐A53 and Cortex‐M4
Introduce i.MX8M Mini multimedia, graphics and audio capabilities
Introduce the clock management, reset, power management
Introduce the i.MX8M Mini memory architecture and capabilities
Introduce the i.MX8M Mini Boot process including secure boot
Introduce the developments tools, used to develop software on both micro‐
processors
Target Audience
Software engineers that would like developing software and BSP for platforms based
on i.MX8M Mini SoC.
Course Duration
3 days
Target platform
Variscite’s DART‐MX8M‐MINI Evaluation Kit is used as the development platform for
the lab.
Prerequisites
Computer architecture background
Experience in developing embedded systems
C/C++ knowledge
Familiarity with ARM architecture is an advantage
Familiarity with Linux is an advantage
Day 1
Introduction to the i.MX8M Mini Family
i.MX applications processor values
i.MX processor portfolio
i.MX8M Mini main target applications
i.MX8M Mini key features
i.MX8M Mini, Mini Lite block diagrams and differences
i.MX8M Mini qualification levels and package type
i.MX8M Mini evaluation boards, SoM, and Software support
Lab #1: Board and Tools Bring‐up
CPU Platform
Cortex‐A53 CPU platform overview
Cortex‐A53 versus Cortex‐A9/Cortex‐A7
What’s new in ARMv8‐A
Privilege levels
A32 vs A64
AArch64 registers
A64 instruction set
AArch64 exception model
AArch64 memory model
Software engineer’s guide to the Cortex‐A53 MPCore
Cortex‐A53 pipeline
Branch prediction resources
Cache overview
Data cache coherency
Memory Management Unit (MMU)
Other micro‐architecture features
Interrupt and bus interfaces
Debug and timers
Power management
Clocking
NEON
GIC
PMU
Cortex‐M4 platform
Cortex‐M4 features
M‐profile instructions
Core register set
Processor pipeline
Cycle counting
Memory map
Bitwise memory access
Bit banding
Modes privilege and stacks
Interrupts and exceptions
Memory Protection Unit (MPU)
Tightly Coupled Memory (TCM)
Cache features
Processor core, space and Backdoor port accesses
SRAM accesses
Power management
Core debug
System timer
Floating point unit
Cortex‐M4 use case
Lab #2: Measuring Application Performance and memory implications with
linked lists
Lab #3: Configure the MPU with Different Access Permissions and Identify Stack
Overflow
Day 2
i.MX8M Mini Memory System Overview
Internal memory (Cache, TCM, OCRAM, ROM, ROMCP)
Nand/Nor flash storage
SD/eMMC interface
DRAM interface
i.MX8M Mini Mass Storage Overview
ECSPI
Quad SPI
uSDHC
i.MX8M Mini Timers
i.MX8M Mini Messaging Unit (MU)
MU overview
MU memory mapping
Messaging mechanism
Messaging use‐cases
Short messages
Frame information
Event notices and requests
Fixed length data
Announcements
MU interrupts
Remote Processor Msg (RPMSG)
RPMSG channel
RPMSG Lite
MU Linux driver
Lab #4: Open a communication channel and transfer messages between the
Cortex‐A53 and Cortex‐M4
i.MX8M Mini Clock Management
Clock Control Module (CCM) overview
CCM block diagram
PLLs
Crystal Oscillator (XTALOSC)
Clock roots, max frequency and source select
CCM output clock connectivity and gating
Clock divider
Clock switching multiplexer
Clock gate
Clock slices
Access control
i.MX8M Mini System Reset Controller (SRC)
SRC overview
Reset inputs
Reset and power‐up sequence
Rest outputs
External POR
Internal POR
Reset inputs & outputs
Parallel reset requests
Boot mode control
i.MX8M Mini Power Management
General Power Controller (GPC) overview
GPC main features
GPC block diagram
Processors modes (RUN, Low power, WAIT, STOP, Deep Sleep)
Low power mode process (entering and exiting)
Power Gating Controller (PGC) overview
PGC power domains
Triggering the PGC via HW and SW
Power control for A53 platform
Power control for the M4 platform
Thermal Management Unit (TMU)
Lab #5: Control power regulators
i.MX8M Mini SDMA
SDMA overview
SDMA block diagram
SDMA main features
SDMA Core
SDMA Scheduler
Burst DMA unit
Peripheral DMA unit
SDMA security support
OnCE and PCU debug states
SDMA clocks and low power modes
Linux DMA Engine driver
Lab #6: Measuring the memcpy Function Using SDMA, Cortex‐A53, and Cortex‐M4
i.MX8M Mini Boot
System boot overview
Boot modes
Pin settings
Boot sequence
Boot security configuration
Boot eFUSE
Device Configuration Data (DCD)
Boot block activation
Clocks at boot time
Enabling MMU & caches
Exception and interrupt handling during boot
Cortex‐A and Cortex‐M boot process
Boot devices supported
Program image
IVT
HDMI image boot‐up
DCD
Plugin image
Serial downloader
Recovery devices
High Assurance Boot (HAB)
Lab #7: Apply High Assurance Boot by securing u‐boot
Day 3
i.MX8M Mini Multimedia Overview
Multimedia components
Enhanced LCD interface (eLCDIF)
GPU 3D/2D
MIPI_DSI
MIPI_CSI
Sony/Philips Digital Interface (SPDIF)
Synchronous Audio Interface (SAI)
Enhanced LCD Interface (eLCDIF)
eLCDIF functional description
Write data path
Read data path
eLCDIF interrupts
MPU interface
VSYNC interface
DOTCLK interface
DVI interface
Alpha blending
GPU fundamentals
What is a GPU?
Graphics pipeline overview
Fixed & programmable pipelines
2D GPU
3D GPU
Supported APIs
GPU performance
Video Processing Unit (VPU)
VPU G1 overview
VPU G2 overview
VPU H1 overview
Gstreamer overview
Gstraemer pipeline
Gstreamer elements
Gstreamer communication
Lab #7: Build Video and Graphics Stream Flow to the Display Controller
Lab #8: Encode a video file and stream it over the network