Skip to content

Add ADI board support, packages, and build infrastructure - #19

Merged
mhennerich merged 24 commits into
mainfrom
staging/add-adi-boards-packages-pr
Jun 30, 2026
Merged

Add ADI board support, packages, and build infrastructure#19
mhennerich merged 24 commits into
mainfrom
staging/add-adi-boards-packages-pr

Conversation

@mhennerich

@mhennerich mhennerich commented Mar 31, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add board support for PlutoSDR (ADALM-PLUTO), ADALM2000 (M2K), and Sidekiq Z2
  • Add shared ADI board files and rootfs overlay
  • Add br2-external package definitions for the ADI IIO ecosystem (libad9361-iio, libini, libm2k, ad936x_ref_cal, fru-tools, jesd204b_status, poll_sysfs, python-pygccxml)
  • Add platform defconfigs for PlutoSDR, ADALM2000, Sidekiq Z2, MicroBlaze, and NIOS2
  • Add buildroot patches for libiio, gnuradio, dropbear host build, and linux simpleImage ELF copy

Test plan

  • Build PlutoSDR: make zynq_pluto_defconfig && make
  • Build ADALM2000: make zynq_m2k_defconfig && make
  • Build Sidekiq Z2: make zynq_sidekiqz2_defconfig && make

@pamolloy

Copy link
Copy Markdown
Contributor

The patches were added in analogdevicesinc/buildroot#113 and analogdevicesinc/buildroot#118

@pamolloy

Copy link
Copy Markdown
Contributor

Also needs to be added to CI/CD

@pamolloy

Copy link
Copy Markdown
Contributor

And would be nice to rename board/adi/common to something more descriptive since it isn't actually common for all ADI boards (i.e. the ADSP support that already exists)

@pamolloy
pamolloy requested a review from ozan956 June 18, 2026 13:41
Comment thread configs/microblaze_adi_rootfs_vivado_2018_3_defconfig Outdated

@nunojsa nunojsa left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just some nitpick and I think already mentioned it regarding the rather old vivado configs? Other thing that came to mind is the sidekiqz project? Is it still supported? Looks like it's not on main hdl any longer

Comment thread board/pluto/update.sh Outdated
unix2dos ${FILE}
}

calibrate () {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick: In more than one place we have this space before (). Would be nice to clean it up. I guess something an agent can easily do?

@mhennerich
mhennerich force-pushed the staging/add-adi-boards-packages-pr branch 2 times, most recently from 4e00d38 to bfa8975 Compare June 22, 2026 15:09
@gastmaier

Copy link
Copy Markdown
Contributor

Resolved pending dependencies with local runs

$ container-run --root adi/br2_external:latest
$ make -j$(nproc)
[ some missing dep ]
$ zypper install <dep> # and add to the Containerfile
$ make -j$(nproc)

then drop nios2, used

$ cr --mount-ai adi/br2_external:latest
$ claude
❯ make BR2_EXTERNAL="${PWD}/.." nios2_adi_rootfs_defconfig ; make -j20
  #
  # configuration written to /tmp/br2-external/buildroot/.config
  #
  Makefile.legacy:9: *** "You have legacy configuration in your .config! Please check your configuration.".  Stop.
> The nios2 architecture was dropped from Buildroot in commit 6775ccc5a1 (January 9, 2025). You need to use a Buildroot version before that commit.

There is no fix but to build with < gcc-15, buildroot < 6775ccc5a1 .

@gastmaier

gastmaier commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

libini needs bumping cmake 3.1. CMake 4.0 (e46695bbe4) removes support to cmake < 3.5.
https://github.com/pcercuei/libini (is already 3.10)

@gastmaier

Copy link
Copy Markdown
Contributor

It is not clear to me why

board/pluto/post-build.sh
board/m2k/post-build.sh

are different.
Shouldn't they be almost identical?

In particular, pluto version introduces templating board/pluto/index.html and some ROOTPASSWD mechanism, as well as a pluto_reboot as symbolic link to device_reboot

@mhennerich
mhennerich force-pushed the staging/add-adi-boards-packages-pr branch 2 times, most recently from 728aac7 to 512c8bb Compare June 25, 2026 11:23
Board files, init scripts, post-build script, MSD overlay,
busybox config, and WPA supplicant support for the ADALM-PLUTO
(PlutoSDR) platform.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Board files, init scripts, post-build script, MSD overlay,
busybox config, and calibration data for the ADALM2000 (M2k)
platform.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Common networking init script, FRU init script, post-build script,
and QUADMXFE FRU binary files shared across microblaze/NIOS2 boards.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Add libini, libad9361-iio, and libm2k packages for the ADI IIO
ecosystem. These provide INI config parsing, AD9361 multi-chip
sync, and ADALM2000 device interfacing respectively.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Tools to display and manipulate FMC FRU information.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Comment thread .github/workflows/build.yaml
Comment thread Makefile
@@ -0,0 +1,39 @@
BUILDROOT_VERSION ?= adi-2026.02-y

@pamolloy pamolloy Jun 26, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The top level custom ADI Makefile and patch files mimic Yocto and does not follow mainline Buildroot. This is a custom implementation that also does not follow the standard upstream approach which is already followed by ADSP.

@pamolloy

pamolloy commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Please also document your changes in the readme.md.

@mhennerich

Copy link
Copy Markdown
Contributor Author

And would be nice to rename board/adi/common to something more descriptive since it isn't actually common for all ADI boards (i.e. the ADSP support that already exists)

It looks like the directories got moved from board/adi/ into board/. It would be nice to keep our boards in board/adi/ since it matches the structure from Buildroot

ok

@mhennerich
mhennerich force-pushed the staging/add-adi-boards-packages-pr branch from cb976e0 to 13e35d7 Compare June 29, 2026 09:28
Comment thread configs/nios2_adi_rootfs_defconfig Outdated
BR2_PACKAGE_JESD204B_STATUS=y
BR2_TARGET_ROOTFS_CPIO=y
BR2_TARGET_ROOTFS_CPIO_GZIP=y
BR2_PACKAGE_HOST_DROPBEAR=y

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is being removed in a follow up patch... So I would say to just no add it here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll rebase the entire series and then this will be gone

@pamolloy pamolloy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note there is a fixup commit currently on the branch

@gastmaier
gastmaier force-pushed the staging/add-adi-boards-packages-pr branch from 67ab143 to 7020e1c Compare June 29, 2026 13:44
mhennerich and others added 13 commits June 29, 2026 15:53
Add defconfigs for PlutoSDR, ADALM2000, Sidekiq Z2, MicroBlaze,
and NIOS2 ADI platforms. Paths updated to use BR2_EXTERNAL_ADI_PATH.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
These patches capture ADI-specific changes to upstream buildroot
packages that cannot be handled via br2-external:

- 0001: libiio bump to v0.26 with hwmon and local config support
- 0002: gnuradio python executable and dependency fixes
- 0003: dropbear host build support (dropbearkey)
- 0004: linux.mk simpleImage ELF copy to output
- 0005: skeleton fstab ptmxmode removal
- 0006: python-pybind patch whitespace fix

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Add Azure Pipelines, Travis CI configuration, and CI helper
scripts migrated from the buildroot fork.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
- Only eval BR2_ prefixed variables from .config to avoid errors
  from Make-level variables (TOPDIR, BASE_DIR, etc.) that are not
  valid shell
- Create dummy LICENSE.html and VERSIONS files when not building
  the official image, as the real LICENSE.html is generated via
  'make legal-info' and a post-processing script

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Point libiio at commit da72b6193911e8fc242422bea5bef90e23c3577d,
the tip of the libiio-v0 branch. Regenerate all patches against
buildroot 2025.05.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
The Linaro ARM 2018.05 external toolchain was removed in buildroot
2025.11. Replace with the ARM ARM 14.2.rel1 toolchain which is the
direct successor.

Also regenerate buildroot patches to apply cleanly against 2025.05:
- Remove obsolete python-pybind whitespace patch (fixed upstream)
- Update fstab patch context for upstream changes
- Regenerate libiio patch from actual diff

Note: nios2 defconfigs cannot be used with buildroot >= 2025.02
as the nios2 architecture was removed entirely.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
The Makefile clones upstream buildroot at a pinned version, applies
ADI patches from patches/buildroot/, and forwards all make targets
with BR2_EXTERNAL set automatically. Patch application is idempotent,
skipping already-applied patches.

Usage:
  make buildroot              # clone + patch
  make buildroot-patch        # re-apply patches
  make zynq_pluto_defconfig   # load defconfig
  make                        # build

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
The host-dropbear package was never built during a clean build because
package/Config.in.host did not source package/dropbear/Config.in.host,
causing BR2_PACKAGE_HOST_DROPBEAR=y to be silently dropped by Kconfig.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Jorge Marques <jorge.marques@analog.com>
zlib is required for microblaze_*_defconfig

Signed-off-by: Jorge Marques <jorge.marques@analog.com>
In hardened enviroments, the umask is set to a more restrictive value
through the systemd UMask parameter , but can be adjusted at the
execution level. If not set and under such circuntances, will trigger

  ERROR:  OE-core's config sanity checker detected ....
    Please use a umask which allows a+rx and u+rwx

Signed-off-by: Jorge Marques <jorge.marques@analog.com>
@mhennerich
mhennerich force-pushed the staging/add-adi-boards-packages-pr branch from 7020e1c to 677f64b Compare June 29, 2026 13:54
gastmaier and others added 3 commits June 30, 2026 11:20
Commit 5e12a2b955390e973473fb5b0993d4eeac2e14dd raises cmake version to
support cmake 4. Commit 94fb7036f0541e6d655d80610b3eb04aea580a69 from
the same history updates minor collaterals to support current LTS
distros.

Signed-off-by: Jorge Marques <jorge.marques@analog.com>
Group the ADI boards under a common board/adi/ namespace alongside
the existing board/adi/ev-sc598-som/. Update defconfig path references
accordingly; inter-board ${BOARD_DIR}/../pluto/ relative paths in
post-build scripts remain valid as all three boards stay siblings.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
@mhennerich
mhennerich force-pushed the staging/add-adi-boards-packages-pr branch from 79ae182 to d3e4328 Compare June 30, 2026 09:22
@mhennerich
mhennerich merged commit dd6d34f into main Jun 30, 2026
6 checks passed
@mhennerich
mhennerich deleted the staging/add-adi-boards-packages-pr branch June 30, 2026 10:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants