Re: [Buildroot] Correct approach for supporting multiple SoCs with otherwise same board?

John Ernberg via buildroot <[email protected]> Thu, 30 Jul 2026 16:37:10 +0000
Newsgroups net.busybox.buildroot
Message-ID <[email protected]>
Hi Arnout,

On 7/30/26 6:25 PM, Arnout Vandecappelle wrote:
>   Hi John,
> 
> 
> On 13/07/2026 10:17, John Ernberg via buildroot wrote:
>> Hi,
>>
>> We have a board with a few different iMX8X series SoCs,
>> which we have worked around by having a custom imx-seco package that
>> installs the different AHAB containers we need.
>>
>> Now we're introducing a new SoC onto this board that is not compatible
>> with the iMX8X. However, Linux and userspace will be the same for all
>> boards as they need to be interchangeable with each other.
>>
>> The only things we need to generate differently now is the bootloader
>> and ATF.
>>
>> The bootflow is bootloader -> ATF -> Linux
>>
>> What is the correct way to handle this?
>> Should we separate the firmwares + bootloader + ATF configs from
>> the Linux + userspace build config?
> 
>   Assuming you don't want to try to generate a single userspace image 
> for both
> boards, the best approach is to create a separate config for each board 
> type. If
> you want to make it explicit that it's mostly the same, you can split that
> config into a "boot" part and a "userspace" part, where the same 
> userspace part
> is used for both. You simply add a Makefile or other script (to your 
> external, I
> presume) that concatenates them and then calls `make defconfig 
> DEFCONFIG=...`
> pointing to the generated file.
> 
>   Note that there's also a script, support/kconfig/merge_config.sh. It 
> checks
> for conflicting options, but it's far from foolproof. `cat` mostly works 
> as well.
> 
>   The annoying part of a split config is that you can't easily change it 
> with
> menuconfig followed by savedefconfig. After the savedefconfig, you have to
> extract the changed part. There is a script utils/diffconfig that can 
> help, but
> it's probably best to manually apply the changes to the original split
> configurations.
> 
> 
>> Separation feels odd though as that means we need to let the
>> post-image.sh script we have for producing boot images (ATF + Linux +
>> DTBs)  wander into other build directories.
>   OK, this does sound like the idea is to reuse the same userspace image 
> for
> both. For me, it doesn't sound weird at all to look for images in other 
> build
> directories. For example, I typically have a separate config for 
> generating a
> custom toolchain that can be built as an external toolchain. I put all 
> the build
> directories in a fixed place under the external, so I can refer to the 
> external
> toolchain as $(BR2_EXTERNAL_..._PATH)/output/host/bin/gcc.

We'll be sharing everything but the bootloader and device tree.

If it's the expected approach then I will set it up this way.
Since we're sharing the userspace, kernel, and so on, fully, I'm 
thinking I should just have defconfigs for each bootloader build and 
another defconfig for the rest, and just combine everything in post.

Thanks for the feedback!

Best regards // John Ernberg
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot