]> rtime.felk.cvut.cz Git - fpga/zynq/canbench-sw.git/commitdiff
petalinux: Boot from network (TFTP), NFS root; support for custom u-boot bootscript
authorMartin Jerabek <jerabma7@fel.cvut.cz>
Tue, 29 Mar 2016 18:35:06 +0000 (20:35 +0200)
committerMartin Jerabek <jerabma7@fel.cvut.cz>
Wed, 30 Mar 2016 17:54:59 +0000 (19:54 +0200)
Makefile [new file with mode: 0644]
petalinux/.gitignore
petalinux/.petalinux/metadata
petalinux/Makefile [new file with mode: 0644]
petalinux/bootscript.txt [new file with mode: 0644]
petalinux/mkbootscript [new file with mode: 0755]
petalinux/subsystems/linux/config
petalinux/subsystems/linux/configs/kernel/config
petalinux/uEnv.txt [new file with mode: 0644]
petalinux/uboot-extra-env.h [new file with mode: 0644]

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..6ccb27c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,13 @@
+# 1. system
+# 2. peta linux
+# 3. apps (latester)
+
+system_project:
+       cd system/scripts && vivado -mode batch -nolog -nojournal -source recreate.tcl
+system/system.hdf:
+       cd system/scripts && vivado -mode batch -nolog -nojournal -source build.tcl
+
+petalinux_config: system/system.hdf
+       $(MAKE) -C petalinux config
+petalinux_build:
+       $(MAKE) -C petalinux build
index 6b91b57f68f68e06eb804d983231790101399bc0..0000bc70e117af68fa865776caba5e258a495c83 100644 (file)
@@ -14,3 +14,5 @@ subsystems/linux/configs/device-tree/*
 subsystems/linux/configs/u-boot/platform-auto.h
 subsystems/linux/hw-description/*
 !subsystems/linux/hw-description/metadata
+/bootscript
+/.configured
index b91bef48ffd76644cc92f1f537ee53d42ae34e03..7740ca0e51ae3641bb40c9648f37566fb06f39cf 100644 (file)
@@ -1 +1,2 @@
 PETALINUX_VER=2015.4
+project_id=109f6dda0ac8f0d8dac31f6594c72c33
diff --git a/petalinux/Makefile b/petalinux/Makefile
new file mode 100644 (file)
index 0000000..7a71d5b
--- /dev/null
@@ -0,0 +1,29 @@
+.PHONY: config build all
+
+all: build
+
+config: .configured
+
+.configured:
+       petalinux-config --get-hw-description ../system --oldconfig
+       $(MAKE) subsystems/linux/configs/u-boot/platform-auto.h
+       touch .configured
+
+build: .configured
+       petalinux-build
+       $(MAKE) bootscript images/linux/BOOT.BIN
+
+images/linux/BOOT.BIN: FORCE
+       cd images/linux && petalinux-package --boot --fsbl zynq_fsbl.elf --u-boot u-boot.elf --force
+
+bootscript: bootscript.txt
+       mkimage -A arm -O u-boot -T script -C none -a 0 -e 0 -n "t-Boot Script" -d $< $@
+
+subsystems/linux/configs/u-boot/platform-auto.h: FORCE | build/linux/u-boot/Makefile
+       $(MAKE) UBOOT_AUTO_CONFIG=y -C build/linux/u-boot autogen-config
+       sed -r -i '/PSSERIAL0 \\/r uboot-extra-env.h' $@
+
+build/linux/u-boot/Makefile:
+       petalinux-build -c u-boot
+
+FORCE:
diff --git a/petalinux/bootscript.txt b/petalinux/bootscript.txt
new file mode 100644 (file)
index 0000000..2f7bce8
--- /dev/null
@@ -0,0 +1,17 @@
+setenv tftp_dir ''
+
+setenv bitstream_image top_wrapper.bit
+setenv dtb_img system.dtb
+setenv kernel_img image.ub
+
+setenv bitstream_load_address 0x04000000
+
+setenv bitstream_tftp 'tftpboot ${bitstream_load_address} ${tftp_dir}${bitstream_image}'
+setenv dtb_tftp 'tftpboot ${dtbnetstart} ${tftp_dir}${dtb_img}'
+setenv kernel_tftp 'tftpboot ${netstart} ${tftp_dir}${kernel_img}'
+
+setenv bitstream_load 'fpga loadb 0 ${bitstream_load_address} ${filesize}'
+
+setenv boot_now 'bootm ${netstart} - ${dtbnetstart}'
+
+run bitstream_tftp bitstream_load kernel_tftp dtb_tftp boot_now
diff --git a/petalinux/mkbootscript b/petalinux/mkbootscript
new file mode 100755 (executable)
index 0000000..103310f
--- /dev/null
@@ -0,0 +1 @@
+mkimage -A arm -O u-boot -T script -C none -a 0 -e 0 -n "t-Boot Script" -d bootscript.txt bootscript
index c8a97ef976a7ddc37242f8a83d39ad1ea1745374..e571949b9630bdbef0f8e8ee7b306f7591adfd48 100644 (file)
@@ -28,9 +28,9 @@ CONFIG_SUBSYSTEM_COMPONENT_ROOTFS_NAME_PETALINUX__ROOTFS=y
 CONFIG_SUBSYSTEM_AUTOCONFIG_DEVICE__TREE=y
 # CONFIG_SUBSYSTEM_DEVICE_TREE_MANUAL_INCLUDE is not set
 CONFIG_SUBSYSTEM_DEVICE_TREE_INCLUDE_DIR="/mnt/data/nobackup/martin/programs/.squashes/.mnt/.final/Xilinx/petalinux-v2015.4-final/components//linux-kernel/xlnx-4.0/include"
-# CONFIG_SUBSYSTEM_AUTOCONFIG_KERNEL is not set
-# CONFIG_SUBSYSTEM_AUTOCONFIG_ROOTFS is not set
-CONFIG_SUBSYSTEM_AUTOCONFIG_U__BOOT=y
+CONFIG_SUBSYSTEM_AUTOCONFIG_KERNEL=y
+CONFIG_SUBSYSTEM_AUTOCONFIG_ROOTFS=y
+# CONFIG_SUBSYSTEM_AUTOCONFIG_U__BOOT is not set
 CONFIG_SUBSYSTEM_HARDWARE_AUTO=y
 CONFIG_SUBSYSTEM_PROCESSOR_PS7_CORTEXA9_0_SELECT=y
 CONFIG_SUBSYSTEM_ARCH_ARM=y
@@ -66,9 +66,9 @@ CONFIG_SUBSYSTEM_ETHERNET_PS7_ETHERNET_0_SELECT=y
 # CONFIG_SUBSYSTEM_ETHERNET_PS7_ETHERNET_0_MAC_AUTO is not set
 CONFIG_SUBSYSTEM_ETHERNET_PS7_ETHERNET_0_MAC="00:0a:35:00:22:01"
 # CONFIG_SUBSYSTEM_ETHERNET_PS7_ETHERNET_0_USE_DHCP is not set
-CONFIG_SUBSYSTEM_ETHERNET_PS7_ETHERNET_0_IP_ADDRESS="192.168.100.16"
+CONFIG_SUBSYSTEM_ETHERNET_PS7_ETHERNET_0_IP_ADDRESS="192.168.1.16"
 CONFIG_SUBSYSTEM_ETHERNET_PS7_ETHERNET_0_IP_NETMASK="255.255.255.0"
-CONFIG_SUBSYSTEM_ETHERNET_PS7_ETHERNET_0_IP_GATEWAY="192.168.100.1"
+CONFIG_SUBSYSTEM_ETHERNET_PS7_ETHERNET_0_IP_GATEWAY="192.168.1.75"
 
 #
 # Flash Settings
@@ -110,7 +110,49 @@ CONFIG_SUBSYSTEM_SD_PS7_SD_0_SELECT=y
 # RTC Settings
 #
 CONFIG_SUBSYSTEM_RTC_MANUAL_SELECT=y
-# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG is not set
+CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG=y
+
+#
+# boot image settings
+#
+# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_BOOT_MEDIA_FLASH_SELECT is not set
+CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_BOOT_MEDIA_SD_SELECT=y
+# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_BOOT_MEDIA_MANUAL_SELECT is not set
+CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_BOOT_IMAGE_NAME="BOOT.BIN"
+
+#
+# u-boot env partition settings
+#
+CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_BOOTENV_MEDIA_FLASH_SELECT=y
+# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_BOOTENV_MEDIA_MANUAL_SELECT is not set
+CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_BOOTENV_PART_NAME="bootenv"
+
+#
+# kernel image settings
+#
+# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_KERNEL_MEDIA_FLASH_SELECT is not set
+# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_KERNEL_MEDIA_SD_SELECT is not set
+CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_KERNEL_MEDIA_ETHERNET_SELECT=y
+# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_KERNEL_MEDIA_MANUAL_SELECT is not set
+CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_KERNEL_IMAGE_NAME="image.ub"
+
+#
+# jffs2 rootfs image settings
+#
+CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_JFFS2_MEDIA_FLASH_SELECT=y
+# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_JFFS2_MEDIA_MANUAL_SELECT is not set
+CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_JFFS2_PART_NAME="jffs2"
+CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_JFFS2_IMAGE_NAME="rootfs.jffs2"
+
+#
+# dtb image settings
+#
+# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_DTB_MEDIA_BOOTIMAGE_SELECT is not set
+# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_DTB_MEDIA_FLASH_SELECT is not set
+# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_DTB_MEDIA_SD_SELECT is not set
+CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_DTB_MEDIA_ETHERNET_SELECT=y
+# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_DTB_MEDIA_MANUAL_SELECT is not set
+CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_DTB_IMAGE_NAME="system.dtb"
 CONFIG_SUBSYSTEM_ENDIAN_LITTLE=y
 
 #
@@ -118,15 +160,13 @@ CONFIG_SUBSYSTEM_ENDIAN_LITTLE=y
 #
 CONFIG_SUBSYSTEM_BOOTARGS_AUTO=y
 CONFIG_SUBSYSTEM_BOOTARGS_EARLYPRINTK=y
-CONFIG_SUBSYSTEM_BOOTARGS_GENERATED="console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait"
+CONFIG_SUBSYSTEM_BOOTARGS_GENERATED="console=ttyPS0,115200 earlyprintk root=/dev/nfs nfsroot=192.168.1.75:/export/canbench,tcp ip=192.168.1.16:192.168.1.75 rw"
 
 #
 # u-boot Configuration
 #
 CONFIG_SUBSYSTEM_UBOOT_CONFIG_PETALINUX=y
 # CONFIG_SUBSYSTEM_UBOOT_CONFIG_OTHER is not set
-CONFIG_SUBSYSTEM_NETBOOT_OFFSET=0x1000000
-CONFIG_SUBSYSTEM_U__BOOT_TFTPSERVER_IP="AUTO"
 
 #
 # Image Packaging Configuration
@@ -134,10 +174,11 @@ CONFIG_SUBSYSTEM_U__BOOT_TFTPSERVER_IP="AUTO"
 # CONFIG_SUBSYSTEM_ROOTFS_INITRAMFS is not set
 # CONFIG_SUBSYSTEM_ROOTFS_INITRD is not set
 # CONFIG_SUBSYSTEM_ROOTFS_JFFS2 is not set
-# CONFIG_SUBSYSTEM_ROOTFS_NFS is not set
-CONFIG_SUBSYSTEM_ROOTFS_SD=y
+CONFIG_SUBSYSTEM_ROOTFS_NFS=y
+# CONFIG_SUBSYSTEM_ROOTFS_SD is not set
 # CONFIG_SUBSYSTEM_ROOTFS_OTHER is not set
-CONFIG_SUBSYSTEM_SDROOT_DEV="/dev/mmcblk0p2"
+CONFIG_SUBSYSTEM_NFSROOT_DIR="/export/canbench"
+CONFIG_SUBSYSTEM_NFSSERVER_IP="192.168.1.75"
 CONFIG_SUBSYSTEM_UIMAGE_NAME="image.ub"
 # CONFIG_SUBSYSTEM_UIMAGE_HASH_NONE is not set
 CONFIG_SUBSYSTEM_UIMAGE_HASH_CRC32=y
index 7ea77c865f69cb5210c8af7a07c547b72b471534..d8d9a6ae44c4128132640f2e2e82fe2e297c3f9b 100644 (file)
@@ -166,6 +166,7 @@ CONFIG_COMPAT_BRK=y
 CONFIG_SLAB=y
 # CONFIG_SLUB is not set
 # CONFIG_SLOB is not set
+# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
 # CONFIG_PROFILING is not set
 CONFIG_HAVE_OPROFILE=y
 # CONFIG_KPROBES is not set
@@ -694,6 +695,7 @@ CONFIG_VLAN_8021Q=m
 # CONFIG_IEEE802154 is not set
 # CONFIG_NET_SCHED is not set
 # CONFIG_DCB is not set
+CONFIG_DNS_RESOLVER=y
 # CONFIG_BATMAN_ADV is not set
 # CONFIG_OPENVSWITCH is not set
 # CONFIG_VSOCKETS is not set
@@ -3392,18 +3394,13 @@ CONFIG_RAS=y
 # File systems
 #
 CONFIG_DCACHE_WORD_ACCESS=y
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
-CONFIG_EXT3_FS_XATTR=y
-# CONFIG_EXT3_FS_POSIX_ACL is not set
-# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT2_FS is not set
+# CONFIG_EXT3_FS is not set
 CONFIG_EXT4_FS=y
+CONFIG_EXT4_USE_FOR_EXT23=y
 # CONFIG_EXT4_FS_POSIX_ACL is not set
 # CONFIG_EXT4_FS_SECURITY is not set
 # CONFIG_EXT4_DEBUG is not set
-CONFIG_JBD=y
 CONFIG_JBD2=y
 # CONFIG_JBD2_DEBUG is not set
 CONFIG_FS_MBCACHE=y
@@ -3464,6 +3461,7 @@ CONFIG_CONFIGFS_FS=m
 CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_ADFS_FS is not set
 # CONFIG_AFFS_FS is not set
+# CONFIG_ECRYPT_FS is not set
 # CONFIG_HFS_FS is not set
 # CONFIG_HFSPLUS_FS is not set
 # CONFIG_BEFS_FS is not set
@@ -3499,15 +3497,25 @@ CONFIG_NFS_FS=y
 CONFIG_NFS_V2=y
 CONFIG_NFS_V3=y
 # CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
+CONFIG_NFS_V4=y
 # CONFIG_NFS_SWAP is not set
+CONFIG_NFS_V4_1=y
+CONFIG_NFS_V4_2=y
+CONFIG_PNFS_FILE_LAYOUT=y
+CONFIG_PNFS_FLEXFILE_LAYOUT=m
+CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
+# CONFIG_NFS_V4_1_MIGRATION is not set
 CONFIG_ROOT_NFS=y
+# CONFIG_NFS_USE_LEGACY_DNS is not set
+CONFIG_NFS_USE_KERNEL_DNS=y
 # CONFIG_NFSD is not set
 CONFIG_GRACE_PERIOD=y
 CONFIG_LOCKD=y
 CONFIG_LOCKD_V4=y
 CONFIG_NFS_COMMON=y
 CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_SUNRPC_BACKCHANNEL=y
 # CONFIG_SUNRPC_DEBUG is not set
 # CONFIG_CEPH_FS is not set
 # CONFIG_CIFS is not set
@@ -3717,7 +3725,10 @@ CONFIG_EARLY_PRINTK=y
 #
 # Security options
 #
-# CONFIG_KEYS is not set
+CONFIG_KEYS=y
+# CONFIG_PERSISTENT_KEYRINGS is not set
+# CONFIG_BIG_KEYS is not set
+# CONFIG_ENCRYPTED_KEYS is not set
 # CONFIG_SECURITY_DMESG_RESTRICT is not set
 # CONFIG_SECURITY is not set
 # CONFIG_SECURITYFS is not set
@@ -3831,6 +3842,7 @@ CONFIG_CRYPTO_ANSI_CPRNG=m
 # CONFIG_CRYPTO_USER_API_RNG is not set
 CONFIG_CRYPTO_HW=y
 # CONFIG_CRYPTO_DEV_HIFN_795X is not set
+# CONFIG_ASYMMETRIC_KEY_TYPE is not set
 # CONFIG_BINARY_PRINTF is not set
 
 #
@@ -3873,6 +3885,7 @@ CONFIG_XZ_DEC_SPARC=y
 CONFIG_XZ_DEC_BCJ=y
 # CONFIG_XZ_DEC_TEST is not set
 CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_DMA=y
 CONFIG_CPU_RMAP=y
@@ -3883,6 +3896,7 @@ CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
 # CONFIG_CORDIC is not set
 # CONFIG_DDR is not set
 CONFIG_LIBFDT=y
+CONFIG_OID_REGISTRY=y
 CONFIG_FONT_SUPPORT=y
 CONFIG_FONTS=y
 CONFIG_FONT_8x8=y
diff --git a/petalinux/uEnv.txt b/petalinux/uEnv.txt
new file mode 100644 (file)
index 0000000..54c9524
--- /dev/null
@@ -0,0 +1,6 @@
+ipaddr=192.168.1.16
+serverip=192.168.1.75
+bootscript_addr=${clobstart}
+bootscript_path=bootscript
+tboot=tftpboot ${bootscript_addr} ${serverip}:${bootscript_path} ; source ${bootscript_addr}
+default_bootcmd=run tboot
diff --git a/petalinux/uboot-extra-env.h b/petalinux/uboot-extra-env.h
new file mode 100644 (file)
index 0000000..2bbbdf5
--- /dev/null
@@ -0,0 +1,8 @@
+       /* load uEnv.txt before boot (copied from U-Boot default config) */ \
+       "loadbootenv_addr=0x2000000\0" \
+       "bootenv=uEnv.txt\0" \
+       "loadbootenv=load mmc 0 ${loadbootenv_addr} ${bootenv}\0" \
+       "importbootenv=echo Importing environment from SD ...; " "env import -t ${loadbootenv_addr} $filesize\0" \
+       "sd_uEnvtxt_existence_test=test -e mmc 0 /uEnv.txt\0" \
+       "preboot=if env run sd_uEnvtxt_existence_test; " "then if env run loadbootenv; " "then env run importbootenv; " "fi; " "fi; \0" \
+       /* end of custom env */ \