--- wikisrc/ports/evbarm/allwinner.mdwn 2014/11/11 17:25:47 1.26 +++ wikisrc/ports/evbarm/allwinner.mdwn 2018/05/10 00:12:47 1.89 @@ -1,108 +1,106 @@ [[!meta title="NetBSD/evbarm on Allwinner Technology SoCs"]] -[[!toc levels=2]] - -# Supported boards - - [Banana Pi](http://www.bananapi.org/p/product.html) (BPI) - - Cubieboard, Cubieboard 2 (CUBIEBOARD) - - Cubietruck (CUBIETRUCK) - - [Merrii Hummingbird A31](http://www.merrii.com/en/pla_d.asp?id=172) (HUMMINGBIRD_A31) - -# Supported hardware - - SoCs - - Cortex-A8: A10 - - Cortex-A7: A20 (2-core), A31 (4-core) - - SD/MMC controller (DMA) - - DMA controller - - GPIO - - Configuration using FEX scripts is supported - - UART - - I2C - - P2WI (A31) - - PMU - - AXP209 (A20) - - AXP221 (A31) - - Watchdog timer - - RTC - - Audio codec - - USB host - - OHCI - - EHCI - - OTG (not yet working on A31) - - SATA (A10/A20) - - Gigabit Ethernet (GMAC) - - HDMI (A20/A31) - - DDC / EDID mode detection - - Audio support - - Framebuffer - -# TODO - - OTG (A31) - - USB device mode - - Bluetooth / WiFi (Cubietruck, Hummingbird A31) - - 3G (Hummingbird A31) - - SD/MMC UHS-I support (needs sdmmc(4) changes) - - TV input (Hummingbird A31) - - NAND - - Fast Ethernet (EMAC) - -# Installation - -## A10 / A20 based boards +NetBSD supports many boards based on Allwinner SoCs. Starting with NetBSD 8.0, FDT is used to configure devices. As a result, a large number of boards and configurations can be supported with a single kernel. -* Start with an ARMv7 image from *evbarm-earmv7hf/binary/gzimg/* such as *beaglebone.img* -* Download a U-Boot build for your board from the linux-sunxi web site -* Write the *u-boot-sunxi-with-spl.bin* loader to the base image: -[[!template id=programlisting text=""" -# dd if=u-boot-sunxi-with-spl.bin of=beaglebone.img bs=1k seek=8 conv=notrunc -"""]] -* Write the image to an SD card. -* Copy the kernel (netbsd.ub) for your board to the root of the MS-DOS partition. -* Create or edit uEnv.txt on the MS-DOS partition: -[[!template id=programlisting text=""" -bootargs=root=ld0a -uenvcmd=mmc dev 0; mmc rescan; fatload mmc 0:1 82000000 netbsd.ub; bootm 82000000 -"""]] + + -## A31 based boards - -TBD. - -# Big (endian) fun - -You can run this boards with a little endian (this is the default and implied by above install instructions) -or with a big endian kernel and userland. However, kernel and userland endianness needs to match. +[[!toc levels=2]] -To build a big endian release (or sets) use -[[!template id=programlisting text=""" -./build.sh -m evbearmv7hf-eb -"""]] -where -eb means endianness big, hf is hardware floating point support, and earm is the modern "extended" ABI for ARM CPUs, and finally v7 is version 7 of the supported instruction set. +# Supported SoCs -# FEX scripts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FamilySoCNetBSD versionExample boardsNotes
sun4iA108.99.3 and laterOlimex A10-OLinuXino-LIME
sun5iA10s-
sun5iA138.99.2 and laterOlimex A13-OLinuXino, Olimex A13-OLinuXino-MICRO
sun5iGR88.99.5C.H.I.P. Pro
sun5iR88.99.2 and laterC.H.I.P., Pocket C.H.I.P.
sun6iA317.0 and laterMerrii Hummingbird A31
sun6iA31s-
sun7iA207.0 and laterCubietech Cubieboard 2, Cubietech Cubietruck, LeMaker Banana Pi
sun8iA23-
sun8iA33-Olimex A33-OLinuXino
sun8iR40-Sinovoip Banana Pi BPI-M2U
sun8iA83T8.0 and laterSinovoip Banana Pi BPI-M3
sun8iH2+8.0 and laterXunlong Orange Pi Zero
sun8iH38.0 and laterFriendlyARM NanoPi NEO, Xunlong Orange Pi Plus 2E
sun8iV3s-Lichee Pi Zero
sun9iA808.0 and laterCubietech Cubieboard 4
sun50iA648.99.2 and laterPine64, Pinebook
sun50iH58.99.4 and laterFriendlyARM NanoPi NEO2, FriendlyARM NanoPi NEO Plus2
sun50iH68.99.14 and laterOrange Pi One Plus, Pine H64
-Board configuration scripts can be found here: . You can compile them with the "fex2bin" tool found here: . -To use, copy the compiled FEX to your MS-DOS partition, load it with U-Boot, and then tell the kernel where to find it with the "sysconfig=" boot option. For example, uEnv.txt on a Cubieboard2 might look like this: +# Supported hardware -[[!template id=programlisting text=""" -bootargs=root=ld0a sysconfig=0x43000000 -uenvcmd=mmc dev 0; mmc rescan; fatload mmc 0:1 43000000 cubieboard2.bin; fatload mmc 0:1 82000000 netbsd.ub; bootm 82000000 -"""]] +Please refer to the [SUNXI kernel config](https://nxr.netbsd.org/xref/src/sys/arch/evbarm/conf/SUNXI) for the most up-to-date list of supported hardware. -Some pre-compiled .bin files can be found here: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DeviceSupportedNotes
Audio codecYesSupported on sun4i, sun5i, sun6i, sun7i, sun8i-h2+, sun8i-h3, sun50i-h5, sun50i-a64
Crypto engine-
CSI-
DMAYes
Fast Ethernet (sun4i/sun5i/sun7i)Yes
FramebufferYesUses simplefb configured by bootloader
Gigabit Ethernet (sun6i/sun7i/sun9i)Yes
Gigabit Ethernet (sun8i/sun50i)Yes
GPIOYes
GPU-
I2CYes
I2S/PCMExperimental
IR transceiver-
NANDYes
P2WI/RSBYes
PCIe-H6
PWMYes
RTCYes
SATAYes
SD/MMCYes
SMPYes32-bit only. Uses PSCI support in firmware
SPDIF-
SPIYes
Thermal sensorsYes
Touch screenYes
UARTYes
USB 2.0Yes
USB 3.0Yes
USB OTGExperimental
Watchdog timerYes
-# Framebuffer console +# Installation -To use HDMI for the console device, add *console=fb* to bootargs in uEnv.txt. +- Download or build **armv7.img** (32-bit) or **arm64.img** (64-bit) from NetBSD -current +- Write the image to disk: **dd if=armv7.img of=/dev/rld0d bs=1m conv=sync** +- Install a board-specific U-Boot (2017.07 or later) from pkgsrc to the SD card: **dd if=/usr/pkg/share/u-boot/<boardname>/u-boot-sunxi-with-spl.bin of=/dev/rld0d bs=1k seek=8 conv=sync** -# Board specific notes +# Tips and tricks -## Merrii Hummingbird A31 +## Video overscan compensation -There doesn't appear to be a meaningful way to generate a MAC address on these boards. U-Boot from the A31 SDK and from the u-boot-sunxi tree both lack GMAC support, and the Security ID registers (at 0x01c23800) appear to be empty. +On some television models, the borders of the screen may be cut off. If your television doesn't have an option to disable overscan, you can enable overscan compensation by entering the following commands at the U-Boot prompt: -To overcome this, you can specify your own MAC address in *uEnv.txt*: -[[!template id=programlisting text=""" -bootargs=root=ld0a awge0.mac-address=02:a0:3d:88:1a:1e -"""]] + setenv video-mode sunxi:1280x720-24,overscan_x=32,overscan_y=20 + saveenv + reset