ARM64 Coresight Support on Dragonboard 410c

Also, installing Debian Trixie on the Dragonboard 410c

Background

For a research project in my lab we wanted to try out using the Linux "perf" tool to gather ARM Coresight traces of program execution.

The problem is that not all ARM systems have coresight support enabled, and the ones that do don't necessarily have them set up in a way that you can access them from within Linux via the perf tool.

For example, none of the Raspberry Pi models support this (the Pico possibly has support but you can't run Linux on it). Our ARM64 servers don't have support. I do have a huge pile of ARM single board computers though, so after looking through the device-tree files in the linux-kernel the best chance for support seemed to be a Dragonboard 410c board.

The Dragonboard 410c is essentially a Qualcomm APQ8016E reference board released in 2015, having hardware roughly equivalent to that of a Raspberry Pi3. It was the first ARM64 hardware I was able to source, and I got it to run some tests and check out PAPI support. After that I still used it now and then but it mostly sat quietly in the corner running an increasingly out-of-date version of Debian Linux.

Updating Debian Linux to Trixie

The dragonboard was running a 10 year old version of Debian Jessie with a qualcomm custom Linux 4.4 kernel.

I initially tried to update this in place, but it broke while I was trying to update it to Debian Bullseye.

If you've done Linux ARM work you know that vendors are quick to abandon support for their boards. Sadly this seemed to be true for the dragonboard 410c at well, though I did find a repository where they had kept up with things until 2012 or so.

There is a page with install images for 2021.12 Debian Sid, which is a development version not far before the Bookworm stable release. If you download the install .zip file, uncompress, write to an 8GB (or larger) SD-card, set the DIP-switch on the bottom of the 410c to "SD-card boot" you can boot and install this (it takes a long time).

Once this "sid" version is installed it's possible to upgrade it to Debian Bookworm first, then again to Debian Trixie. (It might complain about missing signing keys, you can put something in /etc/apt/apt.conf.d to temporarily let you install anyway). This all works without too much trouble, though you are left with it running a qualcomm custom 5.15 kernel.

Booting a 6.12 kernel

Having Trixie is great, but we want to use coresight so we want as new of a kernel as possible. Trixie comes with a 6.12 kernel (and in theory most of the 410c changes were merged upstream. Probably the graphics acceleration and other DSP firmware stuff might not work, but those aren't important to us). So these are the steps it took to get the 6.12 Debian kernel to run on the board.

Success

After all of that, coresight via perf *does* work on this board.

The next step if I'm daring enough is to permanently flash the 6.12 kernel to the system.


Back to my projects page