diff options
author | Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com> | 2016-12-20 21:34:46 +0900 |
---|---|---|
committer | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2016-12-22 15:29:37 +0000 |
commit | af4a22aeda5e5dfede3dd3f1a65165ccb5632ce0 (patch) | |
tree | b0833207c9fdb09902a56f46cee78e717d918cef /recipes-demo-hmi/unicens | |
parent | 6511c88c7e2a515441d22bd583b1386b104b93b5 (diff) |
Support systemd services of MOST for CES2017 Demo
This change is for booting all stuff for MOST automatically
after WindowManager launched.
All services except insmod are in systemd user mode.
Change-Id: I15043493c797511275e4f02173a85f06a7298ca0
Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
Diffstat (limited to 'recipes-demo-hmi/unicens')
4 files changed, 200 insertions, 8 deletions
diff --git a/recipes-demo-hmi/unicens/files/0001-Support-booting-by-systemd.patch b/recipes-demo-hmi/unicens/files/0001-Support-booting-by-systemd.patch new file mode 100644 index 000000000..5c18aacdc --- /dev/null +++ b/recipes-demo-hmi/unicens/files/0001-Support-booting-by-systemd.patch @@ -0,0 +1,147 @@ +From 7942933a4f1508966375326c4ee230812f504f4b Mon Sep 17 00:00:00 2001 +From: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com> +Date: Tue, 20 Dec 2016 19:04:48 +0900 +Subject: [PATCH] Support booting by systemd + +Hack for CES2017 demo integration. + +Loading modules would be done by systemd, so loadDriver.sh +could skip all insmod. + +Change-Id: I1d0d6db6faad789754707ffff127099f70150b1f +Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com> +--- + scripts/loadDriver.sh | 95 +++++++++++++++++++++++++++++---------------------- + 1 file changed, 55 insertions(+), 40 deletions(-) + +diff --git a/scripts/loadDriver.sh b/scripts/loadDriver.sh +index f55fdde..a3979cc 100755 +--- a/scripts/loadDriver.sh ++++ b/scripts/loadDriver.sh +@@ -1,4 +1,7 @@ + #!/bin/bash ++# ++# Usage: loadDriver.sh [--systemd] ++# + + if [ ! "$(whoami)" = "root" ] + then +@@ -13,63 +16,75 @@ else + echo Searching driver in folder:$(pwd) + fi + +-#unload MOST Kernel modules +-lsmod | grep "^mxc_mlb\>" > /dev/null && +- rmmod mxc_mlb && echo "unloaded mxc_mlb" ++load_modules() ++{ ++ #unload MOST Kernel modules ++ lsmod | grep "^mxc_mlb\>" > /dev/null && ++ rmmod mxc_mlb && echo "unloaded mxc_mlb" ++ ++ lsmod | grep "^hdm_dim2_mx6q\>" > /dev/null && ++ rmmod hdm_dim2_mx6q && echo "unloaded hdm_dim2_mx6q" + +-lsmod | grep "^hdm_dim2_mx6q\>" > /dev/null && +- rmmod hdm_dim2_mx6q && echo "unloaded hdm_dim2_mx6q" ++ lsmod | grep "^hdm_dim2\>" > /dev/null && ++ rmmod hdm_dim2 && echo "unloaded hdm_dim2" + +-lsmod | grep "^hdm_dim2\>" > /dev/null && +- rmmod hdm_dim2 && echo "unloaded hdm_dim2" ++ lsmod | grep "^hdm_usb\>" > /dev/null && ++ rmmod hdm_usb && echo "unloaded hdm_usb" + +-lsmod | grep "^hdm_usb\>" > /dev/null && +- rmmod hdm_usb && echo "unloaded hdm_usb" ++ lsmod | grep "^aim_sound\>" > /dev/null && ++ rmmod aim_sound && echo "unloaded aim_sound" + +-lsmod | grep "^aim_sound\>" > /dev/null && +- rmmod aim_sound && echo "unloaded aim_sound" ++ lsmod | grep "^aim_v4l2\>" > /dev/null && ++ rmmod aim_v4l2 && echo "unloaded aim_v4l2" + +-lsmod | grep "^aim_v4l2\>" > /dev/null && +- rmmod aim_v4l2 && echo "unloaded aim_v4l2" ++ lsmod | grep "^aim_cdev\>" > /dev/null && ++ rmmod aim_cdev && echo "unloaded aim_cdev" + +-lsmod | grep "^aim_cdev\>" > /dev/null && +- rmmod aim_cdev && echo "unloaded aim_cdev" ++ lsmod | grep "^aim_network\>" > /dev/null && ++ rmmod aim_network && echo "unloaded aim_network" + +-lsmod | grep "^aim_network\>" > /dev/null && +- rmmod aim_network && echo "unloaded aim_network" ++ lsmod | grep "^mostcore\>" > /dev/null && ++ rmmod mostcore && echo "unloaded mostcore" + +-lsmod | grep "^mostcore\>" > /dev/null && +- rmmod mostcore && echo "unloaded mostcore" ++ echo ++ #load V4L support ++ lsmod | grep "^media\>" || ++ insmod /lib/modules/$(uname -r)/kernel/drivers/media/media.ko + +-echo +-#load V4L support +-lsmod | grep "^media\>" || +- insmod /lib/modules/$(uname -r)/kernel/drivers/media/media.ko ++ lsmod | grep "^videodev\>" || ++ insmod /lib/modules/$(uname -r)/kernel/drivers/media/v4l2-core/videodev.ko + +-lsmod | grep "^videodev\>" || +- insmod /lib/modules/$(uname -r)/kernel/drivers/media/v4l2-core/videodev.ko ++ #load MOST Kernel modules ++ insmod mostcore.ko && echo "loaded mostcore" ++ insmod aim_cdev.ko && echo "loaded aim_cdev" + +-#load MOST Kernel modules +-insmod mostcore.ko && echo "loaded mostcore" +-insmod aim_cdev.ko && echo "loaded aim_cdev" ++ [ -e aim_network.ko ] && ++ insmod aim_network.ko && echo "loaded aim_network" + +-[ -e aim_network.ko ] && +- insmod aim_network.ko && echo "loaded aim_network" ++ [ -e aim_sound.ko ] && ++ insmod aim_sound.ko && echo "loaded sound" + +-[ -e aim_sound.ko ] && +- insmod aim_sound.ko && echo "loaded sound" ++ [ -e aim_v4l2.ko ] && ++ insmod aim_v4l2.ko && echo "loaded v4l2" + +-[ -e aim_v4l2.ko ] && +- insmod aim_v4l2.ko && echo "loaded v4l2" ++ [ -e hdm_usb.ko ] && ++ insmod hdm_usb.ko && echo "loaded hdm_usb" + +-[ -e hdm_usb.ko ] && +- insmod hdm_usb.ko && echo "loaded hdm_usb" ++ [ -e hdm_dim2.ko ] && ++ insmod hdm_dim2.ko clock_speed=4096fs fcnt=3 && echo "loaded hdm_dim2" + +-[ -e hdm_dim2.ko ] && +- insmod hdm_dim2.ko clock_speed=4096fs fcnt=3 && echo "loaded hdm_dim2" ++ [ -e hdm_dim2_mx6q.ko ] && ++ insmod hdm_dim2_mx6q.ko && echo "loaded hdm_dim2_mx6q" ++} + +-[ -e hdm_dim2_mx6q.ko ] && +- insmod hdm_dim2_mx6q.ko && echo "loaded hdm_dim2_mx6q" ++# ++# Systemd load modules when booting system already. ++# If argv[1] == "--systemd" then skip load modules ++# ++if [ "$1" != "--systemd" ]; then ++ echo "Load modules" ++ load_modules ++fi + + DEVS=/sys/devices/virtual/most/mostcore/devices + AIMS=/sys/devices/virtual/most/mostcore/aims +-- +2.7.4 + diff --git a/recipes-demo-hmi/unicens/files/most-network-manager.service b/recipes-demo-hmi/unicens/files/most-network-manager.service new file mode 100644 index 000000000..61e17b2d4 --- /dev/null +++ b/recipes-demo-hmi/unicens/files/most-network-manager.service @@ -0,0 +1,11 @@ +[Unit] +Description=Most Network Manager Service +After=WindowManager.service most-network-startup.service + +[Service] +Type=simple +ExecStart=/usr/AGL/most/MostNetworkManager -i /usr/AGL/most/config-agl.xml +Restart=always + +[Install] +WantedBy=default.target diff --git a/recipes-demo-hmi/unicens/files/most-network-startup.service b/recipes-demo-hmi/unicens/files/most-network-startup.service new file mode 100644 index 000000000..4fd037531 --- /dev/null +++ b/recipes-demo-hmi/unicens/files/most-network-startup.service @@ -0,0 +1,12 @@ +[Unit] +Description=Most Network Startup Service +After=WindowManager.service + +[Service] +Type=simple +RemainAfterExit=yes +ExecStart=/usr/AGL/most/loadDriver.sh --systemd +Restart=always + +[Install] +WantedBy=default.target diff --git a/recipes-demo-hmi/unicens/unicens_0.1.bb b/recipes-demo-hmi/unicens/unicens_0.1.bb index 176baa402..0fc0afc93 100644 --- a/recipes-demo-hmi/unicens/unicens_0.1.bb +++ b/recipes-demo-hmi/unicens/unicens_0.1.bb @@ -10,18 +10,40 @@ DEPENDS += "libxml2" SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/unicens;protocol=https" SRC_URI += "file://0001-Fix-cross-compilation-with-yocto.patch" +SRC_URI += "file://0001-Support-booting-by-systemd.patch \ + file://most-network-startup.service \ + file://most-network-manager.service" S = "${WORKDIR}/git" #SRCREV = "8c5f2324d7aa61669324aec1a0ad091fe1379489" SRCREV = "${AUTOREV}" do_install() { - install -m 0755 -d ${D}${bindir} ${D}/home/root - install -m 0755 ${S}/NetworkManager ${D}${bindir}/MostNetworkManager - install -m 0644 ${S}/scripts/config-agl.xml ${D}/home/root - install -m 0644 ${S}/scripts/camera-os88122-ts.script ${D}/home/root - install -m 0644 ${S}/scripts/i2c-slim-amplifier-v2.3.script ${D}/home/root - install -m 0644 ${S}/scripts/i2c-uda1388-v2.3.script ${D}/home/root - install -m 0755 ${S}/scripts/loadDriver.sh ${D}/home/root + install -m 0755 -d ${D}/usr/AGL/most + install -m 0755 ${S}/NetworkManager ${D}/usr/AGL/most/MostNetworkManager + install -m 0644 ${S}/scripts/config-agl.xml ${D}/usr/AGL/most/ + install -m 0644 ${S}/scripts/camera-os88122-ts.script ${D}/usr/AGL/most/ + install -m 0644 ${S}/scripts/i2c-slim-amplifier-v2.3.script ${D}/usr/AGL/most/ + install -m 0644 ${S}/scripts/i2c-uda1388-v2.3.script ${D}/usr/AGL/most + install -m 0755 ${S}/scripts/loadDriver.sh ${D}/usr/AGL/most + + # Install MOST network startup systemd service (user) + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -m 644 -p -D ${WORKDIR}/most-network-startup.service ${D}${systemd_user_unitdir}/most-network-startup.service + install -m 644 -p -D ${WORKDIR}/most-network-manager.service ${D}${systemd_user_unitdir}/most-network-manager.service + + # Execute install manually for root user on behalf of systemctl script + # because it doesn't support user mode of systemd. + install -m 0755 -d ${D}/home/root/.config/systemd/user/default.target.wants/ + ln -sf ${systemd_user_unitdir}/most-network-startup.service ${D}/home/root/.config/systemd/user/default.target.wants/most-network-startup.service + ln -sf ${systemd_user_unitdir}/most-network-manager.service ${D}/home/root/.config/systemd/user/default.target.wants/most-network-manager.service + fi } -FILES_${PN} += "/home/root*" + +FILES_${PN} += " \ + /usr/AGL/most \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_user_unitdir}/most-network-startup.service', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_user_unitdir}/most-network-manager.service', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '/home/root/.config/systemd/user/default.target.wants/most-network-startup.service', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '/home/root/.config/systemd/user/default.target.wants/most-network-manager.service', '', d)} \ + " |