[Buildroot] [git commit] fs/cramfs: add xip option

Thomas Petazzoni thomas.petazzoni at bootlin.com
Mon Apr 9 09:29:46 UTC 2018


commit: https://git.buildroot.net/buildroot/commit/?id=265aee8c51718fe7370a3dbc91048ff60eb5909c
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master

Cramfs now has the ability to XIP all ELF files.

Cc: Nicolas Pitre <nico at linaro.org>
Signed-off-by: Chris Brandt <chris.brandt at renesas.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
---
 fs/cramfs/Config.in | 20 ++++++++++++++++++++
 fs/cramfs/cramfs.mk |  8 ++++++++
 2 files changed, 28 insertions(+)

diff --git a/fs/cramfs/Config.in b/fs/cramfs/Config.in
index b11885b4f4..89f8ad52b8 100644
--- a/fs/cramfs/Config.in
+++ b/fs/cramfs/Config.in
@@ -4,3 +4,23 @@ config BR2_TARGET_ROOTFS_CRAMFS
 	  Build a cramfs root filesystem
 
 	  https://github.com/npitre/cramfs-tools
+
+if BR2_TARGET_ROOTFS_CRAMFS
+
+config BR2_TARGET_ROOTFS_CRAMFS_XIP
+	bool "Support XIP of all ELF files"
+	help
+	  For ELF files, uncompressed and properly aligned data blocks
+	  will be automatically be mapped directly into user space
+	  whenever possible providing eXecute-In-Place (XIP) from ROM
+	  of read-only segments. Data segments mapped read-write
+	  (hence they have to be copied to RAM) may still be
+	  compressed in the cramfs image in the same file along with
+	  non compressed read-only segments. Both MMU and no-MMU
+	  systems are supported. This is particularly handy for tiny
+	  embedded systems with very tight memory constraints.
+
+	  The CRAMFS_MTD Kconfig option must also be enabled in a
+	  4.15+ kernel.
+
+endif # BR2_TARGET_ROOTFS_CRAMFS
diff --git a/fs/cramfs/cramfs.mk b/fs/cramfs/cramfs.mk
index 8745c78031..9250638887 100644
--- a/fs/cramfs/cramfs.mk
+++ b/fs/cramfs/cramfs.mk
@@ -10,6 +10,14 @@ else
 CRAMFS_OPTS = -L
 endif
 
+ifeq ($(BR2_TARGET_ROOTFS_CRAMFS_XIP),y)
+ifeq ($(BR2_USE_MMU),y)
+CRAMFS_OPTS += -X -X
+else
+CRAMFS_OPTS += -X
+endif
+endif
+
 define ROOTFS_CRAMFS_CMD
 	$(HOST_DIR)/bin/mkcramfs $(CRAMFS_OPTS) $(TARGET_DIR) $@
 endef


More information about the buildroot mailing list