Armstone A9

From ArchWiki

Tango-emblem-symbolic-link.pngThis article is being considered for redirection to archlinux-service-agreements:code-of-conduct#arch-linux-distribution-support-only.Tango-emblem-symbolic-link.png

Notes: Hardware for unsupported distribution. (Discuss in Category talk:ARM architecture#Remove all ARM related pages (second attempt))

The ArmStone A9 is an ARM developement platform board in PicoITX form factor with Freescale i.MX6 CPU.

Note: The device is not officially supported by the ALARM project, i.e. please refrain from submitting patches, feature requests or bug reports for it.


Bootloader version

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.

Base system

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.

Install kernel

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 is the usb partition called /dev/sda1:

armStoneA9 # setenv rootfs root=/dev/sda1 rootdelay=5 
armStoneA9 # run bootcmd

The command run bootcmd initiates the boot process by starting the kernel.

See also