Difference between revisions of "iMX93 Industrial Environmental chamber testing"
(4 intermediate revisions by the same user not shown) | |||
Line 19: | Line 19: | ||
** eMMC Flash 32GB - industrial temperature range (-40°C to +85°C) | ** eMMC Flash 32GB - industrial temperature range (-40°C to +85°C) | ||
** 2x 1Gb Ethernet PHY - industrial temperature range (-40°C to +85°C) | ** 2x 1Gb Ethernet PHY - industrial temperature range (-40°C to +85°C) | ||
− | ** | + | ** WiFi 6 & Bluetooth 5.3 Module - industrial temperature range (-40°C to +85°C) |
<br /> | <br /> | ||
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Pro|Pro configuration]] | * 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Pro|Pro configuration]] | ||
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C) | ** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C) | ||
− | ** 2GB LPDDR4 Memory - | + | ** 2GB LPDDR4 Memory - extended industrial temperature range (-40°C to +105°C) |
** eMMC Flash 16GB - industrial temperature range (-40°C to +85°C) | ** eMMC Flash 16GB - industrial temperature range (-40°C to +85°C) | ||
** 2x 1Gb Ethernet PHY - industrial temperature range (-40°C to +85°C) | ** 2x 1Gb Ethernet PHY - industrial temperature range (-40°C to +85°C) | ||
− | ** | + | ** WiFi 4 & Bluetooth 5.2 Module - industrial temperature range (-40°C to +85°C) |
<br /> | <br /> | ||
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Basic|Basic configuration]] | * 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Basic|Basic configuration]] | ||
** i.MX 93 Solo 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C) | ** i.MX 93 Solo 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C) | ||
− | ** 1GB LPDDR4 Memory - industrial temperature range (-40°C to +105°C) | + | ** 1GB LPDDR4 Memory - extended industrial temperature range (-40°C to +105°C) |
** eMMC Flash 8GB - industrial temperature range (-40°C to +85°C) | ** eMMC Flash 8GB - industrial temperature range (-40°C to +85°C) | ||
** 1Gb Ethernet PHY - industrial temperature range (-40°C to +85°C) | ** 1Gb Ethernet PHY - industrial temperature range (-40°C to +85°C) | ||
Line 36: | Line 36: | ||
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Lite|Lite configuration]] | * 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Lite|Lite configuration]] | ||
** i.MX 93 Solo 900MHz CPU - extended industrial temperature range (-40°C to +105°C) | ** i.MX 93 Solo 900MHz CPU - extended industrial temperature range (-40°C to +105°C) | ||
− | ** 512MB LPDDR4 Memory - industrial temperature range (- | + | ** 512MB LPDDR4 Memory - extended industrial temperature range (-40°C to +105°C) |
** eMMC Flash 4GB - industrial temperature range (-40°C to +85°C) | ** eMMC Flash 4GB - industrial temperature range (-40°C to +85°C) | ||
<br /> | <br /> |
Latest revision as of 15:05, 28 May 2025
Environmental chamber testing of iMX93 Industrial Development Kit is successfully finished.
Content of this page is currently being updated.
Environmental stress testing results of iMX93 Industrial Development Kit are displayed on this page. Detailed instructions on how to setup the kits are also shown.
Hardware configuration
All of the modules used standard specification except of the temperature ranges for the key components as described below:
- 1x iMX93 Industrial Development Kit in Max configuration
- i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)
- 2GB LPDDR4 Memory - extended industrial temperature range (-40°C to +105°C)
- eMMC Flash 32GB - industrial temperature range (-40°C to +85°C)
- 2x 1Gb Ethernet PHY - industrial temperature range (-40°C to +85°C)
- WiFi 6 & Bluetooth 5.3 Module - industrial temperature range (-40°C to +85°C)
- 1x iMX93 Industrial Development Kit in Pro configuration
- i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)
- 2GB LPDDR4 Memory - extended industrial temperature range (-40°C to +105°C)
- eMMC Flash 16GB - industrial temperature range (-40°C to +85°C)
- 2x 1Gb Ethernet PHY - industrial temperature range (-40°C to +85°C)
- WiFi 4 & Bluetooth 5.2 Module - industrial temperature range (-40°C to +85°C)
- 1x iMX93 Industrial Development Kit in Basic configuration
- i.MX 93 Solo 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)
- 1GB LPDDR4 Memory - extended industrial temperature range (-40°C to +105°C)
- eMMC Flash 8GB - industrial temperature range (-40°C to +85°C)
- 1Gb Ethernet PHY - industrial temperature range (-40°C to +85°C)
- 1x iMX93 Industrial Development Kit in Lite configuration
- i.MX 93 Solo 900MHz CPU - extended industrial temperature range (-40°C to +105°C)
- 512MB LPDDR4 Memory - extended industrial temperature range (-40°C to +105°C)
- eMMC Flash 4GB - industrial temperature range (-40°C to +85°C)
All of the tested modules used standard configuration of iMX Development Baseboard with extended temperature range (-20°C to +70°C). The majority of tested kits used the standard heatsink sized 25x25x25mm, which is included in every development kit package, thus showcasing that this standardised heatsink performs even in very harsh conditions.
The setup in the environmental chamber:
Test description
Four iMX93 Industrial Development Kits (one in Max Industrial configuration, one in Pro Industrial configuration, one in Basic Industrial configuration and one in Lite Industrial configuration) were running CPU and memory tests to stress out all the most significant peripherals in the whole Industrial temperature scale, ranging from -40°C to +85°C, to check the reliability and stability of the firmware and hardware design.
Configuration, software and testing threads in details:
1x iMX93 Industrial Development Kit [setup no. 4] in Max configuration and Industrial temperature range
CPU and memory stress testing
- 1 thread of extensive DDR4 Memory stress test
- 1 thread of CPU stress test
- all the messages were displayed on the serial console connected via Micro USB cable
- firmware running from eMMC Flash memory
- 2x Ethernet cable connected to network switch placed outside of the chamber
- 2x USB device connected and placed outside of the chamber
- WiFi and Bluetooth module active, connected to the antennas and running discovery mode
- standard 25x25x25mm heatsink
1x iMX93 Industrial Development Kit [setup no. 3] in Pro configuration and Industrial temperature range
CPU and memory stress testing
- 1 thread of extensive DDR4 Memory stress test
- 1 thread of CPU stress test
- all the messages were displayed on the serial console connected via Micro USB cable
- firmware running from eMMC Flash memory
- 2x Ethernet cable connected to network switch placed outside of the chamber
- 2x USB device connected and placed outside of the chamber
- WiFi and Bluetooth module active, connected to the antennas and running discovery mode
- standard 25x25x25mm heatsink
1x iMX93 Industrial Development Kit [setup no. 2] in Basic configuration and Industrial temperature range
CPU and memory stress testing
- 1 thread of extensive DDR4 Memory stress test
- 1 thread of CPU stress test
- all the messages were displayed on the serial console connected via Micro USB cable
- firmware running from eMMC Flash memory
- Ethernet cable connected to network switch placed outside of the chamber
- 2x USB device connected and placed outside of the chamber
- standard 25x25x25mm heatsink
1x iMX93 Industrial Development Kit [setup no. 1] in Lite configuration and Industrial temperature range
CPU and memory stress testing
- 1 thread of extensive DDR4 Memory stress test
- 1 thread of CPU stress test
- all the messages were displayed on the serial console connected via Micro USB cable
- firmware running from eMMC Flash memory
- 2x USB device connected and placed outside of the chamber
- standard 25x25x25mm heatsink
Power source, USB flash devices, network switch and controlling PC were placed outside the environmental chamber. All the scripts running during the test and the board setup instructions can be found in section How to prepare the test.
Testing Results
The picture below shows the temperature profile during the whole testing process. Humidity was not controlled. The temperature gradient for the environment chamber was set to 1°C/min.
Running the development kits at -40°C – PASS
Test description: CPU, Memory and peripheral stress tests were running at -40°C. All the tested kits were working without errors during the whole time.
A closer image on the temperature chamber displaying the minimum temperature is shown below. These readouts are available on the display:
- the first number shows current temperature
- the second one set temperature
- the last two shows relative humidity. Humidity was not controlled during testing process.
Running the development kits at +85°C – PASS
Test description: The pre-set temperature profile was followed until the development kits gradually reached +85°C. The kits remained around this temperature for the duration of two hours and at the end of this whole cycle all the kits were running.
When using both the iMX8M and iMX93 Industrial Modules with common baseboard, please note the difference when the CPUs are above the critically high temperature of +85°C:
i.MX 8M CPU – waiting for the temperature decline, than reboots itself
i.MX 93 CPU – powers down
Switch OFF/ON test at -40°C – PASS
Test description: At temperature -40°C the development kits were switched OFF, left OFF for at least 15 minutes (to cool down completely) and then switched ON to see if they boot up without problems. Once booted up into Linux, the test script was launched to test RAM memory and all peripherals. The kits were turned OFF and ON again multiple times to see potential issues at the lowest temperature level. All of the tested setups booted up successfully.
PC setup
The PC was used during the test to control / monitor all the kits through serial console sessions. The control computer was running Windows 10 operating system.
Serial console
To control iMX93 Industrial Development Kits, one TeraTerm serial console was opened for each setup.
The setup of the environmental chamber cables and out-of-chamber equipment:
Preparing the test
Boot device and software
The eMMC memory was selected as a booting device for all the kits. Device tree files were not adjusted as the default configuration was used. The only change compared to standard software package was running the test script. In order to flash a fresh firmware into the eMMC Memory follow these instructions.
Downloading stress test
Stress-ng package was selected to check CPU and memory integrity. Placing this file into the same directory where the testing script will be stored is important:
wget https://downloads.voipac.com/files/iMX93_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/iMX93q-voipac-peripheral-test.sh
Start CPU and memory stress test
Navigate into the directory, where stress test feature and the testing script are stored.
Stress sequence script:
for d in $(seq 1 1 99999) 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 stress-ng --cpu 2 --vm 4 -t 10" stress-ng --cpu 2 --vm 4 -t 10 echo "End" echo "Start stress-ng --shm 0 -t 10" stress-ng --shm 0 -t 10 echo "End" echo "Start stress-ng --seq 0 -t 2 --tz -v" stress-ng --seq 0 -t 2 --tz -v echo "End" echo "Start Thermal zone information" stress-ng --matrix 0 --tz -t 10 --log-brief -t 10 echo "End" done
Start peripheral test
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 iMX93-voipac-peripheral-test.sh
Testing scripts command consists of the following arguments:
- the first parameter - configuration of tested development kit (Max, Pro, Basic or Lite)
- the second parameter - USB drive 1 location
- the third parameter - USB drive 2 location
- the fourth parameter - SD card location
Several commands used during environmental chamber testing are shown below:
- iMX93 Industrial Development Kit Max:
./iMX93-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log
- iMX93 Industrial Development Kit Pro:
./iMX93-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log
- iMX93 Industrial Development Kit Basic:
./iMX93-voipac-peripheral-test.sh -basic sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log
- iMX93 Industrial Development Kit Lite:
./iMX93-voipac-peripheral-test.sh -lite sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log
The complete script can be found in the downloads section or down below:
#!/bin/sh # iMX93 environmental chamber 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 env-chamber-testing/ cd env-chamber-testing/ touch env-chamber-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 env-chamber-testing.log trx-board-$boardID-env-chamber.log.$currentTime mv cpu-temp.log trx-board-$boardID-env-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 env-chamber-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 env-chamber-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 a 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 ping -q -c1 192.168.0.2 >> env-chamber-testing.log if [ $? -ne 0 ] then echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed" 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