[OpenWrt-Devel] [PATCH v2] imx6: Adding Ka-Ro electronics TX6U-8033 Module on MB7 baseboard support
Daniel Golle
daniel at makrotopia.org
Wed Dec 4 15:35:54 EST 2019
- Previous message (by thread): [OpenWrt-Devel] [PATCH v2] imx6: Adding Ka-Ro electronics TX6U-8033 Module on MB7 baseboard support
- Next message (by thread): [OpenWrt-Devel] Караоке: Поп, Рок, Шансон, Романсы, Детские, Народные, Западные, Частушки, 70, 80, 90, и т.д. 05_08_2019 02_10 199508
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
On Wed, Dec 04, 2019 at 07:52:32PM +0100, Tomasz Maciej Nowak wrote:
> Hi,
> small nit at the end.
>
> W dniu 04.12.2019 o 19:14, Linus Lüssing pisze:
> > From: Linus Lüssing <ll at simonwunderlich.de>
> >
> > This adds support for the Ka-Ro MB7 board with a TX6U-8033 module.
> >
> > Specification, according to Linux DTS commit:
> >
> > TX6U-8033:
> > Processor Freescale i.MX 6 Dual Lite, 800MHz
> > RAM 1GiB DDR3 SDRAM
> > ROM 4GiB eMMC
> > Power supply Single 3.1V to 5.5V
> > Size 31mm SO-DIMM
> > Temp. Range industrial grade (-40°C/-25°C to 105°C Tj)
> >
> > The u-boot shipped by the vendor by default expects the following partition
> > layout:
> >
> > MBR/MSDOS, disk-id '0cc66cc0' {
> > 0cc66cc0-01 => ext2, /vmlinuz
> > 0cc66cc0-02 => ext4, rootfs
> > }
> >
> > TX6DL U-Boot > env print
> > append_bootargs=rootfstype=ext4
> > [...]
> > bootcmd_mmc=setenv autostart no;run bootargs_mmc;ext2load mmc 0 ${kerneladdr} vmlinuz
> > [...]
> > rootpart_uuid=0cc66cc0-02
> > [...]
> >
> > This is also one of the reasons, why only ext4 rootfs support was added
> > and tested so far. No squashfs support yet.
OpenWrt allows to easily ignore or even filter bootloader cmdline, this
is needed on *most* devices out there. Please add squashfs regardless,
as some features of OpenWrt (overlayfs, factory-reset, ...) are only
available when using squashfs (+f2fs in this case) and it should not
be difficult to do so. Also the rootpart_uuid should not be relevant
when using OpenWrt.
Let me know if anything is not clear of if you need help achieving
this.
> >
> > Other than that, nothing fancy needs to be added or preserved on the
> > eMMC.
> >
> > Cc: Simon Wunderlich <sw at simonwunderlich.de>
> > Signed-off-by: Linus Lüssing <ll at simonwunderlich.de>
> > ---
> >
> > Changelog v2:
> > * removed wildcard board names
> >
> > target/linux/imx6/Makefile | 2 +-
> > .../imx6/base-files/etc/board.d/02_network | 3 +-
> > target/linux/imx6/base-files/lib/imx6.sh | 4 +
> > .../base-files/lib/preinit/79_move_config | 9 ++
> > .../imx6/base-files/lib/upgrade/platform.sh | 108 +++++++++++++++++-
> > target/linux/imx6/image/Makefile | 34 ++++++
> > .../linux/imx6/image/gen_karo_sdcard_img.sh | 26 +++++
> > .../imx6/patches-4.14/100-bootargs.patch | 13 +++
> > tools/Makefile | 1 +
> > 9 files changed, 197 insertions(+), 3 deletions(-)
> > create mode 100755 target/linux/imx6/image/gen_karo_sdcard_img.sh
> >
> > diff --git a/target/linux/imx6/Makefile b/target/linux/imx6/Makefile
> > index ac4300f7eb..8083a54e16 100644
> > --- a/target/linux/imx6/Makefile
> > +++ b/target/linux/imx6/Makefile
> > @@ -20,6 +20,6 @@ include $(INCLUDE_DIR)/target.mk
> >
> > KERNELNAME:=zImage dtbs
> >
> > -DEFAULT_PACKAGES += uboot-envtools mkf2fs e2fsprogs blkid
> > +DEFAULT_PACKAGES += uboot-envtools mkf2fs e2fsprogs blkid partx-utils
> >
> > $(eval $(call BuildTarget))
> > diff --git a/target/linux/imx6/base-files/etc/board.d/02_network b/target/linux/imx6/base-files/etc/board.d/02_network
> > index 6ec667346d..c662be72b7 100755
> > --- a/target/linux/imx6/base-files/etc/board.d/02_network
> > +++ b/target/linux/imx6/base-files/etc/board.d/02_network
> > @@ -21,7 +21,8 @@ cubox-i |\
> > *gw552x)
> > ucidef_set_interfaces_lan_wan 'eth0' 'eth1'
> > ;;
> > -*wandboard)
> > +*wandboard |\
> > +tx6u-8033)
> > ucidef_set_interface_wan 'eth0'
> > ;;
> > esac
> > diff --git a/target/linux/imx6/base-files/lib/imx6.sh b/target/linux/imx6/base-files/lib/imx6.sh
> > index 68caaff15f..c4b87d1c21 100755
> > --- a/target/linux/imx6/base-files/lib/imx6.sh
> > +++ b/target/linux/imx6/base-files/lib/imx6.sh
> > @@ -99,6 +99,10 @@ imx6_board_detect() {
> > name="wandboard"
> > ;;
> >
> > + "Ka-Ro electronics TX6U-8033 Module on MB7 baseboard")
> > + name="tx6u-8033"
> > + ;;
> > +
> > *)
> > name="generic"
> > ;;
> > diff --git a/target/linux/imx6/base-files/lib/preinit/79_move_config b/target/linux/imx6/base-files/lib/preinit/79_move_config
> > index bdf397c4fc..de7196c7a1 100644
> > --- a/target/linux/imx6/base-files/lib/preinit/79_move_config
> > +++ b/target/linux/imx6/base-files/lib/preinit/79_move_config
> > @@ -15,6 +15,15 @@ move_config() {
> > umount /boot
> > fi
> > ;;
> > + tx6u-8033)
> > + local bootpart=/dev/mmcblk2p1
> > +
> > + if [ -b $bootpart ]; then
> > + mkdir -p /boot
> > + mount -t ext2 -o rw,noatime $bootpart /boot
> > + [ -f /boot/sysupgrade.tgz ] && mv -f /boot/sysupgrade.tgz /
> > + fi
> > + ;;
> > esac
> > }
> >
> > diff --git a/target/linux/imx6/base-files/lib/upgrade/platform.sh b/target/linux/imx6/base-files/lib/upgrade/platform.sh
> > index a090cc080b..9c9bed96fe 100755
> > --- a/target/linux/imx6/base-files/lib/upgrade/platform.sh
> > +++ b/target/linux/imx6/base-files/lib/upgrade/platform.sh
> > @@ -1,5 +1,5 @@
> > #
> > -# Copyright (C) 2010-2015 OpenWrt.org
> > +# Copyright (C) 2010-2019 OpenWrt.org
> > #
> >
> > . /lib/imx6.sh
> > @@ -30,6 +30,102 @@ apalis_do_upgrade() {
> > umount /boot
> > }
> >
> > +# (mostly) copied from brcm2708 platform.sh (which was copied from x86?)
> > +tx6u_8033_check_image() {
> > + local diskdev partdev diff
> > +
> > + [ "$#" -gt 1 ] && return 1
> > +
> > + export_bootdevice && export_partdevice diskdev 0 || {
> > + echo "Unable to determine upgrade device"
> > + return 1
> > + }
> > +
> > + get_partitions "/dev/$diskdev" bootdisk
> > +
> > + #extract the boot sector from the image
> > + get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b 2>/dev/null
> > +
> > + get_partitions /tmp/image.bs image
> > +
> > + #compare tables
> > + diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
> > +
> > + rm -f /tmp/image.bs /tmp/partmap.bootdisk /tmp/partmap.image
> > +
> > + if [ -n "$diff" ]; then
> > + echo "Partition layout has changed. Full image will be written."
> > + ask_bool 0 "Abort" && exit 1
> > + return 0
> > + fi
> > +
> > + return 0;
> > +}
> > +
> > +# (mostly) copied from brcm2708 platform.sh (which was copied from x86?)
> > +tx6u_8033_do_upgrade() {
> > + local diskdev partdev diff
> > +
> > + export_bootdevice && export_partdevice diskdev 0 || {
> > + echo "Unable to determine upgrade device"
> > + return 1
> > + }
> > +
> > + sync
> > +
> > + if [ "$SAVE_PARTITIONS" = "1" ]; then
> > + get_partitions "/dev/$diskdev" bootdisk
> > +
> > + #extract the boot sector from the image
> > + get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b
> > +
> > + get_partitions /tmp/image.bs image
> > +
> > + #compare tables
> > + diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
> > + else
> > + diff=1
> > + fi
> > +
> > + if [ -n "$diff" ]; then
> > + get_image "$@" | dd of="/dev/$diskdev" bs=2M conv=fsync
> > +
> > + # Separate removal and addtion is necessary; otherwise, partition 1
> > + # will be missing if it overlaps with the old partition 2
> > + partx -d - "/dev/$diskdev"
> > + partx -a - "/dev/$diskdev"
> > +
> > + return 0
> > + fi
> > +
> > + #iterate over each partition from the image and write it to the boot disk
> > + while read part start size; do
> > + if export_partdevice partdev $part; then
> > + echo "Writing image to /dev/$partdev..."
> > + get_image "$@" | dd of="/dev/$partdev" ibs="512" obs=1M skip="$start" count="$size" conv=fsync
> > + else
> > + echo "Unable to find partition $part device, skipped."
> > + fi
> > + done < /tmp/partmap.image
> > +
> > + #copy partition uuid
> > + echo "Writing new UUID to /dev/$diskdev..."
> > + get_image "$@" | dd of="/dev/$diskdev" bs=1 skip=440 count=4 seek=440 conv=fsync
> > +}
> > +
> > +# (mostly) copied from brcm2708 platform.sh (which was copied from x86?)
> > +tx6u_8033_copy_config() {
> > + local partdev
> > +
> > + if export_partdevice partdev 1; then
> > + mkdir -p /boot
> > + [ -f /boot/vmlinuz.img ] || mount -t ext4 -o rw,noatime "/dev/$partdev" /boot
> > + cp -af "$UPGRADE_BACKUP" "/boot/$BACKUP_FILE"
> > + sync
> > + unmount /boot
> > + fi
> > +}
> > +
> > platform_check_image() {
> > local board=$(board_name)
> >
> > @@ -41,6 +137,10 @@ platform_check_image() {
> > nand_do_platform_check $board $1
> > return $?;
> > ;;
> > + tx6u-8033)
> > + tx6u_8033_check_image "$1"
> > + return $?;
> > + ;;
> > esac
> >
> > echo "Sysupgrade is not yet supported on $board."
> > @@ -57,6 +157,9 @@ platform_do_upgrade() {
> > *gw5*)
> > nand_do_upgrade "$1"
> > ;;
> > + tx6u-8033)
> > + tx6u_8033_do_upgrade "$1"
> > + ;;
> > esac
> > }
> >
> > @@ -67,6 +170,9 @@ platform_copy_config() {
> > apalis*)
> > apalis_copy_config
> > ;;
> > + tx6u-8033)
> > + tx6u_8033_copy_config
> > + ;;
> > esac
> > }
> >
> > diff --git a/target/linux/imx6/image/Makefile b/target/linux/imx6/image/Makefile
> > index d1e9e9034e..34fb4a2690 100644
> > --- a/target/linux/imx6/image/Makefile
> > +++ b/target/linux/imx6/image/Makefile
> > @@ -113,6 +113,24 @@ define Build/apalis-emmc
> > $(Build/imx6-combined-image-clean)
> > endef
> >
> > +define Build/karo-boot-img
> > + $(RM) -rf $@.bootdir
> > + mkdir $@.bootdir
> > +
> > + $(CP) $(IMAGE_KERNEL) $@.bootdir/$(KERNEL_IMG)
> > +
> > + genext2fs --block-size $(BLOCKSIZE:%k=%Ki) --size-in-blocks $$((1024 * 1024 * $(CONFIG_TARGET_KERNEL_PARTSIZE) / ($(subst k,* 1024,$(BLOCKSIZE))))) --root $@.bootdir $@.boot
> > +
> > + # convert it to revision 1 - needed for u-boot ext2load
> > + $(STAGING_DIR_HOST)/bin/tune2fs -O filetype $@.boot
> > + $(STAGING_DIR_HOST)/bin/e2fsck -pDf $@.boot > /dev/null
> > +endef
> > +
> > +define Build/karo-sdcard-img
> > + ./gen_karo_sdcard_img.sh $@ $@.boot $(IMAGE_ROOTFS) $(CONFIG_TARGET_KERNEL_PARTSIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
> > +endef
> > +
> > +
> > #################################################
> > # Devices
> > #################################################
> > @@ -232,4 +250,20 @@ define Device/apalis
> > endef
> > TARGET_DEVICES += apalis
> >
> > +define Device/tx6u-8033
> > + DEVICE_TITLE := Ka-Ro electronics TX6U-8033 Module on MB7 baseboard
> > + DEVICE_DTS := imx6dl-tx6u-8033
> > + FILESYSTEMS := ext4
> > + BLOCKSIZE := 4k
> > + KERNEL_SUFFIX := -zImage
> > + KERNEL_NAME := zImage
> > + KERNEL := kernel-bin
> > + KERNEL_IMG := vmlinuz
> > + IMAGES := factory.img.gz sysupgrade.img.gz
> > + IMAGE_SIZE := 3776m
> > + IMAGE/sysupgrade.img.gz := karo-boot-img | karo-sdcard-img | check-size $$$$(IMAGE_SIZE) | gzip | append-metadata
> > + IMAGE/factory.img.gz := karo-boot-img | karo-sdcard-img | check-size $$$$(IMAGE_SIZE) | gzip
> > +endef
> > +TARGET_DEVICES += tx6u-8033
> > +
> > $(eval $(call BuildImage))
> > diff --git a/target/linux/imx6/image/gen_karo_sdcard_img.sh b/target/linux/imx6/image/gen_karo_sdcard_img.sh
Please do not introduce another gen_*_sdcard_img.sh script.
See x86 for a more modern example of how to use OpenWrt on block
(eMMC and such) devices.
> > new file mode 100755
> > index 0000000000..362ce5838b
> > --- /dev/null
> > +++ b/target/linux/imx6/image/gen_karo_sdcard_img.sh
> > @@ -0,0 +1,26 @@
> > +#!/usr/bin/env bash
> > +
> > +set -x
> > +[ $# -eq 5 ] || {
> > + echo "SYNTAX: $0 <file> <bootfs image> <rootfs image> <bootfs size> <rootfs size>"
> > + exit 1
> > +}
> > +
> > +OUTPUT="$1"
> > +BOOTFS="$2"
> > +ROOTFS="$3"
> > +BOOTFSSIZE="$4"
> > +ROOTFSSIZE="$5"
> > +
> > +head=4
> > +sect=63
> > +
> > +set `ptgen -o $OUTPUT -h $head -s $sect -l 4096 -t 83 -S 0x0cc66cc0 -p ${BOOTFSSIZE}M -t 83 -p ${ROOTFSSIZE}M`
> > +
> > +BOOTOFFSET="$(($1 / 512))"
> > +BOOTSIZE="$(($2 / 512))"
> > +ROOTFSOFFSET="$(($3 / 512))"
> > +ROOTFSSIZE="$(($4 / 512))"
> > +
> > +dd bs=512 if="$BOOTFS" of="$OUTPUT" seek="$BOOTOFFSET" conv=notrunc
> > +dd bs=512 if="$ROOTFS" of="$OUTPUT" seek="$ROOTFSOFFSET" conv=notrunc
> > diff --git a/target/linux/imx6/patches-4.14/100-bootargs.patch b/target/linux/imx6/patches-4.14/100-bootargs.patch
> > index 0954391203..6c025e15db 100644
> > --- a/target/linux/imx6/patches-4.14/100-bootargs.patch
> > +++ b/target/linux/imx6/patches-4.14/100-bootargs.patch
> > @@ -1,3 +1,16 @@
> > +--- a/arch/arm/boot/dts/imx6dl-tx6u-8033.dts
> > ++++ b/arch/arm/boot/dts/imx6dl-tx6u-8033.dts
> > +@@ -51,6 +51,10 @@
> > + display = &display;
> > + };
> > +
> > ++ chosen {
> > ++ bootargs = "console=ttymxc0,115200";
> > ++ };
> > ++
> > + backlight: backlight {
> > + compatible = "pwm-backlight";
> > + pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>;
> > --- a/arch/arm/boot/dts/imx6dl-wandboard.dts
> > +++ b/arch/arm/boot/dts/imx6dl-wandboard.dts
> > @@ -19,4 +19,8 @@
> > diff --git a/tools/Makefile b/tools/Makefile
> > index 2f57d25525..034e54c5d9 100644
> > --- a/tools/Makefile
> > +++ b/tools/Makefile
> > @@ -39,6 +39,7 @@ tools-$(BUILD_ISL) += isl
> > tools-$(CONFIG_USE_SPARSE) += sparse
> > tools-$(CONFIG_TARGET_apm821xx)$(CONFIG_TARGET_gemini) += genext2fs
> > tools-$(CONFIG_TARGET_tegra) += cbootimage cbootimage-configs
> > +tools-$(CONFIG_TARGET_imx6) += genext2fs
>
> The target for genext2fs is already specified, merge it with previous definition.
>
> >
> > # builddir dependencies
> > $(curdir)/bison/compile := $(curdir)/flex/compile
> >
>
> Regards
>
> --
> TMN
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel
- Previous message (by thread): [OpenWrt-Devel] [PATCH v2] imx6: Adding Ka-Ro electronics TX6U-8033 Module on MB7 baseboard support
- Next message (by thread): [OpenWrt-Devel] Караоке: Поп, Рок, Шансон, Романсы, Детские, Народные, Западные, Частушки, 70, 80, 90, и т.д. 05_08_2019 02_10 199508
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the openwrt-devel
mailing list