[meta-intel] galileo

Stephano Cetola stephano.cetola at linux.intel.com
Wed Mar 21 13:18:16 PDT 2018


On 3/11/18 2:10 PM, Trevor Woerner wrote:
> Hi,
> 
> I realize that the Galileo board has been completely abandoned; I'm not
> looking for "official" information, but I'm hoping someone would be
> willing to provide some anecdotal information... perhaps offline?

Abandoned but not forgotten.

tldr: use this kernel config with 4.9 or 4.14 or probably 4.15:
https://github.com/andy-shev/linux/tree/galileo

see: arch/x86/configs/i386_defconfig

I did some work recently on a project that was using the Quark chip on a
board whose design heavily borrowed from Galileo. We were able to ship
with a modern kernel off rocko, but I can't help much with Arduino
functionality. We were using that UART for something completely
different :).

> 
> I thought it would be a fun exercise to investigate updating the Linux
> image and arduino-IDE-toolchain for my Galileo Gen2 board. Unfortunately
> I've hit some walls and was looking for some ideas.
> 
> With its LOCKing problem[*1], projects like Yocto and Buildroot are
> natural homes for Galileo support. It looks as though Galileo support
> was added to The Yocto Project somewhere around Dylan [1.4] with
> https://github.com/intel/Galileo-Runtime.git. Using the sub-repositories
> found there and a virtual machine I'm able to build a working toolchain
> which I can install in my Arduino 1.8.5 IDE to build, upload, and run
> Blink. I can also build a rootfs image, but there isn't much in the way
> of guidance on how to get the resulting artifacts cobbled together onto
> an SDcard. But if I leave the SDcard slot empty, I can boot the default
> flash image that was shipped with the board (which is based on Dylan),
> and the IDE and sketches all work[*2].

Many moons ago there was a wks file for galileo:
http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel/commit/?id=272d4cb66b8e553e3fc27455ca3bb8e70472c510

http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel/commit/?id=0109c3d7f2c3ae269842b6126a65323a6dd4608b

In my experience it is easier to use the default meta-intel rocko build
for Quark and manually add a grub.conf to the correct location. To be
fair I did not spend much time on automating this process.

> 
> After Dylan, Galileo-Runtime.git appears to have been abandoned (it's
> still stuck at Dylan) and meta-intel-quark and meta-intel-galileo
> appear... for Daisy [1.6]. Building with these layers (with everything
> setup for Daisy) doesn't work out-of-the-box due to some complaining
> about circular dependencies of initscripts on initscripts. I've tried
> several different things and combinations, but I can't successfully
> build an image or toolchain using these layers. These layers also have
> Dizzy [1.7] branches, so I gave those a whirl too without any success
> either.
> 
> After Dizzy, meta-intel-quark and meta-intel-galileo appear to have been
> abandoned and Quark/Galileo support migrated to meta-intel (and was
> subsequently removed after Rocko [2.4]).
Yes, this seems to be the basic idea. Quark support was rolled into
meta-intel, and then removed after rocko (machine intel-quark is now
gone in master). When I built from rocko for that machine and boot on
Galileo the kernel config doesn't enable anything useful, so I had to
switch to the Andy's kernel config (see above).

> Along that path, the bootloader
> moved from grub0 to gummiboot to systemd-boot. The out-of-tree binutils
> -mquark-strip-lock patch was upstreamed as the -momit-lock-prefix
> option. The meta-intel layer included wic support making it dead-simple
> to create an SDcard from the build artifacts (yay!). Uclibc support died
> with Krogoth [2.1] (boo). And the suggested kernel for Quark moved from
> upstream linux-3.8 with about two dozen patches, to linux-intel-4.9
> (as-is)... and this is where I'm stuck.

Keep in mind that meta-intel did not support Galileo, only Quark. When
the kernel stuff got merged into meta-intel (and linux-intel) they
didn't feel the need to add / support a Galileo kernel config (them,
whoever they were).

> 
> In the early days it doesn't seem like there was much distinction
> between Quark and Galileo, they were mostly synonymous. But by the time
> we get to Rocko, we find that the linux-intel kernel has support for
> Quark, but nothing for Galileo. When I boot the factory-installed Dylan
> image, I find loads of stuff under /sys/class/gpio, /sys/class/pwm, and
> /sys/class/platform which are what the Arduino code uses for
> identification and interaction with the Arduino headers. When I run
> linux-intel[*3] I have a /sys/class/gpio that only claims 8 gpios are
> available for use, none of which appear to relate to the Arduino
> headers. Was the Galileo support never "upstreamed"? Not even in Intel's
> own kernel fork?

Again, check out Andy's config changes. I got the Galileo to work after
banging my head against the config for a week, but he does it nicer and
cleaner.

> 
> With Rocko I can build a bootable image (yay!!) but without proper
> kernel support for Galileo the Arduino code stops quite abruptly when it
> finds it can't find /sys/class/platform/GalileoGen2. At this point I
> started looking at mraa/upm as a replacement for the Arduino libraries,
> but they have a similar problem. When trying to run the
> "blink_onboard.c" example program (the mraa equivalent to Arduino's
> Blink program) it fails because it wants to use GPIO13 and 31, but the
> kernel says there are only 8 GPIOs available.

I was able to get all eleventy-billion gpios working so ping me if you
have issues here. See also:

http://www.malinov.com/Home/sergey-s-blog/intelgalileo-programminggpiofromlinux

Keep in mind there were two versions of Galileo with different GPIO
expanders.

> 
> In summary:
> - I can build a toolchain using Galileo-Runtime.git and Poky Dylan in a
> VM that I can install in place of the Arduino toolchain, but this
> doesn't gain me much since the default Arduino toolchain is based on
> these same layers/versions[*4]
> - I can build, but can't assemble a working rootfs for my Galileo from Dylan
> - I can't build a toolchain nor assemble a working rootfs from anything
> until I get to Rocko
> - with Rocko I can build a bootable rootfs for my Galileo and a working
> toolchain for Arduino and/or I can use mraa/upm; however none of these
> programs work because although Rocko supports Quark (to some extent)
> support for Galileo seems to have stopped back in Dylan
> 
> Thank you for reading to the end. I'm curious to know if anyone would
> like to comment on my findings and perhaps correct any historical
> inaccuracies or confirm what I've found. I'm also hoping someone might
> know of a repository somewhere out there with a more recent linux kernel
> with Quark+Galileo support that will work with Rocko.
> 
> It's too bad there isn't a meta-intel-community layer out there where
> support for non-supported things could live on.

Funny you should mention this. I was in a meeting recently where I used
the phrase "intel-community-bsp". I want this for meta-intel:

http://freescale.github.io/

I hope I can achieve that but I would not recommend refraining from
respiratory activities while I attempt to achieve that goal.

Cheers,
Stephano

> 
> Best regards,
>     Trevor
> 
> 
> 
> [*1] https://en.wikipedia.org/wiki/Intel_Quark#Segfault_bug
> [*2] the galileo arduino libraries are found at
> https://github.com/01org/corelibs-galileo
> [*3] which, by the way, is not even setup for Quark; i had to search for
> and enable a couple more Quark-specific kernel configuration options in
> order to get "full" Quark support from linux-intel!
> [*4] although on my openSUSE system, the default toolchain that is
> installed by the Arduino IDE is broken, so i do gain is the ability to
> properly compile and upload sketches
> 
> 



More information about the meta-intel mailing list