ROCKPro64: diferenças entre revisões

Fonte: WikiPeida
Saltar para a navegação Saltar para a pesquisa
Linha 153: Linha 153:
</console>
</console>


Build '''idbloader.img''' and '''uboot.img'''.
Build '''idbloader.img''.


<console>
<console>
##g##$##!g## ./tools/mkimage -n rk3399 -T rksd -d ../rkbin/bin/rk33/rk3399pro_ddr_800MHz_v1.23.bin idbloader.img
##g##$##!g## ./tools/mkimage -n rk3399 -T rksd -d tpl/u-boot-tpl.bin idbloader.img
##g##$##!g## cat ../rkbin/bin/rk33/rk3399pro_miniloader_v1.15.bin >> idbloader.img
##g##$##!g## cat spl/u-boot-spl.bin >> idbloader.img
##g##$##!g## ../rkbin/tools/loaderimage --pack --uboot u-boot-dtb.bin uboot.img 0x200000
</console>
</console>


Flash '''idbloader.img''','''uboot.img''' and '''trust.img''' to the card.
Build '''uboot.itb'''.
 
<console>
##g##$##!g## make ARCH=arm CROSS_COMPILE=aarch64-unknown-linux-gnu- -j4 u-boot.itb
</console>
 
Flash '''idbloader.img''' and '''u-boot.itb''' to the card.


<console>
<console>
##r#####!r## dd if=idbloader.img of=/dev/sdX seek=64 conv=notrunc
##r#####!r## dd if=idbloader.img of=/dev/sdX seek=64 conv=notrunc
##r#####!r## dd if=uboot.img of=/dev/sdX seek=16384 conv=notrunc
##r#####!r## dd if=u-boot.itb of=/dev/sdX seek=16384 conv=notrunc
##r#####!r## dd if=../rkbin/trust.img of=/dev/sdX seek=24576 conv=notrunc
</console>
</console>



Revisão das 01h45min de 16 de agosto de 2019

Requirements

Gentoo

# crossdev -P -v -t aarch64-unknown-linux-gnu
# crossdev -P -v -t arm-none-eabi
# PYTHON=python2 emerge u-boot-tools

ArchLinux

# pacman -S uboot-tools aarch64-linux-gnu-binutils aarch64-linux-gnu-gcc aarch64-linux-gnu-glibc aarch64-linux-gnu-linux-api-headers arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib

Prepare card

Clean

Write zeros to the start of the card to make sure it doesn't have stuff from another bootloader.

# dd if=/dev/zero of=/dev/sdX bs=1M count=8

Create partition

Use 32768 as the first sector for the first partition.

# fdisk /dev/sdX

Filesystem

# mkfs.ext4 -O ^metadata_csum /dev/sdX1
# mkswap /dev/sdX2

Copy Userland

# mkdir /mnt/rockpro64
# mount /dev/sdX1 /mnt/rockpro64
$ mkdir ~/rockpro64
$ cd ~/rockpro64

ArchLinux

$ wget http://archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz
$ bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt/rockpro64

Gentoo

Download the most recent from http://distfiles.gentoo.org/experimental/arm64/

$ wget http://distfiles.gentoo.org/experimental/arm64/stage3-arm64-????????.tar.bz2
$ tar xfa stage3-arm64-????????.tar.bz2 -C /mnt/rockpro64

fstab

Edit /mnt/rockpro64/etc/fstab and use the following:

<file system>          <dir>   <type>  <options>               <dump>  <pass>
/dev/mmcblk0p1          /       ext4    defaults,noatime        0       1
/dev/mmcblk0p2          none    swap    defaults                0       0

boot.scr

Create the file /mnt/rockpro64/boot/boot.cmd with:

# MAC address (use spaces instead of colons)
setenv macaddr da 19 c8 7a 6d f4

part uuid ${devtype} ${devnum}:${bootpart} uuid
setenv bootargs console=ttyS2,1500000 root=PARTUUID=${uuid} rw rootwait earlycon=uart8250,mmio32,0xff130000
setenv fdtfile rockchip/rk3399-rockpro64.dtb

if load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} /boot/Image; then
  if load ${devtype} ${devnum}:${bootpart} ${fdt_addr_r} /boot/dtbs/${fdtfile}; then
    fdt addr ${fdt_addr_r}
    fdt resize
    fdt set /ethernet@ff540000 local-mac-address "[${macaddr}]"
    if load ${devtype} ${devnum}:${bootpart} ${ramdisk_addr_r} /boot/initramfs-linux.img; then
      booti ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r};
    else
      booti ${kernel_addr_r} - ${fdt_addr_r};
    fi;
  fi;
fi

And run mkimage to create boot.scr.

$ cd /mnt/rockpro64/boot
$ mkimage -A arm -O linux -T script -C none -n "ROCKPro64 boot script" -d boot.cmd boot.scr

rkbin

Create trust.img.

$ cd ~/rockpro64
$ https://github.com/rockchip-linux/rkbin.git rkbin
$ cd rkbin
$ ./tools/trust_merger RKTRUST/RK3399TRUST.ini

ARM Trusted Firmware

Create bl31.elf.

$ cd ~/rockpro64
$ git clone https://github.com/ARM-software/arm-trusted-firmware.git arm-trusted-firmware
$ cd arm-trusted-firmware
$ make CROSS_COMPILE=aarch64-unknown-linux-gnu- PLAT=rk3399 DEBUG=1 bl31

U-Boot

Clone the repository.

$ cd ~/rockpro64
$ git clone git://git.denx.de/u-boot.git u-boot
$ cd u-boot

Copy bl31.elf from ARM Trusted Firmware.

$ cp ../arm-trusted-firmware/build/rk3399/debug/bl31/bl31.elf .

Build U-boot.

$ make ARCH=arm CROSS_COMPILE=aarch64-unknown-linux-gnu- -j4 rockpro64-rk3399_defconfig
$ make ARCH=arm CROSS_COMPILE=aarch64-unknown-linux-gnu- -j4 

Build 'idbloader.img.

$ ./tools/mkimage -n rk3399 -T rksd -d tpl/u-boot-tpl.bin idbloader.img
$ cat spl/u-boot-spl.bin >> idbloader.img

Build uboot.itb.

$ make ARCH=arm CROSS_COMPILE=aarch64-unknown-linux-gnu- -j4 u-boot.itb

Flash idbloader.img and u-boot.itb to the card.

# dd if=idbloader.img of=/dev/sdX seek=64 conv=notrunc
# dd if=u-boot.itb of=/dev/sdX seek=16384 conv=notrunc

Kernel

$ cd ~/rockpro64
$ git clone https://github.com/ayufan-rock64/linux-mainline-kernel.git linux
$ cd linux
$ make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- rockchip_linux_defconfig
$ make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- Image dtbs modules -j4
$ make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- INSTALL_MOD_PATH=/mnt/rockpro64 modules_install -j4

$ cp arch/arm64/boot/Image /mnt/rockpro64/boot
$ cp arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtb /mnt/rockpro64/boot/dtbs/rockchip

Finalize

# sync
# umount /mnt/rockpro64
# eject /dev/sdX