The ArmStone A9 is an ARM developement platform board in PicoITX form factor with Freescale i.MX6 CPU.
Sources, kernel and firmware images can be downloaded from the companies support page. Registration is required and after that you have to activate access to specific device documentation and resources by providing the board serial number. Its recommended to use the newest uboot and nboot firmware images provided by the company, since essential functionalities like booting from usb/sdcard were added in later versions. In some cases, partial version upgrades are necessary to get from a very old bootloader version to the newest one. Consult the manufacturer linux documentation on how to access and update the bootloader.
The content of the package ArchLinuxARM-armv7-latest can be copied to a sdcard or usb-stick partition, preferably ext2/ext3 formatted. Further put the factory kernel (4.1) into the /boot directory of your flash drive, so it can be used later.
Serial console access
The pins 55 (RX0), 57 (TX0) and 61 (GND) can be used for RS232 serial connection according to the hardware documentation. Serial console access is necessary to update and configure the bootloader.
First access the bootloader console via. serial connection, see manufacturer linux documentation.
In this example, we will initialize the usb system and load the kernel image from a ext2/ext3 partition on the usb stick. After that the NAND kernel partition gets erased and recieves a the new kernel image:
armStoneA9 # usb start armStoneA9 # ext2load usb 0:1 $(loadaddr) /boot/uImage-fsimx6 armStoneA9 # nand erase.part Kernel armStoneA9 # nand write $loadaddr Kernel $filesize
Install device tree file
tftp armstonea9q.dtb nand erase.part FDT nand write $loadaddr FDT $filesize
Booting from USB
Considering we already have the kernel loaded into NAND, we just need a base system on the usb stick to start from. Before that, we have to define the rootfs environement variable in the U-Boot bootloader. This variable will tell the kernel which device is to be used to start from. In this case, it's the usb partition called
armStoneA9 # setenv rootfs root=/dev/sda1 rootdelay=5 armStoneA9 # run bootcmd
run bootcmd initiates the boot process by starting the kernel.