I have managed to successfully compile and launch the kernel from the git archive. There are a couple of quirks in the SSD Ubuntu image that make it slightly tricky to do a native-compile, for example u-boot-tools appears to be a broken install in the inage file, and I have found that I need to completely remove all the u-boot packages with the graphical package manager, then reinstall the uImage maker. However, compiling the standard kernel is not what I wanted to do, I wanted to compile a 3.0.15 kernel, downloaded from Freescale, as that is the one that the comment in the Xenomai kernel patches suggests. Initially I just downloaded the kernel files, and tried to compile without any patches. There was a strange quirk with a built-in video capture driver and some undeclared functions (even though the file had the right #includes) but eventually I got what looked like a complete compile of kernel, uImage and modules. make modules_install created a lib/modules/3.015 directory to match the existing 3.0.35. I copied the uImage to /boot, and restarted. The serial terminal output was: U-Boot 2013.10-rc3-svn109 (Nov 27 2013 - 17:36:22) CPU: Freescale i.MX6Q rev1.2 at 792 MHz Reset cause: POR Board: UDOO DRAM: 1 GiB MMC: FSL_SDHC: 0 *** Warning - bad CRC, using default environment No panel detected: default to LDB-WVGA Display: LDB-WVGA (800x480) In: serial Out: serial Err: serial Net: using phy at 6 FEC [PRIME] Warning: failed to set MAC address Hit any key to stop autoboot: 5 4 3 2 1 0 mmc0 is current device ** File not found boot.scr ** 4178944 bytes read in 374 ms (10.7 MiB/s) Booting from mmc ... ** File not found imx6q-udoo.dtb ** ## Booting kernel from Legacy Image at 12000000 ... Image Name: Linux-3.0.15 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4178880 Bytes = 4 MiB Load Address: 10008000 Entry Point: 10008000 Verifying Checksum ... OK Loading Kernel Image ... OK Starting kernel ... This all looks completely normal, right up to Kernel boot, then nothing else happens. I am wondering if I have missed out a step? The arch/arm/boot folder contains a script that seems to do a little more than plonk the new uImage in /boot. It seems to do something with a System.map file, for example. I would be interested in any suggestions of things to fiddle with.
I know it sounds kinda odd Andy; but rather than all the trouble and potential hair loss just to get a real-time kernel going, would a "LinuxCNC Pure Simulator" build work instead? Since the Udoo doesn't have an LPT port to drive with all the realtime constraints, and the Sam3X shares a boatload of pins, why not offload the motion control over to the arduino side and use SPI to communicate. That way you could make a py script to dump whatever variables over the fence so to speak. I'd be happy to help on the Arduino-side if you'd like.