This is an old revision of the document!
FreeBSD ARM
FreeBSD supports both 32-bit and 64-bit ARM chips.
- On 32-bit, FreeBSD supports ARMv6 and ARMv7, termed arm, armv6 and armv7, respectively.
- Support for ARMv5 was dropped because it was slowing down other development.
- Our 64-bit port is called arm64 (alternatively, aarch64).
Almost all 32-bit implementations are single boards. Some 64-bit implementations are single boards, but a few are full servers. The servers are better documented here.
The rest of this page applies to single boards.
Which Board Do I Have?
The arm market varies from boards mostly oriented to system developers, to unsuccessful product ideas, to designs that have shipped many millions of units. The selection is bewildering.
Most people are familiar with the Raspberry Pi and its derivatives:
- If you have an old Raspberry Pi (e.g. Rasperry Pi B), you have a 32-bit board that can only run the armv6 code.
- The Raspberry Pis that came right after that are generally 32-bit boards, and they can run either armv6 or armv7 code.
- Some of the latest Raspberry Pis, including Raspberry Pi 3 and 4, are 64-bit CPUs and can run either of the above, or aarch64. On FreeBSD, the former is more well-tested.
You may instead have an Allwinner-based board, such as the Orange Pi, Pine64, and so forth; or a RockChip-based board.
Other boards are less common.
Many arm boards are 32-bit boards. Notable exceptions are Cavium, Pine64, and recent Raspberry Pis, which are 64-bit: see arm64 for more information.
All of these boards are based on particular System-On-Chip families (commonly termed SoC). Much of the available documentation (both inside and outside FreeBSD) refers to specific SoCs rather than board names, leading to confusion.
SoC Families
FreeBSD arm support can be thought of as being related to an SoC 'family':
Marvell Kirkwood(no longer supported)- zynq_7000
Prebuilt Targets
FreeBSD Release Engineering builds specific images for various popular 32-bit boards including rpi-b and rpi2, and various popular 64-bit boards including pine64 and rpi-3.
Alternatively, images for many boards can be built by crochet or using FreeBSD's release build infrastructure.
For other boards, some development work may be necessary.
However, FreeBSD has preexisting support for U-Boot on many popular boards.
Also see notes about the prebuilt images.
Well supported boards
The following boards are well supported, however some drivers may be missing. Multiple developers are regularly developing and testing new code on these boards.
- Allwinner SoC: Banana pi, Cubieboard 1/2, Orange Pi PC/PC2, and many others
- i.MX6 systems: Wandboard, CuBox, Hummingboard, and others
- TI AM3359-based systems: Beaglebone White, Beaglebone Black
- Raspberry Pi family
Boards with unknown support
These are boards that are supported at an unknown level or currently in the works. For more information on the current state of support for any of these, please send an email to FreeBSD ARM Mailing List
- ArndaleBoard (Samsung Exynos5250)
- BeagleBoard and BeagleBoard-xM (TI OMAP3) - GSoC 2012, stable - aleek@
- Genesi Efika MX Smarttop
- Genesi Efika MX Smartbook
- Globalscale Technologies DreamPlug (but see the EOL announcement 20190709)
- Globalscale Technologies OpenRD platform
Marvell DB-88F5182, DB-88F5281, DB-88F6281, RD-88F6281, DB-78100 (ARMv5)(no longer supported)- Marvell DB-88F6781 (ARMv6)
- Marvell DB-78460 (ARMv7)
- Marvell Sheeva Plug (but see the EOL announcement 20190709)
- Marvell Dream Plug (but see the EOL announcement 20190709)
- BananaPI R2 (Mediatek Quad-core ARM Cortex-A7)
- BananaPI R64 (MediaTek, dual-core ARM Cortex-A53)
- NanoPi Fire 3 (Samsung, S5P6818, 1.4GHz)
- Odroid-C1 (Amlogic aml8726-m8b) (work in progress)
- Pandaboard (OMAP4)
- Phytec Cosmic Board (Freescale Vybrid Family)
- Radxa Rock (was work in progress; now abandoned)
- Technologic Systems TS-7800
- Visson ATV-102 (Amlogic aml8726-m6) (work in progress)
- Zedboard (Xilinx Zynq)
Well supported SoCs
The following SoCs (CPUs) are well supported, however some drivers may be missing. Multiple developers are regularly developing an testing new code on these SoCs.
- Broadcom BCM2835 (used in Raspberry Pi) and BCM2836 (used in Raspberry Pi 2)
- Freescale i.MX6
SoCs with unknown support
CPUs that are supported at an unknown level or currently in the works:
- Amlogic aml8726-m6 (used in Visson ATV-102) and aml8726-m8b (Hardkernel Odroid-C1)
- Freescale Vybrid Family
- Marvell Orion, Kirkwood and Discovery Innovation families of systems-on-chip
- Marvell Armada 500 (ARMv6)
- Marvell Armada XP (ARMv7)
- MediaTek MT7623N
- MediaTek MT7622
- NXP LPC32x0 arm/lpc
- Qualcomm Snapdragon
- Rockchip RK3188
- Rockchip RK3288
- Samsung Exynos5
- Samsung S5P6818
- Texas Instruments DaVinci Digital Media system-on-chip
- Xilinx Zynq7 family
Developer Resources
A variety of information useful to people interested in development on or for ARM systems is available on the FreeBSD ARM Developer Resources page.
User Guides
The following HOWTO guides have been contributed by the user community: