board: add support for Freescale i.MX6UL Evaluation Kit
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
@@ -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
@@ -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
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
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@@ -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
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
-0Could 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@@ -0,0 +1,31 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_EABI=yWhy ? 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=yconfigs/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=yThe rest looks good to me. Thanks a lot!
Thomas
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
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:
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
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