Browse Source

TF Image: modify makefile and config to generate tf card bootimg image

Signed-off-by: sw.multimedia <sw.multimedia@starfivetech.com>
Signed-off-by: Curry Zhang <curry.zhang@starfivetech.com>
sw.multimedia 2 years ago
parent
commit
54351b1642
4 changed files with 213 additions and 5 deletions
  1. 22 2
      Makefile
  2. 39 1
      README.md
  3. 141 0
      conf/buildroot_rootfs_config
  4. 11 2
      conf/u74_uEnv.txt

+ 22 - 2
Makefile

@@ -134,7 +134,7 @@ buildroot_initramfs-menuconfig: $(buildroot_initramfs_wrkdir)/.config $(buildroo
 # use buildroot_initramfs toolchain
 # TODO: fix path and conf/buildroot_rootfs_config
 $(buildroot_rootfs_wrkdir)/.config: $(buildroot_srcdir) $(buildroot_initramfs_tar)
-	rm -rf $(dir $@)
+#	rm -rf $(dir $@)
 	mkdir -p $(dir $@)
 	cp $(buildroot_rootfs_config) $@
 	$(MAKE) -C $< RISCV=$(RISCV) PATH=$(RVPATH) O=$(buildroot_rootfs_wrkdir) olddefconfig
@@ -207,6 +207,20 @@ gstomx-build:
 	$(MAKE) -C $(buildroot_initramfs_wrkdir) O=$(buildroot_initramfs_wrkdir) sf-gst-omx-dirclean
 	$(MAKE) -C $(buildroot_initramfs_wrkdir) O=$(buildroot_initramfs_wrkdir) sf-gst-omx-rebuild
 
+vpubuild_rootfs: $(vmlinux) wave511-build-rootfs omxil-build-rootfs gstomx-build-rootfs
+wave511-build-rootfs:
+	$(MAKE) -C $(buildroot_rootfs_wrkdir) O=$(buildroot_rootfs_wrkdir) wave511-dirclean
+	$(MAKE) -C $(buildroot_rootfs_wrkdir) O=$(buildroot_rootfs_wrkdir) wave511-rebuild
+wave521-build-rootfs:
+	$(MAKE) -C $(buildroot_rootfs_wrkdir) O=$(buildroot_rootfs_wrkdir) wave521-dirclean
+	$(MAKE) -C $(buildroot_rootfs_wrkdir) O=$(buildroot_rootfs_wrkdir) wave521-rebuild
+omxil-build-rootfs:
+	$(MAKE) -C $(buildroot_rootfs_wrkdir) O=$(buildroot_rootfs_wrkdir) sf-omx-il-dirclean
+	$(MAKE) -C $(buildroot_rootfs_wrkdir) O=$(buildroot_rootfs_wrkdir) sf-omx-il-rebuild
+gstomx-build-rootfs:
+	$(MAKE) -C $(buildroot_rootfs_wrkdir) O=$(buildroot_rootfs_wrkdir) sf-gst-omx-dirclean
+	$(MAKE) -C $(buildroot_rootfs_wrkdir) O=$(buildroot_rootfs_wrkdir) sf-gst-omx-rebuild
+
 .PHONY: initrd
 initrd: $(initramfs)
 
@@ -307,6 +321,12 @@ clean:
 	rm work/image.fit
 	rm work/initramfs.cpio.gz
 	rm work/linux/vmlinux
+ifeq ($(buildroot_rootfs_ext),$(wildcard $(buildroot_rootfs_ext)))
+	rm work/buildroot_rootfs/images/rootfs.ext4
+endif
+ifeq ($(buildroot_initramfs_tar),$(wildcard $(buildroot_initramfs_tar)))
+	rm work/buildroot_initramfs/images/rootfs.tar
+endif
 
 .PHONY: distclean
 distclean:
@@ -538,7 +558,7 @@ format-nvdla-rootfs: format-nvdla-disk
 	@echo "Done setting up basic initramfs boot. We will now try to install"
 	@echo "a Debian snapshot to the Linux partition, which requires sudo"
 	@echo "you can safely cancel here"
-	sudo $(MKFS_EXT4) $(PART3)
+	sudo $(MKFS_EXT4) -F $(PART3)
 	-mkdir -p tmp-mnt
 	-mkdir -p tmp-rootfs
 	-sudo mount $(PART3) tmp-mnt && \

+ 39 - 1
README.md

@@ -101,6 +101,44 @@ CONFIG_PHY_M31_DPHY_RX0
 CONFIG_DRM_STARFIVE_MIPI_DSI
 ```
 
+## Build SD Card Booting Image
+
+If want to generate the sd card booting image, please modify the following file.
+
+conf/beaglev_defconfig_513:
+
+```
+change
+CONFIG_CMDLINE="earlyprintk console=tty1 console=ttyS0,115200 debug rootwait stmmaceth=chain_mode:1"
+to
+CONFIG_CMDLINE="earlyprintk console=tty1 console=ttyS0,115200 debug rootwait stmmaceth=chain_mode:1 root=/dev/mmcblk0p3"
+```
+
+HiFive_U-Boot/configs/starfive_vic7100_evb_smode_defconfig:
+
+```
+change
+CONFIG_USE_BOOTCOMMAND is not set
+to
+CONFIG_USE_BOOTCOMMAND=y
+
+change
+#CONFIG_BOOTCOMMAND="run mmcsetup; run fdtsetup; run fatenv; echo 'running boot2...'; run boot2"
+to
+CONFIG_BOOTCOMMAND="run mmcsetup; run fdtsetup; run fatenv; echo 'running boot2...'; run boot2"
+```
+
+Then insert the TF card, and run command `df -h` to check the TF card device name `/dev/sdXX`, then run command `umount /dev/sdXX`",  then run the below instruction:
+
+```
+make buildroot_rootfs -jx
+make -jx
+make vpubuild_rootfs
+sudo make clean
+make -jx
+make buildroot_rootfs -jx
+sudo make DISK=/dev/sdX format-nvdla-rootfs && sync
+```
 
 ## Running on Starlight Board ##
 
@@ -121,7 +159,7 @@ Press any key as soon as it starts up to enter the **upgrade menu**. In this men
 	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 	xxxxxxxxxxxFLASH PROGRAMMINGxxxxxxxxx
 	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-
+	
 	0:update boot
 	1: quit
 	select the function:

+ 141 - 0
conf/buildroot_rootfs_config

@@ -1,5 +1,15 @@
 BR2_riscv=y
+BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
+BR2_KERNEL_HEADERS_CUSTOM_GIT=y
+BR2_KERNEL_HEADERS_CUSTOM_REPO_URL="https://github.com/starfive-tech/linux.git"
+BR2_KERNEL_HEADERS_CUSTOM_REPO_VERSION="beaglev-5.13.y_multimedia"
+BR2_PACKAGE_GLIBC_UTILS=y
+BR2_GCC_VERSION_10_X=y
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_BUILDROOT_FORTRAN=y
+BR2_GCC_ENABLE_LTO=y
+BR2_GCC_ENABLE_OPENMP=y
 BR2_TOOLCHAIN_EXTERNAL_PATH="$(RISCV)"
 BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="$(ARCH)-buildroot-linux-gnu"
 BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y
@@ -8,24 +18,145 @@ BR2_TOOLCHAIN_EXTERNAL_CXX=y
 BR2_INIT_SYSV=y
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
 BR2_TARGET_GENERIC_ROOT_PASSWD="sifive"
+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
+BR2_PACKAGE_ALSA_UTILS=y
+BR2_PACKAGE_ALSA_UTILS_ALSACONF=y
+BR2_PACKAGE_ALSA_UTILS_ALSALOOP=y
+BR2_SYSTEM_BIN_SH_BUSYBOX=y
 BR2_SYSTEM_DHCP="eth0"
+BR2_PACKAGE_ALSA_UTILS_AMIXER=y
+BR2_PACKAGE_ALSA_UTILS_APLAY=y
+BR2_PACKAGE_ALSA_UTILS_ASEQDUMP=y
+BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST=y
 BR2_PACKAGE_BONNIE=y
 BR2_PACKAGE_CACHE_CALIBRATOR=y
+BR2_PACKAGE_GSTREAMER1=y
+BR2_PACKAGE_GSTREAMER1_CHECK=y
+BR2_PACKAGE_GST1_PLUGINS_BASE_INSTALL_TOOLS=y
+BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP=y
+BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOMIXER=y
+BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORATE=y
+BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOTESTSRC=y
+BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT=y
+BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_RAWPARSE=y
+BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC=y
+BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEORATE=y
+BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA=y
+BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OGG=y
+BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VORBIS=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_JPEG=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PNG=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOPARSERS=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEBUGUTILS=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEINTERLACE=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLV=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ID3DEMUX=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_IMAGEFREEZE=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_INTERLEAVE=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAW=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LEVEL=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIFILE=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIPART=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOFILTER=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOMIXER=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVENC=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLAC=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX=y
+BR2_PACKAGE_GST1_PLUGINS_BAD=y
+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUTOCONVERT=y
+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ID3TAG=y
+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_JPEGFORMAT=y
+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGDEMUX=y
+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX=y
+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RAWPARSE=y
+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SPEED=y
+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFILTERS=y
+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFRAME_AUDIOLEVEL=y
+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS=y
+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FBDEV=y
+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_X265=y
+BR2_PACKAGE_GST1_PLUGINS_UGLY=y
+BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_ASFDEMUX=y
+BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPEG2DEC=y
+BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_X264=y
+BR2_PACKAGE_GST1_LIBAV=y
 BR2_PACKAGE_DHRYSTONE=y
+BR2_PACKAGE_GDB=y
+BR2_PACKAGE_GDB_VERSION_9_2=y
+BR2_PACKAGE_IOZONE=y
 BR2_PACKAGE_LMBENCH=y
 BR2_PACKAGE_RAMSMP=y
 BR2_PACKAGE_RAMSPEED=y
 BR2_PACKAGE_STRACE=y
+BR2_PACKAGE_E2FSPROGS=y
+BR2_PACKAGE_EXFAT=y
+BR2_PACKAGE_EXFAT_UTILS=y
+BR2_PACKAGE_MTD=y
 BR2_PACKAGE_STRESS_NG=y
+BR2_PACKAGE_NTFS_3G=y
+BR2_PACKAGE_GPTFDISK=y
+BR2_PACKAGE_GPTFDISK_GDISK=y
+BR2_PACKAGE_GPTFDISK_SGDISK=y
+BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_MEMTESTER=y
 BR2_PACKAGE_WHETSTONE=y
 BR2_PACKAGE_PCIUTILS=y
+BR2_PACKAGE_SYSSTAT=y
+BR2_PACKAGE_PYTHON3=y
 BR2_PACKAGE_OPENSSL=y
+BR2_PACKAGE_LIBKCAPI=y
+BR2_PACKAGE_LIBKCAPI_ENCAPP=y
+BR2_PACKAGE_LIBKCAPI_RNGAPP=y
+BR2_PACKAGE_LIBKCAPI_SPEED=y
+BR2_PACKAGE_LIBKCAPI_TEST=y
+BR2_PACKAGE_DTC=y
+BR2_PACKAGE_DTC_PROGRAMS=y
+BR2_PACKAGE_LIBV4L_UTILS=y
 BR2_PACKAGE_LIBTIRPC=y
 BR2_PACKAGE_MSMTP=y
 BR2_PACKAGE_MUTT=y
 BR2_PACKAGE_MUTT_IMAP=y
 BR2_PACKAGE_MUTT_POP3=y
+BR2_PACKAGE_BLUEZ5_UTILS=y
+BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y
+BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
+BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED=y
+BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL=y
+BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH=y
+BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI=y
+BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC=y
+BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP=y
+BR2_PACKAGE_DHCP=y
+BR2_PACKAGE_DHCP_SERVER=y
+BR2_PACKAGE_DHCP_SERVER_DELAYED_ACK=y
 BR2_PACKAGE_DROPBEAR=y
+BR2_PACKAGE_HOSTAPD=y
+BR2_PACKAGE_HOSTAPD_EAP=y
+BR2_PACKAGE_HOSTAPD_WPS=y
+BR2_PACKAGE_HOSTAPD_WPA3=y
+BR2_PACKAGE_IPERF=y
+BR2_PACKAGE_IPERF3=y
+BR2_PACKAGE_IPTABLES=y
+BR2_PACKAGE_IPTABLES_NFTABLES=y
+BR2_PACKAGE_IW=y
+BR2_PACKAGE_WPA_SUPPLICANT=y
+BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
+BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
+BR2_PACKAGE_WPA_SUPPLICANT_WPA3=y
+BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
+BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
+BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
+BR2_PACKAGE_BASH=y
+BR2_PACKAGE_SCREEN=y
+BR2_PACKAGE_HTOP=y
 BR2_PACKAGE_IPUTILS=y
 BR2_PACKAGE_WGET=y
 BR2_PACKAGE_BASH=y
@@ -76,6 +207,16 @@ BR2_PACKAGE_UTIL_LINUX_WALL=y
 BR2_PACKAGE_UTIL_LINUX_WDCTL=y
 BR2_PACKAGE_UTIL_LINUX_WRITE=y
 BR2_PACKAGE_UTIL_LINUX_ZRAMCTL=y
+BR2_PACKAGE_V4L2_TEST=y
+BR2_PACKAGE_PP_TEST=y
 BR2_TARGET_ROOTFS_EXT2=y
 BR2_TARGET_ROOTFS_EXT2_4=y
+BR2_TARGET_ROOTFS_EXT2_SIZE="128M"
 # BR2_TARGET_ROOTFS_TAR is not set
+BR2_TARGET_OPENSBI=y
+BR2_PACKAGE_HOST_GENEXT2FS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_GPTFDISK=y
+BR2_PACKAGE_HOST_MTOOLS=y
+BR2_PACKAGE_HOST_SQUASHFS=y
+BR2_PACKAGE_HOST_STFISP_SETFILE=y

+ 11 - 2
conf/u74_uEnv.txt

@@ -13,7 +13,7 @@ fitfile=hifiveu.fit
 
 # The rest of this is mostly of interest to u-boot developers
 # below much match what's in FIT (ugha)
-bbladdr=80700000
+bbladdr=80200000
 fdtaddr=86000000
 irdaddr=86100000
 irdsize=06400000
@@ -34,11 +34,20 @@ setupird=setexpr irdend ${irdaddr} + ${irdsize}; fdt set /chosen linux,initrd-st
 #setupfdt2=fdt print /chosen; fdt set /chosen bootargs "${bootargs}"; fdt set /firmware uboot,ver ${ver}; fdt print /chosen
 setupfdt2=fdt print /chosen; fdt set /chosen bootargs "${bootargs}"; fdt print /chosen
 
+bootfile=vmlinuz
+fdt_addr_r=0x88000000
+fdt_high=0xffffffffffffffff
+fdtcontroladdr=0xffffffffffffffff
+initrd_high=0xffffffffffffffff
+kernel_addr_r=0x84000000
+ipaddr=192.168.120.250
+
 bootwait=setenv _delay ${bootdelay}; echo ${_delay}; while test ${_delay} > 0; do sleep 1; setexpr _delay ${_delay} - 1; echo ${_delay}; done
 
 # this assumes ${fileaddr} is already set!!
 #boot2=fatload mmc 0:1 ${fileaddr} ${fitfile}; bootm start ${fileaddr}; run setupfdt1; run setupchosen; run setupfdt2; bootm loados ${fileaddr}; echo "Booting kernel in"; run bootwait; go 80000000
-boot2=fatload mmc 0:1 ${fileaddr} ${fitfile}; bootm start ${fileaddr}; run setupfdt1;run setupird;run setupfdt2; bootm loados ${fileaddr}; echo "Booting kernel in"; go ${bbladdr} ${fdtaddr}
+#boot2=fatload mmc 0:1 ${fileaddr} ${fitfile}; bootm start ${fileaddr}; run setupfdt1;run setupird;run setupfdt2; bootm loados ${fileaddr}; echo "Booting kernel in"; go ${bbladdr} ${fdtaddr}
+boot2=fatload mmc 0:1 ${fileaddr} ${fitfile}; bootm start ${fileaddr}; run setupfdt1;run setupird;run setupfdt2; bootm loados ${fileaddr}; echo "Booting kernel in"; booti ${bbladdr} ${irdaddr}:${filesize} ${fdtaddr}
 
 # if you want to network boot, for testing, uncomment the following:
 #boot2=dhcp; env import -t ${fileaddr} ${filesize}; run boot2