Using device trees is one of the most complicated and important, and sometimes risky, elements of using a Beagle to make use of add-on hardware. With the addition of the AM5729-based BeagleBone AI to the family of boards sporting BeagleBone headers, the complications have increased, requiring additional considerations with dependencies on different processor pins connected to different header pins and a different peripheral mix. Further, AM5729 won’t be the last processor where Beagle uses on a board with BeagleBone headers!
Further, in community efforts to add dynamic support for device tree overlays into the upstream Linux, much has changed for users in how changes to the device tree can be applied. This has resulted in many resources for working with device tree and Beagle to be out of date.
Beagle is committed to making this experience better for all embedded Linux users. We’ve introduced some ideas we think will help resolve much of this complexity for end users. To that end, we’ve begun a project with Bootlin to bring some of these ideas to fruition as well as to provide some definitive documentation for users.
We’ll be starting with a blog series that begins with how things work today, with an eye on the challenges that might be addressed moving forward. When reviewing the first blog post, I had some concerns it didn’t dive deeply enough into some of our proposed solution elements. To that end, I wanted to make this introductory post to let you know that more is coming!
P.S. For those that like to read-ahead, this elinux wiki page provides some preliminary work on how some BeagleBone header abstraction might be provided and this kernel documentation provides a bit of information on how the running device tree can be modified in the upstream kernel.