FreeBSD on Allwinner (sunxi) systems

Supported SoCs

FreeBSD supports the following Allwinner SoCs:

Supported boards

These SoCs are showing up in a growing number of development boards and other devices. FreeBSD has support for some of these boards, including (but not limited to) the following:

A10 Supported Boards

A31/A31S Supported Boards

A64 Supported Boards

A83T Supported Boards

H3 Supported Boards

Supported devices

Legend

Supported

Should work

Work in progress

Not working

Not supported

Not applicable

A10

A13

A20

A31

A31S

A64

A83T

H3

Audio (analog)

YES

YES

YES

Audio (HDMI)

YES

cpufreq / DVFS

YES

YES

YES

YES

YES

DMA

YES

YES

YES

Ethernet

r262710

YES

YES

YES

r305134

YES

YES

Framebuffer

YES

GPIO

r246342

YES

YES

YES

YES

r305134

YES

YES

HDMI video

YES

I2C

r295626

YES

YES

YES

YES

r305134

YES

SATA

285090

YES

SD/MMC

r283253

YES

YES

YES

YES

r305134

YES

YES

Thermal

YES

YES

YES

YES

YES

YES

Watchdog

YES

YES

YES

YES

YES

r305134

YES

YES

UART

YES

YES

YES

YES

YES

r305134

YES

YES

USB Host

r246057

YES

YES

YES

YES

r305134

YES

YES

USB DRD

D5881

D5881

D5881

D5881

IR (RX)

YES

YES

What still needs to be done

The following SoC interfaces are not yet supported by FreeBSD:

The following features are not directly related to Allwinner SoCs but are often implemented on Allwinner boards:

The Allwinner boot process

Most Allwinner systems use U-Boot as the boot program.

Recent versions of U-Boot are split into a small first-stage loader called SPL and a main boot program. The following table shows SD Card layout expected by system ROM:

SD Card layout

start

size

usage

0

8KB

Partition table

8KB

32KB

Initial SPL loader

40KB

512KB

U-Boot

552KB

472KB

Reserved

1024KB

-

Free for partitions

U-boot ports

The main U-Boot program can be configured with many different options for loading a kernel from SD card, USB drives, SATA drives, or the network. When booting FreeBSD the usual process is to have U-Boot start ubldr (a version of loader(8) tailored for use with U-Boot), and ubldr loads and starts the kernel. To use ubldr, U-Boot must be configured with the CONFIG_API option.

Recently the customized versions of U-Boot have been turned into FreeBSD ports and packages. You can simply "pkg install u-boot-cubieboard" and everything you need to get U-Boot onto an SD card is installed for you in /usr/local/share/u-boot, including a README file that tells you how to install the file(s) onto the SD card.

The following U-Boot ports and packages are available for Allwinner systems:

How to Build an Image

Cubieboard 1, Cubieboard 2, Banana Pi, and Banana Pi M3 are supported by the Crochet build tool.

How to setup Xorg

Install the xorg and xf86-video-scfb packages, and add the following to /etc/X11/xorg.conf:

Section "InputDevice"
    Identifier  "Keyboard1"
    Driver      "kbd"
EndSection

Section "InputDevice"
    Identifier  "Mouse1"
    Driver      "mouse"
    Option      "Protocol"      "auto"
    Option      "Device"        "/dev/sysmouse"
EndSection

Section "Monitor"
    Identifier  "Monitor"
EndSection

Section "Device"
    Identifier  "Generic FB"
    Driver      "scfb"
EndSection

Section "Screen"
    Identifier  "Screen"
    Device      "Generic FB"
    Monitor     "Monitor"
    DefaultDepth 24
    SubSection "Display"
       Depth           24
    EndSubsection
EndSection

Section "ServerLayout"
    Identifier  "layout"
    Screen      0 "Screen" 0 0
    InputDevice "Mouse1" "CorePointer"
    InputDevice "Keyboard1" "CoreKeyboard"
EndSection

FreeBSD/arm/Allwinner (last edited 2017-04-19 06:00:32 by GanboldTsagaankhuu)