diff mbox

[v3,2/3] board/altera: added genimage script to SoCkit

Message ID 1484925159-25292-3-git-send-email-lucas.bajolet@savoirfairelinux.com
State Changes Requested
Headers show

Commit Message

Lucas Bajolet Jan. 20, 2017, 3:12 p.m. UTC
Previously, the Altera SoCkit image has to be built manually by
the developer who wanted to use it.

This patch introduces a `genimage.cfg` file to build the image
automatically when done building the files from source.

Signed-off-by: Lucas Bajolet <lucas.bajolet@savoirfairelinux.com>
---
 board/altera/genimage.cfg       | 31 +++++++++++++++++++++++++++++++
 board/altera/post-image.sh      | 29 ++++++++++++++++++++++++++++-
 configs/altera_sockit_defconfig |  1 +
 3 files changed, 60 insertions(+), 1 deletion(-)
 create mode 100644 board/altera/genimage.cfg

Comments

Thomas Petazzoni Jan. 24, 2017, 5:13 a.m. UTC | #1
Hello,

On Fri, 20 Jan 2017 10:12:38 -0500, Lucas Bajolet wrote:
> Previously, the Altera SoCkit image has to be built manually by
> the developer who wanted to use it.
> 
> This patch introduces a `genimage.cfg` file to build the image
> automatically when done building the files from source.
> 
> Signed-off-by: Lucas Bajolet <lucas.bajolet@savoirfairelinux.com>

This is really good to have.

> diff --git a/board/altera/genimage.cfg b/board/altera/genimage.cfg
> new file mode 100644
> index 0000000..3107939
> --- /dev/null
> +++ b/board/altera/genimage.cfg
> @@ -0,0 +1,31 @@
> +image rootfs-img.vfat {

This really isn't the "root filesystem".

> +	vfat {
> +		file "socfpga.dtb" {image = "socfpga_cyclone5_sockit.dtb"}
> +		file "zImage" {image = "zImage"}
> +	}
> +
> +	size = 10M
> +}
> +
> +image sockit_image.img {
> +	hdimage {
> +	}
> +
> +	partition uboot {
> +		partition-type = 0xa2
> +		image = "uboot-part.img"
> +		offset = 0
> +	}
> +
> +	partition rootfs {
> +		partition-type = 0xb
> +		image = "rootfs-img.vfat"
> +		offset = 1M
> +	}
> +
> +	partition linux {
> +		partition-type = 0x83
> +		image = "rootfs.ext2"
> +		offset = 12M
> +	}

This layout is weird, because it doesn't match the U-Boot default
environment (as exposed in my review of PATCH 1/3). I imagine that if
U-Boot is using partition 1 to store the kernel+DTB and partition 2 to
store the root filesystem, it's because there is no need for a
partition to store the bootloader itself, it can probably be stored raw
at the beginning of the SD card ?

>  # create a DTB file copy with the name expected by the u-boot config
>  # Name of the DTB is passed as the second argument to the script.
> -cp -af $BINARIES_DIR/${2}.dtb  $BINARIES_DIR/socfpga.dtb

So you're removing the code, but not the comment that explains what it
does? This seems weird :)

> +set -e
> +
> +BOARD_DIR=$(dirname $0)
> +
> +# Create SPL + bootloader image
> +fallocate -l 1M $BINARIES_DIR/uboot-part.img
> +dd if=$BINARIES_DIR/u-boot-spl.bin of=$BINARIES_DIR/uboot-part.img bs=64k seek=0
> +dd if=$BINARIES_DIR/u-boot-spl.bin.crc of=$BINARIES_DIR/uboot-part.img bs=64k seek=1
> +dd if=$BINARIES_DIR/u-boot.img of=$BINARIES_DIR/uboot-part.img bs=64k seek=4

I guess this really doesn't need a partition, right?

> +#########################################
> +# Final image generation (using genimage)
> +#########################################
> +# Prepare data for image
> +T=`mktemp -d`
> +echo $T
> +mkdir -p $T/root
> +mkdir -p $T/tmp

Please look at how other genimage scripts do this instead of using a
different solution. See board/raspberrypi/post-image.sh for example.

> diff --git a/configs/altera_sockit_defconfig b/configs/altera_sockit_defconfig
> index 9349ebc..fef54ac 100644
> --- a/configs/altera_sockit_defconfig
> +++ b/configs/altera_sockit_defconfig
> @@ -11,6 +11,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y
>  
>  BR2_ROOTFS_POST_IMAGE_SCRIPT="board/altera/post-image.sh"
>  BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_LINUX_KERNEL_INTREE_DTS_NAME)"
> +BR2_PACKAGE_HOST_GENIMAGE=y

You also need:

BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_MTOOLS=y

if your genimage configuration creates a FAT partition (which it
currently does).

Thanks!

Thomas
diff mbox

Patch

diff --git a/board/altera/genimage.cfg b/board/altera/genimage.cfg
new file mode 100644
index 0000000..3107939
--- /dev/null
+++ b/board/altera/genimage.cfg
@@ -0,0 +1,31 @@ 
+image rootfs-img.vfat {
+	vfat {
+		file "socfpga.dtb" {image = "socfpga_cyclone5_sockit.dtb"}
+		file "zImage" {image = "zImage"}
+	}
+
+	size = 10M
+}
+
+image sockit_image.img {
+	hdimage {
+	}
+
+	partition uboot {
+		partition-type = 0xa2
+		image = "uboot-part.img"
+		offset = 0
+	}
+
+	partition rootfs {
+		partition-type = 0xb
+		image = "rootfs-img.vfat"
+		offset = 1M
+	}
+
+	partition linux {
+		partition-type = 0x83
+		image = "rootfs.ext2"
+		offset = 12M
+	}
+}
diff --git a/board/altera/post-image.sh b/board/altera/post-image.sh
index 03e7819..a9aefc9 100755
--- a/board/altera/post-image.sh
+++ b/board/altera/post-image.sh
@@ -5,4 +5,31 @@ 
 
 # create a DTB file copy with the name expected by the u-boot config
 # Name of the DTB is passed as the second argument to the script.
-cp -af $BINARIES_DIR/${2}.dtb  $BINARIES_DIR/socfpga.dtb
+set -e
+
+BOARD_DIR=$(dirname $0)
+
+# Create SPL + bootloader image
+fallocate -l 1M $BINARIES_DIR/uboot-part.img
+dd if=$BINARIES_DIR/u-boot-spl.bin of=$BINARIES_DIR/uboot-part.img bs=64k seek=0
+dd if=$BINARIES_DIR/u-boot-spl.bin.crc of=$BINARIES_DIR/uboot-part.img bs=64k seek=1
+dd if=$BINARIES_DIR/u-boot.img of=$BINARIES_DIR/uboot-part.img bs=64k seek=4
+
+#########################################
+# Final image generation (using genimage)
+#########################################
+# Prepare data for image
+T=`mktemp -d`
+echo $T
+mkdir -p $T/root
+mkdir -p $T/tmp
+
+echo "* Generating sd-card image..."
+genimage \
+        --config $BOARD_DIR/genimage.cfg \
+        --rootpath $T/root \
+        --tmppath $T/tmp \
+        --inputpath $BINARIES_DIR \
+        --outputpath $BINARIES_DIR \
+
+rm -rf $T
diff --git a/configs/altera_sockit_defconfig b/configs/altera_sockit_defconfig
index 9349ebc..fef54ac 100644
--- a/configs/altera_sockit_defconfig
+++ b/configs/altera_sockit_defconfig
@@ -11,6 +11,7 @@  BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y
 
 BR2_ROOTFS_POST_IMAGE_SCRIPT="board/altera/post-image.sh"
 BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_LINUX_KERNEL_INTREE_DTS_NAME)"
+BR2_PACKAGE_HOST_GENIMAGE=y
 
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_GIT=y