site  contact  subhomenews

OE compile for Raspberry Pi 4

January 03, 2021 — BarryK

There has been the intention for sometime to get back into EasyOS on aarch64-based platforms. A good starting point is the Raspberry Pi 4, as OpenEmbedded has excellent support for it, as the 'meta-raspberrypi' layer. This is the 'dunfell' branch:

https://github.com/agherzan/meta-raspberrypi/tree/dunfell

I added this layer to my port of OE-Dunfell, and with the same package list as for the x86_64 build, started the build. It went right through, with only these failures:

network-manager-applet gutenprint xresprobe libvdpau-va-gl restarter netpbm

Good that none of those are a dependency for other packages. Next thing to do is examine the failure logs and see if they can be fixed. If not, I can still build a bootable SD card, with 'devx' SFS, and compile them in a running system.

Note, OE TUNE_FEATURES variable is "aarch64 cortexa72 crc crypto". So if I wanted to run on the Pi3 would have to do a separate compile.

So, what hardware? The Pi4 has good specs, will make a reasonable host compiling system. Reckon might as well go for the board with 8GB RAM. Plastic case with heatsink -- read online that the metal cases obstruct the wi-fi signal. How about this selection:

https://www.altronics.com.au/p/z6302h-raspberry-pi-4-model-b-board-8gb/

img1

https://www.altronics.com.au/p/p6631a-dynalink-1.5m-micro-hdmi-to-hdmi-cable/

https://www.altronics.com.au/p/m8821-raspberry-pi-5.1v-dc-3a-power-supply/

https://www.altronics.com.au/p/h8958-acrylic-raspberry-pi-4-case-with-cooling-fan/

img2

One thing very interesting is the 4K at 60Hz video output. My Lenovo PC can only do 4K at 30Hz.

EDIT 2021-01-04:
Last night managed to compile 'netpbm', it took about 4 hours to fix. Not entirely happy with the recipe, as it may only work when host and target systems are both 64-bit and the CPUs have the same endian-ness.

Fixed 'network-manager-applet' this morning. That was a quick fix. Previously, had compiled with host system and target system both being x86_64, but for a aarch64 target, had to add the "--host" and "--build" parameters. This is the "do_configure" function in the recipe:

do_configure() {
#20210104 do_configure error, need to tell it we are cross compiling...
./autogen.sh --with-gcr --with-selinux=no --with-appindicator=no --enable-introspection=no \
--enable-gtk-doc-html=no --without-wwan --enable-more-warnings=no --enable-gtk-doc=no \
--host=${HOST_SYS} --build=${BUILD_SYS}
oe_runconf
}

...OE experts will wonder why I did it that way. That's another story.  

Tags: easy