• Cheatsheet - Linux, Yocto & Git
    • FitImage
      • GPIO handling at i.MX8M Mini
        • PHYTEC VM
          • RAM Configuration at PHYTEC i.MX8M Mini
            • Setup qbee Device Management on phyBOARD-Polis
              • Start video at boottime
                • Using phyLinux to build a yocto BSP with a build-container
                  • Using thingsboard.io to connect phyBOARD-Polis to the Cloud

                    RAM Configuration at PHYTEC i.MX8M Mini


                    02 17, 2026 09:31


                    PHYTEC’s i.MX8M Mini modules (e.g., phyCORE-i.MX8M Mini) use external RAM chips connected to the processor’s DDR controller. While the designs vary, here are the key details based on their product documentation and typical implementations:

                    Design-Specific Details

                    • Memory Layout:
                      PHYTEC modules pre-configure DDR timings and voltages in U-Boot/device tree to match their PCB design and DRAM chips.

                    • Validation:
                      PHYTEC rigorously tests RAM stability using NXP’s DDR Stress Test Tool before release.

                    • SOM Integration:
                      RAM is soldered directly onto the System-on-Module (SOM), ensuring signal integrity and reducing design complexity for customers.

                    Comparison of RAM Types

                    FeatureDDR3LDDR4LPDDR4
                    Max data rate2133 MT/s3200 MT/s4266 MT/s
                    Bandwidth17 GB/s25.6 GB/s34.1 GB/s
                    LatencyLowerLowerHigh
                    Power Consumption> DDR4<  DDR3LLowest
                    Special FeaturesLower voltage than DDR3Higher density, speed

                    Deep power-down, PASR

                    RAM support on the NXP i.MX8M Mini 

                    Featurei.MX 8M Mini RAM Support
                    Data Bus Width16-bit or 32-bit
                    Max DDR3L Speed1600 MT/s
                    Max DDR4 Speed2400 MT/s
                    Max LPDDR4 Speed

                    1.5 GHz (3000 MT/s)

                    Max RAM Capacity

                    8 GB - assumes dual-rank, 32-bit bus and 17-row DRAM

                    Supported RAM TypesLPDDR4, DDR3, DDR3L
                    Typical Board Configs2 GB, 4 GB, 8 GB
                    Voltage (I/O)

                    1.1 V - LPDDR4

                    1.2 V - DDR4

                    1.35 V - DDR3L

                    Specific RAM Timings for i.MX8M M

                    RAM timings are not fixed values for every CPU. It depends on:

                    • Specific DRAM chip (RAM Type)
                    • Board design and layout
                    • Memory controller configuration
                    • Bootloader

                    Automatic RAM size detection

                    Normally, every different RAM size with it's specific timings need to be build in a different U-boot. At Phytec, we modified the U-boot to be able to build all possible RAM-Timings (for standard products). This means, you can use the same U-boot image for 2GB as well as for 4 GB. At SPL level, the Hardware introspection is read out and this will tell the U-boot which RAM-timings should be loaded.

                    Locate PHYTEC-Specific DDR Configuration Files

                    Find PHYTEC-Specific RAM Info

                    1. Product Datasheets:
                      Check the phyCORE-i.MX8M Mini datasheet for exact RAM size, type, and speed.

                    2. PHYTEC Documentation:

                      • Hardware Manual: Lists DRAM part numbers  

                      • BSP (U-Boot) Sources: uboot/board/phytec/phycore_imx8mm/lpddr4_timing.c

                    U-Boot Source Code

                    For i.MX8M Mini you can find the RAM timings in the U-boot bootloader. Open the U-boot sources via Yocto devshell or clone the git repository and navigate to u-boot-phytec-dev/board/phytec/phycore_imx8mm/.

                    Here you can find the lpddr4_timing.c. You can also take a deeper look into the spl.c, the boardfile (phycore_imx8mm.c) and also the ../common/imx8m_som_detection.c. 

                    Linux Device Tree

                    PHYTEC defines DDR settings in the device tree (e.g., phytec-imx8mm-phycore.dtsi):

                    &ddrc { 
                    	ddr-type = <0x1>; 							// LPDDR4=0x1, DDR4=0x2, DDR3L=0x3 
                    	operating-points-v2 = <&ddrc_opp_table>; 
                    	dram-timing = <&dram_timing>; 				// Points to timing structure }; 
                         /* PHYTEC-specific values */ 
                    	&dram_timing { 
                    		clk = <1500>; 							// 1.5 GHz
                    		tcl = <18>; 							// CAS latency (cycles) 	
                    		trcd_rd = <21>; 						// RAS-to-CAS delay (read) 
                    		trcd_wr = <21>;							// RAS-to-CAS delay (write) 
                    		tras = <42>; 							// Row active time 
                    		trfc = <630>; 							// Refresh cycle time 
                    		txs = <32>; 							// Self-refresh exit time 
                    	};

                    Where to Find Configuration Data

                    • Official Docs:

                      • i.MX8M Mini Reference Manual (NXP Doc: IMX8MMRM)

                      • DRAM Datasheet (from your RAM vendor, e.g., Micron, Samsung, etc.)

                    • Tools:

                      • NXP DDR Stress Test Tool (validation)

                      • Linux Device Tree Bindings (imx8mm-ddrc node for timing parameters)

                    Tools for Validation

                    1. NXP DDR Stress Test Tool:
                      PHYTEC uses this to validate timings. You can re-run tests with their configuration.

                    2. PHYTEC RPA (Register Programming Aid):
                      A custom spreadsheet provided by PHYTEC to generate DDR register values. Contact support for the RPA (mentioned earlier).


                    Verify via Boot Logs

                    In U-Boot, enable DDR debug messages:

                    => setenv ddr_debug 1 => reset


                    Look for lines like:

                    DRAM: 2 GiB (effective 1.5 GHz, 32-bit, LPDDR4) ddr_init: tCL=18, tRP=21, tRCD=21, tRAS=42


                    Key PHYTEC-Specific Settings

                    ParameterTypical Value (LPDDR4)Notes
                    dram-type0x1LPDDR4
                    clk15001.5 GHz
                    tCL18CAS latency
                    tRP21Row precharge time
                    tRCD21Row-to-column delay
                    tRAS42Row active time (~42 ns at 1.5 GHz)
                    tRFC630Refresh timing (simplified value)

                    Security

                    Resource Domain Controller (RDC) supports four domains up to eight regions of DDR

                    Arm TrustZone (TZ) architecture

                    • Support Arm Cortex-A53 MPCore TrustZone
                    • On-chip RAM (OCRAM) secure region protection using OCRAM controller
                      • On-Chip Memory controller
                        • OCRAM module is designed as an interface between the system's AXI bus and the internal on-chip= SRAM memory module
                          • OCRAM is used for controlling the 256 KB multimedia RAM trough a 64-bit AXI bus
                    • TZASC (Trust-Zone Address Space Controller)
                      • TZASC (TZC-380 by Arm) provides security address region control functions required for intended application.


                    Maximal supply currents


                    NVCC_DRAM  (Imax = N x C x V x (0.5 x F)

                    N - Number of IO pins supplied by the power line

                    C - Equivalent external capacitive load

                    V - IO voltage

                    (0.5 x F) - Data change rate. Up to 0.5 of the clock rate (F)

                    DDR I/O DC electrical characteristics

                    - DDR Memory Controller  (DDRMC) is designed to be compiled with JEDEC-compliant SDRAMs

                    1. No On-Chip RAM:
                      The i.MX8M Mini relies entirely on external DRAM chips (soldered onto the PCB).

                      • Tightly Coupled Memory (TCM): Only available for the Cortex-M4 core (256 KB IRAM/OCRAM).

                      • L1/L2/L3 Caches: Shared among Cortex-A53 cores (32 KB/64 KB/1 MB).

                    2. Timing Configuration:

                      • Board-Specific: Timings (tCL, tRCD, etc.) depend on the DRAM vendor’s datasheet and PCB layout.

                      • Configuration Tools: Use NXP’s DDR Register Programming Aid (RPA) and MSCALE DDR Tool to generate register values for U-Boot/device tree.

                    Comparison: PHYTEC vs NXP Reference Designs

                    FeaturePHYTEC phyCORE-i.MX8M MiniNXP EVK Board
                    Typical RAM Size2GB/4GB LPDDR42GB/4GB LPDDR4
                    DRAM Part NumbersCustom (varies by revision)NXP-recommended chips
                    ConfigurationPre-validated for industrial useRequires manual DDR tuning

                    Need More Help?

                    • Contact PHYTEC Support: They provide tailored DDR timing files for custom designs.

                    • Check Schematics: If you have access to PHYTEC’s SOM schematics, trace the DDR lines to identify exact DRAM parts (e.g., Micron MT53D1024M32D4DT-053 WT:D).

                    • PHYTEC BSP Guides: Follow their Yocto/U-Boot documentation to modify DDR parameters safely.