Skip to contentSkip to conversation

board: add support for Freescale i.MX6UL Evaluation Kit

PATCH New julien.boibessot at free.fr 2 participants 6 messages Jan 20, 2016 – Jan 21, 2016 Arm i.MX and Layerscape

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 board: add support for Freescale i.MX6UL Evaluation Kit

From: Julien BOIBESSOT <[email protected]>

---
 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
board/freescale/imx6ulevk/create-boot-sd.sh new file +92 -0
new file mode 100755
index 0000000..b3c47ae
@@ -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
board/freescale/imx6ulevk/readme.txt new file +58 -0

58 lines not on this page · raw message

configs/freescale_imx6ulevk_defconfig new file +31 -0
new file mode 100644
index 0000000..7ba5e7b
@@ -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
Signature · 1 line
2.1.4
#1 lore raw

PATCH 1/1 board: add support for Freescale i.MX6UL Evaluation Kit

Julien,

Thanks for this contribution!

board/freescale/imx6ulevk/create-boot-sd.sh

Quoted 5 lines · julien.boibessot at free.fr
board/freescale/imx6ulevk/create-boot-sd.sh new file +0 -0
new file mode 100755
index 0000000..b3c47ae

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.

configs/freescale_imx6ulevk_defconfig line 4

Quoted 10 lines
configs/freescale_imx6ulevk_defconfig new file +4 -0
new file mode 100644
index 0000000..7ba5e7b
@@ -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 ?

Quoted 17 lines
configs/freescale_imx6ulevk_defconfig new file +17 -0
+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

configs/freescale_imx6ulevk_defconfig line 31

Quoted 10 lines
configs/freescale_imx6ulevk_defconfig new file +10 -0
+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

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#2 lore raw

PATCH 1/1 board: add support for Freescale i.MX6UL Evaluation Kit

Hello Thomas,

Quoted 3 lines · Thomas Petazzoni

Julien,

Thanks for this contribution!

you're welcome ;-)

Quoted 21 lines · julien.boibessot at free.fr

board/freescale/imx6ulevk/create-boot-sd.sh

Quoted 6 lines
board/freescale/imx6ulevk/create-boot-sd.sh new file +0 -0
new file mode 100755
index 0000000..b3c47ae

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

Quoted 1 line

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 ?

Quoted 14 lines

configs/freescale_imx6ulevk_defconfig line 4

Quoted 12 lines
configs/freescale_imx6ulevk_defconfig new file +4 -0
new file mode 100644
index 0000000..7ba5e7b
@@ -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

Quoted 31 lines
Quoted 18 lines
configs/freescale_imx6ulevk_defconfig new file +17 -0
+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

configs/freescale_imx6ulevk_defconfig line 31

Quoted 10 lines
configs/freescale_imx6ulevk_defconfig new file +10 -0
+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

#3 lore raw

PATCH 1/1 board: add support for Freescale i.MX6UL Evaluation Kit

Julien,

Quoted 10 lines · Julien Boibessot

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.

Quoted 3 lines

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.

Quoted 5 lines
Quoted 2 lines

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

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#4 lore raw

PATCH 1/1 board: add support for Freescale i.MX6UL Evaluation Kit

Thomas,

Quoted 13 lines · Thomas Petazzoni

Julien,

Quoted 9 lines · Julien Boibessot

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.

Quoted 5 lines
Quoted 3 lines

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.

Quoted 6 lines
Quoted 5 lines
Quoted 3 lines

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 !

Quoted 19 lines

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:

Quoted 6 lines

"""
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

#5 lore raw

PATCH 1/1 board: add support for Freescale i.MX6UL Evaluation Kit

Hello,

Quoted 7 lines · Julien Boibessot
Quoted 5 lines
Quoted 3 lines

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.

Quoted 2 lines

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

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com