# Setup build envoronment
  https://source.android.com/setup/build/initializing

# Download Android source
  https://github.com/android-risc-v/local_manifests

# Build Android
 Refer to http://source.android.com/source/building.html

  $ source build/envsetup.sh
  $ lunch jh7100-eng
  $ make ramdisk systemimage vendorimage

# Prepare sd card
 Partitions of the card should be set-up like followings
  p1:  128MB for /vendor   : do fdisk
  p2: 1024MB for /system   : do fdisk
  p3:  128MB for boot      : do fdisk, set bootable and mkfs.ext4
  p4: remainings for /data : do fdisk, mkfs.ext4
 Set volume label of /data partition as userdata : use -L option for mkfs.ext4

# Write system & vendor partition
  $ cd out/target/product/jh7100
  $ sudo dd if=vendor.img of=/dev/<p1> bs=1M
  $ sudo dd if=system.img of=/dev/<p2> bs=1M

# Copy firmware & ramdisk to boot partition
  device/arv/jh7100/boot/* to p3:/
  out/target/product/jh7100/ramdisk.img to p3:/


# Download & Build kernel
 Install cross-compiler
  $ sudo apt install gcc-riscv64-linux-gnu

 Git clone following kernel source under separate folder apart from Android
  https://github.com/android-risc-v/kernel_arv

 Build the kernel
  $ ARCH=riscv scripts/kconfig/merge_config.sh arch/riscv/configs/visionfive_defconfig kernel/configs/android-base.config kernel/configs/android-recommended.config
  $ ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- make Image.gz starfive/jh7100-starfive-visionfive-v1.dtb

# Copy kernel binaries to boot partition
  <kernel directory>/arch/riscv/boot/Image.gz to p3:/
  <kernel directory>/arch/riscv/boot/dts/starfive/jh7100-starfive-visionfive-v1.dtb to p3:/


 Use -j[n] option for make command, if build host has a good number of CPU cores.


# JH7100 hardware information:
  https://rvspace.org