Difference between revisions of "iMX6 TinyRex Environmental chamber testing"
Line 132: | Line 132: | ||
=== SSH and Serial consoles === | === SSH and Serial consoles === | ||
− | To control iMX6 TinyRex Development kits, one TeraTerm serial console was opened per board. SSH clients were used to read temperature. For the boards with the peripheral test, an extra SSH client was | + | To control iMX6 TinyRex Development kits, one TeraTerm serial console was opened per board. SSH clients were used to read temperature. For the boards with the peripheral test, an extra SSH client was established to be able to spot possible errors or warnings if occurred.<br /> |
[[image:iMX6_TinyRex_Development_kit-Env_chamber-Serial_console.jpg|800px]] | [[image:iMX6_TinyRex_Development_kit-Env_chamber-Serial_console.jpg|800px]] | ||
<br /><br /> | <br /><br /> | ||
Line 140: | Line 140: | ||
== Preparing the test == | == Preparing the test == | ||
=== Boot device and Software === | === Boot device and Software === | ||
− | + | SD cards were 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 for SD card suitable for Max configuration: | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
git clone https://github.com/voipac/imx6tinyrex_bin_linux | git clone https://github.com/voipac/imx6tinyrex_bin_linux | ||
Line 164: | Line 164: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Paste the following line to the end of the cron list file. The output time format will be set the same as for stressapptest. Cron job performs a current CPU temperature readout and the data are saved in the log file. The | + | Paste the following line to the end of the cron list file. The output time format will be set the same as for stressapptest. Cron job performs a current CPU temperature readout and the data are saved in the log file. The log format was selected identical to the one used by stressapptest package: |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
* * * * * { echo -n $(date +%Y/%m/%d-%T); echo -n "("; echo -n $(date +%Z); echo -n ") "; cat /sys/devices/virtual/thermal/thermal_zone0/temp; } >> ~/testing-env-chamber/cpu-temp.log | * * * * * { echo -n $(date +%Y/%m/%d-%T); echo -n "("; echo -n $(date +%Z); echo -n ") "; cat /sys/devices/virtual/thermal/thermal_zone0/temp; } >> ~/testing-env-chamber/cpu-temp.log | ||
Line 182: | Line 182: | ||
=== Setup the CPU temperature printout === | === Setup the CPU temperature printout === | ||
− | Open one SSH client per board where CPU temperature will be shown. Tail command is utilized to display the last part of the log file, which is filled up as the CRON job | + | Open one SSH client per board where CPU temperature will be shown. Tail command is utilized to display the last part of the log file, which is filled up as the CRON job outputs the current readouts: |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
tail -F cpu-temp-measuring.log | tail -F cpu-temp-measuring.log | ||
Line 188: | Line 188: | ||
=== Error checking during peripheral test === | === Error checking during peripheral test === | ||
− | To make sure | + | To make sure tests are running smoothly, potential errors can be detected by opening another SSH session: |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
tail -f env-chamber-testing.log | grep -i "error" | tail -f env-chamber-testing.log | grep -i "error" | ||
Line 194: | Line 194: | ||
=== Play video file for peripheral test === | === Play video file for peripheral test === | ||
− | To be able to test HDMI Input during the peripheral testing a video file was played from boards which were running memory stress tests only. Infinite loop is opened in another SSH session: | + | To be able to test HDMI Input during the peripheral testing, a video file was played from boards which were running memory stress tests only. Infinite loop is opened in another SSH session: |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
while [ true ]; do gst-play-1.0 /media/ploughing.mp4; done | while [ true ]; do gst-play-1.0 /media/ploughing.mp4; done | ||
Line 200: | Line 200: | ||
=== Start CPU and memory stress test === | === Start CPU and memory stress test === | ||
− | Navigate into the directory, where stressapptest feature and test | + | Navigate into the directory, where stressapptest feature and test are stored.<br /><br /> |
Stress command for Max configuration: | Stress command for Max configuration: | ||
Line 218: | Line 218: | ||
=== Start peripheral test === | === Start peripheral test === | ||
− | Before the test start it is a good practice to make sure that all the | + | Before the test start it is a good practice to make sure that all the devices were plugged in. To find out where the devices are mounted this command can be used: |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
fdisk -l | fdisk -l | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | The testing script uses multiple | + | The testing script uses multiple variables to specify its operation. As the first parameter board configuration is used (-max, -pro or -basic). As other parameters device names |
− | are written in following order: the first USB stick, the second USB, SD card and SATA drive (if used). All logs are | + | are written in the following order: the first USB stick, the second USB, SD card and SATA drive (if used). All logs are stored into a single file.<br /><br /> |
Starting peripheral test for Max configuration: | Starting peripheral test for Max configuration: | ||
Line 233: | Line 233: | ||
Starting peripheral test for Pro configuration: | Starting peripheral test for Pro configuration: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | ./imx6-tinyrex-v1i1-peripheral-test.sh -pro sdb1 sdc1 mmcblk2p2 | + | ./imx6-tinyrex-v1i1-peripheral-test.sh -pro sdb1 sdc1 mmcblk2p2 sda1 2>&1 | tee -i trx-env-chamber-testing.log |
</syntaxhighlight> | </syntaxhighlight> | ||
Starting peripheral test for Basic configuration: | Starting peripheral test for Basic configuration: | ||
− | + | ./imx6-tinyrex-v1i1-peripheral-test.sh -basic sda1 sdb1 mmcblk2p2 2>&1 | tee -i trx-env-chamber-testing.log | |
− | ./imx6-tinyrex-v1i1-peripheral-test.sh -basic sdb1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Revision as of 09:22, 23 April 2021
On this page environmental stress testing results of iMX6 TinyRex Development kit are displayed. Detailed instructions how to setup boards are also shown.
Hardware configuration
All of the modules used standard specification except of the temperature ranges for the key components as described below:
- 3x iMX6 TinyRex Development kit in Max configuration
- i.MX6 Quad 1.0 GHz CPU - automotive temperature range (-40°C to +125°C)
- 2GB DDR3 Memory (4x 4Gb DDR3 Memory chips) - industrial temperature range (-40°C to +95°C)
- 1GBps Ethernet PHY Tranciever KSZ9031RN - automotive temperature range (-40°C to +85°C)
- 3x iMX6 TinyRex Development kit in Pro configuration
- i.MX6 Dual 1.0 GHz CPU - automotive temperature range (-40°C to +125°C)
- 1GB DDR3 Memory (4x 2Gb DDR3 Memory chips) - industrial temperature range (-40°C to +95°C)
- 1GBps Ethernet PHY Tranciever KSZ9031RN - automotive temperature range (-40°C to +85°C)
- 3x iMX6 TinyRex Development kit in Basic configuration
- i.MX6 Solo 1.0 GHz CPU - extended temperature range (-20°C to +105°C)
- 512MB DDR3 Memory (2x 2Gb DDR3 Memory chips) - industrial temperature range (-40°C to +95°C)
- 1GBps Ethernet PHY Tranciever KSZ9031RN - automotive temperature range (-40°C to +85°C)
All of the tested development kits used the standard configuration of iMX6 TinyRex Base Board with extended temperature range (-20°C to +85°C). The majority of tested kits used a standard heatsink. This heatsink sized 35x35x10mm is included in every development kit package. Thus these measurements show the actual performance of web shop based configuration of the development kit. Some of the boards were mounted into a custom build iMX6 TinyRex aluminium case.
The setup in the environmental chamber:
800px
Test description
Three iMX6 TinyRex Development Kits (one in Max, one in Pro and one in Basic version) were running full peripheral test and stressed all the peripherals in different range of temperatures. All the rest of the boards were running CPU and memory tests to check the reliability and stability of the firmware and hardware design.
Configuration, software and testing threads in details:
3x iMX6 TinyRex peripheral stress testing
- 1 thread of extensive Memory stress test
- 1 thread of CPU stress test
- SATA stress test (applied for Max and Pro versions only)
- receiving HDMI Input signal through video input circuitry and processing
- sending this video stream over HDMI Output to external monitor
- copying a file from the first USB drive to SD card and vice versa
- copying a file from the second USB device to SATA hard drive and vice versa (applied for Max and Pro versions)
- copying a file from the second USB drive to SD card and vice versa (applied for Basic version)
- pinging the host PC via Ethernet
- all the messages were printed out on the serial console through connected FTDI cable
- firmware running from SD card
- standard 35x35x10mm heatsink
2x iMX6 TinyRex Max Memory stress testing
- 4 threads of extensive Memory stress test
- 4 threads of CPU stress test
- reading CPU temperature via SSH Ethernet session
- serial FTDI cable used for displaying messages
- firmware running from SD card
- one set mounted inside aluminium case
2x iMX6 TinyRex Pro Memory stress testing
- 2 threads of extensive Memory stress test
- 2 threads of CPU stress test
- reading CPU temperature via SSH Ethernet session
- serial FTDI cable used for displaying messages
- firmware running from SD card
- one set mounted inside aluminium case
2x iMX6 TinyRex Basic Memory stress testing
- 1 threads of extensive Memory stress test
- 1 threads of CPU stress test
- reading CPU temperature via SSH Ethernet session
- serial FTDI cable used for displaying messages
- firmware running from SD card
- one set mounted inside aluminium case
USB flash devices and SATA hard drives were place 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:
800px
Running the boards 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, even if some components used for iMX6 TinyRex Basic Module were only rated for temperature range between -20°C and +105°C. iMX6 TinyRex Base Boards were running at this temperature with components certified only from -20°C to +85°C temperature range.
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 relative humidity
- the second one current temperature
- the last one the dew point
Running the boards at +70°C - PASS
Test description: Ambient temperature was set to +70°C and the CPU and Memory stress tests were running.
800px
Running the kits at high temperatures (from +60°C to +100°C) – PASS
Test description: The ambient temperature was gradually increasing (from 60°C up to 100°C) while CPU, Memory and peripheral stress tests were running. The moment when CPUs had started to work with lowered frequency were used as a test threshold (this occurred when CPU temperature reached 70°C - 100°C). Components used for iMX6 TinyRex Base Boards were only rated from -20°C to +85°C operating temperature range.
Temperature stress test – quick change from -40°C to -10°C and back – PASS
Test description: The ambient temperature was quickly increased from -40°C to -10°C and then back to -40°C. The boards were running CPU, Memory and peripheral stress tests. All the boards were working perfectly.
Temperature stress test – quick change from +90°C to +30°C and back – PASS
Test description: The ambient temperature was quickly decreased from +90°C to +30°C and back to 90°C while running CPU, Memory and peripheral stress tests. All boards were working without errors.
Thermal camera capture focused on the boards as the set temperature inside the chamber reached +85°C:
800px
Switch ON/OFF test – PASS
Test description: At temperatures from -30°C to -40°C the boards were switched OFF, left OFF for at least 5 minutes (to cool down completely) and then switched ON to see if they boot up without problems. Once booted up into Linux, the boards were turned off again. All of the tested boards booted up successfully. This test was performed 3 times at -30°C, -35°C and -40°C temperatures.
Cooling performance at high temperatures
Test description: As mentioned above, different heatsinks and enclosures were utilized in order to compare its cooling abilities. All these tests were performed with Max version which generate the most heat by itself. All setup reached temperature +85°C in the chamber while still successfully running. The board in the enclosure with the biggest height and cooling fins on the top size reached +100°C.
396px | 396px |
PC setup
During the test DHCP and FTP servers were utilized. The PC was also used during Ethernet ping test while controlling all the boards through SSH and serial console sessions. The control computer was running Windows 7 operating system.
Setting the network
Disable firewall (PC will not be connected to the Internet) and setup a static IP address: Press Windows button -> go to Control Panel -> Network and Internet -> Network and Sharing Center -> Change adapter settings (on the right side in the bar) -> double click on Local Area Connection -> Properties -> In the tab Networking go to Internet Protocol Version 4 (TCP/IPv4) -> type the static IP address and subnet mask as shown below:
500px
Enabling sharing
iMX6 TinyRex Development kits and the control PC are connected via Gigabit Ethernet switch. To ensure correct IP address assignment, switch the PC first, connect it with the router and only after that turn this switch on. To be able to download the files from the FTP server, sharing option need to be enabled first. This can be done by setting up the network as a work network. This can be changed in Control Panel -> Network and Internet -> Network and Sharing Center -> Click to Choose homegroup and sharing options:
800px
Setting up the TFTP and DHCP servers
Tftpd32 software supports both TFTP and DHCP server options. For more details about DHCP configuration, follow the screenshots below:
356px | 419px |
SSH and Serial consoles
To control iMX6 TinyRex Development kits, one TeraTerm serial console was opened per board. SSH clients were used to read temperature. For the boards with the peripheral test, an extra SSH client was established to be able to spot possible errors or warnings if occurred.
800px
The setup of the environmental chamber cables and out-of-chamber equipment:
800px
Preparing the test
Boot device and Software
SD cards were 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 these instructions. Here is an example for SD card suitable for Max configuration:
git clone https://github.com/voipac/imx6tinyrex_bin_linux cd imx6tinyrex_bin_linux/ sudo ./fsl-sdcard-partition.sh -max /dev/mmcblk0
Downloading stress test
Stressapptest package was selected to check CPU and memory integrity. Placing this file into the same directory where the testing script will be store is important:
wget http://downloads.voipac.com/files/iMX6_TinyRex_Development_kit/module/documents/Environmental_chamber_testing/stressapptest
Setup the cron
To be able to check the CPU temperature every minute a new cron job was setup. For Ubuntu file systems postfix package installation is required:
sudo apt-get install postfix
To setup a cron tab, the file containing all cron jobs needs to be altered. Before running the crontab for the first time, selecting a text editor is required:
sudo crontab -e
Paste the following line to the end of the cron list file. The output time format will be set the same as for stressapptest. Cron job performs a current CPU temperature readout and the data are saved in the log file. The log format was selected identical to the one used by stressapptest package:
* * * * * { echo -n $(date +%Y/%m/%d-%T); echo -n "("; echo -n $(date +%Z); echo -n ") "; cat /sys/devices/virtual/thermal/thermal_zone0/temp; } >> ~/testing-env-chamber/cpu-temp.log
Note: The percent sign '%' has a special purpose in the cron file. As this sign is needed to write the date formats, the backslash is required to be placed before the percent sign: '\%'.
Setting up the date
If the master PC is equipped with a timeserver, server date and time can be automatically obtained using this Linux feature:
ntpdate 192.168.0.2
Time and date can also be set up manually (use format MMDDhhmmYYYY e.g. 07th of July 2016 4:27 pm):
date 071116272016
Setup the CPU temperature printout
Open one SSH client per board where CPU temperature will be shown. Tail command is utilized to display the last part of the log file, which is filled up as the CRON job outputs the current readouts:
tail -F cpu-temp-measuring.log
Error checking during peripheral test
To make sure tests are running smoothly, potential errors can be detected by opening another SSH session:
tail -f env-chamber-testing.log | grep -i "error"
Play video file for peripheral test
To be able to test HDMI Input during the peripheral testing, a video file was played from boards which were running memory stress tests only. Infinite loop is opened in another SSH session:
while [ true ]; do gst-play-1.0 /media/ploughing.mp4; done
Start CPU and memory stress test
Navigate into the directory, where stressapptest feature and test are stored.
Stress command for Max configuration:
./stressapptest -s 600000 -M 1000 -m 4 -C 4 -W -l ~/env-chamber-testing/stressapptest.log --printsec 100
Stress command for Pro configuration:
./stressapptest -s 600000 -M 700 -m 2 -C 2 -W -l ~/env-chamber-testing/stressapptest.log --printsec 100
Stress command for Basic configuration:
./stressapptest -s 600000 -M 150 -m 1 -C 1 -W -l ~/env-chamber-testing/stressapptest.log --printsec 100
Start peripheral test
Before the test start it is a good practice to make sure that all the devices were plugged in. To find out where the devices are mounted this command can be used:
fdisk -l
The testing script uses multiple variables to specify its operation. As the first parameter board configuration is used (-max, -pro or -basic). As other parameters device names
are written in the following order: the first USB stick, the second USB, SD card and SATA drive (if used). All logs are stored into a single file.
Starting peripheral test for Max configuration:
./imx6-tinyrex-v1i1-peripheral-test.sh -max sdb1 sdc1 mmcblk2p2 sda2 2>&1 | tee -i trx-env-chamber-testing.log
Starting peripheral test for Pro configuration:
./imx6-tinyrex-v1i1-peripheral-test.sh -pro sdb1 sdc1 mmcblk2p2 sda1 2>&1 | tee -i trx-env-chamber-testing.log
Starting peripheral test for Basic configuration: ./imx6-tinyrex-v1i1-peripheral-test.sh -basic sda1 sdb1 mmcblk2p2 2>&1 | tee -i trx-env-chamber-testing.log </syntaxhighlight>
The complete script can be found in the download section or copy it from down below:
The original article can be accessed on the iMX6TinyRex.com website.