All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v3] board: Add support for Engicam i.CoreM6 Quad/Dual boards
@ 2017-04-04 18:10 Jagan Teki
  2017-04-04 20:17 ` Thomas Petazzoni
  0 siblings, 1 reply; 6+ messages in thread
From: Jagan Teki @ 2017-04-04 18:10 UTC (permalink / raw)
  To: buildroot

From: Jagan Teki <jagan@amarulasolutions.com>

Add initial support for Engicam i.CoreM6 Quad/Dual board
with below features:
- U-Boot 2017.01
- Linux 4.10
- Default packages from buildroot

Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Matteo Lisi <matteo.lisi@engicam.com>
Cc: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
---
Changes for v3:
- Rename icore with common, since creating a folder with the name of
  SOM is not make sense, becuase the defconfig is the only change.
- Update readme.txt, post-images.sh, engicam_imx6q_icore_defconfig as per
  above change.
- rebased on master
Changes for v2:
- Created icorem6 family board on engicam
- Added Quad/Dual SOM boards support
- Created well defined readme.tx with referance to board/freescale/imx6q-sabresd/
- s/imx6q_icore_defconfig/engicam_/imx6q_icore_defconfig
- Updated DEVELOPERS file
- Created genimage.cfg with added SPL and u-boot-dtb.img partitions
- Removed Latest source configs and updated with fixed version source for U-Boot, Linux
- Add board link on readme.txt
- Removed BR2_TARGET_ROOTFS_TAR_XZ=y
- Created post-image.sh with referance to board/freescale/imx6q-sabresd/

 DEVELOPERS                            |  4 +++
 board/engicam/common/genimage.cfg     | 46 ++++++++++++++++++++++++
 board/engicam/common/post-image.sh    | 54 ++++++++++++++++++++++++++++
 board/engicam/common/readme.txt       | 66 +++++++++++++++++++++++++++++++++++
 configs/engicam_imx6q_icore_defconfig | 40 +++++++++++++++++++++
 5 files changed, 210 insertions(+)
 create mode 100644 board/engicam/common/genimage.cfg
 create mode 100755 board/engicam/common/post-image.sh
 create mode 100644 board/engicam/common/readme.txt
 create mode 100644 configs/engicam_imx6q_icore_defconfig

diff --git a/DEVELOPERS b/DEVELOPERS
index c89468b..a86860d 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -802,6 +802,10 @@ F:	package/angularjs/
 N:	Ilias Apalodimas <apalos@gmail.com>
 F:	package/keepalived/
 
+N:	Jagan Teki <jagan@amarulasolutions.com>
+F:	board/engicam/
+F:	configs/engicam_imx6q_icore_defconfig
+
 N:	James Knight <james.knight@rockwellcollins.com>
 F:	package/atkmm/
 F:	package/cairomm/
diff --git a/board/engicam/common/genimage.cfg b/board/engicam/common/genimage.cfg
new file mode 100644
index 0000000..29adefe
--- /dev/null
+++ b/board/engicam/common/genimage.cfg
@@ -0,0 +1,46 @@
+# Minimal SD card image for the Freescale boards Template
+#
+# We mimic the .sdcard Freescale's image format:
+# * the SD card must have 1 kB free space at the beginning,
+# * U-Boot is dumped as is,
+# * a FAT partition at offset 8 MB is containing zImage/uImage and DTB files
+# * a single root filesystem partition is required (ext2, ext3 or ext4)
+#
+
+image boot.vfat {
+  vfat {
+    files = {
+      %FILES%
+    }
+  }
+  size = 16M
+}
+
+image sdcard.img {
+  hdimage {
+  }
+
+  partition SPL {
+    in-partition-table = "no"
+    image = "SPL"
+    offset = 1024
+  }
+
+  partition u-boot-dtb {
+    in-partition-table = "no"
+    image = "u-boot-dtb.img"
+    offset = 69K
+  }
+
+  partition boot {
+    partition-type = 0xC
+    bootable = "true"
+    image = "boot.vfat"
+    offset = 8M
+  }
+
+  partition rootfs {
+    partition-type = 0x83
+    image = "rootfs.ext2"
+  }
+}
diff --git a/board/engicam/common/post-image.sh b/board/engicam/common/post-image.sh
new file mode 100755
index 0000000..b4d982c
--- /dev/null
+++ b/board/engicam/common/post-image.sh
@@ -0,0 +1,54 @@
+#!/usr/bin/env bash
+
+#
+# dtb_list extracts the list of DTB files from BR2_LINUX_KERNEL_INTREE_DTS_NAME
+# in ${BR_CONFIG}, then prints the corresponding list of file names for the
+# genimage configuration file
+#
+dtb_list()
+{
+	local DTB_LIST="$(sed -n 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([a-z0-9 \-]*\)"$/\1/p' ${BR2_CONFIG})"
+
+	for dt in $DTB_LIST; do
+		echo -n "\"$dt.dtb\", "
+	done
+}
+
+#
+# linux_image extracts the Linux image format from BR2_LINUX_KERNEL_UIMAGE in
+# ${BR_CONFIG}, then prints the corresponding file name for the genimage
+# configuration file
+#
+linux_image()
+{
+	if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" ${BR2_CONFIG}; then
+		echo "\"uImage\""
+	else
+		echo "\"zImage\""
+	fi
+}
+
+main()
+{
+	local FILES="$(dtb_list) $(linux_image)"
+	local GENIMAGE_CFG="$(mktemp --suffix genimage.cfg)"
+	local GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
+
+	sed -e "s/%FILES%/${FILES}/" \
+		 board/engicam/common/genimage.cfg > ${GENIMAGE_CFG}
+
+	rm -rf "${GENIMAGE_TMP}"
+
+	genimage \
+		--rootpath "${TARGET_DIR}" \
+		--tmppath "${GENIMAGE_TMP}" \
+		--inputpath "${BINARIES_DIR}" \
+		--outputpath "${BINARIES_DIR}" \
+		--config "${GENIMAGE_CFG}"
+
+	rm -f ${GENIMAGE_CFG}
+
+	exit $?
+}
+
+main $@
diff --git a/board/engicam/common/readme.txt b/board/engicam/common/readme.txt
new file mode 100644
index 0000000..bafdda1
--- /dev/null
+++ b/board/engicam/common/readme.txt
@@ -0,0 +1,66 @@
+*****************************************
+Buildroot for Engicam i.MX6 SOM platforms:
+*****************************************
+
+This file documents the Buildroot support for all Engicam i.MX6 SOM
+platform boards.
+
+i.CoreM6 Quad/Dual SOM Starter kits:
+http://www.engicam.com/en/products/embedded/som/sodimm/i-core-m6s-dl-d-q
+
+This configuration uses U-Boot mainline and kernel mainline.
+
+Build
+=====
+
+First, configure Buildroot for the Engicam i.MX SOM's:
+
+- for i.CoreM6 Quad/Dual:
+
+  make engicam_imx6q_icore_defconfig
+
+Build all components:
+
+  make
+
+You will find the following files in output/images/:
+- for i.CoreM6 Quad/Dual:
+  - imx6q-icore.dtb
+  - rootfs.ext4
+  - rootfs.tar
+  - sdcard.img
+  - SPL
+  - u-boot-dtb.img
+  - uImage
+
+Create a bootable SD card
+=========================
+
+To determine the device associated to the SD card have a look in the
+/proc/partitions file:
+
+  cat /proc/partitions
+
+Buildroot prepares a bootable "sdcard.img" image in the output/images/
+directory, ready to be dumped on a SD card. Launch the following
+command as root:
+
+  dd if=output/images/sdcard.img of=/dev/<your-sd-device>
+
+*** WARNING! This will destroy all the card content. Use with care! ***
+
+For details about the medium image layout, see the definition in
+board/freescale/common/imx/genimage.cfg.template.
+
+Boot the i.CoreM6 boards with SD boot:
+=====================================
+
+To boot your newly created system:
+- insert the SD card in the SD slot of the board;
+- connect 3-wire RS232 serial port J28 on board, and connect with other
+  serial end or USB cable(if serial-to-usb converter used) using
+  a terminal emulator at 115200 bps, 8n1;
+- close JM3 for sd boot.
+- power on the board.
+
+Enjoy!
diff --git a/configs/engicam_imx6q_icore_defconfig b/configs/engicam_imx6q_icore_defconfig
new file mode 100644
index 0000000..4278eeb
--- /dev/null
+++ b/configs/engicam_imx6q_icore_defconfig
@@ -0,0 +1,40 @@
+BR2_arm=y
+BR2_cortex_a9=y
+BR2_ARM_ENABLE_NEON=y
+BR2_ARM_ENABLE_VFP=y
+BR2_ARM_FPU_VFPV3=y
+
+# System
+BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3"
+
+# required tools to create the SD card image
+BR2_PACKAGE_HOST_DOSFSTOOLS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_MTOOLS=y
+
+# Filesystem
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/engicam/common/post-image.sh"
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+
+# Bootloader
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.01"
+BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6q_icore_mmc"
+BR2_TARGET_UBOOT_NEEDS_DTC=y
+BR2_TARGET_UBOOT_NEEDS_OPENSSL=y
+BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y
+BR2_TARGET_UBOOT_SPL=y
+BR2_TARGET_UBOOT_SPL_NAME="SPL"
+
+# Kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10"
+BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7"
+BR2_LINUX_KERNEL_UIMAGE=y
+BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000"
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-icore imx6dl-icore"
-- 
1.9.1

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH v3] board: Add support for Engicam i.CoreM6 Quad/Dual boards
  2017-04-04 18:10 [Buildroot] [PATCH v3] board: Add support for Engicam i.CoreM6 Quad/Dual boards Jagan Teki
@ 2017-04-04 20:17 ` Thomas Petazzoni
  2017-04-05 15:56   ` Jagan Teki
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Petazzoni @ 2017-04-04 20:17 UTC (permalink / raw)
  To: buildroot

Hello,

On Tue,  4 Apr 2017 23:40:12 +0530, Jagan Teki wrote:
> From: Jagan Teki <jagan@amarulasolutions.com>
> 
> Add initial support for Engicam i.CoreM6 Quad/Dual board
> with below features:
> - U-Boot 2017.01
> - Linux 4.10
> - Default packages from buildroot
> 
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Matteo Lisi <matteo.lisi@engicam.com>
> Cc: Michael Trimarchi <michael@amarulasolutions.com>
> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>

Thanks, looking better.

> diff --git a/board/engicam/common/post-image.sh b/board/engicam/common/post-image.sh

Why do we have this 'common' folder, and this very flexible script? Do
you intend to submit the support for other boards?

This script is exactly the same as the one in
board/freescale/common/imx/post-image.sh, I definitely would like to
avoid duplication.

For now, if you're trying to submit the support for a single board, I
would suggest that you:

 1. Use a "fixed" genimage.cfg, i.e without %FILES% or %DTBS%

 2. Use support/scripts/genimage.sh

> +# Kernel
> +BR2_LINUX_KERNEL=y
> +BR2_LINUX_KERNEL_CUSTOM_VERSION=y
> +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10"

Since you're using a 4.10 kernel, you also need to set:

BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_10=y

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH v3] board: Add support for Engicam i.CoreM6 Quad/Dual boards
  2017-04-04 20:17 ` Thomas Petazzoni
@ 2017-04-05 15:56   ` Jagan Teki
  2017-04-05 16:19     ` Thomas Petazzoni
  2017-04-05 16:32     ` Arnout Vandecappelle
  0 siblings, 2 replies; 6+ messages in thread
From: Jagan Teki @ 2017-04-05 15:56 UTC (permalink / raw)
  To: buildroot

On Wed, Apr 5, 2017 at 1:47 AM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Hello,
>
> On Tue,  4 Apr 2017 23:40:12 +0530, Jagan Teki wrote:
>> From: Jagan Teki <jagan@amarulasolutions.com>
>>
>> Add initial support for Engicam i.CoreM6 Quad/Dual board
>> with below features:
>> - U-Boot 2017.01
>> - Linux 4.10
>> - Default packages from buildroot
>>
>> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
>> Cc: Matteo Lisi <matteo.lisi@engicam.com>
>> Cc: Michael Trimarchi <michael@amarulasolutions.com>
>> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
>
> Thanks, looking better.
>
>> diff --git a/board/engicam/common/post-image.sh b/board/engicam/common/post-image.sh
>
> Why do we have this 'common' folder, and this very flexible script? Do
> you intend to submit the support for other boards?

I would like to add more boards in couple of days, the main intention
of adding common is to place file for common if any specific board
have any specific changes I will create board name file.

>
> This script is exactly the same as the one in
> board/freescale/common/imx/post-image.sh, I definitely would like to
> avoid duplication.

Same, but calling genimage.cfg is different in engicam vs freescale common.

>
> For now, if you're trying to submit the support for a single board, I
> would suggest that you:
>
>  1. Use a "fixed" genimage.cfg, i.e without %FILES% or %DTBS%
>
>  2. Use support/scripts/genimage.sh

I will submit remaining boards soon, so I will keep the genimage.cfg as it is.

>
>> +# Kernel
>> +BR2_LINUX_KERNEL=y
>> +BR2_LINUX_KERNEL_CUSTOM_VERSION=y
>> +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10"
>
> Since you're using a 4.10 kernel, you also need to set:
>
> BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_10=y

Will add.

thanks!
-- 
Jagan Teki
Free Software Engineer | www.openedev.com
U-Boot, Linux | Upstream Maintainer
Hyderabad, India.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH v3] board: Add support for Engicam i.CoreM6 Quad/Dual boards
  2017-04-05 15:56   ` Jagan Teki
@ 2017-04-05 16:19     ` Thomas Petazzoni
  2017-04-05 16:54       ` Jagan Teki
  2017-04-05 16:32     ` Arnout Vandecappelle
  1 sibling, 1 reply; 6+ messages in thread
From: Thomas Petazzoni @ 2017-04-05 16:19 UTC (permalink / raw)
  To: buildroot

Hello,

On Wed, 5 Apr 2017 21:26:16 +0530, Jagan Teki wrote:

> > This script is exactly the same as the one in
> > board/freescale/common/imx/post-image.sh, I definitely would like to
> > avoid duplication.  
> 
> Same, but calling genimage.cfg is different in engicam vs freescale common.

What is different?

> > For now, if you're trying to submit the support for a single board, I
> > would suggest that you:
> >
> >  1. Use a "fixed" genimage.cfg, i.e without %FILES% or %DTBS%
> >
> >  2. Use support/scripts/genimage.sh  
> 
> I will submit remaining boards soon, so I will keep the genimage.cfg as it is.

What prevents you from using the Freescale common genimage.cfg?

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH v3] board: Add support for Engicam i.CoreM6 Quad/Dual boards
  2017-04-05 15:56   ` Jagan Teki
  2017-04-05 16:19     ` Thomas Petazzoni
@ 2017-04-05 16:32     ` Arnout Vandecappelle
  1 sibling, 0 replies; 6+ messages in thread
From: Arnout Vandecappelle @ 2017-04-05 16:32 UTC (permalink / raw)
  To: buildroot



On 05-04-17 17:56, Jagan Teki wrote:
> On Wed, Apr 5, 2017 at 1:47 AM, Thomas Petazzoni
> <thomas.petazzoni@free-electrons.com> wrote:
>> Hello,
>>
>> On Tue,  4 Apr 2017 23:40:12 +0530, Jagan Teki wrote:
>>> From: Jagan Teki <jagan@amarulasolutions.com>
>>>
>>> Add initial support for Engicam i.CoreM6 Quad/Dual board
>>> with below features:
>>> - U-Boot 2017.01
>>> - Linux 4.10
>>> - Default packages from buildroot
>>>
>>> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
>>> Cc: Matteo Lisi <matteo.lisi@engicam.com>
>>> Cc: Michael Trimarchi <michael@amarulasolutions.com>
>>> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
>>
>> Thanks, looking better.
>>
>>> diff --git a/board/engicam/common/post-image.sh b/board/engicam/common/post-image.sh
>>
>> Why do we have this 'common' folder, and this very flexible script? Do
>> you intend to submit the support for other boards?
> 
> I would like to add more boards in couple of days, the main intention
> of adding common is to place file for common if any specific board
> have any specific changes I will create board name file.
> 
>>
>> This script is exactly the same as the one in
>> board/freescale/common/imx/post-image.sh, I definitely would like to
>> avoid duplication.
> 
> Same, but calling genimage.cfg is different in engicam vs freescale common.

 Then it's better to add the path to genimage.cfg.template as an argument to the
genimage script (with a default of the current template, so you don't need to
update all the existing defconfigs).

 Better yet, factor this feature into support/scripts/genimage.sh, by adding
extra flag arguments for the dtb-list and linux-image features. That's a bit
more complicated, of course. If you do this, it would be nice to also update the
existing freescale defconfigs, but not strictly necessary.

 I'm adding Etienne in Cc, he's also working on defconfig refactoring for genimage.

 BTW, a better way to get the values is to use printvars (which works now). In
the script, you can do e.g.:

eval $(make -s O="${BASE_DIR}" printvars VARS="LINUX_IMAGE_NAME KERNEL_DTBS")

and you get the LINUX_IMAGE_NAME and KERNEL_DTBS variables in your environment.


 Regards,
 Arnout

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH v3] board: Add support for Engicam i.CoreM6 Quad/Dual boards
  2017-04-05 16:19     ` Thomas Petazzoni
@ 2017-04-05 16:54       ` Jagan Teki
  0 siblings, 0 replies; 6+ messages in thread
From: Jagan Teki @ 2017-04-05 16:54 UTC (permalink / raw)
  To: buildroot

On Wed, Apr 5, 2017 at 9:49 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Hello,
>
> On Wed, 5 Apr 2017 21:26:16 +0530, Jagan Teki wrote:
>
>> > This script is exactly the same as the one in
>> > board/freescale/common/imx/post-image.sh, I definitely would like to
>> > avoid duplication.
>>
>> Same, but calling genimage.cfg is different in engicam vs freescale common.
>
> What is different?
>
>> > For now, if you're trying to submit the support for a single board, I
>> > would suggest that you:
>> >
>> >  1. Use a "fixed" genimage.cfg, i.e without %FILES% or %DTBS%
>> >
>> >  2. Use support/scripts/genimage.sh
>>
>> I will submit remaining boards soon, so I will keep the genimage.cfg as it is.
>
> What prevents you from using the Freescale common genimage.cfg?

Freescale script doesn't suport SPL and dtb enabled u-boot.

  partition SPL {
    in-partition-table = "no"
    image = "SPL"
    offset = 1024
  }

  partition u-boot-dtb {
    in-partition-table = "no"
    image = "u-boot-dtb.img"
    offset = 69K
  }

thanks!
-- 
Jagan Teki
Free Software Engineer | www.openedev.com
U-Boot, Linux | Upstream Maintainer
Hyderabad, India.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-04-05 16:54 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-04 18:10 [Buildroot] [PATCH v3] board: Add support for Engicam i.CoreM6 Quad/Dual boards Jagan Teki
2017-04-04 20:17 ` Thomas Petazzoni
2017-04-05 15:56   ` Jagan Teki
2017-04-05 16:19     ` Thomas Petazzoni
2017-04-05 16:54       ` Jagan Teki
2017-04-05 16:32     ` Arnout Vandecappelle

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.