RISC OS on the ARMX6

The ARMX6 computer is available from R-Comp and was released at the South West show on 21st February 2015.

This machine was first shown at the ROUGOL show at Feltham on 25th October 2014 and was, naturally, rather a surprise. Development of the machine had been kept secret until then. R-Comp were asking for developers and prospective customers to express interest by placing a deposit of 150. I signed up as a developer and have had a development machine since mid November. By early February development and testing had been substantially completed and my development machine was, to all intents and purposes, no different from the initial production machines. The disc image and ROM had been finalised.

Production machines include a small add-on circuit board containing a real-time clock and a 'CMOS RAM widget' attached to a header plug, which I have now added to my development machines. The new machine (price 699 including V.A.T., a 120Gbyte SSD drive, DVD writer and case) was finally released at the South West show on 21st February 2015 which means that I can now put my first impressions into print. A 'bare-bones' option was released at the Wakefield show comprising just the main circuit board, plus CMOS RAM/RTC widget and an 8Gbyte SD card containing licensed ROM image and boot drive (price 325 plus V.A.T.), leaving the user to add a power supply, keyboard, DVD drive, more storage (if required), mouse and monitor.

Some hardware is present on the circuit board but not yet supported - this includes on-board WiFi and bluetooth. Such hardware has been present on Pandaboard for some time and so there is no immediate prospect of drivers for RISC OS being developed.

A major step forward is the support for the on-board SATA hardware. At present this support is for a single device: a SATA solid state hard disc drive of 128Gbytes is fitted as the main storage and boot drive. This is about four to six times faster than an Iyonix or Pandaboard. With 2Gbytes of RAM (a practical maximum for RISC OS which can address 4Gbytes but splits memory into 'logical' and 'physical' address blocks) and a 1GHz processor the machine is over twice as fast as the Iyonix. For some tasks it is comparable in speed to a Pandaboard ES running at 1200MHz and for others it is significantly faster as can be seen from the table below. A fuller set of benchmarks is available here.

The most obvious machine against which to compare the ARMX6 is the ARMiniX (Pandaboard ES). Both have an ARM cortex-A9 processor (an ARM version 7) running at similar speeds. The ARMX6 is definitely more stable in general use. It can drive a 1920x1200 monitor at 60Hz with no distortion. It has faster disc storage, more memory and hardware gigabit ethernet which also has the edge on speed. The comparison is even more striking against the Iyonix: the ARMX6 is the first computer since the launch of the Iyonix that offers stable, improved performance in all major areas.

Real world performance is extremely good. This is difficult to capture in a single benchmark but ROM unpack and compile time is a good (and consistent) way to capture this. Netsurf with cache is quite smooth on ARMX6, for example. So whilst 'raw' performance figures for processor and memory are similar for Pandaboard ES, the faster disc access and network speeds make some things much better on ARMX6 and there is more RAM. Hardware acceleration for screen scrolling is not yet implemented: this is noticeable in the command line interpreter (after pressing f12) and in the benchmark 'rectangle copy', but does not seem to affect the 'feel' of normal desktop operation.

Video therefore currently operates at similar speeds to Beagleboard/Pandaboard before DMA video was implemented on those platforms. There are some Freescale i.MX6 processors capable of 1200MHz CPU speed but (as I understand it) these are not generally available - the specified CPU speed is 1000MHz. Currently the 'fast' speed is set to 1008 MHz (it automatically switches between that and 324 MHz when idling) but there may be scope for moderate overclocking in the future.

It is important not to pay too much attention to single benchmarks (such as clock speed or 'processor') as these can be misleading in isolation. The benchmarks include a 'mixed memory and processor' test (this uses the application !CountDn to calculate the 24 million possible arrangements of the 2, 3, 5, 7, 50 and 75 tiles using all possible combinations of arithmetic operator) and an 'overall performance' test (this unpacks the ROM source and compiles it) which tries to measure 'real-world' performance.

At its heart (if I can use that term) the machine contains an i.MX6 motherboard: this comprises two circuit boards sandwiched together. An I/O board with sockets for HDMI, USB, USB OTG, RJ45 ethernet, serial port and audio input and output. It is connected, via an EDM-standard connector, to a processor board which includes an SD card socket containing an SD card holding the firmware and ROM image as well as some SDFS backup storage as well as a large aluminium heatsink.

The Freescale iMX6 processor is a quad-core Cortex-A9 ARM processor (the same ARM version as used on the Pandaboard) specified at 1000MHz. It has 2Gbytes of 528MHz dual channel LPDDR3 RAM with an external 1Mbyte level 2 cache. Gigabit ethernet is provided by dedicated hardware (rather than via USB but is unfortunately limited to 480Mb/s by design). The ROM is loaded from the SD card directly on start up/reboot making boot up time quite fast. It is not easily visible from RISC OS (and does not need to be) and the remainder of the SD card is available via SDFS. OS updates can be provided with a utility to refresh the firmware. The boot drive will normally be a SATA-connected 128Mbyte solid state drive accessed via SCSIFS by a custom AHCI driver in ROM.

However, putting the technical details to one side, it offers impressive performance. The machine starts up from cold in 15s, displaying a banner with its 'ARMX6' logo as it starts up. Here's a picture of my 'homebrew' machine (built from the 'bare bones' kit available from R-Comp) in action:

As this homebrew machine is 'under development', it is therefore away from my router. I have installed a Raspberry Pi model 2 acting as a wireless router which can be seen in this shot:

Software compatibility is effectively identical to Pandaboard and is therefore a well known quantity. I found that !PhotoDesk 3.12 would not start up but a fix for this problem is available from R-Comp and !Store. There are some video clips (such as 'BigBuckBunny') supplied and these work smoothly and correctly for both video and sound. It is difficult to to criticise the machine as the things I've tried just work and work well!

Maximum WimpSlot size is 512Mbytes (a fundamental limitation of RISC OS 5 and not likely to change) and maximum RAMFS size is now just less than 512Mbytes (this has been achieved on both Pandaboard and ARMX6 by using 'pooled memory' - previously the limit was 128Mbytes to avoid 'tying up too many logical and physical memory addresses for RAMfs which only needs to access a small part of its memory allocation at any one time' which I have to admit I do not really understand). A utility is available (from !Store, where else) which allows processor speed to be adjusted and displayed within the minimum and maximum supported by the HAL.

I have purchased the 'DIY' iMX6 solution from R-Comp and I have built a custom case for it measuring 5″ wide by 8″ deep and 4″ high incorporating a CD/DVD drive. The case is made from transparent polycarbonate sheet and has all cabled connections at the rear (apart from a USB hub providing two USB sockets on the front panel). The case design was featured in Archive 23:11. I am using it with an Asus PA248Q 24″ IPS monitor at 1920x1200 (60Hz) and the display is solid with no distortion. I have a DVD-ROM connected via a SATA to USB bridge, connecting the SATA socket on the drive to a USB port. Reading and writing (using !CDVDBurn 2.09s) DVDs works well. A keyboard and mouse were connected via a USB hub and a USB KVM (shared by my Pandaboard) but I have now connected them directly as the ARMX6 and IGEPv5 weren'y happy sharing this KVM. I have added a 128Mbyte SATA drive as my main boot drive. The grand total for this 'DIY' solution was 573 (plus 318 to add the monitor) - a modest saving against the fully built machine if you have plenty of time to build the case and put it all together.

This machine is now my main RISC OS machine: I have migrated my software from my ageing Iyonix computer. Messenger Pro is much faster on the ARMX6 - I have updated my copy of 'MimeMap' (at !Boot.Resources.!Internet.files) to the RISC OS 5.22 version. E-mail attachments that I receive with .doc, .xls and .xlsx attachments now appear correctly and the annoying ',a7f' filename suffixes are now a thing of the past. I have even found a RISC OS application - !LuaFox - that loads a file of this type so I now have a filetype icon for .xlsx files (type &A7F).

My new computer - the 'DIY' iMX6 solution from R-Comp, custom case (see Archive 23:11), internal power supply, on/off switch, USB hubs, SATA drive, DVD drive removed for photo:

What is my conclusion? The ARMX6 is an excellent machine and I can thoroughly recommend it.