BeagleBoard.org has begun shipping its faster, cheaper “BeagleBone Black” SBC with a Linux 3.8 kernel, supporting Device Tree technology for more streamlined ARM development. The $45 BeagleBone Black runs Linux or Android on a 1GHz TI Sitara AM3359 SOC, doubles the RAM to 512MB, and adds a micro-HDMI port.
A month after BeagleBoard.org announced its BeagleBone Black, the open source single-board computer (SBC) has shipped on schedule. Despite cutting the price to $45 — down from $89 for the original BeagleBone and only $10 more than a Raspberry Pi Model B — the BeagleBone Black advances from a 720MHz Sitara AM3358 SOC to an almost identical new 1GHz Sitara AM3359.
(click image to enlarge)
The BeagleBone Black also doubles RAM to 512MB of DDR3, and for the first time offers onboard flash (2GB) in addition to the earlier microSD slot. For many developers, though, the micro-HDMI port — already standard on the Raspberry Pi — is the big draw here. Other features are largely unchanged from the original. (See our previous LinuxGizmos report for more information.)
Today’s big news is that the hacker-friendly BeagleBone Black is shipping with a cutting-edge Linux 3.8 kernel, up from kernel 3.2 for the original BeagleBone. The updated kernel gives the BeagleBone Black access to a new Direct Rendering Manager (DRM), display driver architecture, as well as full support for the Device Tree data structure introduced to streamline ARM development in Linux 3.7.
BeagleBone Black is “one of the first completely device tree enabled ARM platforms, so we’ve been pushing the envelope of what device tree can support,” says BeagleBoard.org in its announcement. (See the team’s full announcement.)
First, a note on the new DRM technology, which according to BeagleBoard.org replaces the earlier framebuffer to provide “a more modern display driver architecture.” The new rendering manager is particularly important since the BeagleBone Black has added a micro-HDMI port. “Being able to simply plug in a monitor and have it work at the highest supported resolution is an incredibly welcome feature,” says the project.
Device Tree and the Cape
The Device Tree support will initially be a pain for developers, but should pay off in the end. It appears that capes — the BeagleBone’s answer to Arduino’s peripheral stack-on shields — that have been developed for the original BeagleBone with Linux 3.2 won’t initially plug and play with the BeagleBone Black. However, a modified 3.2 kernel “coming soon” should provide the necessary bridge from the old cape driver architecture to the new one.
Device Tree, which has been used on PowerPC and SPARC platforms for years, came to ARM in Linux 3.7 after Linux Torvalds threw a hissy in 2011 and said enough was enough with the increasingly fractured ARM architecture. Unlike x86, which provides a single Linux kernel that runs on almost any x86 device, each ARM system has required a customized Linux kernel.
As Grant Likely explains in this overview, Device Tree is a data structure that describes hardware, essentially decoupling the hardware configuration from the board and device driver support in the Linux kernel. As a result, board and device support becomes data driven, based on data passed to the kernel, instead of being dependent on per-machine hard coded selections.
Previously, each ARM platform had its own identifier and run-time logic for configuring peripherals. “The hundreds of ARM platforms made all of this run-time logic something virtually unmaintainable and the upstream maintainers declared that no new platforms would be supported with the old style,” says BeagleBoard.org.
As Jason Kridner, co-founder of BeagleBoard.org explains, the project was hesitant to move up to such a recent kernel, but decided that it was time to bite the bullet and support the Device Tree. By doing the hard work of switching to Device Tree now, BeagleBoard.org and its developer community can save a lot of configuration and maintenance headaches down the line, according to Kridner. Without it, “we’d always be stuck maintaining it ourselves and we’d never be able to benefit from the work from other Linux developers,” he adds.
While Device Tree poses obstacles to developers with older capes, it should offer major benefits for new cape development, says Kridner. By standardizing the kernel logic and providing the device tree information as data files, “it becomes rather easy for a new cape developer to simply create a device tree description of their board and provide it to end users without them ever needing to recompile the kernel!”
As described in this overview of applying Device Tree to BeagleBone cape development, “all ARM-architecture devices who make use of this infrastructure can potentially all use the same binary kernel, since compile-time options are largely eliminated by using these devicetrees to specify at boot time all of the various processor peripheral.”
Kridner says the project plans to skip Linux 3.9 and “will be hopping back on the mainline train for the 3.11-rc.” He continues, “While we still haven’t caught mainline and haven’t enabled support for all capes with this new kernel release, we are well along the way.”
The BeagleBone Black is available now for $45. More information and links to distributors may be found at BeagleBoard.org. Also of interest, is Kridner’s Introduction to the BeagleBone Black’s new 3.8 Linux kernel.