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).
Let’s get the code, and extract it:
1 2 3 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
./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):
1 |
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:
1 |
./build.sh |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
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.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
45 pages is a normal datasheet. The big ones are the reference manuals. Is the reference manual hiding inside the A80 SDK?
@Jon Smirl
No reference manual in the SDK package (after search for pdf).
GPU user space drivers and VPU cedar lib
are in buildroot
no OpenMAX or OpenCL
I search schematic of allwinner A80 board, who that?
http://libv.livejournal.com This blog post by Luc Verhaegen pretty much says it all
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….
OpenMAX and OpenCL being lacking is disappointing.
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.
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.
@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.
but Busybox failed to build (error: ‘RLIMIT_FSIZE’ undeclared)
Just add one include path in system/core/init/init.c
#include
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
@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.
@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!
@miniNodes has made it build: http://www.mininodes.com/how-to-build-linux-for-the-allwinner-a80-optimusboard/
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?