* [Buildroot] [PATCH] board: add support for Freescale i.MX6UL Evaluation Kit
@ 2016-01-20 14:30 julien.boibessot at free.fr
2016-01-20 20:10 ` Thomas Petazzoni
0 siblings, 1 reply; 6+ messages in thread
From: julien.boibessot at free.fr @ 2016-01-20 14:30 UTC (permalink / raw)
To: buildroot
From: Julien BOIBESSOT <julien.boibessot@armadeus.com>
Signed-off-by: Julien BOIBESSOT <julien.boibessot@armadeus.com>
---
board/freescale/imx6ulevk/create-boot-sd.sh | 92 +++++++++++++++++++++++++++++
board/freescale/imx6ulevk/readme.txt | 58 ++++++++++++++++++
configs/freescale_imx6ulevk_defconfig | 31 ++++++++++
3 files changed, 181 insertions(+)
create mode 100755 board/freescale/imx6ulevk/create-boot-sd.sh
create mode 100644 board/freescale/imx6ulevk/readme.txt
create mode 100644 configs/freescale_imx6ulevk_defconfig
diff --git a/board/freescale/imx6ulevk/create-boot-sd.sh b/board/freescale/imx6ulevk/create-boot-sd.sh
new file mode 100755
index 0000000..b3c47ae
--- /dev/null
+++ b/board/freescale/imx6ulevk/create-boot-sd.sh
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+set -u
+set -e
+
+PROGNAME=$(basename $0)
+
+usage()
+{
+ echo "Create an SD card that boots on an i.MX6UL EVK board."
+ echo
+ echo "Note: all data on the the card will be completely deleted!"
+ echo "Use with care!"
+ echo "Superuser permissions may be required to write to the device."
+ echo
+ echo "Usage: ${PROGNAME} <sd_block_device>"
+ echo "Arguments:"
+ echo " <sd_block_device> The device to be written to"
+ echo
+ echo "Example: ${PROGNAME} /dev/mmcblk0"
+ echo
+}
+
+if [ $# -ne 1 ]; then
+ usage
+ exit 1
+fi
+
+if [ $(id -u) -ne 0 ]; then
+ echo "${PROGNAME} must be run as root"
+ exit 1
+fi
+
+DEV=${1}
+
+# The partition name prefix depends on the device name:
+# - /dev/sde -> /dev/sde1
+# - /dev/mmcblk0 -> /dev/mmcblk0p1
+if echo ${DEV}|grep -q mmcblk ; then
+ PART="p"
+else
+ PART=""
+fi
+
+PART1=${DEV}${PART}1
+PART2=${DEV}${PART}2
+
+# Unmount the partitions if mounted
+umount ${PART1} || true
+umount ${PART2} || true
+
+# First, clear the card
+dd if=/dev/zero of=${DEV} bs=1M count=20
+
+sync
+
+# Partition the card.
+# SD layout for i.MX6UL boot (mimic Freescale's .sdcard):
+# - FAT partition at offset 8192 containing zImage and dtbs
+# - ext2/3 partition formatted as ext2 or ext3, containing the root filesystem.
+sfdisk --force -u S ${DEV} <<EOF
+8192,16384,c
+24576,1703936,83
+EOF
+
+sync
+
+# Copy the bootloader@offset 1024
+dd if=output/images/u-boot.imx of=${DEV} obs=512 seek=2
+
+# Prepare a temp dir for mounting partitions
+TMPDIR=$(mktemp -d)
+
+# FAT partition: kernel
+mkfs.vfat ${PART1}
+mount ${PART1} ${TMPDIR}
+cp output/images/zImage ${TMPDIR}/
+cp output/images/*.dtb ${TMPDIR}/ || true
+sync
+umount ${TMPDIR}
+
+# ext2 partition: root filesystem
+mkfs.ext2 ${PART2}
+mount ${PART2} ${TMPDIR}
+tar -C ${TMPDIR}/ -xf output/images/rootfs.tar
+sync
+umount ${TMPDIR}
+
+# Cleanup
+rmdir ${TMPDIR}
+sync
+echo Done
diff --git a/board/freescale/imx6ulevk/readme.txt b/board/freescale/imx6ulevk/readme.txt
new file mode 100644
index 0000000..024b9b9
--- /dev/null
+++ b/board/freescale/imx6ulevk/readme.txt
@@ -0,0 +1,58 @@
+***************************
+Freescale i.MX6UL EVK board
+***************************
+
+This file documents the Buildroot support for the Freescale i.MX6UL EVK board.
+
+Please read the i.MX6UL Evaluation Kit Quick Start Guide [1] for an
+introduction to the board.
+
+Build
+=====
+
+First, configure Buildroot for your i.MX6UL EVK board:
+
+ make freescale_imx6ulevk_defconfig
+
+Build all components:
+
+ make
+
+You will find in ./output/images/ the following files:
+ - imx6ul-14x14-evk.dtb
+ - rootfs.tar
+ - u-boot.imx
+ - zImage
+
+Create a bootable microSD card
+==============================
+
+To determine the device associated to the microSD card have a look in the
+/proc/partitions file:
+
+ cat /proc/partitions
+
+Run the following script as root on your microSD card. This will partition the
+card and copy the bootloader, kernel and root filesystem as needed.
+
+*** WARNING! The script will destroy all the card content. Use with care! ***
+
+ ./board/freescale/imx6ulevk/create-boot-sd.sh <your-microsd-device>
+
+Boot the i.MX6UL EVK board
+=========================
+
+To boot your newly created system (refer to the i.MX6UL EVK Quick Start Guide
+[1] for guidance):
+- insert the microSD card in the microSD slot of the board;
+- verify that your i.MX6UL EVK board jumpers and switches are set as mentioned
+ in the i.MX6UL EVK Quick Start Guide [1];
+- put a micro USB cable into the Debug USB Port and connect using a terminal
+ emulator at 115200 bps, 8n1;
+- power on the board.
+
+Enjoy!
+
+References
+==========
+[1] http://cache.freescale.com/files/32bit/doc/quick_start_guide/IMX6ULTRALITEQSG.pdf
diff --git a/configs/freescale_imx6ulevk_defconfig b/configs/freescale_imx6ulevk_defconfig
new file mode 100644
index 0000000..7ba5e7b
--- /dev/null
+++ b/configs/freescale_imx6ulevk_defconfig
@@ -0,0 +1,31 @@
+# architecture
+BR2_arm=y
+BR2_cortex_a7=y
+BR2_ARM_EABI=y
+BR2_ARM_FPU_NEON=y
+
+# toolchain
+BR2_KERNEL_HEADERS_VERSION=y
+BR2_DEFAULT_KERNEL_VERSION="3.14.28"
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y
+
+# system
+BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0"
+
+# kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_GIT=y
+BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-2.6-imx.git"
+BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="imx_3.14.38_6ul_ga"
+BR2_LINUX_KERNEL_DEFCONFIG="imx_v7"
+BR2_LINUX_KERNEL_ZIMAGE=y
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-14x14-evk"
+
+# bootloader
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BOARDNAME="mx6ul_14x14_evk"
+BR2_TARGET_UBOOT_CUSTOM_GIT=y
+BR2_TARGET_UBOOT_CUSTOM_REPO_URL="git://git.freescale.com/imx/uboot-imx.git"
+BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="imx_v2015.04_3.14.38_6ul_ga"
+BR2_TARGET_UBOOT_FORMAT_IMX=y
--
2.1.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] board: add support for Freescale i.MX6UL Evaluation Kit
2016-01-20 14:30 [Buildroot] [PATCH] board: add support for Freescale i.MX6UL Evaluation Kit julien.boibessot at free.fr
@ 2016-01-20 20:10 ` Thomas Petazzoni
2016-01-21 11:40 ` Julien Boibessot
0 siblings, 1 reply; 6+ messages in thread
From: Thomas Petazzoni @ 2016-01-20 20:10 UTC (permalink / raw)
To: buildroot
Julien,
Thanks for this contribution!
On Wed, 20 Jan 2016 15:30:20 +0100, julien.boibessot at free.fr wrote:
> diff --git a/board/freescale/imx6ulevk/create-boot-sd.sh b/board/freescale/imx6ulevk/create-boot-sd.sh
> new file mode 100755
> index 0000000..b3c47ae
> --- /dev/null
> +++ b/board/freescale/imx6ulevk/create-boot-sd.sh
Could you instead use genimage rather than providing a script to create
the SD card contents ?
You can look at the following examples:
board/cubietech/cubieboard2/genimage.cfg
board/via/imx6_vab820/genimage.cfg
board/intel/galileo/genimage.cfg
board/raspberrypi/genimage-raspberrypi.cfg
board/raspberrypi/genimage-raspberrypi2.cfg
board/orangepi/orangepipc/genimage.cfg
board/wandboard/genimage.cfg
The wandboard one should be particularly useful, since it's also an i.MX6 board.
> diff --git a/configs/freescale_imx6ulevk_defconfig b/configs/freescale_imx6ulevk_defconfig
> new file mode 100644
> index 0000000..7ba5e7b
> --- /dev/null
> +++ b/configs/freescale_imx6ulevk_defconfig
> @@ -0,0 +1,31 @@
> +# architecture
> +BR2_arm=y
> +BR2_cortex_a7=y
> +BR2_ARM_EABI=y
Why ? Any reason to use EABI over EABIhf, which is now the default in
Buildroot for Cortex-A processors ?
> +BR2_ARM_FPU_NEON=y
> +
> +# toolchain
> +BR2_KERNEL_HEADERS_VERSION=y
> +BR2_DEFAULT_KERNEL_VERSION="3.14.28"
> +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y
> +
> +# system
> +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0"
> +
> +# kernel
> +BR2_LINUX_KERNEL=y
> +BR2_LINUX_KERNEL_CUSTOM_GIT=y
> +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-2.6-imx.git"
> +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="imx_3.14.38_6ul_ga"
> +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7"
> +BR2_LINUX_KERNEL_ZIMAGE=y
> +BR2_LINUX_KERNEL_DTS_SUPPORT=y
> +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-14x14-evk"
> +
> +# bootloader
> +BR2_TARGET_UBOOT=y
> +BR2_TARGET_UBOOT_BOARDNAME="mx6ul_14x14_evk"
> +BR2_TARGET_UBOOT_CUSTOM_GIT=y
> +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="git://git.freescale.com/imx/uboot-imx.git"
> +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="imx_v2015.04_3.14.38_6ul_ga"
> +BR2_TARGET_UBOOT_FORMAT_IMX=y
The rest looks good to me. Thanks a lot!
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] board: add support for Freescale i.MX6UL Evaluation Kit
2016-01-20 20:10 ` Thomas Petazzoni
@ 2016-01-21 11:40 ` Julien Boibessot
2016-01-21 12:32 ` Thomas Petazzoni
0 siblings, 1 reply; 6+ messages in thread
From: Julien Boibessot @ 2016-01-21 11:40 UTC (permalink / raw)
To: buildroot
Hello Thomas,
On 20/01/2016 21:10, Thomas Petazzoni wrote:
> Julien,
>
> Thanks for this contribution!
you're welcome ;-)
>
> On Wed, 20 Jan 2016 15:30:20 +0100, julien.boibessot at free.fr wrote:
>
>> diff --git a/board/freescale/imx6ulevk/create-boot-sd.sh b/board/freescale/imx6ulevk/create-boot-sd.sh
>> new file mode 100755
>> index 0000000..b3c47ae
>> --- /dev/null
>> +++ b/board/freescale/imx6ulevk/create-boot-sd.sh
> Could you instead use genimage rather than providing a script to create
> the SD card contents ?
>
> You can look at the following examples:
>
> board/cubietech/cubieboard2/genimage.cfg
> board/via/imx6_vab820/genimage.cfg
> board/intel/galileo/genimage.cfg
> board/raspberrypi/genimage-raspberrypi.cfg
> board/raspberrypi/genimage-raspberrypi2.cfg
> board/orangepi/orangepipc/genimage.cfg
> board/wandboard/genimage.cfg
>
> The wandboard one should be particularly useful, since it's also an i.MX6 board.
I first started to use genimage, yes, but as I wanted to mimic Freescale
microSD partitionning I was stucked by the fact that genimage
(apparently) doesn't handle VFAT partitions. Indeed i.MX6UL microSD
Freescale's format is:
* 1MB free
* U-Boot
* VFAT partition starting at offset 8M to store kernel and dtbs (size 16MB)
* EXT2 rootfs on the remaining space.
So I ended up in using i.XM28EVK way of doing
(board/freescale/imx28evk/create-boot-sd.sh).
Do you agree ?
>
>
>> diff --git a/configs/freescale_imx6ulevk_defconfig b/configs/freescale_imx6ulevk_defconfig
>> new file mode 100644
>> index 0000000..7ba5e7b
>> --- /dev/null
>> +++ b/configs/freescale_imx6ulevk_defconfig
>> @@ -0,0 +1,31 @@
>> +# architecture
>> +BR2_arm=y
>> +BR2_cortex_a7=y
>> +BR2_ARM_EABI=y
> Why ? Any reason to use EABI over EABIhf, which is now the default in
> Buildroot for Cortex-A processors ?
Well i.MX6UL has no VFPU, only a NEON, so I thought it was a good idea,
no ? :-)
Regards,
Julien
>
>> +BR2_ARM_FPU_NEON=y
>> +
>> +# toolchain
>> +BR2_KERNEL_HEADERS_VERSION=y
>> +BR2_DEFAULT_KERNEL_VERSION="3.14.28"
>> +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y
>> +
>> +# system
>> +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0"
>> +
>> +# kernel
>> +BR2_LINUX_KERNEL=y
>> +BR2_LINUX_KERNEL_CUSTOM_GIT=y
>> +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-2.6-imx.git"
>> +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="imx_3.14.38_6ul_ga"
>> +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7"
>> +BR2_LINUX_KERNEL_ZIMAGE=y
>> +BR2_LINUX_KERNEL_DTS_SUPPORT=y
>> +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-14x14-evk"
>> +
>> +# bootloader
>> +BR2_TARGET_UBOOT=y
>> +BR2_TARGET_UBOOT_BOARDNAME="mx6ul_14x14_evk"
>> +BR2_TARGET_UBOOT_CUSTOM_GIT=y
>> +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="git://git.freescale.com/imx/uboot-imx.git"
>> +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="imx_v2015.04_3.14.38_6ul_ga"
>> +BR2_TARGET_UBOOT_FORMAT_IMX=y
> The rest looks good to me. Thanks a lot!
>
> Thomas
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] board: add support for Freescale i.MX6UL Evaluation Kit
2016-01-21 11:40 ` Julien Boibessot
@ 2016-01-21 12:32 ` Thomas Petazzoni
2016-01-21 14:02 ` Julien Boibessot
0 siblings, 1 reply; 6+ messages in thread
From: Thomas Petazzoni @ 2016-01-21 12:32 UTC (permalink / raw)
To: buildroot
Julien,
On Thu, 21 Jan 2016 12:40:39 +0100, Julien Boibessot wrote:
>
> I first started to use genimage, yes, but as I wanted to mimic Freescale
> microSD partitionning I was stucked by the fact that genimage
> (apparently) doesn't handle VFAT partitions. Indeed i.MX6UL microSD
> Freescale's format is:
> * 1MB free
> * U-Boot
> * VFAT partition starting at offset 8M to store kernel and dtbs (size 16MB)
> * EXT2 rootfs on the remaining space.
>
> So I ended up in using i.XM28EVK way of doing
> (board/freescale/imx28evk/create-boot-sd.sh).
> Do you agree ?
genimage is perfectly capable of creating a vfat partition, see
board/raspberrypi/genimage-raspberrypi.cfg for an example.
> > Why ? Any reason to use EABI over EABIhf, which is now the default in
> > Buildroot for Cortex-A processors ?
>
> Well i.MX6UL has no VFPU, only a NEON, so I thought it was a good idea,
> no ? :-)
What is your source for this information, because it seems to be wrong.
According to ARM
(http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0463f/index.html):
"""
The Cortex-A7 MPCore processor implements the ARMv7-A architecture with
the following architecture extensions:
[...]
- Vector Floating-Point version 4 (VFPv4) architecture extension for
floating-point computation that is fully compliant with the IEEE 754
standard.
"""
So, the Cortex-A7 (which is the core used in the i.MX6UL) has a
mandatory VFPv4 unit.
Also, according to Freescale
(http://cache.nxp.com/files/32bit/doc/fact_sheet/IMX6SRSFS.pdf), in
the column for i.MX6UL:
"""
128 KB L2 cache, NEON?, VFP, TrustZone?
"""
So, please use BR2_EABIHF, and improve your systems by using hard-float
instead of soft-float :-)
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] board: add support for Freescale i.MX6UL Evaluation Kit
2016-01-21 12:32 ` Thomas Petazzoni
@ 2016-01-21 14:02 ` Julien Boibessot
2016-01-21 14:09 ` Thomas Petazzoni
0 siblings, 1 reply; 6+ messages in thread
From: Julien Boibessot @ 2016-01-21 14:02 UTC (permalink / raw)
To: buildroot
Thomas,
On 21/01/2016 13:32, Thomas Petazzoni wrote:
> Julien,
>
> On Thu, 21 Jan 2016 12:40:39 +0100, Julien Boibessot wrote:
>
>> I first started to use genimage, yes, but as I wanted to mimic Freescale
>> microSD partitionning I was stucked by the fact that genimage
>> (apparently) doesn't handle VFAT partitions. Indeed i.MX6UL microSD
>> Freescale's format is:
>> * 1MB free
>> * U-Boot
>> * VFAT partition starting at offset 8M to store kernel and dtbs (size 16MB)
>> * EXT2 rootfs on the remaining space.
>>
>> So I ended up in using i.XM28EVK way of doing
>> (board/freescale/imx28evk/create-boot-sd.sh).
>> Do you agree ?
> genimage is perfectly capable of creating a vfat partition, see
> board/raspberrypi/genimage-raspberrypi.cfg for an example.
cool ! Is that new ?
I will adapt my patch accordingly.
>
>>> Why ? Any reason to use EABI over EABIhf, which is now the default in
>>> Buildroot for Cortex-A processors ?
>> Well i.MX6UL has no VFPU, only a NEON, so I thought it was a good idea,
>> no ? :-)
> What is your source for this information, because it seems to be wrong.
Well I was relying on Freescale/NXP fact sheets at:
http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/i.mx-applications-processors-based-on-arm-cores/i.mx-6-processors/i.mx6qp/i.mx-6ultralite-processor-low-power-secure-arm-cortex-a7-core:i.MX6UL
and didn't dig more than that. My fault !
> According to ARM
> (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0463f/index.html):
>
> """
> The Cortex-A7 MPCore processor implements the ARMv7-A architecture with
> the following architecture extensions:
> [...]
> - Vector Floating-Point version 4 (VFPv4) architecture extension for
> floating-point computation that is fully compliant with the IEEE 754
> standard.
> """
>
> So, the Cortex-A7 (which is the core used in the i.MX6UL) has a
> mandatory VFPv4 unit.
>
> Also, according to Freescale
> (http://cache.nxp.com/files/32bit/doc/fact_sheet/IMX6SRSFS.pdf), in
> the column for i.MX6UL:
>
> """
> 128 KB L2 cache, NEON?, VFP, TrustZone?
> """
>
> So, please use BR2_EABIHF, and improve your systems by using hard-float
> instead of soft-float :-)
No problemo ! Can you recommend a test tool to evaluate Floating point
performances inside BR ?
Thanks for your review.
Best regards,
Julien
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] board: add support for Freescale i.MX6UL Evaluation Kit
2016-01-21 14:02 ` Julien Boibessot
@ 2016-01-21 14:09 ` Thomas Petazzoni
0 siblings, 0 replies; 6+ messages in thread
From: Thomas Petazzoni @ 2016-01-21 14:09 UTC (permalink / raw)
To: buildroot
Hello,
On Thu, 21 Jan 2016 15:02:50 +0100, Julien Boibessot wrote:
> >> So I ended up in using i.XM28EVK way of doing
> >> (board/freescale/imx28evk/create-boot-sd.sh).
> >> Do you agree ?
> > genimage is perfectly capable of creating a vfat partition, see
> > board/raspberrypi/genimage-raspberrypi.cfg for an example.
>
> cool ! Is that new ?
No, I don't think this genimage capability is new. However, what is
rather new is this raspberrypi.cfg configuration in Buildroot.
> No problemo ! Can you recommend a test tool to evaluate Floating point
> performances inside BR ?
Maybe whetstone, but I'm not sure as I've never used it.
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-01-21 14:09 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-20 14:30 [Buildroot] [PATCH] board: add support for Freescale i.MX6UL Evaluation Kit julien.boibessot at free.fr
2016-01-20 20:10 ` Thomas Petazzoni
2016-01-21 11:40 ` Julien Boibessot
2016-01-21 12:32 ` Thomas Petazzoni
2016-01-21 14:02 ` Julien Boibessot
2016-01-21 14:09 ` Thomas Petazzoni
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox