i.MX evaluation board can be a simple solution to program i.MX boards in a factory for instance.
i.MX evaluation board are not for industrial usage, but you can find plenty of cheap i.MX insdustrial boards on the web.
Here I am using an i.MX8QXP rev B0 MEK board and I will program an i.MX6Q SABRE SD board.
The first step is to generate your image. Follow the documentation steps to generate the "validation" image.
You will have to customize a little bit the local.conf file (in conf/local.conf) to have git, cmake, gcc and other missing package.
edit local.conf and add the following lines at the end of the file:
IMAGE_INSTALL_append = " git cmake htop packagegroup-core-buildessential xz p7zip rsync"
I have added rsync package in local, it can replace cp (copy) but with the --progress option you can see the copy progression. P7zip replace unzip for our images archives avaialable on nxp.com as unzip as issues with big files.
then rebake your image:
bitbake -k fsl-image-validation-imx
When it is done, go in tmp/deploy/image/<your image generated> and use uuu to program your board (I use a sd card; thus I can increase the partition esily):
sudo ./uuu -b sd_all imx-boot-imx8qxpmek-sd.bin-flash fsl-image-validation-imx-imx8qxpmek.sdcard.bz2/*
As the rootfs can be too small, use gparted under Linux for instance to increase the size of the partition.
Put the SD card and start your board.
Here here the dirty part...
You may know archlinux|ARM websitesite (Arch Linux ARM ), you have a lots of precompiled packages. Thus on the board you can download it, and copy the file in /usr folder (you can use it to have the latest openSSL for instance!).
Plug an ethernet cable on the board and check if it is up:
ifconfig -a
ifconfig eth0 up
Now you should have access to the internet.
On uuu webpage you can find all the packages you need (here I am using a 4.14.98_2.0.0 Linux):
mkdir missinglibs
cd missinglibs
wget http://mirror.archlinuxarm.org/aarch64/core/bzip2-1.0.8-2-aarch64.pkg.tar.xz
wget http://mirror.archlinuxarm.org/aarch64/core/nettle-3.5.1-1-aarch64.pkg.tar.xz
wget http://mirror.archlinuxarm.org/aarch64/core/libusb-1.0.22-1-aarch64.pkg.tar.xz
wget http://mirror.archlinuxarm.org/aarch64/extra/libzip-1.5.2-2-aarch64.pkg.tar.xz
wget http://mirror.archlinuxarm.org/aarch64/core/zlib-1:1.2.11-3-aarch64.pkg.tar.xz
wget http://mirror.archlinuxarm.org/aarch64/extra/p7zip-16.02-5-aarch64.pkg.tar.xz
cd ..
Wait all the archives are downloaded (otherwise you'll decompress before the archive is downloaded) as wget is running in background!
Now untar the archives and copy it in the rootfs (dirty):
tar -xJf libzip-1.5.2-2-aarch64.pkg.tar.xz
tar -xJf libusb-1.0.22-1-aarch64.pkg.tar.xz
tar -xJf nettle-3.5.1-1-aarch64.pkg.tar.xz
tar -xJf bzip2-1.0.8-2-aarch64.pkg.tar.xz
cp zlib-1:1.2.11-3-aarch64.pkg.tar.xz zlib
tar -xJf zlib
tar -xJf p7zip-16.02-5-aarch64.pkg.tar.xz
cd usr
sudo cp -R . /usr
cd ../../
Download and compile uuu:
git clone git://github.com/NXPmicro/mfgtools.git
cd mfgtools/
cmake .
make
Download an image on nxp.com for instance.
I have downloaded on the i.MX6 4.14.98_2.0.0 image and put it on a usb key.
then unzip it in the uuu folder:
7z e L4.14.98_2.0.0_ga_images_MX6QPDLSOLOX.zip
As mentionned before unzip cannot hadle big files... so use 7z as me
plug the i.MX6Q SABRE SD to the i.MX8X and program your i.MX6 board:
./uuu uuu.auto-imx6qsabresd
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.3.74-0-g64eeca1
Success 1 Failure 0