From 03fb0958c9090eb3add089cb9f5a8a5ecb30ddf6 Mon Sep 17 00:00:00 2001 From: Sumit Garg Date: Mon, 26 Nov 2018 16:50:17 +0530 Subject: [PATCH] qemu-arm: Add persistent environment support Currently on qemu-arm platforms environment is kept in RAM. Instead use pflash device 1 to provide persistent environment support across device reset. Also (optionally) provide support for persistent environment across qemu machine OFF/ON using following instructions: - Create envstore.img using qemu-img: qemu-img create -f raw envstore.img 64M - Add a pflash drive parameter to the command line: -drive if=pflash,format=raw,index=1,file=envstore.img Signed-off-by: Sumit Garg --- configs/qemu_arm64_defconfig | 7 +++++++ configs/qemu_arm_defconfig | 7 +++++++ doc/README.qemu-arm | 6 ++++++ include/configs/qemu-arm.h | 8 +++++++- 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/configs/qemu_arm64_defconfig b/configs/qemu_arm64_defconfig index f4502c9e9f..0f13716c2e 100644 --- a/configs/qemu_arm64_defconfig +++ b/configs/qemu_arm64_defconfig @@ -29,3 +29,10 @@ CONFIG_USB=y CONFIG_DM_USB=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_PCI=y +CONFIG_ENV_IS_IN_FLASH=y +CONFIG_MTD=y +CONFIG_MTD_NOR_FLASH=y +CONFIG_FLASH_CFI_DRIVER=y +CONFIG_CFI_FLASH=y +CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y +CONFIG_SYS_FLASH_CFI=y diff --git a/configs/qemu_arm_defconfig b/configs/qemu_arm_defconfig index acebdc5a4e..b75363e305 100644 --- a/configs/qemu_arm_defconfig +++ b/configs/qemu_arm_defconfig @@ -29,3 +29,10 @@ CONFIG_USB=y CONFIG_DM_USB=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_PCI=y +CONFIG_ENV_IS_IN_FLASH=y +CONFIG_MTD=y +CONFIG_MTD_NOR_FLASH=y +CONFIG_FLASH_CFI_DRIVER=y +CONFIG_CFI_FLASH=y +CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y +CONFIG_SYS_FLASH_CFI=y diff --git a/doc/README.qemu-arm b/doc/README.qemu-arm index 260165638a..e67bc13f70 100644 --- a/doc/README.qemu-arm +++ b/doc/README.qemu-arm @@ -47,6 +47,12 @@ The minimal QEMU command line to get U-Boot up and running is: Note that for some odd reason qemu-system-aarch64 needs to be explicitly told to use a 64-bit CPU or it will boot in 32-bit mode. +Additional persistent U-boot environment support can be added as follows: +- Create envstore.img using qemu-img: + qemu-img create -f raw envstore.img 64M +- Add a pflash drive parameter to the command line: + -drive if=pflash,format=raw,index=1,file=envstore.img + Additional peripherals that have been tested to work in both U-Boot and Linux can be enabled with the following command line parameters: diff --git a/include/configs/qemu-arm.h b/include/configs/qemu-arm.h index 33dcce0f92..0431a7982d 100644 --- a/include/configs/qemu-arm.h +++ b/include/configs/qemu-arm.h @@ -21,7 +21,8 @@ #define CONFIG_SYS_HZ 1000 /* Environment options */ -#define CONFIG_ENV_SIZE SZ_64K +#define CONFIG_ENV_ADDR 0x4000000 +#define CONFIG_ENV_SIZE SZ_256K #define BOOT_TARGET_DEVICES(func) \ func(SCSI, scsi, 0) \ @@ -43,4 +44,9 @@ #define CONFIG_SYS_CBSIZE 512 +#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE +#define CONFIG_SYS_FLASH_BASE 0x0 +#define CONFIG_SYS_MAX_FLASH_BANKS 2 +#define CONFIG_SYS_MAX_FLASH_SECT 256 /* Sector: 256K, Bank: 64M */ + #endif /* __CONFIG_H */ -- 2.25.1