diff mbox

[v2] imx-uuc: add new package

Message ID 1460544052-31608-1-git-send-email-gary.bisson@boundarydevices.com
State Accepted
Headers show

Commit Message

Gary Bisson April 13, 2016, 10:40 a.m. UTC
This package provides the Universal Adapter user-space utility that is
used to receive commands from the Manufacturing Tool using the Freescale
UTP Protocol.

It requires a Freescale/NXP kernels whose configuration contains the
CONFIG_FSL_UTP option.

The /fat file is provided as a bootargs to the g_mass_storage driver
from U-Boot, see:
http://git.freescale.com/git/cgit.cgi/imx/uboot-imx.git/tree/include/
configs/mx6sabre_common.h?h=imx_v2015.04_3.14.52_1.1.0_ga#n116

Init scripts are provided so that the tool starts automatically at
bootup.

Tested on Nitrogen6_MAX + MFGTools.

Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
---
Hi all,

Changes v1 -> v2:
- add toolchain threads dependency
- add host-dosfstools selection
- add init scripts to start it as a daemon
- use manual install commands to control mkfs path and remove /linuxrc
- change Config.in comment

I have a few comments/questions on this new version:
- the install process still requires to use dd, hope using the system
  one is ok.
- I chose the init script number randomly (S80), hope it's ok.

Regards,
Gary
---
 package/freescale-imx/Config.in               |  1 +
 package/freescale-imx/imx-uuc/Config.in       | 19 +++++++++++++
 package/freescale-imx/imx-uuc/S80imx-uuc      | 28 +++++++++++++++++++
 package/freescale-imx/imx-uuc/imx-uuc.hash    |  1 +
 package/freescale-imx/imx-uuc/imx-uuc.mk      | 40 +++++++++++++++++++++++++++
 package/freescale-imx/imx-uuc/imx-uuc.service | 11 ++++++++
 6 files changed, 100 insertions(+)
 create mode 100644 package/freescale-imx/imx-uuc/Config.in
 create mode 100644 package/freescale-imx/imx-uuc/S80imx-uuc
 create mode 100644 package/freescale-imx/imx-uuc/imx-uuc.hash
 create mode 100644 package/freescale-imx/imx-uuc/imx-uuc.mk
 create mode 100644 package/freescale-imx/imx-uuc/imx-uuc.service

Comments

Thomas Petazzoni April 17, 2016, 8:50 p.m. UTC | #1
Hello,

The commit title should have been:

	imx-uuc: new package

(yes that's nitpicking)

On Wed, 13 Apr 2016 12:40:52 +0200, Gary Bisson wrote:
> diff --git a/package/freescale-imx/imx-uuc/Config.in b/package/freescale-imx/imx-uuc/Config.in
> new file mode 100644
> index 0000000..75e4c87
> --- /dev/null
> +++ b/package/freescale-imx/imx-uuc/Config.in
> @@ -0,0 +1,19 @@
> +config BR2_PACKAGE_IMX_UUC
> +	bool "imx-uuc"
> +	depends on BR2_TOOLCHAIN_HAS_THREADS
> +	depends on BR2_arm # Only relevant for i.MX
> +	select BR2_PACKAGE_HOST_DOSFSTOOLS
> +	help
> +	  This package provides the Universal Adapter user-space utility
> +	  that is used to receive commands from the Manufacturing Tool
> +	  using the Freescale UTP Protocol.
> +
> +	  It requires a Freescale/NXP kernel whose configuration contains
> +	  the CONFIG_FSL_UTP option.
> +
> +	  This package is provided by Freescale/NXP as-is and doesn't have
> +	  an upstream.

Some of those lines were slightly too long, so I rewrapped.

> +
> +comment "imx-uuc needs a toolchain w/ threads"
> +	depends on BR2_ARM

BR2_arm, not BR2_ARM.

> +	depends on !BR2_TOOLCHAIN_HAS_THREADS
> diff --git a/package/freescale-imx/imx-uuc/S80imx-uuc b/package/freescale-imx/imx-uuc/S80imx-uuc
> new file mode 100644
> index 0000000..8d6d8c1
> --- /dev/null
> +++ b/package/freescale-imx/imx-uuc/S80imx-uuc
> @@ -0,0 +1,28 @@
> +#!/bin/sh
> +
> +NAME=uuc
> +DAEMON=/usr/bin/$NAME
> +
> +case "$1" in
> +  start)
> +    printf "Starting $NAME: "
> +    start-stop-daemon -S -q -b -p /var/run/${NAME}.pid -x $DAEMON
> +    echo "OK"

I've added missing error checking here.

> +    ;;
> +  stop)
> +    printf "Stopping $NAME: "
> +    start-stop-daemon -K -q -p /var/run/${NAME}.pid
> +    echo "OK"

And here. I've also re-indented the init script to match the
indentation used in S50dropbear (which I believe is more or less our
reference).

> diff --git a/package/freescale-imx/imx-uuc/imx-uuc.hash b/package/freescale-imx/imx-uuc/imx-uuc.hash
> new file mode 100644
> index 0000000..aab9ea8
> --- /dev/null
> +++ b/package/freescale-imx/imx-uuc/imx-uuc.hash
> @@ -0,0 +1 @@
> +sha256 95d7f7b075f58fedc07602fbc0e5bf5212d28deea3d09cdbcbd80992dcd18482  imx-uuc-0.5.1.tar.gz

Missing source for the hash, so I've assumed it had been locally
calculated, and added the usual comment.

Applied with those changes, thanks!

Thomas
Gary Bisson April 18, 2016, 9:38 a.m. UTC | #2
Thomas, All,

On Sun, Apr 17, 2016 at 10:50 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
>
> Hello,
>
> The commit title should have been:
>
>         imx-uuc: new package
>
> (yes that's nitpicking)

No that's good to know, next time I'll make sure to name it like this.

> On Wed, 13 Apr 2016 12:40:52 +0200, Gary Bisson wrote:
> > diff --git a/package/freescale-imx/imx-uuc/Config.in b/package/freescale-imx/imx-uuc/Config.in
> > new file mode 100644
> > index 0000000..75e4c87
> > --- /dev/null
> > +++ b/package/freescale-imx/imx-uuc/Config.in
> > @@ -0,0 +1,19 @@
> > +config BR2_PACKAGE_IMX_UUC
> > +     bool "imx-uuc"
> > +     depends on BR2_TOOLCHAIN_HAS_THREADS
> > +     depends on BR2_arm # Only relevant for i.MX
> > +     select BR2_PACKAGE_HOST_DOSFSTOOLS
> > +     help
> > +       This package provides the Universal Adapter user-space utility
> > +       that is used to receive commands from the Manufacturing Tool
> > +       using the Freescale UTP Protocol.
> > +
> > +       It requires a Freescale/NXP kernel whose configuration contains
> > +       the CONFIG_FSL_UTP option.
> > +
> > +       This package is provided by Freescale/NXP as-is and doesn't have
> > +       an upstream.
>
> Some of those lines were slightly too long, so I rewrapped.

What number of characters would you like to see? I always go by the
80-character line rule.

> > +
> > +comment "imx-uuc needs a toolchain w/ threads"
> > +     depends on BR2_ARM
>
> BR2_arm, not BR2_ARM.
>
> > +     depends on !BR2_TOOLCHAIN_HAS_THREADS
> > diff --git a/package/freescale-imx/imx-uuc/S80imx-uuc b/package/freescale-imx/imx-uuc/S80imx-uuc
> > new file mode 100644
> > index 0000000..8d6d8c1
> > --- /dev/null
> > +++ b/package/freescale-imx/imx-uuc/S80imx-uuc
> > @@ -0,0 +1,28 @@
> > +#!/bin/sh
> > +
> > +NAME=uuc
> > +DAEMON=/usr/bin/$NAME
> > +
> > +case "$1" in
> > +  start)
> > +    printf "Starting $NAME: "
> > +    start-stop-daemon -S -q -b -p /var/run/${NAME}.pid -x $DAEMON
> > +    echo "OK"
>
> I've added missing error checking here.
>
> > +    ;;
> > +  stop)
> > +    printf "Stopping $NAME: "
> > +    start-stop-daemon -K -q -p /var/run/${NAME}.pid
> > +    echo "OK"
>
> And here. I've also re-indented the init script to match the
> indentation used in S50dropbear (which I believe is more or less our
> reference).

Good to know too, I actually randomly copied one init script already
present (S53neard).

> > diff --git a/package/freescale-imx/imx-uuc/imx-uuc.hash b/package/freescale-imx/imx-uuc/imx-uuc.hash
> > new file mode 100644
> > index 0000000..aab9ea8
> > --- /dev/null
> > +++ b/package/freescale-imx/imx-uuc/imx-uuc.hash
> > @@ -0,0 +1 @@
> > +sha256 95d7f7b075f58fedc07602fbc0e5bf5212d28deea3d09cdbcbd80992dcd18482  imx-uuc-0.5.1.tar.gz
>
> Missing source for the hash, so I've assumed it had been locally
> calculated, and added the usual comment.

Yes it was locally, thanks.

> Applied with those changes, thanks!

No problem, I just want to add one thing that I discovered last week,
there's a Linux equivalent of the MFGTools developed by Ixonos:
https://github.com/ixonos/utp_com

It allows to do the same thing, send flashing scripts, executing
commands, flashing partitions etc... I might add it to the host
packages some day but it unfortunately depends on libsgutils2-dev for
the scsi headers in order to build. Not sure what the best approach
is.

Thanks,
Gary
Thomas Petazzoni April 18, 2016, 9:52 a.m. UTC | #3
Hello,

On Mon, 18 Apr 2016 11:38:00 +0200, Gary Bisson wrote:

> >         imx-uuc: new package
> >
> > (yes that's nitpicking)
> 
> No that's good to know, next time I'll make sure to name it like this.

No problem, it's easy to fix :)

> > Some of those lines were slightly too long, so I rewrapped.
> 
> What number of characters would you like to see? I always go by the
> 80-character line rule.

72 characters is our rule, including the tab+2 spaces indentation.

> > And here. I've also re-indented the init script to match the
> > indentation used in S50dropbear (which I believe is more or less our
> > reference).
> 
> Good to know too, I actually randomly copied one init script already
> present (S53neard).

Our init scripts are far from being very consistent, so no problem with
this. We should probably write down a few rules, and do a bit of
cleanup work so that they look more similar.

> > Applied with those changes, thanks!
> 
> No problem, I just want to add one thing that I discovered last week,
> there's a Linux equivalent of the MFGTools developed by Ixonos:
> https://github.com/ixonos/utp_com
> 
> It allows to do the same thing, send flashing scripts, executing
> commands, flashing partitions etc... I might add it to the host
> packages some day but it unfortunately depends on libsgutils2-dev for
> the scsi headers in order to build. Not sure what the best approach
> is.

Just create a host package for libsgutils, and make host-utp-com depend
on it.

Best regards,

Thomas
diff mbox

Patch

diff --git a/package/freescale-imx/Config.in b/package/freescale-imx/Config.in
index 4a086ae..8c03190 100644
--- a/package/freescale-imx/Config.in
+++ b/package/freescale-imx/Config.in
@@ -51,6 +51,7 @@  config BR2_PACKAGE_FREESCALE_IMX_HAS_VPU
 
 source "package/freescale-imx/imx-kobs/Config.in"
 source "package/freescale-imx/imx-lib/Config.in"
+source "package/freescale-imx/imx-uuc/Config.in"
 source "package/freescale-imx/imx-vpu/Config.in"
 source "package/freescale-imx/firmware-imx/Config.in"
 if (BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 || BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53)
diff --git a/package/freescale-imx/imx-uuc/Config.in b/package/freescale-imx/imx-uuc/Config.in
new file mode 100644
index 0000000..75e4c87
--- /dev/null
+++ b/package/freescale-imx/imx-uuc/Config.in
@@ -0,0 +1,19 @@ 
+config BR2_PACKAGE_IMX_UUC
+	bool "imx-uuc"
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_arm # Only relevant for i.MX
+	select BR2_PACKAGE_HOST_DOSFSTOOLS
+	help
+	  This package provides the Universal Adapter user-space utility
+	  that is used to receive commands from the Manufacturing Tool
+	  using the Freescale UTP Protocol.
+
+	  It requires a Freescale/NXP kernel whose configuration contains
+	  the CONFIG_FSL_UTP option.
+
+	  This package is provided by Freescale/NXP as-is and doesn't have
+	  an upstream.
+
+comment "imx-uuc needs a toolchain w/ threads"
+	depends on BR2_ARM
+	depends on !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/freescale-imx/imx-uuc/S80imx-uuc b/package/freescale-imx/imx-uuc/S80imx-uuc
new file mode 100644
index 0000000..8d6d8c1
--- /dev/null
+++ b/package/freescale-imx/imx-uuc/S80imx-uuc
@@ -0,0 +1,28 @@ 
+#!/bin/sh
+
+NAME=uuc
+DAEMON=/usr/bin/$NAME
+
+case "$1" in
+  start)
+    printf "Starting $NAME: "
+    start-stop-daemon -S -q -b -p /var/run/${NAME}.pid -x $DAEMON
+    echo "OK"
+    ;;
+  stop)
+    printf "Stopping $NAME: "
+    start-stop-daemon -K -q -p /var/run/${NAME}.pid
+    echo "OK"
+    ;;
+  restart|reload)
+    $0 stop
+    sleep 1
+    $0 start
+    ;;
+  *)
+    echo "Usage: $0 {start|stop|restart}"
+    exit 1
+esac
+
+exit $?
+
diff --git a/package/freescale-imx/imx-uuc/imx-uuc.hash b/package/freescale-imx/imx-uuc/imx-uuc.hash
new file mode 100644
index 0000000..aab9ea8
--- /dev/null
+++ b/package/freescale-imx/imx-uuc/imx-uuc.hash
@@ -0,0 +1 @@ 
+sha256 95d7f7b075f58fedc07602fbc0e5bf5212d28deea3d09cdbcbd80992dcd18482  imx-uuc-0.5.1.tar.gz
diff --git a/package/freescale-imx/imx-uuc/imx-uuc.mk b/package/freescale-imx/imx-uuc/imx-uuc.mk
new file mode 100644
index 0000000..58e749e
--- /dev/null
+++ b/package/freescale-imx/imx-uuc/imx-uuc.mk
@@ -0,0 +1,40 @@ 
+################################################################################
+#
+# imx-uuc
+#
+################################################################################
+
+IMX_UUC_VERSION = 0.5.1
+IMX_UUC_SITE = $(FREESCALE_IMX_SITE)
+IMX_UUC_LICENSE = GPLv2+
+IMX_UUC_LICENSE_FILES = COPYING
+
+# mkfs.vfat is needed to create a FAT partition used by g_mass_storage
+# so Windows do not offer to format the device when connected to the PC.
+IMX_UUC_DEPENDENCIES = host-dosfstools
+
+define IMX_UUC_BUILD_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC=$(TARGET_CC)
+endef
+
+define IMX_UUC_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 755 $(@D)/uuc $(TARGET_DIR)/usr/bin/uuc
+	$(INSTALL) -D -m 755 $(@D)/sdimage $(TARGET_DIR)/usr/bin/sdimage
+	dd if=/dev/zero of=$(TARGET_DIR)/fat bs=1M count=1
+	$(HOST_DIR)/usr/sbin/mkfs.vfat $(TARGET_DIR)/fat
+endef
+
+define IMX_UUC_INSTALL_INIT_SYSV
+	$(INSTALL) -D -m 0755 package/freescale-imx/imx-uuc/S80imx-uuc \
+		$(TARGET_DIR)/etc/init.d/S80imx-uuc
+endef
+
+define IMX_UUC_INSTALL_INIT_SYSTEMD
+	$(INSTALL) -D -m 0644 package/freescale-imx/imx-uuc/imx-uuc.service \
+		$(TARGET_DIR)/usr/lib/systemd/system/imx-uuc.service
+	mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/
+	ln -fs ../../../../usr/lib/systemd/system/imx-uuc.service \
+		$(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/imx-uuc.service
+endef
+
+$(eval $(generic-package))
diff --git a/package/freescale-imx/imx-uuc/imx-uuc.service b/package/freescale-imx/imx-uuc/imx-uuc.service
new file mode 100644
index 0000000..fae7fc6
--- /dev/null
+++ b/package/freescale-imx/imx-uuc/imx-uuc.service
@@ -0,0 +1,11 @@ 
+[Unit]
+Description=i.MX Universal UTP Communication Service
+After=systemd-modules-load.service
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/uuc
+
+[Install]
+WantedBy=multi-user.target
+