This is an old revision of the document!


BeagleBone is supported by FreeBSD-CURRENT since August, 2012.


The BeagleBone is an ARM-based development/test board from the BeagleBoard project. It features a modern ARMv7 processor and a wealth of on-chip peripheral support. Details can be found at:

http://beagleboard.org/bone

The BeagleBone is an easy way to learn about ARM development: it is inexpensive (about $85) 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.

Note: We believe this image will also work on the “next-gen BeagleBone” but as of April 2013 have not yet had a chance to try it.


1. CONNECT the board to your FreeBSD system using a Mini-USB cable. The Mini-USB connector is on the bottom of the BeagleBone.

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.


The FreeBSD bootable image for BeagleBone has both 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
    • 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 begin with “BB.” This was done to allow more than one boot system to reside on the same disk image.

  • arm/beaglebone.1367089075.txt.gz
  • Last modified: 2013/04/27 18:57
  • by TimKientzle