[Tinkerphones] LetuxOS: PinePhone support

H. Nikolaus Schaller hns at goldelico.com
Mon Feb 3 22:08:00 CET 2020

Hi Xavi,

> Am 03.02.2020 um 21:37 schrieb Xavi Drudis Ferran <xdrudis at tinet.cat>:
> El Mon, Feb 03, 2020 at 07:24:22PM +0100, H. Nikolaus Schaller deia:
>> Hi,
>> finally, after bootstrapping my aarch64-linux-gnu (arm64) cross-toolchain
>> and fixing minor issues I am able to compile our kernel tree for
>> arm64 :)
>> Using a pinephone_defconfig from
>> 	https://gitlab.com/pine64-org/linux/blob/58a9a99b775d71c5b78f19da1a251788561d28cc/arch/arm64/configs/pinephone_defconfig
>> and letux-5.5.1 I got an 248 MB vmimage.
>> Next I have to find out which image compression is needed for the
>> U-Boot and how to place it on the SD card and then try to boot.
> I don't know about Allwinner, but what I remember about Pine Rockpro64
> is that arm64 kernels can't decompress themselves. So uboot does that
> after loading and before booting.
> You can cp Image.gz to the card and in bootcmd decompress it with the uboot command:
> unzip $compressedKernImgAdr $uncompressedKernImgAdr
> My notes are somethign like
> export CROSS_COMPILE=aarch64-linux-gnu- ; export ARCH=arm64
> make clean
> make ${something}_defconfig
> make -j 12 BL31=bl31.elf  u-boot-dtb.bin spl/u-boot-spl.bin u-boot.itb
> ./tools/mkimage -n rk3399 -T rksd -d tpl/u-boot-tpl-dtb.bin out #this will be different for allwinner, I guess
> cp u-boot-rockchip/uEnv.txt /media/.../boot/
> cp linux-5.2.11/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtb /media/.../boot/rk3399-rockpro64.dtb
> cp linux-5.2.11/arch/arm64/boot/Image.gz /media/.../boot/Image.gz
> in uEnv.txt:
> KERNCOMPADDR=0x13000000
> KERNUNCADDR=0x10000000
> DEVTREEADDR=0x14000000
> bootargs=...
> bootcmd=ext4load mmc 1:1 $KERNCOMPADDR Image.gz; unzip $KERNCOMPADDR $KERNUNCADDR; ext4load mmc 1:1 $DEVTREEADDR rk3399-rockpro64.dtb; booti $KERNUNCADDR - $DEVTREEADDR

It looks like the Ubuntu Touch image (and U-Boot) for the PinePhone
exactly does this.

I can find on the SD card

And boot-pinephone.txt indeed does:

part uuid ${devtype} ${devnum}:${distro_bootpart} uuid
setenv bootargs console=${console} console=tty0 root=PARTUUID=${uuid} rw rootwait
setenv kernel_addr_z 0x44080000

if load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_z} /boot/Image.gz; then
  unzip ${kernel_addr_z} ${kernel_addr_r}
  if load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} /boot/dtb/allwinner/sun50i-a64-pinephone.dtb; then
    if load ${devtype} ${devnum}:${distro_bootpart} ${ramdisk_addr_r} /boot/initrd.img; then
      booti ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r};
      booti ${kernel_addr_r} - ${fdt_addr_r};

So your descriptions help a lot and I better know which files I can
simply copy and how to prepare the newly built files...

BR and thanks,

More information about the Community mailing list