Home > AllWinner A8X, Linux, Programming, Testing > AllWinner A80 Linux SDK Released

AllWinner A80 Linux SDK Released

After Android 4.4 SDK for AllWinner A31 last week, another AllWinner software development kit has been seen in the wild, this time for the new AllWinner A80 octa-core processor. A80 SDK includes source code for the Linux Kernel and U-boot, as well as buildroot, and various AllWinner tools. I’ve also noticed AllWinner A80 datasheet is available, but with the strict minimum information (45 pages).

AllWinner_A80_SDK

Let’s get the code, and extract it:

wget http://dl.linux-sunxi.org/SDK/A80/A80_SDK_20140728.tar.gz
tar xvf A80_SDK_20140728.tar.gz
cd A80_SDK_20140728

Now we need to configure the build:

./build.sh config

Welcome to mkscript setup progress
All available chips:
   0. sun9iw1p1
Choice: 0
All available platforms:
   0. android
   1. dragonboard
   2. linux
Choice: 2
All available kernel:
   0. linux-3.4
Choice: 0
All available boards:
   0. optimus
   1. p1
   2. perf
   3. perf5
   4. perf-lpddr3
Choice: 0

sun9i is the codename for AllWinner A80, not sure what w1p1 means. Dragonboard must be the internal Allwinner development board, but I just selected Linux, since the SDK does not come with Android, and finally I opted for optimus, which could stand for OptimusBoard.

You may need to install extra dependencies in your build machine, for example (in Ubuntu 14.04):

sudo apt-get install flex texinfo build-essential

Now let’s start buildroot which should retrieve the toolchain, and build u-boot and the Linux kernel:

./build.sh
INFO: ----------------------------------------
INFO: build lichee ...
INFO: chip: sun9iw1p1
INFO: platform: linux
INFO: kernel: linux-3.4
INFO: board: optimus
INFO: output: out/sun9iw1p1/linux/optimus
INFO: ----------------------------------------
INFO: build buildroot ...
make: Entering directory `/media/hdd/edev/allwinner/A80_SDK_20140728/lichee/buildroot'
mkdir -p /home/jaufranc/edev/allwinner/A80_SDK_20140728/lichee/out/sun9iw1p1/linux/common/buildroot/target
if ! [ -d "/home/jaufranc/edev/allwinner/A80_SDK_20140728/lichee/out/sun9iw1p1/linux/common/buildroot/target/bin" ]; then \
		if [ -d "/media/hdd/edev/allwinner/A80_SDK_20140728/lichee/buildroot/fs/skeleton" ]; then \
			cp -fa /media/hdd/edev/allwinner/A80_SDK_20140728/lichee/buildroot/fs/skeleton/* /home/jaufranc/edev/allwinner/A80_SDK_20140728/lichee/out/sun9iw1p1/linux/common/buildroot/target/; \
		fi; \
		touch /home/jaufranc/edev/allwinner/A80_SDK_20140728/lichee/out/sun9iw1p1/linux/common/buildroot/host/usr/arm-unknown-linux-gnueabi/sysroot/.fakeroot.00000; \
	fi
find /home/jaufranc/edev/allwinner/A80_SDK_20140728/lichee/out/sun9iw1p1/linux/common/buildroot/target -type d -name CVS -print0 -o -name .svn -print0 | xargs -0 rm -rf
find /home/jaufranc/edev/allwinner/A80_SDK_20140728/lichee/out/sun9iw1p1/linux/common/buildroot/target -type f \( -name .empty -o -name '*~' \) -print0 | xargs -0 rm -rf
touch /home/jaufranc/edev/allwinner/A80_SDK_20140728/lichee/out/sun9iw1p1/linux/common/buildroot/build/.root
--2014-08-26 11:55:29--  http://www.codesourcery.com/sgpp/lite/superh/portal/package7783/public/sh-linux-gnu//gcc-linaro.tar.bz2
Resolving www.codesourcery.com (www.codesourcery.com)... 107.23.79.96
Connecting to www.codesourcery.com (www.codesourcery.com)|107.23.79.96|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://sourcery.mentor.com/sgpp/lite/superh/portal/package7783/public/sh-linux-gnu//gcc-linaro.tar.bz2 [following]
--2014-08-26 11:55:31--  https://sourcery.mentor.com/sgpp/lite/superh/portal/package7783/public/sh-linux-gnu//gcc-linaro.tar.bz2
Resolving sourcery.mentor.com (sourcery.mentor.com)... 54.83.42.164
Connecting to sourcery.mentor.com (sourcery.mentor.com)|54.83.42.164|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://sourcery.mentor.com/public/gnu_toolchain/sh-linux-gnu//gcc-linaro.tar.bz2 [following]
--2014-08-26 11:55:33--  https://sourcery.mentor.com/public/gnu_toolchain/sh-linux-gnu//gcc-linaro.tar.bz2
Connecting to sourcery.mentor.com (sourcery.mentor.com)|54.83.42.164|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2014-08-26 11:55:35 ERROR 404: Not Found.

--2014-08-26 11:55:35--  http://sources.buildroot.net//gcc-linaro.tar.bz2
Resolving sources.buildroot.net (sources.buildroot.net)... 176.9.16.109
Connecting to sources.buildroot.net (sources.buildroot.net)|176.9.16.109|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2014-08-26 11:55:37 ERROR 404: Not Found.

make: *** [/media/hdd/edev/allwinner/A80_SDK_20140728/lichee/buildroot/dl/gcc-linaro.tar.bz2] Error 1
make: Leaving directory `/media/hdd/edev/allwinner/A80_SDK_20140728/lichee/buildroot'
ERROR: build buildroot Failed

So it’s looking for Linaro gcc via several servers, (except linaro), and all links fail… So I modified buildroot/toolchain/toolchain-external/ext-tool.mk to use http://releases.linaro.org/14.04/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux.tar.bz2 instead, and after adding some symlinks (arm-linux-gnueabi-gcc to arm-linux-gnueabihf-gcc), it went a little further, but Busybox failed to build (error: ‘RLIMIT_FSIZE’ undeclared), so another toolchain may be needed, or some work is needed to make it build…

Several drivers in the kernel are binary only, or mixed binary / source, including the NAND driver, part of dram frequency scaling drivers, some MIPI code, a face detection library, part of USB3.0 code, and more.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

  1. Jon Smirl
    August 26th, 2014 at 20:17 | #1

    45 pages is a normal datasheet. The big ones are the reference manuals. Is the reference manual hiding inside the A80 SDK?

  2. August 26th, 2014 at 20:20 | #2

    @Jon Smirl
    No reference manual in the SDK package (after search for pdf).

  3. m][sko
    August 26th, 2014 at 20:41 | #3

    GPU user space drivers and VPU cedar lib
    are in buildroot

    no OpenMAX or OpenCL

  4. haze
    August 26th, 2014 at 21:24 | #4

    I search schematic of allwinner A80 board, who that?

  5. Harley
    August 27th, 2014 at 00:28 | #5

    http://libv.livejournal.com This blog post by Luc Verhaegen pretty much says it all

  6. mat
    August 27th, 2014 at 01:45 | #6

    Instead of reading Verhaegen about non-binary dreams….

    I’m still waiting for a SoC with 3 features:
    -decent speed and hevc decoding
    -decent linux GLES (even binary … no frequent crashes)
    -decent VPU drivers (even binary…. no crashes and no pink screens)

    Being A10 owner I can say vpu under linux is trashy if you ever use 264, cedar libhybris and any other.
    AMLogic S80x still no hevc and other issues (also linux unsupported by anyone?!?).
    Tegra K1 good all but no hevc (no, OpenCL never gave 264 decent speed to i3/i5/i7, just 7% faster codecs with unstable code).
    RK3288 no linux drivers for vpu at all, maybe gpu in the future.

    Call me when someone choose to release something linux compatible, for now I’m evaluating rk3288 + linuxOnAndroid as mini-server….

  7. svartalf
    August 27th, 2014 at 05:24 | #7

    OpenMAX and OpenCL being lacking is disappointing.

  8. svartalf
    August 27th, 2014 at 05:48 | #8

    Build problems look like they’re bugs from the Buildroot perspective- there’s a patch from 2012 that appears to be the proper fix. I’m checking that out now to see if it’s the source of the problems.

  9. svartalf
    August 27th, 2014 at 05:58 | #9

    Epic. FAIL.

    (From the buildroot dir)
    2011.02, Released February 28th, 2011:

    No wonder the thing doesn’t build, Jean-Luc. It’s using an *ANCIENT*, *BROKEN* buildroot. The only way they’re getting this to work is that the downloads it’s looking for on Linaro’s site are local to the dev’s buildroot dir on their machine.

  10. svartalf
    August 27th, 2014 at 06:02 | #10

    @cnxsoft
    Heh… We need techrefs from AllWinner here. This is a mess and isn’t acceptable. I suppose if I have a board, I could make a more modern kernel work for a more modern buildroot and OpenEmbedded. Without it, it’d be a lot of work without any real payback for me.

  11. August 28th, 2014 at 08:12 | #11

    but Busybox failed to build (error: ‘RLIMIT_FSIZE’ undeclared)

    Just add one include path in system/core/init/init.c

    #include

  12. August 29th, 2014 at 00:57 | #12

    We started building this today, but have met problems as well.

    @cnxsoft – Thanks for the info, excellent info to get started.

    @Kevin125 – Thanks for that tip, I was able to proceed with Busybox. However, building still fails further down the line in Busybox.

    Last few lines of output:

    /A80_SDK_20140728/lichee/out/sun9iw1p1/linux/common/buildroot/external-toolchain/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: failed to merge target specific data of file libbb/lib.a(perror_nomsg.o)
    /A80_SDK_20140728/lichee/out/sun9iw1p1/linux/common/buildroot/external-toolchain/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: error: busybox_unstripped uses VFP register arguments, libpwdgrp/lib.a(uidgid_get.o) does not
    /A80_SDK_20140728/lichee/out/sun9iw1p1/linux/common/buildroot/external-toolchain/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: failed to merge target specific data of file libpwdgrp/lib.a(uidgid_get.o)
    collect2: error: ld returned 1 exit status
    make[1]: *** [busybox_unstripped] Error 1

  13. August 29th, 2014 at 10:13 | #13

    @miniNodes
    So AllWinner gave you an OptimusBoard, but no SDK with it? What are you supposed to do? How can their customer even work with them without SDK? :)

    Since their version of buildroot is dated 2011.02, it’s possible the build needs to be made on Ubuntu 10.04. Who knows… AllWinner is aware of this code release, provided their https://twitter.com/AllwinnerTech is their Twitter account, as they retweeted it. You should be able to ask them which toolchain and OS they are using for it.

    I don’t understand why a SoC manufacturer would not simply release the source code they are legally allowed, and in some cases required, to make available publicly.

  14. August 29th, 2014 at 12:37 | #14

    @cnxsoft
    But hey, Android works great. =)

    Correct though, we have had the board for a few weeks (prior to the SDK), but were awaiting assistance from Merrii to provide a working Linux.

    Now with the SDK released, we could theoretically take matters in to our own hands…If it worked!

  15. Sergio
    October 31st, 2014 at 22:33 | #16

    For miniNodes.

    Hi!
    I’ve read your instruction for building http://www.mininodes.com/how-to-build-linux-for-the-allwinner-a80-optimusboard/
    and tried to make all you’ve wrote.
    I’ve repeated it twice! But I’ve had an error exectly the same place all the times…
    After this step:
    Edit Line 456, and change ‘gets’ to ‘fgets’
    I had an error
    /usr/bin/gcc -c -I. -I/home/adminuser/SRC/lichee/out/sun9iw1p1/linux/common/buildroot/build/kernel-header/linux-2.6.36-android/include output_file.c
    output_file.c:25:18: fatal error: zlib.h: No such file or directory
    #include
    And no future steps havn’t improove it…
    By the way, the PATH …/kernel-header/linux-2.6.36-android/include doesn’t exist.
    Even …/build/kernel-header/ doesn’t exist!
    What I did wrong?

  1. August 27th, 2014 at 04:02 | #1
  2. November 23rd, 2014 at 16:25 | #2