U-Boot for A64 git
#1
To make clear what Allwinner did to U-Boot I started a Git repository forked from mainline.

See https://github.com/longsleep/u-boot-pine64 

Branch pine64-hacks has applied the BSP changes on top of mainline 2014.07 tag and contains various required backports and fixes for Pine64 on top.

Disk image test releases for Pine64

I publish disk images which combine U-Boot, Kernel with a minimal initrd as base image for Linux distributions and for testing. **These images are for developers** and  are build with my set of Pine64 image building tools from here.

Download images: https://www.stdin.xyz/downloads/people/l...64-images/

Boot log for comparison: https://www.stdin.xyz/downloads/people/l...OOTLOG.txt

Release history:

**20160207-1**
- Initial public release with patched mainline Kernel

**20160221-3**
- Linux Kernel 3.10 based on BSP (see here)
- HDMI support
- MMC support
- USB support
- Ethernet support (with hack to force 100M)
- Wifi suport
- Enabled various Kernel settings for distribution and software support

**20160221-4**
- Updated initrd so it can boot /sbin/init on the second partition if found and executable

**20160227-1**
- Linux Kernel 3.10 based on BSP 1.2 (see here)
- ATF was cleaned up and Kernel is now entered in EL2 (see here)
- Device tree was updated to reflect changes in BSP 1.2 based Android builds
- Ethernet 1000M works
- Virtualization works (see KVM)

**20160304-1**
- Linux Kernel 3.10 security fixes CVE-2013-7446, CVE-2015-8543, CVE-2016-0728 backported (thanks to @janjwerner)
- Linux Kernel now has a tag (3.10.65-2-pine64)
- Added NFS support to Kernel
- Enabled GPIO via sysfs
- Enabled tun, loop and nbd devices
- Device tree was updated to improve thermal throttling situation
- Device tree was updated to get better 1000M Ethernet speeds and compatibility

**20160306-1**
- U-Boot now supports booti arm64 booting (enabled by default)
- Updated U-Boot defaults to boot with booti + Kernel Image and initrd (deprecating Android boot)
- Changed default locations of Kernel and Initrd to match what latest Linux distributions expect
- U-Boot now has a tag (v2014.07-1-pine64)
- U-Boot now loads initrd.img in default environment
- U-Boot now supports additional bootargs in default environment
- U-Boot now passes ethernet mac address to Kernel if found in environment

**20160311-1**
- Additional CPU frequencies were added to device tree

**20160319-1**
- Added Pine64 model detection. Will now boot with different device trees for Pine64 / Pine64 plus by default
- U-Boot updated to v2014.07-3-pine64
- Kernel and device trees updated to 3.10.65-3-pine64

**20160403-2**
- Kernel updated to 3.10.65-4-pine64

**20160423-1**
- U-Boot updated to  v2014.07-4-pine64
- U-Boot built-in default environment now supports boot.scr from first mmc partition
- Enable UART2, UART3, UART4 (Thanks to Martin Ayotte)
- Kernel updated to 3.10.65-7-pine64

**20160618-1**
- U-Boot updated to v2014.07-6-pine64
- Kernel updated to 3.10.102-0-pine64
- ATF updated to 1.0-0-pine64
- U-Boot and ATF are now compiled with gcc 5.3
- Initrd has been updated

**20170311-1**
- U-Boot updated to v2014.07-7-pine64
- Kernel updated to 3.10.105-0-pine64
- Initrd has been updated
- U-Boot now exposes sunxi_flash as USB mass storage device (via sunxi_ums cmd, thanks to Kamil Trzcinski)
- U-Boot now detects Pinebook based based on the boot disk (emmc, thanks to Kamil Trzcinski)
- U-Boot now exposes the boot key status as boot_key variable (thanks to Kamil Trzcinski)

Released images are signed with a detached GPG signature (.asc) signed by my personal key 0x090EF0DB. Get the key and verify that the download is intact and unmodified.
Code:
gpg --keyserver keyserver.ubuntu.com --recv-keys 090EF0DB
gpg --with-fingerprint simpleimage-pine64-*.xz.asc

To update both Kernel an U-Boot to the latest releases, run the following commands (as root):
Code:
bash <(curl -s https://raw.githubusercontent.com/longsleep/build-pine64-image/master/simpleimage/platform-scripts/pine64_update_uboot.sh)
bash <(curl -s https://raw.githubusercontent.com/longsleep/build-pine64-image/master/simpleimage/platform-scripts/pine64_update_kernel.sh)
and reboot.

Cheers,
Simon
#2
I made good progress. If you want to have a adventure, see https://github.com/longsleep/build-pine64-image and build U-Boot, ATF, Kernel and Initrd yourself. Proprietary parts used as binary blob (due to lack of full source) are boot0 and SCP firmware - everything else is compiled from source.

Full boot log of what you get:
http://paste.ubuntu.com/14966003/



This is work in progress and i will be adding more docs over the next couple of days.
#3
Nice! Thanks for putting these on github.
#4
I have started publishing images:

https://www.stdin.xyz/downloads/people/l...64-images/

Download from there to see what the current status is. I will release and publish new images when there is progress on either U-Boot or Kernel.

To flash the image, try something like this:
Code:
~$ xzcat simpleimage-pine64-20160207-1.xz|pv|sudo dd of=/dev/sdX bs=1M oflag=sync

Replace /dev/sdX with wherever your SDcard is. Check twice,
if you have the wrong device you might overwrite your harddisk.

The folder also contains a full boot log (BOOTLOG.txt) for you to compare with your own testing and a README.txt with some more instructions (Linux only).

Images are signed with a detached GPG signature (.asc) signed by my personal key 0x090EF0DB. Get the key and verify like this:
Code:
gpg --keyserver keyserver.ubuntu.com --recv-keys 090EF0DB
gpg --with-fingerprint simpleimage-pine64-20160207-1.xz.asc
#5
(02-07-2016, 11:44 AM)longsleep Wrote: I made good progress. If you want to have a adventure, see https://github.com/longsleep/build-pine64-image and build U-Boot, ATF, Kernel and Initrd yourself. Proprietary parts used as binary blob (due to lack of full source) are boot0 and SCP firmware - everything else is compiled from source.

Full boot log of what you get:
http://paste.ubuntu.com/14966003/



This is work in progress and i will be adding more docs over the next couple of days.

I have been trying to recreate the image and I stumbled on building u-boot (https://github.com/longsleep/u-boot-pine64.git):

Code:
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  GEN     include/autoconf.mk.dep
In file included from include/linux/compiler.h:40:0,
                 from include/linux/byteorder/little_endian.h:12,
                 from /home/dev/Repositories/build-pine64-image/u-boot-pine64/arch/arm/include/asm/byteorder.h:29,
                 from include/compiler.h:112,
                 from include/image.h:19,
                 from /home/dev/Repositories/build-pine64-image/u-boot-pine64/include/common.h:94:
include/linux/compiler-gcc.h:93:30: fatal error: linux/compiler-gcc5.h: No such file or directory
compilation terminated.
...

I tried both the Ubuntu gcc for arm, and also the one from Linaro.
On the Internet it suggests to use the gcc4 version of the file. However, there is a preprocessor error when making the change.
#6
(02-08-2016, 04:48 PM)taros Wrote: I tried both the Ubuntu gcc for arm, and also the one from Linaro.
On the Internet it suggests to use the gcc4 version of the file. However, there is a preprocessor error when making the change.

What version of the gcc-arm-linux-gnueabihf toolchain is that? I use gcc-arm-linux-gnueabihf 4:4.8.2-1 as in the Ubuntu repository (on trusty). So you should try with 4.8 as well and i guess it will work. Let me know.

Update: I see now that i should add some details about the toolchains. For U-Boot and ATF use gcc-arm-linux-gnueabihf 4.8. For Kernel and Busybox use gcc-aarch64-linux-gnu 5.2. Kernel and Busybox might work with older version as well, but i did not test. You cannot compile U-Boot with anything newer than 4.8. I will add details to the docs asap.
#7
(02-08-2016, 05:17 PM)longsleep Wrote:
(02-08-2016, 04:48 PM)taros Wrote: I tried both the Ubuntu gcc for arm, and also the one from Linaro.
On the Internet it suggests to use the gcc4 version of the file. However, there is a preprocessor error when making the change.

What version of the gcc-arm-linux-gnueabihf toolchain is that? I use gcc-arm-linux-gnueabihf 4:4.8.2-1 as in the Ubuntu repository (on trusty). So you should try with 4.8 as well and i guess it will work. Let me know.

Update: I see now that i should add some details about the toolchains. For U-Boot and ATF use gcc-arm-linux-gnueabihf 4.8. For Kernel and Busybox use gcc-aarch64-linux-gnu 5.2. Kernel and Busybox might work with older version as well, but i did not test. You cannot compile U-Boot with anything newer than 4.8. I will add details to the docs asap.

I built ATF using 
http://releases.linaro.org/14.07/compone...nux.tar.xz as mentioned here: https://github.com/apritzel/arm-trusted-...r-guide.md.

uboot built fine with arm-linux-gnueabihf gcc version 4.7.3 on ubuntu 14.04.3 using the standard apt-get package gcc-4.7-arm-linux-gnueabihf

Haven't been able to test it yet, as I'm downloading the insufferable lichee BSP.

Any possibility you could upload the three BSP files needed by u-boot-postprocess.sh?
#8
(02-08-2016, 05:17 PM)longsleep Wrote:
(02-08-2016, 04:48 PM)taros Wrote: I tried both the Ubuntu gcc for arm, and also the one from Linaro.
On the Internet it suggests to use the gcc4 version of the file. However, there is a preprocessor error when making the change.

What version of the gcc-arm-linux-gnueabihf toolchain is that? I use gcc-arm-linux-gnueabihf 4:4.8.2-1 as in the Ubuntu repository (on trusty). So you should try with 4.8 as well and i guess it will work. Let me know.

Update: I see now that i should add some details about the toolchains. For U-Boot and ATF use gcc-arm-linux-gnueabihf 4.8. For Kernel and Busybox use gcc-aarch64-linux-gnu 5.2. Kernel and Busybox might work with older version as well, but i did not test. You cannot compile U-Boot with anything newer than 4.8. I will add details to the docs asap.

I used gcc 5.2.1 (arm-linux-gnueabihf-gcc-5 (Ubuntu 5.2.1-22ubuntu1) 5.2.1 20151010).
I now switched to gcc-4.8-arm-linux-gnueabihf and trying now again.

For the selected compiler to work, it needs a symlink or better use update-alternatives. This is because the compiler has a "-4" appended to the name which messed up cross-compiling.
#9
(02-08-2016, 11:08 PM)patrickhwood Wrote: Haven't been able to test it yet, as I'm downloading the insufferable lichee BSP.

Any possibility you could upload the three BSP files needed by u-boot-postprocess.sh?

Yeah i guess i can. In fact i just did. Pull and check the blobs folder Smile - The scripts have been updated to use the stuff from there. It is no longer required to get the Lichee.

Cheers
Simon
#10
The instructions habe been updated and they now support building images based on the BSP Kernel which has  working MMC, USB and Ethernet drivers.

Similar to the U-Boot Tree, i now also have a Kernel Tree based on the Linux sources in the BSP at https://github.com/longsleep/linux-pine6...ne64-hacks - it is up to you which Kernel you experiment with.


Possibly Related Threads…
Thread Author Replies Views Last Post
  Pine Board using linux stuck during boot sequence ktaragorn 4 9,119 03-30-2019, 06:48 AM
Last Post: ktaragorn
  Secure boot & OTP efuse program devangpanchal90 0 2,816 05-25-2018, 01:59 AM
Last Post: devangpanchal90
  boot process for pine a64 awaysu 1 4,781 01-24-2018, 05:09 AM
Last Post: xalius
  Can't boot headless after running update_uboot.sh Borglesnorgle Williams 2 4,761 08-17-2017, 04:08 AM
Last Post: Borglesnorgle Williams
Exclamation Pine A64 Plus Fails to Boot grobbs 35 46,241 06-28-2017, 08:53 AM
Last Post: sarav_sara
  Boot issues: What todo when you muck up your FSTAB file Dagremote 1 4,178 04-16-2017, 10:28 PM
Last Post: pfeerick
Question Pine64 cannot boot jamiechang917 6 10,697 04-16-2017, 10:21 PM
Last Post: pfeerick
  OpenWRT supports ARMv8 - arm64, u-boot problem? rgdonato 4 7,433 03-20-2017, 03:59 PM
Last Post: rgdonato
  USB OTG Boot devilsclaw 25 43,714 03-01-2017, 03:22 PM
Last Post: CaptainZalo
  How to boot alternative kernel image with u-boot? zhouer 3 7,449 06-27-2016, 04:15 AM
Last Post: ssvb

Forum Jump:


Users browsing this thread: 3 Guest(s)