BeagleBone is supported by FreeBSD-CURRENT since August, 2012.
Some of the details below are specific to the older white BeagleBone.
There is a separate page with details for the newer BeagleBone Black.
What is a BeagleBone?
The BeagleBone is a development/test board from the BeagleBoard project based on the TI AM3359 "Sitara" SoC. It features a modern ARMv7 processor and a wealth of on-chip peripheral support. Details can be found at:
The BeagleBone is an easy way to learn about ARM development: it is inexpensive (about $89) and does not require any special skills or hardware to use. You connect it to your desktop with a Mini USB cable (which both powers the board and provides serial console access) and boot it from a MicroSDHC card with the system image.
Once you have the BeagleBone working, you can expand it by connecting it to Ethernet, adding USB peripherals (such as external disk drives or wireless network interfaces) or attaching new hardware to the connectors on the board.
There are two versions of the BeagleBone:
The original BeagleBone first shipped in December 2011. It can be recognized by the white circuit board. It had 256MB RAM and lacked Flash or video connectors. There were several minor board revisions labelled "A1" through "A6a".
The updated BeagleBone Black shipped in April 2013. It has a black circuit board. It has 512MB RAM, 2GB Flash, and micro-HDMI video connector.
How to boot the BeagleBone
(The following is specific to the older white BeagleBone. See the BeagleBone Black page for information about the newer board.)
1. Connect the board to your FreeBSD system using a Mini-USB cable. The Mini-USB connector is on the bottom of the BeagleBone. The USB cable both powers the board and provides access to the serial console.
2. Access the serial console on the board from your desktop (You may need to load the uftdi driver into your kernel first):
- $ sudo cu -l /dev/ttyU1 -s 115200
3. Insert the MicroSDHC card into your BeagleBone
4. Reboot the BeagleBone by depressing the small switch next to the Ethernet port.
Anatomy of a BeagleBone Boot Image
(This information applies to both the older white BeagleBone and the newer BeagleBone Black.)
The FreeBSD bootable image for BeagleBone is an MBR-partitioned image with FAT and UFS partitions containing the following files:
- FAT Partition
- MLO - First stage boot, from U-Boot
- BB-uboot.img - Second stage: U-Boot
- BB-uEnv.txt - configuration for U-Boot
- BBONE.DTB - Binary FDT, loaded by U-Boot
- BBONE.DTS - Source FDT for reference
BBONEBLK.DTB - Binary FDT used on BeagleBone Black
- BBONEBLK.DTS - Source FDT for reference
- BBubldr - Third stage: FreeBSD bootloader
- UFS Partition
- /boot/kernel - FreeBSD kernel
- ... rest of FreeBSD ...
The boot process works like this:
- AM3358 SoC ROM code inspects the MicroSDHC card, finds the MBR partition table and loads "MLO" from the first FAT partition. MLO is loaded before external RAM is initialized, so it has to be under 110k to fit within the on-chip RAM. MLO here is a stripped-down version of U-Boot.
- MLO loads BB-UBOOT.IMG from the first FAT partition. U-Boot is a highly modular boot loader system that can be used on a wide variety of systems. The loader is configured with built-in script commands that can be partially overridden by additional commands in the BB-uEnv.txt file.
- U-Boot loads BB-uEnv.txt and follows those commands to load BBubldr at address 0x88000000. ubldr is a variant of FreeBSD's standard loader(8) program that is designed to be chain-loaded from U-Boot. It calls into U-Boot for low-level device access, which allows ubldr to load FreeBSD on any system that supports U-Boot.
- ubldr locates the UFS partition, loads /boot/kernel/kernel from UFS to address 0x80200000 and executes it.
Note: Except for MLO, which must have exactly that name in order to be found and loaded by the ROM code, all the FAT partition boot files named above begin with "BB." This convention is used by the Crochet build tool to allow more than one boot system to reside on the same disk image. FreeBSD images built by other means may not follow this convention.
Various vendors sell a convenient, and small, 802.11 connector that supports up to 802.11N. The proper driver is the urtwn(4) and this
BBB-WiFi kernel config has been modified to include proper support for both Wifi and the device driver.
NOTE: Wifi has only been testing on the Beagle Bone Black