qemu-arm: Add persistent environment support
authorSumit Garg <sumit.garg@linaro.org>
Mon, 26 Nov 2018 11:20:17 +0000 (16:50 +0530)
committerTom Rini <trini@konsulko.com>
Wed, 12 Dec 2018 17:14:21 +0000 (12:14 -0500)
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 <sumit.garg@linaro.org>
configs/qemu_arm64_defconfig
configs/qemu_arm_defconfig
doc/README.qemu-arm
include/configs/qemu-arm.h

index f4502c9..0f13716 100644 (file)
@@ -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
index acebdc5..b75363e 100644 (file)
@@ -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
index 2601656..e67bc13 100644 (file)
@@ -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:
 
index 33dcce0..0431a79 100644 (file)
@@ -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 */