Why I spent my Christmas Day building native Arm compilers

My day job involves, among a fairly wide variety of other things, rebuilding compilers. So why did I find myself doing the same thing on my day off?

What I did in my holidays

By Daniel Thompson, aged 40

I had been looking forward to Christmas more then usual this year. In November we bought some drawers with frosted glass fronts and I had been designing a custom lighting system for them in my mind during long hours washing up through most of the pre-Christmas period.

On Christmas day I finally got the chance to hook up my strings of WS2812 LEDs and start hacking. With many LEDs carefully wrapped around and paper clipped a bog roll and with probes dangling off everywhere I decided it was far too fragile to hook up my laptop so I grabbed a spare Dragonboard 410C before carefully balancing everything and connecting it up to my longstanding Cortex-M3 based microcontroller board of choice.

It was only when I tried to do the initial flashing that I realised there was no arm-none-eabi-gdb in Debian Buster/arm64. There’s a cross-compiler but no debugger. Without a second thought I rocked over to download the Arm embedded toolchain from the Arm website but found the cupboard was bare, or as least there were no AArch64 compiler binaries I could use.

After a brief detour of downloading the source code on the DB410C before deciding that building a complex multilib toolchain on a four-core A53 system (with a tiny 8G eMMC) was insane. Shortly afterwards I went upstairs and woke my Developerbox from it’s Christmas afternoon nap (actually it had been napping since I stopped work a few days earlier).‚Äč

After wrangling LXC to create the Ubuntu 14.04 container needed for the build I set about trying to recompile the toolchain. Arm’s instructions were awesome and even mentioned how to prevent any attempt to build using mingw32 (which would have been doomed to fail when building on AArch64).

After that there was just enough time for a nice game of Good News, Bad News to complete the holiday period.

Good news: Arm’s instructions worked perfectly and a brand new toolchain emerged from the other end of the sausage grinder.

Bad news: It took my Developerbox over 8 hours to grind through all the builds and as a result I didn’t get to play with my new toys until Boxing Day.

Good news: (Some of) my software worked first time.

Bad news: Except for some apparent toolchain bugs that I haven’t yet had the chance to check (during working hours) to find out if they are AArch64 specific ;-).


Just another day in the life of an Arm-on-Arm developer!

Share