From linux-sunxi.org
Jump to: navigation, search
A64 SoC.jpg
Manufacturer Allwinner
Process 40nm
CPU Quad-Core ARM Cortex-A53
Memory up to 3 GB LPDDR2/ LPDDR3/ DDR3 / DDR3L
GPU Mali400 MP2
Video MIPI DSI [email protected], LVDS [email protected], RGB [email protected], HDMI v1.4 [email protected]
Network GBit MAC, no PHY
Storage NAND, NOR, MMC
USB OTG, 1x Host
Other BGA396, 0.65mm pitch, 15x15mm
Release Date ?
Website Product Page

Allwinner A64 (sun50i) SoC features a Quad-Core Cortex-A53 ARM CPU, and a Mali400 MP2 GPU from ARM.



The A64 is basically an Allwinner H3 with the Cortex-A7 cores replaced with Cortex-A53 cores (ARM64 architecture). They share most of the memory map, clocks, interrupts and also uses the same IP blocks. Differences between the H3 and the A64 seem to be:

  • The H3 has three USB host controllers, whereas the A64 has only one. Both SoCs have an additional USB-OTG controller, which is assumed to be used as normal host controller as well.
  • The H3 DRAM controller supports up to 2GB of RAM, the A64 supports up to 3 GB. Despite being a 64-bit chip, this makes the SoC entirely 32-bit on the physical side.
  • The H3 supports 5 UARTs, the A64 has 6 of them.
  • The MMC controller has been updated to support faster transfer modes. The MMC clocks have changed on the way, now the MMC controller itself provides support for the output and sample phase.
  • The H3 has SRAM A1 mapped at address 0, the BROM is at 0xffff0000. The A64 has its BROM mapped at address 0, SRAM A1 is mapped right behind it at 0x10000 (64KB).
  • The pinmux configuration is still somewhat similar, but differs to an extent which makes them incompatible. A prominent example is (the debug) UART0, which is on PortA on the H3, but on PortB on the A64. H3 lacks PortB entirely.

A64 SoC Features


Allwinner H64 is targetted for OTT boxes and A64 for the tablets. Both are quad core Cortex A53 processors with a Mali-400MP2 GPU, H.265 4K video playback with basically the same interfaces and peripherals, but H64 also supports H.264 at 4K resolutions, while A64 is limited to H.264 @ 1080p, and H64 adds a TS interface.


Some devices in the SoC are not described in the manual, but have descriptions in other SoC's manuals:

  • RSB: MMIO address and IRQ mentioned in the A64 manual, IP description in the A83T manual.
  • PRCM: MMIO address mentioned in the A64 manual, IP description in the A83T manual.

Some remarks about the memory map.

Register guide


Original SDK




The Allwinner provided BSP package for the Pine64 contains U-Boot source code, which provides a 32-bit port based on the 2014.07 release. The code as in the tarball does not even compile, also the whole port is severely crippled, just enough to boot an Android system from MMC. However the existing code base was fixed and extended by longsleep to allow loading kernels directly (using booti and proper FDT support) and adding filesystem support, thus overcoming the most severe limitations. The most current code base can be found here.

At the moment this U-Boot version is required to boot BSP kernels.

Mainline U-Boot

As of version 2017.07 the official mainline U-Boot fully supports the A64 SoC and various boards with it. This is the recommended way of booting boards when not using BSP kernels.

Basic support for the A64 SoC was merged into 2016.05-rc1. This covered UART, MMC and the required GPIOs and clocks. Ethernet support was added in 2016.09-rc1, USB with 2016.11-rc3. U-Boot 2017.03-rc1 saw the addition of the required DRAM init code, so SPL support was enabled. However this version lacked support for loading the ATF, which was merged into 2017.07-rc1.

This U-Boot implementation is a full featured 64-bit (armv8) port, it provides the full functionality of mainline sunxi U-Boot (including UEFI support). An aarch64 cross compiler is needed to compile U-Boot.

Kernel code


Sunxi Community


Devices in development:

GPL Violations

The publically available SDKs contain kernel and u-boot trees which include and depend on several binaries. Allwinner is always violating the GPL in this way since A31. In the current A64 SDK, lots of blobs are included in kernel and U-Boot, including the critical DRAM code and the important HDMI code.

(The list below may be not finished, and do not list files related to non-A64 SoC)


  • lichee/linux-3.10/modules/aw_schw/libschw
  • lichee/linux-3.10/modules/nand/sun50iw1p1/libnand_sun50iw1p1
  • lichee/linux-3.10/drivers/input/touchscreen/aw5x06/libAW5306
  • lichee/linux-3.10/drivers/video/sunxi/disp2/hdmi/libhdmi_sun50iw1
  • lichee/linux-3.10/drivers/media/platform/sunxi-vfe/lib/lib{isp,mipicsi2_v1,mipicsi2_v2}


(Only u-boot-2014.07 is checked here)

  • lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv8/wine/dram/libdram-homlet
  • lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv8/wine/dram/libdram-pad
  • lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/dram/libchipid
  • lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/dram/libdram
  • lichee/brandy/u-boot-2014.07/drivers/video/sunxi/disp2/hdmi/libhdmi_sun50iw1
  • lichee/brandy/u-boot-2014.07/nand_sunxi/sun50iw1p1/libnand-sun50iw1p1

See also


External links

Personal tools