Skip to end of metadata
Go to start of metadata

Hands-on session martial

Preparation for try-out of the latest graphic stacks

  • Set up GDP hands on environment according to link to GENIVI wiki [1]. Nextcom VTC1010/Renesas Porter is confirmed for Hands-on material.
  • Back up rpms to roll back original GDP
    • tar zxvf ~/backup/original_rpms.tar.gz ~/GDP/build/tmp/deploy/rpm 

Pathces to enable Wayland/Weston/Wayland-IVI-Extension 1.9/1.9/1.5

Applying patches to update the latest weston and wayland-ivi-extension for VTC1010 or Porter.

VTC1010

  • poky: new bb files targeted to be built by local.conf
    • $cd ~/GDP/poky
    • 6 additional patches to add new bb file in patches [2]
    • Two patches related to 1.8.92 are not mandatory to apply.
  • meta-ivi: new wayland ivi extension bb file 
    • $cd ~/GDP/meta-ivi
    • 1 additional patch to add new bb file in a patch [3]
  • meta-genivi-demo: new wayland ivi extension bb file 
    • $cd ~/GDP/meta-genivi-demo
    • 8 additional patches to add new bb file in a patch [4]

Porter

  • meta-ivi: new wayland ivi extension bb file 
    • $cd ~/GDP/genivi-demo-platform/meta-ivi
    • 1 additional patch to add new bb file in a patch [5]
    • which is the same as VTC1010 ones.
  • meta-ivi: new wayland ivi extension bb file 
    • $cd ~/GDP/genivi-demo-platform/meta-renesas
    • 7 additional patches [6]
  • meta-genivi-demo: new wayland ivi extension bb file 
    • $cd ~/GDP/genivi-demo-platform/meta-genivi-demo
    • 8 additional patches to add new bb file in a patch [7]

Build and deploy

  • To build additional bb files not exist old versions, add following lines at the end of local conf file in ~/GDP/build/conf.
  • gdp-hmi needs to be modified to use new APIs. so for the time being, it is disable to be built now as well.
    PREFERRED_VERSION_wayland = "1.9.0"
    PREFERRED_VERSION_weston = "1.9.0"
    PREFERRED_VERSION_wayland-ivi-extension = "1.5.0"
    PREFERRED_VERSION_drm = "2.4.65" # only for VTC1010
    IMAGE_INSTALL_remove = "packagegroup-gdp-hmi" # disable building gdp-hmi temporarily.
  • Build the latest weston and wayland-ivi-extension with genivi demo-platform
    • cd ~/GDP
    • source ~/GDP/poky/oe-init-build-env
    • bitbake genivi-demo-platform

    Installation

    To quick hack, install by hand on target board.

    • install following rpms with --force: rpm install --force
      • libdrm-2.4.65-r0.corei7_64.rpm
      • libdrm-intel1-2.4.65-r0.corei7_64.rpm
      • libevdev-1.2.2-r0.corei7_64.rpm
      • libinput-1.0-r0.corei7_64.rpm
      • wayland-1.9.0-r0.corei7_64.rpm
      • wayland-ivi-extension-1.5.0-r0.corei7_64.rpm
      • weston-examples-ivi-1.9.0.corei7_64.rpm
      • weston-ivi-1.9.0.corei7_64.rpm
    • update weston.ini in /etc/xdg/weston/weston.ini
      [core]
      shell=ivi-shell.so
      [ivi-shell]
      ivi-module= ivi-controller.so,ivi-input-controller.so
    • weston.service in /etc/system/user to boot weston in login by root
      [Unit]
      Description=Weston
      After=dbus.service rc.pvr.service
       
      [Service]
      ExecStart=/usr/bin/weston-launch -u root -- --idle-time=4294967
      ExecStop=/usr/bin/killall -s KILL weston
       
      [Install]
      WantedBy=multi-user.target
    • reboot target
    • When you log in as root. weston and gdp-hmi will start.

    Patches to fix genivi-demo-hmi to the latest graphic statcks

    Quick hacking: GENIVI demo hmi

    //go to exacted source repository of genivi-demo-platform-hmi
    $cd $HOME/GDP/build/tmp/work/corei7-64-poky-linux/genivi-demo-platform-hmi/0.4-r0
    //back up current repo
    $mv git git_org
    //git clone
    $git clone https://github.com/ntanibata/gdp-hmi-controller/commits/GENIVI-handson-01
    $mv gdp-hmi-controller git
    //compile and build with the above git
    // Do not do bitbake genivi-demo-platform-hmi -c cleansstate
    $bitbake genivi-demo-platform-hmi -fc compile
    $bitbake genivi-demo-platform-hmi -fc build
    //find updated rpm
    $cd $HOME/GDP/build/tmp/deploy/rpm/corei7_64
    $ls -l genivi-demo-platform-hmi-0.4-r0.corei7_64.rpm

    Quick hacking: gdp-hmi-launcher

    $cd $HOME/GDP/build/tmp/work/corei7-64-poky-linux/gdp-hmi-launcher/1.0-r0
    //back up current repo
    $mv git git_org
    //git clone
    $ln -sf ../../genivi-demo-platform-hmi/0.4-r0/git
    $mv gdp-hmi-controller git
    //compile and build with the above git
    // Do not do bitbake gdp-hmi-launcher -c cleansstate
    $bitbake gdp-hmi-launcher -fc compile
    $bitbake gdp-hmi-launcher -fc build
    //find updated rpm
    $cd $HOME/GDP/build/tmp/deploy/rpm/corei7_64
    $ls -l gdp-hmi-launcher-1.0-r0.corei7_64.rpm

    Quick hacking: gdp-hmi-background

    $cd $HOME/GDP/build/tmp/work/corei7-64-poky-linux/gdp-hmi-background/1.0-r0
    //back up current repo
    $mv git git_org
    //git clone
    $ln -sf ../../genivi-demo-platform-hmi/0.4-r0/git
    $mv gdp-hmi-controller git
    //compile and build with the above git
    // Do not do bitbake gdp-hmi-background -c cleansstate
    $bitbake gdp-hmi-background -fc compile
    $bitbake gdp-hmi-background -fc build
    //find updated rpm
    $cd $HOME/GDP/build/tmp/deploy/rpm/corei7_64
    $ls -l gdp-hmi-background-1.0-r0.corei7_64.rpm

    Demo set up

    GENIVI2015 VTC1010.png

    Demonstration

    how to connect VTC1010

    • set up ip address on your PC: 169.254.157.100 (VTC1010: will be 169.254.157.26)
    • connect to VTC 1010 via ssh. putty.exe [9]. User: root, password: root
    • you can find rpms 'GENIVI_2015_handson' folder, which contains updated rpms.
    • install following rpms in order with --force: rpm install --force. e.g. 'rpm -ihv --force <rpm name>'
      • libdrm-2.4.65-r0.corei7_64.rpm
      • libdrm-intel1-2.4.65-r0.corei7_64.rpm
      • libevdev-1.2.2-r0.corei7_64.rpm
      • libinput-1.0-r0.corei7_64.rpm
      • wayland-1.9.0-r0.corei7_64.rpm
      • wayland-ivi-extension-1.5.0-r0.corei7_64.rpm
      • weston-examples-ivi-1.9.0.corei7_64.rpm
      • weston-ivi-1.9.0.corei7_64.rpm
      • genivi-demo-platform-hmi-0.4-r0.corei7_64.rpm
      • gdp-hmi-launcher-1.0-r0.corei7_64.rpm
      • gdp-hmi-background-1.0-r0.corei7_64.rpm

    Try updated gdp hmi controller

    Screen1 (portrait)

    • Upper side: GDP HMI (layerid: 100, surface id: 2)
    • Lower side: Application display area.

    Screen0 (landscape)

    • Application display area.

    Sample commands to switch application in application area between Screen 0 and 1

    LMC=LayerManagerControl
    # clean both screens
    $LMC set screen 0 render order 250
    $LMC set screen 1 render order 100,200
    $LMC set surface 10 destination region 0 0 1920 1080 //EGLWLMockNavigation, layer id=700
    $LMC set surface 5100 destination region 0 0 1920 1080 //EGLWLInputEventExample, layer id=800
    $LMC set surface 30 destination region 0 0 1920 1080 //demoui, layer id=500
    $LMC set surface 20 destination region 0 0 1920 1080 //AudioManagerMonitor, layer id=400
    $LMC set surface 40 destination region 0 0 1920 1080 //fsa, layer id=600
     
    echo "show up HEAD ${HEAD} on screen 1" //set $HEAD to layer id which you want to show in screen 1
    $LMC set layer $HEAD orientation 1
    $LMC set layer $HEAD destination region 0 0 960 1080
    $LMC set screen 1 render order 100,200,$HEAD
     
    echo "show up TAIL ${TAIL} on screen 0" //set $TAILto layer id which you want to show in screen 0
    $LMC set layer $TAIL orientation 0 
    $LMC set layer $TAIL destination region 0 0 1920 1080
    $LMC set screen 0 render order 250,$TAIL

    LayerManagerControl

    Move one layer to another screen

    $LayerManagerControl get screen 0
    $LayerManagerControl set screen 0 render order 100,200 (,300 is removed)
    $LayerManagerControl set screen 1 render order 500,600,300

    Input focus

    Check the input capabilities of the default seat.

    $LayerManagerControl get input device default capabilities

    Create two InputEventExample and add to the layer.

    $layer-add-surfaces 1000 2 
    $EGLWLInputEventExample -s 5100 
    $EGLWLInputEventExample -s 5200 
    $LayerManagerControl set surface 5200 position 1520 0

    Set pointer focus for the surface 5100

    $LayerManagerControl set surfaces 5100 input focus pointer


    Set pointer focus for the surface 5200

    $LayerManagerControl set surfaces 5200 input focus pointer
  • No labels