Difference between revisions of "iMX8M Industrial EMC testing"

From Voipac Wiki
Jump to navigation Jump to search
 
(322 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
[[Category:iMX8M Industrial Development Kit]]
 
[[Category:iMX8M Industrial Development Kit]]
 +
[[Category:iMX8M Industrial Development Kit Testing]]
 
<!-- -->
 
<!-- -->
 
<div style="float:right">__TOC__</div>
 
<div style="float:right">__TOC__</div>
  
Electromagnetic compatibility results for iMX8M Industrial Development Kit are shown on this page. Test setup and scripts are described in details.<br /><br />
+
Electromagnetic compatibility results for iMX8M Industrial Development Kit are presented on this page. Test setup and scripts are described in details.<br />
  
These measurement were performed with boards using the actual hardware and software configuration of the web shop development kits.
+
These tests were performed with setups using the standard hardware and software configurations of the web shop development kits.
 +
 
 +
The certificate measurements were carried out on the iMX8M Industrial Development Kit in Pro version as this configuration delivers the best price-performance ratio and is the most popular amongst the customers. Other configurations - Max and Basic were also tested both passing the EMC radiated and conducted emmissions Class B norm. As the differences in the results were negligible, this web page focuses on the certificated measurements of the [https://www.voipac.com/imx8m-industrial-development-kit-pro Pro configuration] of the development kit.
 +
 
 +
The certificate document contains numerous different measurement as described in the ETSI EMC standards. This wiki page highlights and discuses only the most important results. All the details can be found in the EMC certificate and [https://downloads.voipac.com/index.php?p=iMX8M_Industrial_Development_Kit/module/documents/EMC_certification dedicated downloads folder].
 +
 
 +
The measurements were performed in an accredited test laboratory. After passing all the requirements described in the harmonised standard ETSI EN 301 489-17, the [https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/EMC_certification/iMX8M_Industrial_Development_Kit-EMC_certificate_with_conformity_assessment_and_test_reports.pdf EMC certificate with conformity assessment and test reports]  was issued for the iMX8M Industrial Development Kit.
  
 
== Connected cables/devices ==
 
== Connected cables/devices ==
* '''Power jack:''' [https://globtek.secure.force.com/spec/?id=01ta0000007dRGY +5V 40W power supply] was used for input voltage. Power supply PN: TR9WA8000CCPIM(R6B)
+
* '''Power source:''' [https://www.voipac.com/power-supply-5v-40w +5V 40W power supply] used for input voltage
* '''SD card (Sandisk):''' preloaded with filesystem, used for booting and for read/write test
+
* '''Storage device:''' eMMC Flash memory soldered on module used for booting, filesystem operation and script storage
* '''Ethernet:''' 1 meter CAT Ethernet [https://kb.juniper.net/InfoCenter/index?page=content&id=KB22174 loopback cable] connected. Forced to 100Mb and used for ping test
+
* '''Ethernet:''' 1m long CAT Ethernet [https://supportportal.juniper.net/s/article/EX-How-to-link-up-Juniper-Ethernet-switching-GbE-copper-port-by-RJ45-loopback-connector?language=en_US loopback cable] connected. Forced to 100Mbps and used for ping test
* '''DisplayPort (M) input source and monitor used:''' Output signal is connected to monitor through 2m DisplayPort cable, monitor is plugged into mains but not turned on. Monitor laid flat on the floor to minimise its affect on results. Used LCD monitor: 29" LG UltraWide 29WP60G-B 2560 × 1080 px
+
* one of these '''video output''' options was used at a time:
* '''LCD Display:'''Capacitive touch panel + Graphic LCD Display Module 1024 x 600 resolution. LCD PN: NHD-10.1-1024600MB-LSXV-CTP
+
** '''DisplayPort (M) interface used with LCD monitor connected:''' Full-HD output video stream generated and sent to LCD monitor via 1.5m long DisplayPort cable, with ferrite beads added (Würth Elektronik P/N: 742 711 32). The output signal forced to be continuously generated, contributing to EMC spectrum, monitor was plugged into mains, turned on, and laid flat on the floor to minimise its impact on results. Used LCD monitor: 24" LG LG24BK550Y 1920×1080 px
* '''2x USB flash drive:''' SanDisk Ultra Flair 16GB USB 3.2 Gen 1 (USB 3.0), USB-A each connected through a 1m USB 3.2 Gen extension cable (Molex PN: 0687890035). Both used during read/write test
+
** '''HDMI interface used with LCD monitor connected:''' Full-HD output video stream generated and sent to LCD monitor via 1.5m long HDMI cable, with ferrite beads added (Würth Elektronik P/N: 742 758 15). The output signal forced to be continuously generated, contributing to EMC spectrum, monitor was plugged into mains, turned on, and laid flat on the floor to minimise its impact on results. Used LCD monitor: 24" LG LG24BK550Y 1920×1080 px
* '''USB-C:''' Connected USB-C extension cable + USB stick. Cable PN: FCR72003. USB-C stick description: Kingston DataTraveler 80 32 GB USB stick USB 3.2 Gen 1 (USB 3.0), USB-C
+
** '''LCD Display:''' [https://www.voipac.com/newhaven-lvds-capacitive-display-set Newhaven LVDS Capacitive Display Set] with 1024x600 px resolution. The display was mounted on top of the development kit with metal standoffs, active and displaying continued video stream coming from the camera thus contributing to EMC spectrum. LCD P/N: NHD-10.1-1024600MB-LSXV-CTP
* '''PCAM 5C: 5 MP camera module''' Camera PN:410-358. The camera was plugged to baseboard and recognized by kernel, no future communication. During EMC measurement was added ferrite ring at flex cable close to camera module. Ferrite ring PN:SRP33.5x6.5x10
+
* '''2x USB 3.0:''' SanDisk Ultra Flair 16GB USB 3.2 Gen 1, each connected through a 1m long USB 3.2 Gen 1 extension cable (Molex P/N: 0687890035). Both used during read/write test
* '''CAN:''' MCP2518FD module inserted, but not actively used. No cable connected
+
* '''USB-C:''' Kingston DataTraveler 80 32GB USB 3.2 Gen 1, connected through USB-C extension cable (Cable P/N: FCR72003)
* '''Wi-Fi and Bluetooth:''' SPB228-D-3 or CM-276NF Populated on module (depend on configuration) inserted, but not actively used. Two ntennas connected
+
* '''Camera:''' [https://www.voipac.com/digilent-mipi-csi-camera-set Digilent MIPI-CSI Camera Set] plugged to the baseboard, recognised by the kernel, active and capturing video stream. Ferrite bead added on the ribbon cable connecting the kit and the camera module (Würth Elektronik P/N: 742 721 1)
* '''Debug cable:''' [https://www.voipac.com/#iMX6-TTL-00000000 FTDI TTL-3V3 UART to USB cable], used only to setup the board, not used and not plugged in during the measurements
+
* '''CAN:''' [https://www.voipac.com/can-bus-module CANbus Module] inserted, not actively used during testing. CAN cable not connected
* '''Microphone:''' Microphone connected but not actively used.
+
* '''WiFi and Bluetooth:''' Soldered directly on COM, placed in active scanning and discoverable mode, contributing to EMC spectrum. Depending on the temperature range, the default CM-276NF or alternative SPB228-D-3 module was populated. [https://www.voipac.com/wifi-and-bluetooth-antennas-set Two antennas] plugged in and connected
* '''Headphones:''' Headphones connected but not actively used.
+
* '''Console cable:''' Micro USB extension cable used only to setup the development kit, not plugged in during the measurements
* '''Line Out:''' Line Out connected but not actively used.
+
* '''SD card:''' SD card (SanDisk) plugged in and used during read/write test
 +
* '''Microphone:''' Microphone connected via 1.5m long cable, not actively used
 +
* '''Headphones:''' Headphones connected via 2m long cable, not actively used
 +
* '''Speakers:''' Line Out connected via 2m long cable, plugged into the mains and not actively used
 
<br />
 
<br />
  
[[image:iMX8M Industrial DP EMC.jpg|800px]]
+
[[image:iMX8M Industrial Development Kit-EMC overview.jpg|800px]]
 
 
== Test description ==
 
The main purpose of testing was to measure Radiated emission of  iMX8M Industrial Development Kit performing under heavy load. Following threads were running during the measurements:
 
* CPU stress test
 
* Memory stress test
 
* DisplayPort output
 
* SD card test (read & write)
 
* 2x USB 3.0 test (USB memory drive read & write stress test)
 
* Ethernet ping (and Ethernet SSH session)
 
  
== Results ==
+
== Testing conditions and results ==
All the results were measured in compliance with the emission limits for FCC Class B (EMC standard EN 55022B). Class B devices are suitable for both residential and industrial applications as the norm standards use more restrictive limits.
+
All the results were measured in compliance with the emission limits for FCC / ETSI Class B (EMC standards EN 55032B and EN 61000). Class B devices are suitable for both residential and industrial applications as the norm standards use more restrictive limits.
  
=== Graph description ===
+
=== iMX8M Industrial Development Kit Pro - Testing peripherals and external LCD display – PASSED ===
==== Lower band 30MHz - 1GHz ====
+
'''''Test description:'''''
Radiated emission is measured and displayed as quasi-peak values. This relation is represented as a blue curve in the measurements. Class B limits are shown by red highlighted line '''22F3M_B'''.
+
* development kit in standard webshop Pro configuration:
 +
** iMX8M Industrial Module Pro in Commercial temperature range
 +
** iMX Development Baseboard in Extended temperature range
 +
* CPU heavy testing threads using stressapptest
 +
* DDR4 memory heavy testing threads using stressapptest
 +
* Ethernet loopback cable used for network testing
 +
* running heavy read/write testing for USB devices and SD card
 +
* [https://www.voipac.com/digilent-mipi-csi-camera-set Digilent MIPI-CSI Camera Set] capturing video stream
 +
* [https://www.voipac.com/newhaven-lvds-capacitive-display-set LCD Newhaven LVDS Capacitive Display Set] actively used
 +
* [https://www.voipac.com/wifi-and-bluetooth-antennas-set two antennas with cables] actively used
 +
* cables and devices plugged in but not actively used:
 +
** USB-C
 +
** Audio jacks
 +
* [[#Peripherals heavy testing script|peripherals heavy testing script]] used<br /><br />
 +
[[image:iMX8M Industrial Development Kit-EMC RE-LCD display Digilent camera.jpg|800px]]
  
==== Higher band 1GHz - 4GHz ====
+
==== Radiated Emissions ====
Two plots displaying the power density are used to show results in higher bands. Similar to lower frequencies a blue curve represents quasi-peak values. Class B limits applied for quasi-peak measurements is plotted as the higher placed red line '''22F_P_B'''.<br />
+
The measurement starts with peak detection by scanning the whole frequency spectrum. This initial detection is plotted with the red curve. Afterwards the highest peaks were pointed and measured more thoroughly by quasi-peak method. These real measured values of the radiation are displayed with the red crosses. The graph shows the setup passed the strict residential 55032-B limit represented by the red highlighted line.<br />
Black curve depicts average-power values. Threshold for average-power measurement is shown with the lower placed limit line called '''22F_AV_B'''.
 
  
=== iMX6 TinyRex Development Kit Max with enclosure – PASS ===
+
These results prove that iMX8M Industrial Development Kit, even under heavy load, meets the stricter limits even if no enclosure is used.
Test description:
 
* stressapptest for CPU and memory
 
* Ethernet loopback
 
* running heavy testing script for USB and SD card read/write test
 
* HDMI input and output both tested with 720p video stream
 
* Ethernet SSH session
 
This setup used HDMI option with separate video input source and monitor. Both the board and the monitor were placed on the floor to minimise its effects. The power source was hidden inside the chamber tunnel under the testing table.<br /><br />
 
[[image:iMX6_TinyRex_Development_Kit-EMC-HDMI_with_source_and_monitor.jpg|800px]]<br /><br />
 
  
 +
==== Radiated emissions in lower band 30MHz - 1GHz ====
 +
'''''Antenna used:''''' ETS Lindgren 3143B BiConiLog Antenna 30 MHz to 1GHz<br />
 
{|style="text-align:center;"
 
{|style="text-align:center;"
| style="width: 47%;" |'''Vertical polarisation'''
+
| style="width: 49%; width:396px; border:1px solid black;" |<br />[[image:iMX8M_Industrial_Development_Kit-EMC_RE-HorPol_30MHz_1GHz-LCD_display.jpg|370px]]<br /><br />
| style="width: 6%;" |<br />
+
| style="width: 2%;" |<br />
| style="width: 47%;" |'''Horizontal polarisation'''
+
| style="width: 49%;width:396px; border:1px solid black;" |<br />[[image:iMX8M_Industrial_Development_Kit-EMC_RE-VerPol_30MHz_1GHz-LCD_display.jpg|370px]]<br /><br />
 
|-
 
|-
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Max-EMC-RE_30MHz-1GHz_Ver_Pol.png|370px]]<br /><br />
+
|[https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/EMC_certification/iMX8M_Industrial_Development_Kit-EMC-RE_30MHz-1GHz_Hor_Pol-Heavy_CPU_memory_stress_test%2BAudio%2BUSB-C%2BNHD_display%2BUSB3%2BMIPI_camera.pdf Horizontal polarisation]
 
|<br />
 
|<br />
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Max-EMC-RE_30MHz-1GHz_Hor_Pol.png|370px]]<br /><br />
+
|[https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/EMC_certification/iMX8M_Industrial_Development_Kit-EMC-RE_30MHz-1GHz_Ver_Pol-Heavy_CPU_memory_stress_test%2BAudio%2BUSB-C%2BNHD_display%2BUSB3%2BMIPI_camera.pdf Vertical polarisation]
|-
+
|}<br />
|colspan="3"|iMX6 TinyRex Development Kit Max: 30MHz - 1GHz
+
 
|}
+
==== Radiated emissions in higher band 1GHz - 6GHz ====
<br />
+
Two plots displaying the power density are used to show results in higher bands. Similar to lower frequencies red curve represents quasi-peak values. Class B limits applied for quasi-peak measurements are plotted as the higher placed red line ''55032,RF,1-6GHZ,PK,B.LIN''.<br />
 +
Green curve depicts average-power values. Threshold for average-power measurement is shown with the lower placed limit line called ''55032,RF,1-6GHZ,AV,B.LIN''.<br />
 +
 
 +
'''''Antenna used:''''' ETS Lindgren 3119 Horn Antenna 400MHz to 6GHz<br />
 +
'''''Note:''''' Emissions in the 2.4 and 5 GHz band are part of the working frequency band, they will be disregarded from the evaluation of results.<br />
 +
 
 
{|style="text-align:center;"
 
{|style="text-align:center;"
| style="width: 47%;" |'''Vertical polarisation'''
+
| style="width: 49%; width:396px; border:1px solid black;" |<br />[[image:iMX8M_Industrial_Development_Kit-EMC_RE-HorPol_1GHz_6GHz-LCD_display.jpg|370px]]<br /><br />
| style="width: 6%;" |<br />
+
| style="width: 2%;" |<br />
| style="width: 47%;" |'''Horizontal polarisation'''
+
| style="width: 49%;width:396px; border:1px solid black;" |<br />[[image:iMX8M_Industrial_Development_Kit-EMC_RE-VerPol_1GHz_6GHz-LCD_display.jpg|370px]]<br /><br />
 
|-
 
|-
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Max-EMC-RE_1GHz-4GHz_Ver_Pol.png|370px]]<br /><br />
+
|[https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/EMC_certification/iMX8M_Industrial_Development_Kit-EMC-RE_1GHz-6GHz_Hor_Pol-Heavy_CPU_memory_stress_test%2BAudio%2BUSB-C%2BNHD_display%2BUSB3%2BMIPI_camera.pdf Horizontal polarisation]
 
|<br />
 
|<br />
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Max-EMC-RE_1GHz-4GHz_Hor_Pol.png|370px]]<br /><br />
+
|[https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/EMC_certification/iMX8M_Industrial_Development_Kit-EMC-RE_1GHz-6GHz_Ver_Pol-Heavy_CPU_memory_stress_test%2BAudio%2BUSB-C%2BNHD_display%2BUSB3%2BMIPI_camera.pdf Vertical polarisation]
|-
+
|}<br />
|colspan="3"|iMX6 TinyRex Development Kit Max: 1GHz - 4GHz
+
 
|}
+
==== Conducted Emissions ====
 +
The measurement was performed by a clamp indirect method.<br />
 +
Enhanced input power protection on the iMX Development Baseboard does not allow direct line impedance stabilisation network (LISN) method to be used.<br /><br />
 +
[[image:iMX8M_Industrial_Development_Kit-EMC_CE.jpg|800px]]<br /><br />
 +
 
 +
===  iMX8M Industrial Development Kit Pro - Testing module and DisplayPort output - PASSED ===
 +
'''''Test description:'''''
 +
* development kit in standard webshop Pro configuration:
 +
** iMX8M Industrial Module Pro in Commercial temperature range
 +
** iMX Development Baseboard in Extended temperature range
 +
* CPU heavy testing threads using stressapptest
 +
* DDR4 memory heavy testing threads using stressapptest
 +
* Ethernet loopback cable used for network testing
 +
* running heavy read/write testing for USB devices and SD card
 +
* [https://www.voipac.com/digilent-mipi-csi-camera-set Digilent MIPI-CSI Camera Set] capturing video stream
 +
* DisplayPort output tested in Full-HD 1920x1080 resolution
 +
* [https://www.voipac.com/wifi-and-bluetooth-antennas-set two antennas with cables] actively used
 +
* cables and devices plugged in but not actively used:
 +
** [https://www.voipac.com/can-bus-module CANbus Module]
 +
** USB-C
 +
** Audio jacks
 +
** JTAG programmer
 +
* [[#Module heavy testing script|module heavy testing script]] used<br /><br />
  
=== iMX6 TinyRex Development Kit Max bare board with SATA hard drive – PASS ===
+
[[image:iMX8M_Industrial_Development_Kit-EMC_RE-DisplayPort.jpg|800px]]
Test description:
 
* stressapptest for CPU and memory
 
* SATA stress testing
 
* Ethernet loopback
 
* running heavy testing script for USB and SD card read/write test
 
* HDMI input and output both tested with 720p video stream
 
* Ethernet SSH session
 
  
This test also included SATA interface by stress testing connected SATA hard drive. During this test HDMI loopback option was used.<br /><br />
+
==== Radiated Emissions ====
 +
The measurement starts with peak detection by scanning the whole frequency spectrum. This initial detection is plotted with the red curve. Afterwards the highest peaks were pointed and measured more thoroughly by quasi-peak method. These real measured values of the radiation are displayed with the red crosses. The graph shows the setup passed the strict residential 55032-B limit represented by the red highlighted line.<br />
  
These results show that a heavy loaded iMX6 TinyRex Development Kit complies with stricter regulation even if no enclosure is used.<br /><br />
+
These results prove that iMX8M Industrial Development Kit, even under heavy load, meets the stricter limits even if no enclosure is used.
[[image:iMX6_TinyRex_Development_Kit-EMC-Testing_bare_board_with_SATA.jpg|800px]]<br /><br />
 
  
 +
==== Radiated emissions in lower band 30MHz - 1GHz ====
 +
'''''Antenna used:''''' ETS Lindgren 3143B BiConiLog Antenna 30 MHz to 1GHz<br />
 +
'''''Note:''''' Results in higher band 1GHz - 6GHz were very similar to the measurements performed on the [[#Radiated emissions in higher band 1GHz - 6GHz|previous]] testing setup
 
{|style="text-align:center;"
 
{|style="text-align:center;"
| style="width: 47%;" |'''Vertical polarisation'''
+
| style="width: 49%; width:396px; border:1px solid black;" |<br />[[image:iMX8M_Industrial_Development_Kit-EMC_RE-HorPol_30MHz_1GHz-DisplayPort.jpg|370px]]<br /><br />
| style="width: 6%;" |<br />
+
| style="width: 2%;" |<br />
| style="width: 47%;" |'''Horizontal polarisation'''
+
| style="width: 49%;width:396px; border:1px solid black;" |<br />[[image:iMX8M_Industrial_Development_Kit-EMC_RE-VerPol_30MHz_1GHz-DisplayPort.jpg|370px]]<br /><br />
 
|-
 
|-
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Max_with_SATA-EMC-RE_30MHz-1GHz_Ver_Pol.png|370px]]<br /><br />
+
|[https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/EMC_certification/iMX8M_Industrial_Development_Kit-EMC-RE_30MHz-1GHz_Hor_Pol-Heavy_CPU_memory_stress_test%2BAudio%2BUSB-C%2BDisplayPort_with_ferrite_beads%2BUSB3%2BMIPI_camera%2BCAN%2BJTAG.pdf Horizontal polarisation]
 
|<br />
 
|<br />
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Max_with_SATA-EMC-RE_30MHz-1GHz_Hor_Pol.png|370px]]<br /><br />
+
|[https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/EMC_certification/iMX8M_Industrial_Development_Kit-EMC-RE_30MHz-1GHz_Ver_Pol-Heavy_CPU_memory_stress_test%2BAudio%2BUSB-C%2BDisplayPort_with_ferrite_beads%2BUSB3%2BMIPI_camera%2BCAN%2BJTAG.pdf Vertical polarisation]
|-
+
|}<br />
|colspan="3"|iMX6 TinyRex Development Kit Max with SATA: 30MHz - 1GHz
+
 
|}
+
===  iMX8M Industrial Development Kit Pro - Testing module and HDMI output - PASSED ===
<br />
+
'''''Test description:'''''
 +
* development kit in standard webshop Pro configuration:
 +
** iMX8M Industrial Module Pro in Commercial temperature range
 +
** iMX Development Baseboard in Extended temperature range
 +
* CPU heavy testing threads using stressapptest
 +
* DDR4 memory heavy testing threads using stressapptest
 +
* Ethernet loopback cable used for network testing
 +
* running heavy read/write testing for USB devices and SD card
 +
* [https://www.voipac.com/digilent-mipi-csi-camera-set Digilent MIPI-CSI Camera Set] capturing video stream
 +
* HDMI output tested in Full-HD 1920x1080 resolution
 +
* [https://www.voipac.com/wifi-and-bluetooth-antennas-set two antennas with cables] actively used
 +
* cables and devices plugged in but not actively used:
 +
** USB-C
 +
** Audio jacks
 +
* [[#Module heavy testing script|module heavy testing script]] used<br /><br />
 +
 
 +
==== Radiated Emissions ====
 +
The measurement starts with peak detection by scanning the whole frequency spectrum. This initial detection is plotted with the red curve. Afterwards the highest peaks were pointed and measured more thoroughly by quasi-peak method. These real measured values of the radiation are displayed with the red crosses. The graph shows the setup passed the strict residential 55032-B limit represented by the red highlighted line.<br />
 +
 
 +
These results prove that iMX8M Industrial Development Kit, even under heavy load, meets the stricter limits even if no enclosure is used.
 +
 
 +
==== Radiated emissions in lower band 30MHz - 1GHz ====
 +
'''''Antenna used:''''' ETS Lindgren 3143B BiConiLog Antenna 30 MHz to 1GHz<br />
 +
'''''Note:''''' Results in higher band 1GHz - 6GHz were very similar to the measurements performed on the [[#Radiated emissions in higher band 1GHz - 6GHz|previous]] testing setup
 
{|style="text-align:center;"
 
{|style="text-align:center;"
| style="width: 47%;" |'''Vertical polarisation'''
+
| style="width: 49%; width:396px; border:1px solid black;" |<br />[[image:iMX8M_Industrial_Development_Kit-EMC_RE-HorPol_30MHz_1GHz-HDMI.jpg|370px]]<br /><br />
| style="width: 6%;" |<br />
+
| style="width: 2%;" |<br />
| style="width: 47%;" |'''Horizontal polarisation'''
+
| style="width: 49%;width:396px; border:1px solid black;" |<br />[[image:iMX8M_Industrial_Development_Kit-EMC_RE-VerPol_30MHz_1GHz-HDMI.jpg|370px]]<br /><br />
 
|-
 
|-
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Max_with_SATA-EMC-RE_1GHz-4GHz_Ver_Pol.png|370px]]<br /><br />
+
|[https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/EMC_certification/iMX8M_Industrial_Development_Kit-EMC-RE_30MHz-1GHz_Hor_Pol-Heavy_CPU_memory_stress_test%2BAudio%2BUSB-C%2BHDMI_with_ferrite_beads%2BUSB3.pdf Horizontal polarisation]
 
|<br />
 
|<br />
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Max_with_SATA-EMC-RE_1GHz-4GHz_Hor_Pol.png|370px]]<br /><br />
+
|[https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/EMC_certification/iMX8M_Industrial_Development_Kit-EMC-RE_30MHz-1GHz_Ver_Pol-Heavy_CPU_memory_stress_test%2BAudio%2BUSB-C%2BHDMI_with_ferrite_beads%2BUSB3.pdf Vertical polarisation]
|-
+
|}<br />
|colspan="3"|iMX6 TinyRex Development Kit Max with SATA: 1GHz - 4GHz
 
|}
 
  
=== iMX6 TinyRex Development Kit Pro with enclosure – PASS ===
+
=== Immunity - Radio frequency electromagnetic field 80MHz - 6GHz ===
Test description:
+
[[image:iMX8M_Industrial_Development_Kit-EMC_Immunity-RF_EM_Field.jpg|800px]]
* stressapptest for CPU and memory
 
* Ethernet loopback
 
* running heavy testing script for USB and SD card read/write test
 
* HDMI input and output both tested with 720p video stream (loopback option)
 
* Ethernet SSH session
 
<br />
 
[[image:iMX6_TinyRex_Development_Kit-EMC-HDMI_loopback.jpg|800px]]<br /><br />
 
  
{|style="text-align:center;"
+
{| class="wikitable" style="text-align:center;"  
| style="width: 47%;" |'''Vertical polarisation'''
+
!colspan="2"| !! colspan="4" style="text-align:right;"|Test results / EUT side exposure results
| style="width: 6%;" |<br />
+
|-
| style="width: 47%;" |'''Horizontal polarisation'''
+
!Frequency range<br />(MHz) !! Antenna<br />polarization !! Front !! Back !! Left !! Right
 
|-
 
|-
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Pro-EMC-RE_30MHz-1GHz_Ver_Pol.png|370px]]<br /><br />
+
|80 – 1000 || V || PASS || PASS || PASS || PASS
|<br />
 
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Pro-EMC-RE_30MHz-1GHz_Hor_Pol.png|370px]]<br /><br />
 
 
|-
 
|-
|colspan="3"|iMX6 TinyRex Development Kit Pro: 30MHz - 1GHz
+
|1000 – 6000 (*) || V || PASS || PASS || PASS || PASS
|}
 
<br />
 
{|style="text-align:center;"
 
| style="width: 47%;" |'''Vertical polarisation'''
 
| style="width: 6%;" |<br />
 
| style="width: 47%;" |'''Horizontal polarisation'''
 
 
|-
 
|-
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Pro-EMC-RE_1GHz-4GHz_Ver_Pol.png|370px]]<br /><br />
+
|80 – 1000 || H || PASS || PASS || PASS || PASS
|<br />
 
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Pro-EMC-RE_1GHz-4GHz_Hor_Pol.png|370px]]<br /><br />
 
 
|-
 
|-
|colspan="3"|iMX6 TinyRex Development Kit Pro: 1GHz - 4GHz
+
|1000 – 6000 (*) || H || PASS || PASS || PASS || PASS
 
|}
 
|}
  
=== iMX6 TinyRex Development Kit Basic with enclosure – PASS ===
+
'''''Note (*):''''' The exclusion bands are applicable in this frequency range.
Test description:
+
 
* stressapptest for CPU and memory
+
=== Conducted emission - wired network ports ===
* Ethernet loopback
+
[[image:iMX8M_Industrial_Development_Kit-EMC_CE-Network_wire_port.jpg|800px]]
* running heavy testing script for USB and SD card read/write test
 
* HDMI input and output both tested with 720p video stream (loopback option)
 
* Ethernet SSH session
 
<br />
 
  
 
{|style="text-align:center;"
 
{|style="text-align:center;"
| style="width: 47%;" |'''Vertical polarisation'''
+
| style="width: 49%; width:396px; border:1px solid black;" |<br />[[image:iMX8M_Industrial_Development_Kit-EMC_CE-Network_wire_port-Results.jpg|370px]]<br /><br />
| style="width: 6%;" |<br />
+
| style="width: 51%;" |<br />
| style="width: 47%;" |'''Horizontal polarisation'''
+
|}<br />
 +
 
 +
=== Immunity - Electrostatic discharge ===
 +
[[image:iMX8M_Industrial_Development_Kit-EMC_Immunity-ESD.jpg|800px]]
 +
 
 +
{| class="wikitable" style="text-align:center;"  
 +
!Discharge type !! Discharge<br />level<br />(kV) !! Discharge<br />location !! Number of discharges<br />per location for each<br />polarity<br />(number of locations) !! Performance<br />criterion !! Test result
 +
|-
 +
| Direct air discharge || ±8 || Non metallic parts || 10 (17) || B || PASS
 +
|-
 +
| Direct contact discharge || ±4  || Metallic parts || 10 (9) || B || PASS
 +
|-
 +
| Indirect contact discharge || ±4  || HCP - Front || 10 || B || PASS
 +
|-
 +
| Indirect contact discharge || ±4  || HCP - Left || 10 || B || PASS
 +
|-
 +
| Indirect contact discharge || ±4  || HCP - Right || 10 || B || PASS
 +
|-
 +
| Indirect contact discharge || ±4  || HCP - Rear || 10 || B || PASS
 
|-
 
|-
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Basic-EMC-RE_30MHz-1GHz_Ver_Pol.png|370px]]<br /><br />
+
| Indirect contact discharge || ±4  || VCP - Front || 10 || B || PASS
|<br />
 
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Basic-EMC-RE_30MHz-1GHz_Hor_Pol.png|370px]]<br /><br />
 
 
|-
 
|-
|colspan="3"|iMX6 TinyRex Development Kit Basic: 30MHz - 1GHz
+
| Indirect contact discharge || ±4  || VCP - Left || 10 || B || PASS
|}
 
<br />
 
{|style="text-align:center;"
 
| style="width: 47%;" |'''Vertical polarisation'''
 
| style="width: 6%;" |<br />
 
| style="width: 47%;" |'''Horizontal polarisation'''
 
 
|-
 
|-
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Basic-EMC-RE_1GHz-4GHz_Ver_Pol.png|370px]]<br /><br />
+
| Indirect contact discharge || ±4  || VCP - Right || 10 || B || PASS
|<br />
 
|style="width:396px; border:1px solid black;" |<br />[[image:iMX6_TinyRex_Development_Kit_Basic-EMC-RE_1GHz-4GHz_Hor_Pol.png|370px]]<br /><br />
 
 
|-
 
|-
|colspan="3"|iMX6 TinyRex Development Kit Basic: 1GHz - 4GHz
+
| Indirect contact discharge || ±4  || VCP - Rear || 10 || B || PASS
 
|}
 
|}
 +
 +
'''''Note (*):'''''  The EUT was without exposed conductive surfaces.<br />
 +
'''''Abbreviation:''''' HCP - Horizontal coupling plane<br />
 +
'''''Abbreviation:''''' VCP - Vertical coupling plane<br />
  
 
== Preparing the test ==
 
== Preparing the test ==
 
===  Boot device and software ===
 
===  Boot device and software ===
SD card was selected as a booting device for all the boards. U-Boot settings were not adjusted as the default configuration was used. The only change compared to standard software package was running a multimedia filesystem. To prepare a fresh SD card follow [[iMX6 TinyRex Max Creating Bootable microSD Card|these instructions]]. Here is an example of creating a SD card suitable for Max configuration:
+
These measurements were performed with boards using the actual hardware and software configuration of the web shop development kits.<br />
<syntaxhighlight lang="bash">
 
git clone https://github.com/voipac/imx6tinyrex_bin_linux
 
cd imx6tinyrex_bin_linux/
 
sudo ./fsl-sdcard-partition.sh -max /dev/mmcblk0
 
</syntaxhighlight>
 
 
 
=== Starting DHCP server ===
 
The boards were mainly operated through SSH sessions. Thus it is very useful to have the same IP address during the whole process. The easiest way to do so is to run DHCP server on the controlling computer. To allow boards using the same address enable persistent leases with a long duration (2880 min used below):<br />
 
[[image:iMX6_TinyRex_Development_Kit-Env_chamber-DHCP_settings.png|360px]]
 
 
 
=== Preserving SSH session ===
 
To minimise the possibility of results being affected, the control computer was disconnected and taken outside of the test chamber (after the board was setup).<br /><br />
 
  
When Ethernet cable connected to a board is disconnected, Linux terminates all the processes started within SSH sessions by default. [https://www.gnu.org/software/screen/manual/screen.html ''Screen''] command allows to keep these sessions running. This command allow tasks to continue even if the cable is unplugged (and Ethernet loopback is plugged right away). It is important to make sure the filesystem includes this command:
+
eMMC Flash memory was selected as a booting device for all the measurements. U-Boot settings were not adjusted as the default configuration was used.
<syntaxhighlight lang="bash">
 
sudo apt-get install screen
 
</syntaxhighlight>
 
  
 
=== Running the script ===
 
=== Running the script ===
Plug the board into mains and connect to it via SSH session. Screen environment is opened:
+
Plug the development kit into mains and connect it to the controlling PC via console. Before the first time usage of the script, permissions need to be granted by the following command:  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
screen -S tinyrex
+
chmod +x imx8m-voipac-peripheral-test.sh
 
</syntaxhighlight>
 
</syntaxhighlight>
 
+
<br />
Testing scripts command consists of following arguments
+
Testing scripts command consists of the following arguments:
* the first parameter - version of tested board (-max, -pro or -basic)
+
* the first parameter - configuration of tested development kit (Max, Pro or Basic)
 
* the second parameter - USB drive 1 location
 
* the second parameter - USB drive 1 location
 
* the third parameter - USB drive 2 location
 
* the third parameter - USB drive 2 location
 
* the fourth parameter - SD card location
 
* the fourth parameter - SD card location
 
<br />
 
<br />
Several commands which were used during EMC testing are shown below:
+
One of these commands can be used during EMC testing as shown below:
  
* iMX8MQ Development Kit Pro:
+
* iMX8M Industrial Development Kit Max:
 +
<syntaxhighlight lang="bash">
 +
./imx8m-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i imx8m-emc-testing.log
 +
</syntaxhighlight>
 +
* iMX8M Industrial Development Kit Pro:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
./imx8mq-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i imx8mq-emc-testing.log
+
./imx8m-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i imx8m-emc-testing.log
 
</syntaxhighlight>
 
</syntaxhighlight>
* iMX8MQ Development Kit Max:
+
* iMX8M Industrial Development Kit Basic:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
./imx8mq-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i imx8mq-emc-testing.log
+
./imx8m-voipac-peripheral-test.sh -basic sda1 sdb1 mmcblk1p1 | tee -i imx8m-emc-testing.log
 
</syntaxhighlight>
 
</syntaxhighlight>
* iMX8MQ Development Kit Basic:
+
 
 +
== Testing scripts ==
 +
=== Peripherals heavy testing script ===
 +
This code was used during the measurements, focusing on peripherals influence on the emissions. The complete script can also be found in [https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/EMC_certification/imx8m-voipac-peripheral-test.sh the downloads section].
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
./imx8mq-voipac-peripheral-test.sh -basic -n sda1 sdb1 mmcblk1p1 | tee -i imq8mq-emc-testing.log
+
#!/bin/sh
 +
 +
# iMX8M Industrial Development Kit peripheral test
 +
 
 +
mountDevice() {
 +
  mkdir -p "/media/$2"
 +
  mount /dev/$1 /media/$2
 +
  cat /proc/mounts | grep -F "/dev/$1 /media/$2"
 +
  if [ "$?" -eq "0" ]; then
 +
    echo "$2 mounted"
 +
  else
 +
    echo "$2 not mounted"; exit 2
 +
  fi
 +
}
 +
 +
# prepare files
 +
cd ~/
 +
mkdir -p imx8m-industrial-testing/
 +
cd imx8m-industrial-testing/
 +
 
 +
touch imx8m-industrial-testing.log
 +
touch cpu-temp.log
 +
 +
basic=0
 +
pro=0
 +
max=0
 +
case $1 in
 +
  -basic)  basic=1 ;;
 +
  -pro)  pro=1 ;;
 +
  -max)  max=1 ;;
 +
  *)
 +
esac
 +
 
 +
# mount devices
 +
mountDevice $2 usb0
 +
mountDevice $3 usb1
 +
mountDevice $4 mmc0
 +
 +
updateLogFiles() {
 +
  # obtain board ID from IP address - be sure addresses are allocated based on MAC
 +
  boardID=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1 | cut -d'.' -f4 | cut -d'2' -f2);
 +
  # be sure time server is running on DHCP server
 +
  currentTime=`date +%Y-%m-%d.%H:%M`
 +
 
 +
  mv imx8m-industrial-testing.log imx8m-industrial-$boardID-testing.log.$currentTime
 +
  mv cpu-temp.log imx8m-industrial-$boardID-cpu-temp.log.$currentTime
 +
}
 +
 +
finish_test_now() {
 +
  echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ctrl+C Detected: End of the test"
 +
  precced=0;
 +
  #kill -INT $vid_pid $str_pid $log_pid;
 +
  sleep 3;
 +
  test_status=`cat imx8m-industrial-testing.log | grep -i "error" | grep -v -e "0 errors" -e "no corrected errors"`
 +
  if [ -z "$test_status" ]
 +
  then
 +
    echo "*********TEST PASS*********"
 +
  else
 +
    echo "*********TEST FAIL*********"
 +
    echo "List of detected errors:"
 +
    cat imx8m-industrial-testing.log | grep -i "error" | grep -v -e "0 errors" -e "no corrected errors" -e "List of detected errors:"
 +
  fi
 +
  updateLogFiles
 +
  exit;
 +
}
 +
 
 +
# kill all processes if Ctrl+C is detected
 +
trap finish_test_now 2
 +
 +
# play video stream
 +
gst-launch-1.0 -q imxv4l2src ! autovideosink &
 +
 +
# stressapptest - CPU threads and RAM memory threads
 +
if [ "${basic}" -eq "1" ]; then
 +
  stress-ng --cpu 2 --vm 4 &
 +
  str_pid=$!
 +
fi
 +
if [ "${pro}" -eq "1" ]; then
 +
  stress-ng --cpu 4 --vm 4 &
 +
  str_pid=$!
 +
fi
 +
if [ "${max}" -eq "1" ]; then
 +
  stress-ng --cpu 4 --vm 4 &
 +
  str_pid=$!
 +
fi
 +
echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Starting stressapptest with PID: " $str_pid
 +
 
 +
proceed=1
 +
# create test files
 +
file1_path=`mktemp`
 +
file2_path=`mktemp`
 +
file1=`basename $file1_path`
 +
file2=`basename $file2_path`
 +
 
 +
dd if=/dev/urandom of=$file1_path bs=1024 count=10000
 +
dd if=/dev/urandom of=$file2_path bs=1024 count=10000
 +
 +
cp1_from="/media/mmc0/"
 +
cp1_to="/media/usb0/"
 +
 +
cp2_from="/media/usb0/"
 +
cp2_to="/media/usb1/"
 +
 +
#copy files in case they are missing
 +
cp $file1_path $cp1_from
 +
cp $file1_path $cp1_to
 +
cp $file2_path $cp2_from
 +
cp $file2_path $cp2_to
 +
 
 +
while [ $proceed -eq 1 ]
 +
do
 +
  # before running script check if the ip address exist
 +
  ping -q -c1 192.168.0.2 >> imx8m-industrial-testing.log
 +
  if [ $? -ne 0 ]
 +
  then
 +
    echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed"
 +
  else
 +
    echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ping OK"
 +
  fi
 +
 
 +
  cp1_done=`ps | grep $cp1_pid | grep cp`
 +
  if [ -z "$cp1_done" ]; then # copy finished
 +
    if cmp -s $cp1_from$file1 $cp1_to$file1; then
 +
      echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp1_from to $cp1_to successful"
 +
    else
 +
      echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp1_from and $cp1_to detected"
 +
    fi
 +
    cp1_temp=$cp1_from # swap destinations
 +
    cp1_from=$cp1_to
 +
    cp1_to=$cp1_temp
 +
     
 +
    rm $cp1_to$file1 # remove destination file
 +
     
 +
    cp $cp1_from$file1 $cp1_to$file1 &
 +
    cp1_pid=$!
 +
    echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp1_from to $cp1_to"
 +
  fi
 +
   
 +
  cp2_done=`ps | grep $cp2_pid | grep cp`
 +
  if [ -z "$cp2_done" ]; then # copy finished
 +
    if cmp -s $cp2_from$file2 $cp2_to$file2; then
 +
      echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp2_from to $cp2_to successful"
 +
    else
 +
      echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp2_from and $cp2_to detected"
 +
    fi
 +
    cp2_temp=$cp2_from # swap destinations
 +
    cp2_from=$cp2_to
 +
    cp2_to=$cp2_temp
 +
     
 +
    rm $cp2_to$file2 # remove destination file
 +
     
 +
    cp $cp2_from$file2 $cp2_to$file2 &
 +
    cp2_pid=$!
 +
    echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp2_from to $cp2_to"
 +
  fi
 +
 
 +
done
 
</syntaxhighlight>
 
</syntaxhighlight>
  
The complete script can be found in [https://github.com/voipac/imx8m-production.git]
+
=== Module heavy testing script ===
 +
This script was utilised for testing procedure where the measurement was primarily focused on the module emissions. To use this script, plug the development kit into mains, connect it to controlling PC via console and copy the code below:
 +
<syntaxhighlight lang="bash">
 +
for d in $(seq 1 1 999)
 +
do
 +
uptime
 +
echo "Test $a Test $b Test $c  $d times"
 +
echo "Start stress-ng --iomix 1 -t 10 -v"
 +
stress-ng --iomix 1 -t 10 -v
 +
echo "End"
 +
echo "Start Thermal zone information"
 +
stress-ng --matrix 0 --tz -t 10 --log-brief -t 10
 +
echo "End"
 +
ping -q -c1 192.168.0.2 >> imx8m-industrial-testing.log
 +
  if [ $? -ne 0 ]
 +
  then
 +
echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed"
 +
  fi
 +
echo "End"
 +
done
 +
</syntaxhighlight>
  
<br />
+
=== Starting camera capture ===
 +
To initiate the Digilent camera to start the recording of video stream, following command can be used:
 +
<syntaxhighlight lang="bash">
 +
GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src device=/dev/video1 ! 'video/x-raw,framerate=30/1' ! autovideosink
 +
</syntaxhighlight>

Latest revision as of 14:51, 11 September 2024

Electromagnetic compatibility results for iMX8M Industrial Development Kit are presented on this page. Test setup and scripts are described in details.

These tests were performed with setups using the standard hardware and software configurations of the web shop development kits.

The certificate measurements were carried out on the iMX8M Industrial Development Kit in Pro version as this configuration delivers the best price-performance ratio and is the most popular amongst the customers. Other configurations - Max and Basic were also tested both passing the EMC radiated and conducted emmissions Class B norm. As the differences in the results were negligible, this web page focuses on the certificated measurements of the Pro configuration of the development kit.

The certificate document contains numerous different measurement as described in the ETSI EMC standards. This wiki page highlights and discuses only the most important results. All the details can be found in the EMC certificate and dedicated downloads folder.

The measurements were performed in an accredited test laboratory. After passing all the requirements described in the harmonised standard ETSI EN 301 489-17, the EMC certificate with conformity assessment and test reports was issued for the iMX8M Industrial Development Kit.

Connected cables/devices

  • Power source: +5V 40W power supply used for input voltage
  • Storage device: eMMC Flash memory soldered on module used for booting, filesystem operation and script storage
  • Ethernet: 1m long CAT Ethernet loopback cable connected. Forced to 100Mbps and used for ping test
  • one of these video output options was used at a time:
    • DisplayPort (M) interface used with LCD monitor connected: Full-HD output video stream generated and sent to LCD monitor via 1.5m long DisplayPort cable, with ferrite beads added (Würth Elektronik P/N: 742 711 32). The output signal forced to be continuously generated, contributing to EMC spectrum, monitor was plugged into mains, turned on, and laid flat on the floor to minimise its impact on results. Used LCD monitor: 24" LG LG24BK550Y 1920×1080 px
    • HDMI interface used with LCD monitor connected: Full-HD output video stream generated and sent to LCD monitor via 1.5m long HDMI cable, with ferrite beads added (Würth Elektronik P/N: 742 758 15). The output signal forced to be continuously generated, contributing to EMC spectrum, monitor was plugged into mains, turned on, and laid flat on the floor to minimise its impact on results. Used LCD monitor: 24" LG LG24BK550Y 1920×1080 px
    • LCD Display: Newhaven LVDS Capacitive Display Set with 1024x600 px resolution. The display was mounted on top of the development kit with metal standoffs, active and displaying continued video stream coming from the camera thus contributing to EMC spectrum. LCD P/N: NHD-10.1-1024600MB-LSXV-CTP
  • 2x USB 3.0: SanDisk Ultra Flair 16GB USB 3.2 Gen 1, each connected through a 1m long USB 3.2 Gen 1 extension cable (Molex P/N: 0687890035). Both used during read/write test
  • USB-C: Kingston DataTraveler 80 32GB USB 3.2 Gen 1, connected through USB-C extension cable (Cable P/N: FCR72003)
  • Camera: Digilent MIPI-CSI Camera Set plugged to the baseboard, recognised by the kernel, active and capturing video stream. Ferrite bead added on the ribbon cable connecting the kit and the camera module (Würth Elektronik P/N: 742 721 1)
  • CAN: CANbus Module inserted, not actively used during testing. CAN cable not connected
  • WiFi and Bluetooth: Soldered directly on COM, placed in active scanning and discoverable mode, contributing to EMC spectrum. Depending on the temperature range, the default CM-276NF or alternative SPB228-D-3 module was populated. Two antennas plugged in and connected
  • Console cable: Micro USB extension cable used only to setup the development kit, not plugged in during the measurements
  • SD card: SD card (SanDisk) plugged in and used during read/write test
  • Microphone: Microphone connected via 1.5m long cable, not actively used
  • Headphones: Headphones connected via 2m long cable, not actively used
  • Speakers: Line Out connected via 2m long cable, plugged into the mains and not actively used


iMX8M Industrial Development Kit-EMC overview.jpg

Testing conditions and results

All the results were measured in compliance with the emission limits for FCC / ETSI Class B (EMC standards EN 55032B and EN 61000). Class B devices are suitable for both residential and industrial applications as the norm standards use more restrictive limits.

iMX8M Industrial Development Kit Pro - Testing peripherals and external LCD display – PASSED

Test description:

  • development kit in standard webshop Pro configuration:
    • iMX8M Industrial Module Pro in Commercial temperature range
    • iMX Development Baseboard in Extended temperature range
  • CPU heavy testing threads using stressapptest
  • DDR4 memory heavy testing threads using stressapptest
  • Ethernet loopback cable used for network testing
  • running heavy read/write testing for USB devices and SD card
  • Digilent MIPI-CSI Camera Set capturing video stream
  • LCD Newhaven LVDS Capacitive Display Set actively used
  • two antennas with cables actively used
  • cables and devices plugged in but not actively used:
    • USB-C
    • Audio jacks
  • peripherals heavy testing script used

iMX8M Industrial Development Kit-EMC RE-LCD display Digilent camera.jpg

Radiated Emissions

The measurement starts with peak detection by scanning the whole frequency spectrum. This initial detection is plotted with the red curve. Afterwards the highest peaks were pointed and measured more thoroughly by quasi-peak method. These real measured values of the radiation are displayed with the red crosses. The graph shows the setup passed the strict residential 55032-B limit represented by the red highlighted line.

These results prove that iMX8M Industrial Development Kit, even under heavy load, meets the stricter limits even if no enclosure is used.

Radiated emissions in lower band 30MHz - 1GHz

Antenna used: ETS Lindgren 3143B BiConiLog Antenna 30 MHz to 1GHz


iMX8M Industrial Development Kit-EMC RE-HorPol 30MHz 1GHz-LCD display.jpg



iMX8M Industrial Development Kit-EMC RE-VerPol 30MHz 1GHz-LCD display.jpg

Horizontal polarisation
Vertical polarisation


Radiated emissions in higher band 1GHz - 6GHz

Two plots displaying the power density are used to show results in higher bands. Similar to lower frequencies red curve represents quasi-peak values. Class B limits applied for quasi-peak measurements are plotted as the higher placed red line 55032,RF,1-6GHZ,PK,B.LIN.
Green curve depicts average-power values. Threshold for average-power measurement is shown with the lower placed limit line called 55032,RF,1-6GHZ,AV,B.LIN.

Antenna used: ETS Lindgren 3119 Horn Antenna 400MHz to 6GHz
Note: Emissions in the 2.4 and 5 GHz band are part of the working frequency band, they will be disregarded from the evaluation of results.


iMX8M Industrial Development Kit-EMC RE-HorPol 1GHz 6GHz-LCD display.jpg



iMX8M Industrial Development Kit-EMC RE-VerPol 1GHz 6GHz-LCD display.jpg

Horizontal polarisation
Vertical polarisation


Conducted Emissions

The measurement was performed by a clamp indirect method.
Enhanced input power protection on the iMX Development Baseboard does not allow direct line impedance stabilisation network (LISN) method to be used.

iMX8M Industrial Development Kit-EMC CE.jpg

iMX8M Industrial Development Kit Pro - Testing module and DisplayPort output - PASSED

Test description:

  • development kit in standard webshop Pro configuration:
    • iMX8M Industrial Module Pro in Commercial temperature range
    • iMX Development Baseboard in Extended temperature range
  • CPU heavy testing threads using stressapptest
  • DDR4 memory heavy testing threads using stressapptest
  • Ethernet loopback cable used for network testing
  • running heavy read/write testing for USB devices and SD card
  • Digilent MIPI-CSI Camera Set capturing video stream
  • DisplayPort output tested in Full-HD 1920x1080 resolution
  • two antennas with cables actively used
  • cables and devices plugged in but not actively used:
  • module heavy testing script used

iMX8M Industrial Development Kit-EMC RE-DisplayPort.jpg

Radiated Emissions

The measurement starts with peak detection by scanning the whole frequency spectrum. This initial detection is plotted with the red curve. Afterwards the highest peaks were pointed and measured more thoroughly by quasi-peak method. These real measured values of the radiation are displayed with the red crosses. The graph shows the setup passed the strict residential 55032-B limit represented by the red highlighted line.

These results prove that iMX8M Industrial Development Kit, even under heavy load, meets the stricter limits even if no enclosure is used.

Radiated emissions in lower band 30MHz - 1GHz

Antenna used: ETS Lindgren 3143B BiConiLog Antenna 30 MHz to 1GHz
Note: Results in higher band 1GHz - 6GHz were very similar to the measurements performed on the previous testing setup


iMX8M Industrial Development Kit-EMC RE-HorPol 30MHz 1GHz-DisplayPort.jpg



iMX8M Industrial Development Kit-EMC RE-VerPol 30MHz 1GHz-DisplayPort.jpg

Horizontal polarisation
Vertical polarisation


iMX8M Industrial Development Kit Pro - Testing module and HDMI output - PASSED

Test description:

  • development kit in standard webshop Pro configuration:
    • iMX8M Industrial Module Pro in Commercial temperature range
    • iMX Development Baseboard in Extended temperature range
  • CPU heavy testing threads using stressapptest
  • DDR4 memory heavy testing threads using stressapptest
  • Ethernet loopback cable used for network testing
  • running heavy read/write testing for USB devices and SD card
  • Digilent MIPI-CSI Camera Set capturing video stream
  • HDMI output tested in Full-HD 1920x1080 resolution
  • two antennas with cables actively used
  • cables and devices plugged in but not actively used:
    • USB-C
    • Audio jacks
  • module heavy testing script used

Radiated Emissions

The measurement starts with peak detection by scanning the whole frequency spectrum. This initial detection is plotted with the red curve. Afterwards the highest peaks were pointed and measured more thoroughly by quasi-peak method. These real measured values of the radiation are displayed with the red crosses. The graph shows the setup passed the strict residential 55032-B limit represented by the red highlighted line.

These results prove that iMX8M Industrial Development Kit, even under heavy load, meets the stricter limits even if no enclosure is used.

Radiated emissions in lower band 30MHz - 1GHz

Antenna used: ETS Lindgren 3143B BiConiLog Antenna 30 MHz to 1GHz
Note: Results in higher band 1GHz - 6GHz were very similar to the measurements performed on the previous testing setup


iMX8M Industrial Development Kit-EMC RE-HorPol 30MHz 1GHz-HDMI.jpg



iMX8M Industrial Development Kit-EMC RE-VerPol 30MHz 1GHz-HDMI.jpg

Horizontal polarisation
Vertical polarisation


Immunity - Radio frequency electromagnetic field 80MHz - 6GHz

iMX8M Industrial Development Kit-EMC Immunity-RF EM Field.jpg

Test results / EUT side exposure results
Frequency range
(MHz)
Antenna
polarization
Front Back Left Right
80 – 1000 V PASS PASS PASS PASS
1000 – 6000 (*) V PASS PASS PASS PASS
80 – 1000 H PASS PASS PASS PASS
1000 – 6000 (*) H PASS PASS PASS PASS

Note (*): The exclusion bands are applicable in this frequency range.

Conducted emission - wired network ports

iMX8M Industrial Development Kit-EMC CE-Network wire port.jpg


iMX8M Industrial Development Kit-EMC CE-Network wire port-Results.jpg



Immunity - Electrostatic discharge

iMX8M Industrial Development Kit-EMC Immunity-ESD.jpg

Discharge type Discharge
level
(kV)
Discharge
location
Number of discharges
per location for each
polarity
(number of locations)
Performance
criterion
Test result
Direct air discharge ±8 Non metallic parts 10 (17) B PASS
Direct contact discharge ±4 Metallic parts 10 (9) B PASS
Indirect contact discharge ±4 HCP - Front 10 B PASS
Indirect contact discharge ±4 HCP - Left 10 B PASS
Indirect contact discharge ±4 HCP - Right 10 B PASS
Indirect contact discharge ±4 HCP - Rear 10 B PASS
Indirect contact discharge ±4 VCP - Front 10 B PASS
Indirect contact discharge ±4 VCP - Left 10 B PASS
Indirect contact discharge ±4 VCP - Right 10 B PASS
Indirect contact discharge ±4 VCP - Rear 10 B PASS

Note (*): The EUT was without exposed conductive surfaces.
Abbreviation: HCP - Horizontal coupling plane
Abbreviation: VCP - Vertical coupling plane

Preparing the test

Boot device and software

These measurements were performed with boards using the actual hardware and software configuration of the web shop development kits.

eMMC Flash memory was selected as a booting device for all the measurements. U-Boot settings were not adjusted as the default configuration was used.

Running the script

Plug the development kit into mains and connect it to the controlling PC via console. Before the first time usage of the script, permissions need to be granted by the following command:

chmod +x imx8m-voipac-peripheral-test.sh


Testing scripts command consists of the following arguments:

  • the first parameter - configuration of tested development kit (Max, Pro or Basic)
  • the second parameter - USB drive 1 location
  • the third parameter - USB drive 2 location
  • the fourth parameter - SD card location


One of these commands can be used during EMC testing as shown below:

  • iMX8M Industrial Development Kit Max:
./imx8m-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i imx8m-emc-testing.log
  • iMX8M Industrial Development Kit Pro:
./imx8m-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i imx8m-emc-testing.log
  • iMX8M Industrial Development Kit Basic:
./imx8m-voipac-peripheral-test.sh -basic sda1 sdb1 mmcblk1p1 | tee -i imx8m-emc-testing.log

Testing scripts

Peripherals heavy testing script

This code was used during the measurements, focusing on peripherals influence on the emissions. The complete script can also be found in the downloads section.

#!/bin/sh
 
# iMX8M Industrial Development Kit peripheral test
  
mountDevice() {
  mkdir -p "/media/$2"
  mount /dev/$1 /media/$2
  cat /proc/mounts | grep -F "/dev/$1 /media/$2"
  if [ "$?" -eq "0" ]; then
    echo "$2 mounted"
  else
    echo "$2 not mounted"; exit 2
  fi
}
 
# prepare files
cd ~/
mkdir -p imx8m-industrial-testing/
cd imx8m-industrial-testing/
   
touch imx8m-industrial-testing.log
touch cpu-temp.log
 
basic=0
pro=0
max=0
case $1 in
  -basic)  basic=1 ;;
  -pro)  pro=1 ;;
  -max)  max=1 ;;
  *)
esac
  
# mount devices
mountDevice $2 usb0
mountDevice $3 usb1
mountDevice $4 mmc0
 
updateLogFiles() {
  # obtain board ID from IP address - be sure addresses are allocated based on MAC
  boardID=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1 | cut -d'.' -f4 | cut -d'2' -f2);
  # be sure time server is running on DHCP server
  currentTime=`date +%Y-%m-%d.%H:%M`
   
  mv imx8m-industrial-testing.log imx8m-industrial-$boardID-testing.log.$currentTime
  mv cpu-temp.log imx8m-industrial-$boardID-cpu-temp.log.$currentTime
}
 
finish_test_now() {
  echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ctrl+C Detected: End of the test"
  precced=0;
  #kill -INT $vid_pid $str_pid $log_pid;
  sleep 3;
  test_status=`cat imx8m-industrial-testing.log | grep -i "error" | grep -v -e "0 errors" -e "no corrected errors"`
  if [ -z "$test_status" ]
  then
    echo "*********TEST PASS*********"
  else
    echo "*********TEST FAIL*********"
    echo "List of detected errors:"
    cat imx8m-industrial-testing.log | grep -i "error" | grep -v -e "0 errors" -e "no corrected errors" -e "List of detected errors:"
  fi
  updateLogFiles
  exit;
}
  
# kill all processes if Ctrl+C is detected
trap finish_test_now 2
 
# play video stream
gst-launch-1.0 -q imxv4l2src ! autovideosink &
 
# stressapptest - CPU threads and RAM memory threads
if [ "${basic}" -eq "1" ]; then
  stress-ng --cpu 2 --vm 4 &
  str_pid=$!
fi
if [ "${pro}" -eq "1" ]; then
  stress-ng --cpu 4 --vm 4 &
  str_pid=$!
fi
if [ "${max}" -eq "1" ]; then
  stress-ng --cpu 4 --vm 4 &
  str_pid=$!
fi
echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Starting stressapptest with PID: " $str_pid
  
proceed=1
# create test files
file1_path=`mktemp`
file2_path=`mktemp`
file1=`basename $file1_path`
file2=`basename $file2_path`

dd if=/dev/urandom of=$file1_path bs=1024 count=10000
dd if=/dev/urandom of=$file2_path bs=1024 count=10000
 
cp1_from="/media/mmc0/"
cp1_to="/media/usb0/"
 
cp2_from="/media/usb0/"
cp2_to="/media/usb1/"
 
#copy files in case they are missing
cp $file1_path $cp1_from
cp $file1_path $cp1_to
cp $file2_path $cp2_from
cp $file2_path $cp2_to
  
while [ $proceed -eq 1 ]
do
  # before running script check if the ip address exist 
  ping -q -c1 192.168.0.2 >> imx8m-industrial-testing.log
  if [ $? -ne 0 ]
  then
    echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed"
  else
    echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ping OK"
  fi
  
  cp1_done=`ps | grep $cp1_pid | grep cp`
  if [ -z "$cp1_done" ]; then # copy finished
    if cmp -s $cp1_from$file1 $cp1_to$file1; then
      echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp1_from to $cp1_to successful"
    else
      echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp1_from and $cp1_to detected"
    fi
    cp1_temp=$cp1_from # swap destinations
    cp1_from=$cp1_to
    cp1_to=$cp1_temp
      
    rm $cp1_to$file1 # remove destination file
      
    cp $cp1_from$file1 $cp1_to$file1 &
    cp1_pid=$!
    echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp1_from to $cp1_to"
  fi
    
  cp2_done=`ps | grep $cp2_pid | grep cp`
  if [ -z "$cp2_done" ]; then # copy finished
    if cmp -s $cp2_from$file2 $cp2_to$file2; then
      echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp2_from to $cp2_to successful"
    else
      echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp2_from and $cp2_to detected"
    fi
    cp2_temp=$cp2_from # swap destinations
    cp2_from=$cp2_to
    cp2_to=$cp2_temp
      
    rm $cp2_to$file2 # remove destination file
      
    cp $cp2_from$file2 $cp2_to$file2 &
    cp2_pid=$!
    echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp2_from to $cp2_to"
  fi
  
done

Module heavy testing script

This script was utilised for testing procedure where the measurement was primarily focused on the module emissions. To use this script, plug the development kit into mains, connect it to controlling PC via console and copy the code below:

for d in $(seq 1 1 999)
do
	uptime
	echo "Test $a Test $b Test $c  $d times"
	echo "Start stress-ng --iomix 1 -t 10 -v"
	stress-ng --iomix 1 -t 10 -v
	echo "End"
	echo "Start Thermal zone information"
	stress-ng --matrix 0 --tz -t 10 --log-brief -t 10
	echo "End"
	ping -q -c1 192.168.0.2 >> imx8m-industrial-testing.log
	  if [ $? -ne 0 ]
	  then
		echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed"
	  fi
	echo "End"
done

Starting camera capture

To initiate the Digilent camera to start the recording of video stream, following command can be used:

GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src device=/dev/video1 ! 'video/x-raw,framerate=30/1' ! autovideosink