Test Orange Pi PC board with lima-memtester using FEL boot

@ssvb ssvb released this Dec 7, 2015 · 12 commits to master since this release


Changes in v4-zqdebug:

Fixes in v3:

  • U-Boot v2016.01-rc2 + a bugfix patch
  • The CPU clock frequency is limited to 1200 MHz in FEX (in v2 it was meandering between 1200 MHz and 1296 MHz on a heatsink-less board because of thermal throttling).
  • DRAM clock frequencies up to 792 MHz are available (for testing overclocking limits and estimating the safety headroom).

Fixes in v2:

  • Disabled CONFIG_DEVFREQ_DRAM_FREQ option in the kernel! So that the kernel should be guaranteed not to touch the DRAM settings configured by U-Boot.
  • Updated the FEX file, so that the CPU is now running at 1296 MHz instead of 648MHz.This may or may not affect the test results (most likely this has no effect on DRAM reliability). For more details see https://www.mail-archive.com/linux-sunxi@googlegroups.com/msg14956.html
  • Actual U-Boot v2016.01-rc2

Usage instructions

First make sure that you have https://github.com/linux-sunxi/sunxi-tools installed and download/unpack the following tarball:

cd /tmp
wget https://github.com/ssvb/lima-memtester/releases/download/20151207-orange-pi-pc-fel-test/fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz
tar -xzf fel-boot-lima-memtester-on-orange-pi-pc-v3.tar.gz
cd fel-boot-lima-memtester-on-orange-pi-pc-v3

Then switch the Orange Pi PC into FEL mode (just power it up without an SD card), connect the board to your PC using a Micro-B USB cable and run the following command (to test reliability of the 672MHz DRAM clock speed):

./fel-boot-lima-memtester-on-orange-pi-pc 672

If the reliability test fails (the LEDs stop blinking), just keep reducing the DRAM clock speed in 24MHz steps:

./fel-boot-lima-memtester-on-orange-pi-pc 648
./fel-boot-lima-memtester-on-orange-pi-pc 624
./fel-boot-lima-memtester-on-orange-pi-pc 600
./fel-boot-lima-memtester-on-orange-pi-pc 408

In a reliable setup, the test should be able to run indefinitely (until terminated by the user) and show a spinning cube demo on a HDMI monitor.

Compiling everything from sources (this is optional)

U-Boot binaries have been generated using the following script:

#!/usr/bin/env ruby

# git clone git://git.denx.de/u-boot.git
# git checkout v2016.01-rc2

(408..792).step(24) do |freq|
  defconfig = File.read("configs/orangepi_pc_defconfig")
  defconfig.gsub!(/CONFIG_DRAM_CLK=\d+/, "CONFIG_DRAM_CLK=#{freq}")
  File.write("configs/orangepi_pc_defconfig", defconfig)

  system("git clean -X -d -f")
  system("SOURCE_DATE_EPOCH=0 make CROSS_COMPILE=arm-linux-gnueabihf- orangepi_pc_defconfig")
  system("SOURCE_DATE_EPOCH=0 make CROSS_COMPILE=arm-linux-gnueabihf- -j8")

  system("mv u-boot-sunxi-with-spl.bin orange-pi-pc-#{freq}-u-boot-sunxi-with-spl")

The linux kernel has been compiled from https://github.com/ssvb/linux-sunxi/commits/20151207-embedded-lima-memtester-h3 (589da2af30717333bf9a287dcb467a07e18c1472) and the embedded rootfs with lima-memtester has been compiled from https://github.com/ssvb/buildroot/commits/20151206-lima-memtester-autostart (86f9ef02f636f92fbe28fdf631299fd9b05fb0f6).