[Arm-netbook] 2.7.4 preproduction sample, 1.7 MD, Questions

Pablo Rath pablo at parobalth.org
Sun Jul 19 12:17:38 BST 2020


>On Sat, Jul 18, 2020 at 07:19:37PM +0200, Paul Boddie wrote:
> 
> I saw that there is a section about legacy U-Boot in the page:
> 
> http://rhombus-tech.net/allwinner/a20/EOMA68-A20_2-7-4_preproduction/
> 

Yes, obviously I had to start with U-Boot first. 
Luke told me that sunxi U-Boot should build fine and that nothing has
changed so I started there.

For mainline U-Boot I still need a valid config file to do 'make
eoma68_foo_defconfig'. There is a .dts file here
(http://rhombus-tech.net/allwinner/a20/boot/sun7i-a20-eoma68-a20.dts)
but I don't know if it was used for mainline U-Boot and not just for
Kernel compilation. 

> The experience I had with old U-Boot versions that were contemporary with 
> older versions of GCC is that the compiler-tweaking headers from Linux 
> generally spew out lots of errors with newer compilers. One apparent solution 
> was to just copy in the header from a more recent version of Linux (or maybe 
> U-Boot) which is what I did for the MIPS Creator CI20 U-Boot, copying from a 
> more recent version of Linux:
> 
> cp ../CI20_linux-ci20-v3.18/include/linux/compiler-gcc.h include/linux
> 
> However, that doesn't seem to be sufficient here. The structure of the Linux 
> headers have changed, and while newer U-Boot versions seem to have adopted 
> this structure, it doesn't seem to be easy to introduce to the legacy U-Boot 
> for the Allwinner boards.
> 
> So, what seems to be necessary is to get an older compiler and to use that 
> instead. Since distributions retire older compilers regularly, I used 
> Buildroot to create a suitable GCC 4.9 cross-compiler than can then build the 
> legacy U-Boot. 

I have realised that on Debian gcc versions are kept installed. I have
a native armhf installation (initially installed with Jessie) currently
upgraded to stretch and gcc-4.9 is still installed. Changed between gcc
versions with 'update-alternatives'. I don't know if this also apllies
to cross-toolchains because my experience with crossbuilding is limited. 

Sid (unstable) still has gcc-4.9 and even gcc-4.7 native armhf packages
so this could be another solution I have not tested yes as I have no
armhf sid installation. 

>To make things complicated here, Buildroot also retires support 
> for older compilers, so I had to find a version still supporting GCC 4.x that 
> didn't also suffer from this issue:
> 
> https://git.busybox.net/buildroot/commit/?
> id=c48f8a64626c60bd1b46804b7cf1a699ff53cdf3
> 
> Anyway, here are the commands I used:
> 
> git clone git://git.buildroot.net/buildroot
> cd buildroot
> git checkout 2018.08.4
> make menuconfig
> 
> In the menu, the following settings were inspected/changed:
> 
> Target options
>   Target Architecture (ARM (little endian))
>   Target Binary Format (ELF)
>   Target Architecture Variant
>   Target ABI (EABIhf)
>   Floating point strategy (NEON/VFPv4)
>   ARM instruction set (ARM)
> 
> Toolchain
>   GCC compiler Version (gcc 4.9.x)
> 
> To build the toolchain, run...
> 
> make toolchain
> 
> (Use -j <processes> for parallel builds, of course. You may need to install 
> rsync if you haven't already done so. Other packages may also be necessary.)
> 
> Setting PATH to reference this toolchain in output/host/bin, you can now build 
> the legacy U-Boot as follows:
> 
> git clone https://github.com/linux-sunxi/u-boot-sunxi.git
> cd u-boot-sunxi
> make CROSS_COMPILE=arm-linux- EOMA68_A20_config
> make CROSS_COMPILE=arm-linux-
> 
> (Again, use -j <processes> to make this go faster. Note that Buildroot 
> compilers tend to use their own naming, so it is arm-linux- and not arm-linux-
> gnueabihf- that needs to be used.)
> 

This is extremly helpful. I am going to try it out. Can you copy that to
the wiki? Maybe as a separate subpage or at the end. I think we should
keep everything short and clear for those who know what they are doing
but still provide enough hand-holding and external context for those
with less experience.  

> Here, the use of EOMA68_A20_config sets up a bootloader for SD cards, whereas 
> EOMA68_A20_FEL_config would set up a USB-bootable payload. See here for all 
> the details:
> 
> https://github.com/linux-sunxi/u-boot-sunxi/wiki
> 
> This should get you the u-boot-sunxi-with-spl.bin file that needs to be 
> deployed.

Good news is that I made it to the sunxi U-Boot prompt on Friday. Booted
via USB-FEL. So my
soldered Pins, UART connection, Power Supply, µUSB-OTG on the card work fine.

Next I have planned to compile a sunxi 3.4 Kernel and debootstrap a
Debian rootfs.
Then I want to try mainline U-Boot and a mainline Kernel.
Feel free to share your solutions and best practices with me!

> 
> Hope this was helpful!

Thank you for your help. Please add to the wiki. 

Pablo



More information about the arm-netbook mailing list