diff --git a/README.md b/README.md index b21f0a843afa43312c07441bb0555804c2e30e57..6b0ced211e7e0bfd15729b43e0c60c855d27ac3c 100644 --- a/README.md +++ b/README.md @@ -388,10 +388,10 @@ From old U-Boot source files. } ``` -From U-Boot ... +From U-Boot ... **but only if you already have a properly configured and working UBI/UBIFS file system. Otherwise, just hope that the engineers who chose the QSPI memory will find out if it is used on other boards and if the geometry configuration is already documented. Otherwise pray... ;D** ``` -ScalpZynq> ubi part ubi +ScalpZynq> ubi part ubi ubi0: detaching mtd2 ubi0: mtd2 is detached ubi0: attaching mtd2 @@ -686,6 +686,85 @@ Unmounting UBIFS volume datafs-vol! Other U-Boot commands for the UBI/UBIFS file system are also available. Please refer to the related documentation. +### How to use the U-Boot environment in a UBI/UBIFS file system + +``` +ScalpZynq> sf probe 0 0 0 +SF: Detected s25fl256s1 with page size 256 Bytes, erase size 64 KiB, total 32 MiB +``` + +``` +ScalpZynq> ubi part ubi +ubi0: attaching mtd2 +ubi0: scanning is finished +ubi0: attached mtd2 (name "ubi", size 27 MiB) +ubi0: PEB size: 65536 bytes (64 KiB), LEB size: 65408 bytes +ubi0: min./max. I/O unit sizes: 1/256, sub-page size 1 +ubi0: VID header offset: 64 (aligned 64), data offset: 128 +ubi0: good PEBs: 432, bad PEBs: 0, corrupted PEBs: 0 +ubi0: user volume: 3, internal volumes: 1, max. volumes count: 128 +ubi0: max/mean erase counter: 4/0, WL threshold: 4096, image sequence number: 1995518755 +ubi0: available PEBs: 0, total reserved PEBs: 432, PEBs reserved for bad PEB handling: 0 +``` + +``` +ScalpZynq> env default -f -a +## Resetting to default environment +``` + +``` +ScalpZynq> setenv envtest "UBI env. test" +ScalpZynq> printenv envtest +envtest=UBI env. test +``` + +``` +ScalpZynq> saveenv +Saving Environment to UBI... ubi0: detaching mtd2 +ubi0: mtd2 is detached +ubi0: attaching mtd2 +ubi0: scanning is finished +ubi0: attached mtd2 (name "ubi", size 27 MiB) +ubi0: PEB size: 65536 bytes (64 KiB), LEB size: 65408 bytes +ubi0: min./max. I/O unit sizes: 1/256, sub-page size 1 +ubi0: VID header offset: 64 (aligned 64), data offset: 128 +ubi0: good PEBs: 432, bad PEBs: 0, corrupted PEBs: 0 +ubi0: user volume: 3, internal volumes: 1, max. volumes count: 128 +ubi0: max/mean erase counter: 4/0, WL threshold: 4096, image sequence number: 1995518755 +ubi0: available PEBs: 0, total reserved PEBs: 432, PEBs reserved for bad PEB handling: 0 +done +OK +``` + +``` +ScalpZynq> env default -f -a +## Resetting to default environment +``` + +``` +ScalpZynq> printenv envtest +## Error: "envtest" not defined +``` + +``` +ScalpZynq> ubi read 0x10000000 uenv-vol 0x100000 +Read 1048576 bytes from volume uenv-vol to 10000000 +``` + +``` +ScalpZynq> md.b 0x10000000 10 +10000000: f2 22 9c eb 53 43 41 4c 50 5f 42 4f 4f 54 5f 50 ."..SCALP_BOOT_P +``` + +``` +ScalpZynq> env import -b 0x10000004 0xffffc +``` + +``` +ScalpZynq> printenv envtest +envtest=UBI env. test +``` + ### Howto create a patch for U-Boot Retrieve the desired version of the U-Boot GIT deposit. diff --git a/scalp_safe_petalinux/.petalinux/metadata b/scalp_safe_petalinux/.petalinux/metadata index b6b8f719f8d36f34565506d383d27bd7e5f494e9..7d06983b8164440df45c75d90cde1a6ea9f9f0ea 100644 --- a/scalp_safe_petalinux/.petalinux/metadata +++ b/scalp_safe_petalinux/.petalinux/metadata @@ -1,6 +1,6 @@ PETALINUX_VER=2020.2 VALIDATE_HW_CHKSUM=1 HARDWARE_PATH=/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/designs/vivado/scalp_safe_firmware/2020.2/lin64/scalp_safe_firmware/scalp_safe_firmware.xsa -HARDWARE_CHECKSUM=c0e54849f94ffc5aaa53e1cad4e1235f +HARDWARE_CHECKSUM=e4c86ebb7157c318baafe6ea2691035e YOCTO_SDK=5ff8fc5f85d1566b314bb73eaa378212 RFSCONFIG_CHKSUM=098862acb0a15bbc6a0d0999eb493baa diff --git a/scalp_safe_petalinux/project-spec/configs/config b/scalp_safe_petalinux/project-spec/configs/config index 220638dbafab7e253a14d4596dee291f3c0e7b49..601c6ea1cdba5328ac14eb4bc2ef061a947ba49f 100644 --- a/scalp_safe_petalinux/project-spec/configs/config +++ b/scalp_safe_petalinux/project-spec/configs/config @@ -98,35 +98,14 @@ CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART0_FLAGS="boot" # # partition 1 # -CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART1_NAME="bootenv" -CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART1_SIZE=0x20000 -CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART1_FLAGS="bootenv" +CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART1_NAME="ubi" +CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART1_SIZE=0x1B00000 +CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART1_FLAGS="ubi" # # partition 2 # -CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART2_NAME="dtb" -CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART2_SIZE=0x20000 -CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART2_FLAGS="dtb" - -# -# partition 3 -# -CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART3_NAME="fitimage" -CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART3_SIZE=0x800000 -CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART3_FLAGS="fitimage" - -# -# partition 4 -# -CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART4_NAME="ubifs" -CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART4_SIZE=0x12C000 -CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART4_FLAGS="ubifs" - -# -# partition 5 -# -CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART5_NAME="" +CONFIG_SUBSYSTEM_FLASH_PS7_QSPI_0_BANKLESS_PART2_NAME="" CONFIG_SUBSYSTEM_FLASH_IP_NAME="ps7_qspi_0" # @@ -156,19 +135,17 @@ 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_FLASH_SELECT is not set # CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_BOOTENV_MEDIA_SD_SELECT is not set -# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_BOOTENV_MEDIA_MANUAL_SELECT is not set -CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_BOOTENV_PART_NAME="bootenv" +CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_BOOTENV_MEDIA_MANUAL_SELECT=y # # kernel image settings # -CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_KERNEL_MEDIA_FLASH_SELECT=y -# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_KERNEL_MEDIA_SD_SELECT is not set +# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_KERNEL_MEDIA_FLASH_SELECT is not set +CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_KERNEL_MEDIA_SD_SELECT=y # CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_KERNEL_MEDIA_ETHERNET_SELECT is not set # CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_KERNEL_MEDIA_MANUAL_SELECT is not set -CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_KERNEL_PART_NAME="fitimage" CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_KERNEL_IMAGE_NAME="image.ub" # @@ -181,11 +158,10 @@ CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_JFFS2_MEDIA_MANUAL_SELECT=y # dtb image settings # # CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_DTB_MEDIA_BOOTIMAGE_SELECT is not set -CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_DTB_MEDIA_FLASH_SELECT=y -# CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_DTB_MEDIA_SD_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=y # CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_DTB_MEDIA_ETHERNET_SELECT is not set # CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_DTB_MEDIA_MANUAL_SELECT is not set -CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_DTB_PART_NAME="dtb" CONFIG_SUBSYSTEM_IMAGES_ADVANCED_AUTOCONFIG_DTB_IMAGE_NAME="system.dtb" CONFIG_SUBSYSTEM_ENDIAN_LITTLE=y diff --git a/scalp_safe_petalinux/project-spec/configs/u-boot-xlnx/platform-auto.h b/scalp_safe_petalinux/project-spec/configs/u-boot-xlnx/platform-auto.h index 16b4f360eeb5412701432ac13900bb56aa53411f..1bfbbcdbac2de6e6821e9fa8ae08051e1638771f 100644 --- a/scalp_safe_petalinux/project-spec/configs/u-boot-xlnx/platform-auto.h +++ b/scalp_safe_petalinux/project-spec/configs/u-boot-xlnx/platform-auto.h @@ -35,7 +35,7 @@ #define CONFIG_MII #define CONFIG_NET_MULTI #define CONFIG_NETCONSOLE 1 -#define CONFIG_SERVERIP 10.136.135.67 +#define CONFIG_SERVERIP 192.168.1.153 #define CONFIG_IPADDR 192.168.0.10 #define CONFIG_GATEWAYIP 192.168.0.1 #define CONFIG_NETMASK 255.255.255.0 diff --git a/scalp_safe_petalinux/project-spec/hw-description/scalp_safe_firmware.bit b/scalp_safe_petalinux/project-spec/hw-description/scalp_safe_firmware.bit index 23eb74d76dece145f45538952c942a7f8de9eec0..4444a48227db9b3859ffcc9bd10049f7397636c9 100644 Binary files a/scalp_safe_petalinux/project-spec/hw-description/scalp_safe_firmware.bit and b/scalp_safe_petalinux/project-spec/hw-description/scalp_safe_firmware.bit differ diff --git a/scalp_safe_petalinux/project-spec/hw-description/system.xsa b/scalp_safe_petalinux/project-spec/hw-description/system.xsa index 5d18795d6fe6b33532d6e4287580d2f70772f40f..e71dc988b5fee1b0925040854a4c5caf0deda31b 100644 Binary files a/scalp_safe_petalinux/project-spec/hw-description/system.xsa and b/scalp_safe_petalinux/project-spec/hw-description/system.xsa differ diff --git a/scalp_safe_petalinux/project-spec/meta-user/recipes-bsp/u-boot/files/devtool-fragment.cfg b/scalp_safe_petalinux/project-spec/meta-user/recipes-bsp/u-boot/files/devtool-fragment.cfg index 18586097af8080b8d43def801246b100f12f70ed..cd45b916992512d834e1d5e5470fb2f936ab2ac0 100644 --- a/scalp_safe_petalinux/project-spec/meta-user/recipes-bsp/u-boot/files/devtool-fragment.cfg +++ b/scalp_safe_petalinux/project-spec/meta-user/recipes-bsp/u-boot/files/devtool-fragment.cfg @@ -34,7 +34,12 @@ CONFIG_CMD_MTDPARTS_SHOW_NET_SIZES=y CONFIG_CMD_SETEXPR=y CONFIG_CMD_UBI=y CONFIG_CMD_UBIFS=y -# CONFIG_ENV_IS_IN_UBI is not set +CONFIG_ENV_SIZE=0x100000 +# CONFIG_ENV_IS_IN_SPI_FLASH is not set +CONFIG_ENV_IS_IN_UBI=y +CONFIG_ENV_UBI_PART="ubi" +CONFIG_ENV_UBI_VOLUME="uenv-vol" +CONFIG_ENV_UBI_VID_OFFSET=0 CONFIG_ZYNQ_GEM_I2C_MAC_OFFSET=0xfa CONFIG_SYS_I2C_EEPROM_ADDR=0x53 CONFIG_MTD_PARTITIONS=y @@ -52,9 +57,9 @@ CONFIG_RGMII=y CONFIG_FS_JFFS2=y CONFIG_RBTREE=y CONFIG_LZO=y -CONFIG_ENV_OFFSET=0x0 -CONFIG_ENV_ADDR=0x500000 -CONFIG_XILINX_OF_BOARD_DTB_ADDR=0x520000 +#CONFIG_ENV_OFFSET=0x0 +#CONFIG_ENV_ADDR=0x500000 +#CONFIG_XILINX_OF_BOARD_DTB_ADDR=0x520000 CONFIG_PACKING=y CONFIG_PINCTRL=y CONFIG_PINCTRL_FULL=y diff --git a/scalp_safe_petalinux/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h b/scalp_safe_petalinux/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h index 62091df181a8a39d5d8bc6d1ad915dd1abde440c..b6250ec44a4f38c5ea00e31125a9f72f819ad65b 100644 --- a/scalp_safe_petalinux/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h +++ b/scalp_safe_petalinux/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h @@ -7,19 +7,17 @@ "custom_board_version=\"RevB 2008\"\0" \ "custom_board_vendor=\"Hepia CoRES - LSN\"\0" \ "SCALP_BOOT_PARTITION_OFFSET=0x0\0" \ - "SCALP_BOOT_PARTITION_SIZE=0x500000\0" \ - "SCALP_BOOTENV_PARTITION_OFFSET=0x500000\0" \ - "SCALP_BOOTENV_PARTITION_SIZE=0x20000\0" \ - "SCALP_FITIMAGE_PARTITION_OFFSET=0x540000\0" \ - "SCALP_FITIMAGE_PARTITION_SIZE=0x7AD300\0" \ - "SCALP_FITIMAGE_LOAD_OFFSET=0x2000000\0" \ - "SCALP_DTB_PARTITION_OFFSET=0x520000\0" \ - "SCALP_DTB_PARTITION_SIZE=0x20000\0" \ - "SCALP_UBIFS_PARTITION_OFFSET=0xCED300\0" \ - "SCALP_UBIFS_PARTITION_SIZE=0x1312D00\0" \ - "SCALP_UBIFS_LOAD_OFFSET=0x3000000\0" \ - "load_scalp_fitimage=sf probe 0 0 0 && sf read ${SCALP_FITIMAGE_LOAD_OFFSET} ${SCALP_FITIMAGE_PARTITION_OFFSET} ${SCALP_FITIMAGE_PARTITION_SIZE}\0" \ - "load_scalp_ubifs=sf probe 0 0 0 && sf read ${SCALP_UBIFS_LOAD_OFFSET} ${SCALP_UBIFS_PARTITION_OFFSET} ${SCALP_UBIFS_PARTITION_SIZE}\0" \ + "SCALP_BOOT_PARTITION_SIZE=0x500000\0" \ + "SCALP_UBI_PARTITION_OFFSET=0x500000\0" \ + "SCALP_UBI_PARTITION_SIZE=0x1B00000\0" \ + "UBI_PART_NAME=ubi\0" \ + "UBI_PART_ID=ubi0\0" \ + "UBI_UENV_VOL_NAME=uenv-vol\0" \ + "UBI_DATAFS_VOL_NAME=datafs-vol\0" \ + "UBI_ROOTFS_VOL_NAME=rootfs-vol\0" \ + "spi_init=sf probe 0 0 0\0" \ + "mount_ubi_rootfs_vol=run spi_init && ubi part ${UBI_PART_NAME} && ubifsmount ${UBI_PART_ID}:${UBI_ROOTFS_VOL_NAME}\0" \ + "mount_ubi_datafs_vol=run spi_init && ubi part ${UBI_PART_NAME} && ubifsmount ${UBI_PART_ID}:${UBI_DATAFS_VOL_NAME}\0" \ "macmemaddr=0x1000000\0" \ "readmac=i2c dev 0; i2c read 0x53 0xfa.1 6 ${macmemaddr}\0" \ "buildmac=\n" \ @@ -55,8 +53,5 @@ "ethact=eth0\0" \ "ethprime=eth0\0" \ -// "mtdids=\"mtdids=nor0=nor_flash\"\0" \ -// "mtdparts=\"mtdparts=nor_flash:5m(boot)ro,128k(bootenv)ro,128k(dtb)ro,8m(fitimage)or,-(ubifs)\"\0" \ - #define MTDIDS_DEFAULT "nor0=nor_flash" -#define MTDPARTS_DEFAULT "mtdparts=nor_flash:5m(boot)ro,128k(bootenv)ro,128k(dtb)ro,8m(fitimage)ro,-(ubifs)" +#define MTDPARTS_DEFAULT "mtdparts=nor_flash:5m(boot)ro,-(ubi)" diff --git a/scalp_safe_petalinux/project-spec/meta-user/recipes-bsp/u-boot/files/u-boot-zynq-scalp-dts-sja1105-official.patch b/scalp_safe_petalinux/project-spec/meta-user/recipes-bsp/u-boot/files/u-boot-zynq-scalp-dts-sja1105-official.patch index 43f0f386006168667ffdf4178b5a48d89aaa2c88..9ed6eda5500abed132840951bc1bea5e684bf9ce 100644 --- a/scalp_safe_petalinux/project-spec/meta-user/recipes-bsp/u-boot/files/u-boot-zynq-scalp-dts-sja1105-official.patch +++ b/scalp_safe_petalinux/project-spec/meta-user/recipes-bsp/u-boot/files/u-boot-zynq-scalp-dts-sja1105-official.patch @@ -1,9 +1,9 @@ diff --git a/arch/arm/dts/zynq-scalp.dts b/arch/arm/dts/zynq-scalp.dts new file mode 100644 -index 0000000000..197e776b4b +index 0000000000..2e1ab071e6 --- /dev/null +++ b/arch/arm/dts/zynq-scalp.dts -@@ -0,0 +1,283 @@ +@@ -0,0 +1,270 @@ +/* + * Scalp Board DTS + * @@ -97,29 +97,16 @@ index 0000000000..197e776b4b + #address-cells = <1>; + #size-cells = <1>; + ++ /* 5242880 Bytes */ + partition@boot { + label = "boot"; + reg = <0x0 0x500000>; + }; + -+ partition@bootenv { -+ label = "bootenv"; -+ reg = <0x500000 0x20000>; -+ }; -+ -+ partition@dtb { -+ label = "dtb"; -+ reg = <0x520000 0x20000>; -+ }; -+ -+ partition@fitimage { -+ label = "fitimage"; -+ reg = <0x540000 0x800000>; -+ }; -+ -+ partition@ubifs { -+ label = "ubifs"; -+ reg = <0xD40000 0x12C0000>; ++ /* 28311552 Bytes */ ++ partition@ubi { ++ label = "ubi"; ++ reg = <0x500000 0x1B00000>; + }; + }; +};