Content
Hardware configuration
For our testing we used following hardware configuration (you can use anything you have, just be aware of temperature range of the components fitted on your board):- 3x iMX6 Rex Pro with
- 1GHz iMX6 Quad CPU - extended temperature range (-20°C ~ 105°C)
- 4x 4Gb DDR3 Memory chips - commercial temperature range (0°C ~ +95°C)
- 1GBps Ethernet PHY Tranciever KSZ9021RN - commercial temperature range (0°C ~ +70°C)
- 1x iMX6 Rex Prototype with
- 1GHz iMX6 Quad CPU - extended temperature range (-20°C ~ 105°C)
- 4x 2Gb DDR3 Memory chips - commercial temperature range (0°C ~ +95°C)
- 1GBps Ethernet PHY Tranciever KSZ9021RN - commercial temperature range (0°C ~ +70°C)
Picture: The setup in environmental chamber
Test description
The main purpose of this test is to check memory stability of iMX6 Rex module. During the test you will be running:- 4 threads of extensive memory stress test
- 4 threads of CPU stress test
# stressapptest -s 600000 -M 768 -m 4 -C 4 -W --printsec 600 -l /home/ubuntu/testing-env-chamber/stressapptest.logYou can find detailed description about how to setup an run the whole test in Appendix : How to prepare the test. It describes all the scripts and explains log files.
Our Results
Here are the results of our testing. In the picture below you can see the temperature profile which was set during the testing.Switch ON/OFF test - PASS
What we were doing: We switched OFF boards, we left them OFF for 10 minutes and then we switched them ON. We have done these tests several times for temperatures between -30°C to -35°C and for a temperature +70°C. All the boards booted up successfully.
What we were doing: We set ambient temperature to -25°C and we were running the CPU and Memory stress tests.
Running the boards at +70°C - PASS
What we were doing: We set ambient temperature to -70°C and we were running the CPU and Memory stress tests.
Fast change of the temperature (from -25°C to +70 °C) - PASS What we were doing: We were changing ambient temperature from -25°C to +70 °C and we were running the CPU and Memory stress tests.
Appendix
How to prepare and start the test
1. SD setupFor this test we used this kernel and xubuntu filesystem. Follow these instruction to create a new SD card.
2. Create the log files
# mkdir /home/ubuntu/testing-env-chamber # cd /home/ubuntu/testing-env-chamber # touch cpu-temp.log # touch stressapptest.log3. Setup the cron
To be able to check the CPU temperature every minute we setup a new cron job. Before we do so we need to install postfix package (for Ubuntu file systems):
# sudo apt-get install postfixTo setup a cron tab we will open the file containing all cron jobs. If you run the crontab for the first time you may need to select the text editor.
# sudo crontab -ePaste following line to the end of this file. We will use the same time format as stressapptest, we will get the current CPU temperature and save it in the log file.
Note: The percent char '%' has a special purpose in the cron file. When using it in the date command you need to use backslash before the percent '\%'.
* * * * * { echo -n $(date +\%Y/\%m/\%d-\%T); echo -n "("; echo -n $(date +\%Z); echo -n ") "; cat /sys/devices/virtual/thermal/thermal_zone0/temp; } >> /home/ubuntu/testing-env-chamber/cpu-temp.log4. Setup the SSH connections
We created a simple Eth net with switch and control laptop. We opened 2 SSH session per board (8 session in total). In the first session we started CPU and memory stress test. In the window below we printed out the current CPU temperature. For the next three board we did exactly the same. 5. Set up the date
Because we have not set up the RTC clock we need to change the time after the board boots up. First we set the time zone:
# ln -sf /usr/share/zoneinfo/Europe/Bratislava /etc/localtimeThen we to setup the actual time. Use the sequence of digits in this order: mouth day hour minute year (in the example used 04-July-2014 08:26).
# date 0704082620146. Setup the CPU temperature printout
Before we start the CPU and memory stress test, we backup the old logs:
# cd /home/ubuntu/testing-env-chamber # mv cpu-temp.log cpu-temp-testing1.log # mv stressapptest.log stressapptest-testing1.log # touch cpu-temp.log # touch stressapptest.logTo read the temperature we use tail which outputs the last part of files (the cron job we setup is writing to this log file)
# tail -F cpu-temp.log7. Start the stress test
# stressapptest -s 600000 -M 768 -m 4 -C 4 -W --printsec 600 -l /home/ubuntu/testing-env-chamber/stressapptest.log8. Look for errors in the log
When the boards are still running you can search for errors in the log file (instead of rolling the stress test printout):
# grep -i "error" stressapptest.log