From 744c7b109356ca76ed3e97a1858c64a54cc9310f Mon Sep 17 00:00:00 2001 From: Jan-Simon Moeller Date: Wed, 3 Aug 2016 22:27:33 +0200 Subject: Rewrite and restructure readme files This changeset updates the outdated README.md in meta-agl. We also introduce a split between the README.md which describes the layer itself and a README-AGL.md which contains the information on the AGL distribution. v2: Format in markdown editor - proper markdown now. Change-Id: I4cbe539ffd668c3e1d64df5c40092d5864c1d2ea Signed-off-by: Jan-Simon Moeller (cherry picked from commit 124f7e76ea7cdc192c6d877c80f209cf13e2401e) --- README-AGL.md | 472 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 369 ++++++++++++--------------------------------- 2 files changed, 569 insertions(+), 272 deletions(-) create mode 100644 README-AGL.md diff --git a/README-AGL.md b/README-AGL.md new file mode 100644 index 000000000..62630531f --- /dev/null +++ b/README-AGL.md @@ -0,0 +1,472 @@ +?README-AGL.md: The Automotive Grade Linux Distribution +====================================================== + +AGL is creating an automotive specific Linux distribution (AGL UCB) +that unifies the software that has been written in a number of places already, +such as GENIVI and Tizen IVI. + +The layer 'meta-agl' provides a minimal set of software +to boot system of AGL Distribution. 'meta-agl' is the minimal +core which is used build AGL profiles on top of it. + +The reference UI is part of 'meta-agl-demo'. + +Additional components like the security framework are part of 'meta-agl-extra'. + +The AGL community appreciates feedback, ideas, suggestion, bugs and +documentation just as much as code. Please join the irc conversation +at the #automotive channel on irc.freenode.net and our mailing list. + +For infomation for subscribing to the mailing list + [automotive-discussions](http://lists.linuxfoundation.org/mailman/listinfo/automotive-discussions) +For information about AGL Distribution, see the + [AGL Distribution](https://wiki.automotivelinux.org/agl-distro) +For information abount Getting started with AGL + [here](https://wiki.automotivelinux.org/start/getting-started) +For information about contributing to the AGL Distro + [here](https://wiki.automotivelinux.org/agl-distro/contributing) + +Quick start guide +----------------- +(latest version here: https://wiki.automotivelinux.org/agl-distro/source-code) +To build an image from 'meta-agl' + +1. Prepare repo: + > $ mkdir ~/bin + > $ export PATH=~/bin:$PATH + > $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo + > $ chmod a+x ~/bin/repo + +2. Get all layers: + > $ repo init -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo + > $ repo sync + +3. Check available targets and extensions, select target machine: + > $ source meta-agl/scripts/aglsetup.sh -h + > $ source meta-agl/scripts/aglsetup.sh -m porter + +4. Build agl-image-ivi + > $ bitbake agl-image-ivi + +To build the agl-demo-platform (as demo'ed @ALS) replace 3. and 4. with: +3. Check available targets and extensions, select target machine: + > $ source meta-agl/scripts/aglsetup.sh -h + > $ source meta-agl/scripts/aglsetup.sh -m porter agl-demo [agl-appfw-smack] [agl-devel] [agl-netboot] + +4. Build agl-demo-platform + > $ bitbake agl-demo-platform +Note: this uses more layers and not only meta-agl + +AGL Layers and dependencies: +---------------------------- +Check the README.md of the respective layers: +- meta-agl (= core, no UI) +- meta-agl-demo (= reference UI) +- meta-agl-extra (= extra components) + +In addition, the reference hardware (Renesas R-Car Gen2 / porter) has this dependency: + +URI: https://gerrit.automotivelinux.org/gerrit/AGL/meta-renesas +> branch: agl-1.0-bsp-1.8.0 +> tested revision: 82611ccadef36ab0b8a6fd6fb1cf055e115f1ef5 + + +Supported Machines +------------------ + +Reference hardware: + +* QEMU (x86-64) - emulated machine: qemux86-64 +* Renesas R-Car Gen2 (R-Car M2) - machine: porter + +Community contributed hardware: + +* See: https://wiki.automotivelinux.org/agl-distro#supported_hardware + + +Supported Target of bitbake +--------------------------- + +meta-agl: + +* `agl-image-ivi` The baseline image of AGL Distributions (console only) + +* `agl-image-minimal` For internal use to develop distribution (experimental) +* `agl-image-weston` For internal use to develop distribution (experimental) + +meta-agl-demo: + +* `agl-demo-platform` The demo/reference image (with graphical UI) + +Run this command for a full list of machines, features and targets: + > $ source ./meta-agl/scripts/aglsetup.sh -h + + +Supposed Directory Tree of Layers to build +------------------------------------------- + + > $ repo init -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo + > $ repo sync + > $ tree -L 1 + . + |-- meta-agl + |-- meta-agl-demo + |-- meta-agl-devel + |-- meta-agl-extra + |-- meta-amb + |-- meta-fsl-arm + |-- meta-fsl-arm-extra + |-- meta-intel + |-- meta-intel-iot-security + |-- meta-openembedded + |-- meta-qcom + |-- meta-qt5 + |-- meta-raspberrypi + |-- meta-renesas + |-- meta-rust + |-- meta-security-isafw + |-- meta-ti + `-- poky + 18 directories, 0 files + + +Build a QEMU image +------------------ + +You can build a QEMU image using the following steps: + +(latest version here: https://wiki.automotivelinux.org/agl-distro/source-code) +To build an image from 'meta-agl' + +1. Prepare repo: + > $ mkdir ~/bin + > $ export PATH=~/bin:$PATH + > $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo + > $ chmod a+x ~/bin/repo + +2. Get all layers: + > $ repo init -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo + > $ repo sync + +3. Check available targets and extensions, select target machine: + > $ source meta-agl/scripts/aglsetup.sh -h + > $ source meta-agl/scripts/aglsetup.sh -m qemux86-64 + + Alternatively, to enable the reference UI feature ('agl-demo'): + > $ source meta-agl/scripts/aglsetup.sh -m qemux86-64 agl-demo + + Alternatively, to also enable also the security framework ('agl-appfw-smack'): + > $ source meta-agl/scripts/aglsetup.sh -m qemux86-64 agl-demo agl agl-appfw-smack + + Alternatively, to also enable debugging tools ('agl-devel') and the network-boot (nbd) capabilities ('agl-netboot'): + > $ source meta-agl/scripts/aglsetup.sh -m qemux86-64 agl-demo agl agl-appfw-smack agl-devel agl-netboot + +4. Build agl-image-ivi + > $ bitbake agl-image-ivi + + or alternatively, if you enabled the 'agl-demo' feature: + > $ bitbake agl-demo-platform + + - If you want to run QEMU directly as VM in Virtual Box or your other favorite VM software then add this line to your "conf/local.conf" file. + > IMAGE_FSTYPES += "vmdk" + +5. Run in the emulator + > $ runqemu agl-image-ivi qemux86-64 + > or + > $ runqemu agl-demo-platform qemux86-64 + + For a large screen: + > $ runqemu agl-image-ivi qemux86-64 bootparams="uvesafb.mode_option=1280x720-32" + + To extend the amount of memory, add to runqemu: + qemuparams="-m 512" + > $ runqemu agl-image-ivi qemux86-64 qemuparame="-m 512" bootparams="uvesafb.mode_option=1280x720-32" + + + To separate console from VGA screen (to avoid corrupt screen while booting), + add to runqemu: + serial + > $ runqemu agl-image-ivi qemux86-64 bootparams="uvesafb.mode_option=1280x720-32" serial + + **Or use the virtual disk in Virtual Box from this location:** + > tmp/deploy/images/qemux86-64/agl-demo-platform-qemux86-64.vmdk + +6. Some weston samples are available from weston terminal (click top left icon). + Check the folder `/opt/AGL/ALS2016`. + +Build a R-Car M2 (porter) image +------------------------------- + +### Software setup + +NOTE: You will need to download the matching binary driver package from renesas. + As of this writing, the version from 20151228. + The main URL to retrieve these is: + + - https://www.renesas.com/en-eu/solutions/automotive/rcar-demoboard.html + + As of this writing, the necessary libary and driver packages linked to + by above site are: + - The subpage for the library is: + - https://www.renesas.com/en-eu/software/D3017410.html (registration/login required) + + - The sub-page for the driver is: + - https://www.renesas.com/en-eu/media/secret/solutions/automotive/rcar-demoboard/R-Car_Series_Evaluation_Software_Package_of_Linux_Drivers-20151228.zip + + !!! The files need to be in `${HOME}/Downloads` ( `$XDG_DOWNLOAD_DIR` ) !!! + +#### Getting Source Code and Build image + +(latest version here: https://wiki.automotivelinux.org/agl-distro/source-code) +To build an image from 'meta-agl' only: + +1. Prepare repo: + > $ mkdir ~/bin + > $ export PATH=~/bin:$PATH + > $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo + > $ chmod a+x ~/bin/repo + +2. Get all layers: + > $ repo init -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo + > $ repo sync + +3. Check available targets and extensions, select target machine: + > $ source meta-agl/scripts/aglsetup.sh -h + > $ source meta-agl/scripts/aglsetup.sh -m porter + + Alternatively, to enable the reference UI: + > $ source meta-agl/scripts/aglsetup.sh -m porter agl-demo + + Alternatively, to also enable also the security framework: + > $ source meta-agl/scripts/aglsetup.sh -m porter agl-demo agl agl-appfw-smack + + Alternatively, to also enable debugging tools and the network-boot (nbd) capabilities: + > $ source meta-agl/scripts/aglsetup.sh -m porter agl-demo agl agl-appfw-smack agl-devel agl-netboot + +4. (optional) edit conf/local.conf )* see below + > $ vi conf/local.conf + +5. Build agl-image-ivi + > $ bitbake agl-image-ivi + + or alternatively, if you enabled the 'agl-demo' feature: + > $ bitbake agl-demo-platform + + +)* : + + 4 . Optional edits to conf/local.conf + + * If you want to use multimedia accelerations, uncomment + manually 4 `IMAGE_INSTALL_append_porter` in conf/local.conf. + + > #IMAGE_INSTALL_append_porter = " \ + > # gstreamer1.0-plugins-bad-waylandsink \ + > # " + > #IMAGE_INSTALL_append_porter = " \ + > # gstreamer1.0-plugins-base-videorate \ + > ... + > #" + > #IMAGE_INSTALL_append_porter = " \ + > # libegl libegl-dev libgbm-dev \ + > ... + > # " + > #IMAGE_INSTALL_append_porter = " \ + > # packagegroup-rcar-gen2-multimedia \ + > ... + > # " + +* Also it is needed to uncomment this: + > #MACHINE_FEATURES_append = " multimedia" + + This `multimedia` MACHINE_FEATURES enables the meta-renesas's specific multimedia configuration. + The version of GStreamer1.0 which AGL distro will use is changed + to 1.2.3 (meta-renesas prefers it) over 1.4.1 (meta-agl default) + by this switch. + +* If you want to install various Qt5 examples, add below + configuration to your local.conf. +> IMAGE_INSTALL_append = " \ +> packagegroup-agl-demo-qt-examples \ +> " +> PACKAGECONFIG_append_pn-qtbase = " examples" +> +> IMPORTANT NOTE: +> To run examples with wayland-egl plugin, +> use ``LD_PRELOAD=/usr/lib/libEGL.so ``. +> If not, programs should not launch by error, +> 'EGL not available'. + + +### Deployment (SDCARD) + +#### Instructions on the host + +1. Format SD-Card and then, create single EXT4 partition on it. + +2. Mount the SD-Card, for example `/media/$SDCARD_LABEL`. + +3. Copy AGL root file system onto the SD-Card + 1. Go to build directory + > $ cd $AGL_TOP/build/tmp/deploy/images/porter + + 2. Extract the root file system into the SD-Card + > $ sudo tar --extract --numeric-owner --preserve-permissions --preserve-order \ + > --totals --directory=/media/$SDCARD_LABEL --file=agl-image-ivi-porter.tar.bz2 + + 3. Copy kernel and DTB into the `/boot` of the SD-Card + > $ sudo cp uImage uImage-r8a7791-porter.dtb /media/$SDCARD_LABEL/boot + +4. After the copy finished, unmount SD-Card and insert it into the SD-Card slot of the porter board. + +#### Instructions on the target + +NOTE: There is details about porter board [here](http://elinux.org/R-Car/Boards/Porter). + +NOTE: To boot weston on porter board, we need keyboard and mouse. (USB2.0 can be use for this) + +##### Change U-Boot parameters to boot from SD card + +1. Power up the board and, using your preferred terminal emulator, stop the board's autoboot by hitting any key. + + ``Debug serial settings are 38400 8N1. Any standard terminal emulator program can be used.** + +2. Set the follow environment variables and save them +> => setenv bootargs_console console=ttySC6,${baudrate} +> => setenv bootargs_video vmalloc=384M video=HDMI-A-1:1024x768-32@60 +> => setenv bootcmd_sd 'ext4load mmc 0:1 0x40007fc0 boot/uImage;ext4load mmc 0:1 0x40f00000 boot/uImage-r8a7791-porter.dtb' +> => setenv bootcmd 'setenv bootargs ${bootargs_console} ${bootargs_video} root=/dev/mmcblk0p1 rw rootfstype=ext3;run bootcmd_sd;bootm 0x40007fc0 - 0x40f00000' +> => saveenv + +##### Boot from SD card + +1. After board reset, U-Boot is started and after a countdown, ... + Linux boot message should be displayed. Please wait a moment. + +2. Then weston is booted automatically, and weston-terminal appears. + +3. Have fun! :) + +4. (Optional) This is how to test and play multimedia contents with acceleration. + + 1. Boot porter without mouse and keyboard, it avoid to boot weston automatically. + For now, when running weston, V4L2 deosn't work correctly, so we have to + stop weston first (GST plugin `waylandsink` also doesn't work correctly for now). + + 2. Execute these instructions + + # Set the mixer +> $ export LD_LIBRARY_PATH="/lib:/usr/lib:/usr/local/lib:"^ + + # Set the mixer +> $ amixer set "LINEOUT Mixer DACL" on +> $ amixer set "DVC Out" 10 +> +> $ modprobe -a mmngr mmngrbuf s3ctl uvcs_cmn vspm fdpm +> +> $ media-ctl -d /dev/media0 -r +> $ media-ctl -d /dev/media0 -l '"vsp1.2 rpf.0":1 -> "vsp1.2 uds.0":0 [1]' +> $ media-ctl -d /dev/media0 -l '"vsp1.2 uds.0":1 -> "vsp1.2 wpf.0":0 [1]' +> $ media-ctl -d /dev/media0 -l '"vsp1.2 wpf.0":1 -> "vsp1.2 lif":0 [1]' +> $ media-ctl -d /dev/media0 -V '"vsp1.2 rpf.0":0 [fmt:AYUV32/1920x1080]' +> $ media-ctl -d /dev/media0 -V '"vsp1.2 rpf.0":1 [fmt:AYUV32/1920x1080]' +> $ media-ctl -d /dev/media0 -V '"vsp1.2 uds.0":0 [fmt:AYUV32/1920x1080]' +> $ media-ctl -d /dev/media0 -V '"vsp1.2 uds.0":1 [fmt:AYUV32/640x480]' +> $ media-ctl -d /dev/media0 -V '"vsp1.2 wpf.0":0 [fmt:AYUV32/640x480]' +> $ media-ctl -d /dev/media0 -V '"vsp1.2 wpf.0":1 [fmt:ARGB32/640x480]' +> $ media-ctl -d /dev/media0 -V '"vsp1.2 lif":0 [fmt:ARGB32/640x480]' +> +> # in case R-Car M2 (HDMI - DU1 - vspd0) +> $ modetest -M rcar-du -s 10@8:1280x720@AR24 -d -P '8@19:640x480+100+200@XR24' & + +After these command, Test pattern will show on display connected to porter's HDMI port. + +Then, you can play H264(MP4) movie like this: + +> $ gst-launch-1.0 filesrc location=./sample.mp4 ! qtdemux name=d d. ! \ +> queue ! omxh264dec no-copy=true ! v4l2sink device=/dev/video1 \ +> io-mode=userptr d. ! queue ! faad ! alsasink device=hw:0,0 + + +### Deployment (TFTP/NFS) + +NOTE: These instructions are based on Embedded Linux Wiki, [here](http://www.elinux.org/R-Car/Boards/Yocto#Loading_kernel_via_TFTP_and_rootfs_via_NFS). And a Debian (wheezy, ip: 192.168.30.70) is used as the host for this instructions. + +#### Instructions on the host +1. Setup a TFTP server + 1. Install necessary packages + > $ sudo apt-get install tftp tftpd-hpa + + 2. Go to build directory, and copy kernel and DTB into TFTP server root (default server dir: /srv/tftp) + > $cd $AGL_TOP/build/tmp/deploy/images/porter + > $ sudo cp uImage uImage-r8a7791-porter.dtb /srv/tftp + + 3. Verify TFTP server is working + > $ ls uImage + ls: cannot access uImage: No such file or directory + + > $ cd /tmp/ + > $ tftp 192.168.30.70 + > tftp> get uImage + > Received 3583604 bytes in 0.2 seconds + > tftp> q + > $ ls uImage + > uImage + +2. set NFS server + 1. Install necessary packages + > $ sudo apt-get install nfs-kernel-server nfs-common + + 2. Go to build directory, and extract the root file system into a dedicated directory (here we use /nfs/porter) + > $ cd $AGL_TOP/build/tmp/deploy/images/porter + > $ sudo mkdir -p /nfs/porter + > $ sudo tar --extract --numeric-owner --preserve-permissions --preserve-order \ + > --totals --directory=/nfs/porter --file=agl-demo-platform-porter.tar.bz2 + + 3. Edit /etc/exports + > $ sudo vi /etc/exports + Add + > + > /nfs/porter *(rw,no_subtree_check,sync,no_root_squash,no_all_squash) + > + Save the file and exit. + + 4. Restart nfs service + > $ sudo service nfs-kernel-server restart + + 5. Verify NFS server is working + > $ sudo mount -t nfs 192.168.30.70:/nfs/porter /tmp/ + > $ ls /tmp + > bin boot dev etc home lib media mnt proc run sbin sys tmp usr var + +#### Instructions on the target board + +NOTE: There is details about porter board [here](http://elinux.org/R-Car/Boards/Porter). + +NOTE: To boot weston on porter board, we need keyboard and mouse. (USB2.0 can be use for this) + +##### Change U-Boot parameters to boot from TFTP/NFS + +1. Power up the board and, using your preferred terminal emulator, stop the board's autoboot by hitting any key. + + > Debug serial settings are 38400 8N1. Any standard terminal emulator program can be used. + +2. Set the follow environment variables and save them +> => setenv ipaddr +> => setenv serverip +> => setenv bootargs_console console=ttySC6,${baudrate} +> => setenv bootargs_video vmalloc=384M video=HDMI-A-1:1024x768-32@60 +> => setenv bootcmd_net 'tftp 0x40007fc0 uImage; tftp 0x40f00000 uImage-r8a7791-porter.dtb' +> => setenv bootcmd 'setenv bootargs ${bootargs_console} ${bootargs_video} ip=${ipaddr} root=/dev/nfs nfsroot=${serverip}:/nfs/porter,vers=3;run bootcmd_net;bootm 0x40007fc0 - 0x40f00000' +> => saveenv + + Replace with a proper IP address for the board, like 192.168.30.60. + Replace with the IP address of the host, here we use 192.168.30.70. + +##### Boot from TFTP/NFS + +1. After board reset, U-Boot is started and after a countdown, ... + Linux boot message should be displayed. Please wait a moment. +2. Then weston is booted automatically, and weston-terminal appears. +3. Have fun! :) + diff --git a/README.md b/README.md index 3fc7b9893..b95b54ccf 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,23 @@ -meta-agl, the Yocto layer for Automotive Grade Linux Distribution -================================================================= +**README.md for the 'meta-agl' layer.** -The yocto layer 'meta-agl' provides a minimal set of software -to boot system of AGL Distribution. +**See README-AGL.md for general information about Automotive Grade Linux.** + + +meta-agl, the core layer for Automotive Grade Linux Distribution +================================================================ AGL is creating an automotive specific Linux distribution that unifies the software that has been written in a number of places already, such as GENIVI and Tizen IVI. +The layer 'meta-agl' provides a minimal set of software +to boot system of AGL Distribution. 'meta-agl' is the minimal +core which is used build AGL profiles on top of it. + +Especially there is no reference UI included which is part of 'meta-agl-demo'. + +Additional components like the security framework are part of 'meta-agl-extra'. + The AGL community appreciates feedback, ideas, suggestion, bugs and documentation just as much as code. Please join the irc conversation at the #automotive channel on irc.freenode.net and our mailing list. @@ -21,40 +31,54 @@ For information abount Getting started with AGL For information about contributing to the AGL Distro [here](https://wiki.automotivelinux.org/agl-distro/contributing) -Layer Dependencies ------------------- +Quick start guide +----------------- +See README-AGL.md -URI: git://git.yoctoproject.org/poky -> branch: dizzy -> revision: df87cb27efeaea1455f20692f9f1397c6fcab254 -URI: git://git.openembedded.org/meta-openembedded -> layer: meta-oe -> branch: dizzy -> revision: 9efaed99125b1c4324663d9a1b2d3319c74e7278 +'meta-agl' Layer Dependencies +----------------------------- +* poky +> URI: git://git.yoctoproject.org/poky +> branch : jethro +> tested revision: 40376446904ae3529be41737fed9a0b650ed167d -## The Renesas R-Car Gen2 (Porter) board depends in addition on: ## +* meta-openembedded +> URI: git://git.openembedded.org/meta-openembedded +> layer : meta-openembedded +> branch : jethro +> tested revision: 8ab04afbffb4bc5184cfe0655049de6f44269990 -URI: https://gerrit.automotivelinux.org/gerrit/AGL/meta-renesas -> branch: agl-1.0-bsp-1.8.0 -> revision: bf30de66badcac7ef82d3758aa44c116ee791a28 -> (or later) + Specifically out of meta-openembedded these sub-layers are used: + * meta-openembedded/meta-oe + * meta-openembedded/meta-multimedia + * meta-openembedded/meta-efl + * meta-openembedded/meta-networking + * meta-openembedded/meta-python Layers ------ -There are 3 layers in top-level `meta-agl`. +There are 5 layers in top-level `meta-agl`. +* `meta-agl/meta-ivi-common` `meta-ivi-common` is a layer which contains common packages to AGL Distribution and other platforms for In-Vehicle Infotainment system. -> meta-agl/meta-ivi-common +* `meta-agl/meta-agl` `meta-agl` is a layer which contains AGL common and middleware packages. -> meta-agl/meta-agl +* `meta-agl/meta-agl-bsp` `meta-agl-bsp` is a layer which contains required packages to boot AGL distribution on an emulated machine(QEMU). -> meta-agl/meta-agl-bsp + +* `meta-agl/meta-agl-security` +`meta-agl-security` is a layer which contains dependencies +required by the security framework(s) - not the framework(s) itself. + +* `meta-agl/meta-netboot` +`meta-netboot` contains the netboot initrd support recipes. This is needed +in case of booting over the network as NFS does not support the securitylabels. Packagegroups ------------- @@ -63,6 +87,17 @@ AGL package group design: * packagegroup-agl-core* + packagegroup-agl-core-automotive.bb + packagegroup-agl-core.bb + packagegroup-agl-core-connectivity.bb + packagegroup-agl-core-graphics.bb + packagegroup-agl-core-kernel.bb + packagegroup-agl-core-multimedia.bb + packagegroup-agl-core-navi-lbs.bb + packagegroup-agl-core-os-commonlibs.bb + packagegroup-agl-core-security.bb + packagegroup-agl-core-speech-services.bb + These are for making image ``agl-image-minimal`` which is small image just capable of allowing a device to boot. @@ -71,268 +106,58 @@ hold sufficient packages to build ``agl-image-minimal``. * packagegroup-agl-ivi* -These are for making image ``agl-image-ivi`` which is baseline for IVI profile + packagegroup-agl-ivi-automotive.bb + packagegroup-agl-ivi.bb + packagegroup-agl-ivi-connectivity.bb + packagegroup-agl-ivi-graphics.bb + packagegroup-agl-ivi-kernel.bb + packagegroup-agl-ivi-multimedia.bb + packagegroup-agl-ivi-navi-lbs.bb + packagegroup-agl-ivi-os-commonlibs.bb + packagegroup-agl-ivi-security.bb + packagegroup-agl-ivi-speech-services.bb + +These are for making image ``agl-image-ivi`` which is baseline for the profiles of AGL distro. 'Baseline' means Service Layer and Operating System Layer defined -in AGL Spec v1.0. I think this is the same as GENIVI baseline. -All packages which belong to AppHMI and Application Framework should be put -into ``meta-agl-demo``. - -* packagegroup-ivi-common* - -These are for picking up some packages from GENIVI/Tizen/Others. The layer of -``meta-ivi-common`` has no image to build, all packagegroups are aggregated -to ``packagegrou-ivi-common-core' and it is included by images, -``agl-image-ivi.bb`` and ``agl-demo-platform.bb``. - -Supported Machine ------------------ - -* QEMU (x86-64) - emulated machine: qemux86-64 -* Renesas R-Car Gen2 (R-Car M2) - machine: porter - -Supported Target of bitbake ------------------------- - -* `agl-image-ivi` The baseline image of AGL Distributions - -* `agl-image-minimal` For internal use to develop distribution (experimental) -* `agl-image-weston` For internal use to develop distribution (experimental) +in AGL Spec v1.0. -Supposed Directory Trees of Layers to build -------------------------------------------- +* packagegroup-agl-test.bb -* For QEMU +Additional tools used in QA tests (for agl-image*-qa). - ${TOPDIR}/ - meta-agl/ - meta-openembedded/ - poky/ +* packagegroup-ivi-common* -* For R-Car M2 + packagegroup-ivi-common-core-automotive.bb + packagegroup-ivi-common-core.bb + packagegroup-ivi-common-core-connectivity.bb + packagegroup-ivi-common-core-graphics.bb + packagegroup-ivi-common-core-kernel.bb + packagegroup-ivi-common-core-multimedia.bb + packagegroup-ivi-common-core-navi-lbs.bb + packagegroup-ivi-common-core-os-commonlibs.bb + packagegroup-ivi-common-core-security.bb + packagegroup-ivi-common-core-speech-services.bb + packagegroup-ivi-common-test.bb + +These are for picking up some packages from upstreams like GENIVI/Tizen/Others. +The layer of ``meta-ivi-common`` has no image to build, all packagegroups are +aggregated to ``packagegroup-ivi-common-core' and it is included by images, +``agl-image-ivi.bb`` and ``agl-demo-platform.bb``. - ${TOPDIR}/ - meta-agl/ - meta-openembedded/ - meta-renesas/ - poky/ -Build a QEMU image +Supported Machines ------------------ -You can build a QEMU image using the following steps: - -1. Export TEMPLATECONF to pick up correct configuration for the build - > $ export TEMPLATECONF=/full/path/to/meta-agl/meta-agl/conf - -2. Run the following command: - > $ source poky/oe-init-build-env - -3. Build the minimal image of AGL Distribution - > $ bitbake agl-image-ivi - -4. Run the emulator - > $ PATH_TO_POKY/poky/scripts/runqemu agl-image-ivi qemux86-64 - - For large screen: - > $ PATH_TO_POKY/poky/scripts/runqemu agl-image-ivi qemux86-64 bootparams="uvesafb.mode_option=1280x720-32" - -5. Some weston samples are available from weston terminal. - -Build a R-Car M2 (porter) image -------------------------------- - -### Software setup - -NOTE: These instructions are based on GENIVI wiki, [here](http://wiki.projects.genivi.org/index.php/Hardware_Setup_and_Software_Installation/koelsch%26porter). If these didn't work correctly especially around Renesas Binary Packages, please check there and updated instructions. - -#### Getting Source Code and Build image - -1. Create a directory for working, then go to there. - $ mkdir -p $HOME/ANYWHERE_YOU_WANT_TO_WORK_THERE - $ cd $HOME/ANYWHERE_YOU_WANT_TO_WORK_THERE - $ export AGL_TOP=`pwd` - -2. Get the meta data and checkout - $ git clone git://git.yoctoproject.org/poky - $ cd poky - $ git checkout df87cb27efeaea1455f20692f9f1397c6fcab254 - $ cd - - $ git clone git://git.openembedded.org/meta-openembedded - $ cd meta-openembedded - $ git checkout 9efaed99125b1c4324663d9a1b2d3319c74e7278 - $ cd - - $ git clone https://gerrit.automotivelinux.org/gerrit/AGL/meta-renesas - $ cd meta-renesas - $ git checkout bf30de66badcac7ef82d3758aa44c116ee791a28 - $ cd - - $ git clone https://gerrit.automotivelinux.org/gerrit/AGL/meta-agl - -#### Obtain and Install Renesas Graphics Drivers - -1. Download packages from Renesas - - The graphics and multimedia acceleration packages for the R-Car M2 Porter board - can be download directory from [here](http://www.renesas.com/secret/r_car_download/rcar_demoboard.jsp). - - There are 2 ZIP files can be downloaded. - * Multimedia and Graphics library which require registeration and click through license - > r-car_series_evaluation_software_package_for_linux-*.zip - * Related Linux drivers - > r-car_series_evaluation_software_package_of_linux_drivers-*.zip +See README-AGL.md -2. Unzip the two downloads into a temporary directory. - $ cd $AGL_TOP - $ mkdir binary-tmp - $ cd binary-tmp - $ unzip PATH_TO_DOWNLOAD/r-car_series_evaluation_software_package_for_linux-*.zip - $ unzip PATH_TO_DOWNLOAD/r-car_series_evaluation_software_package_of_linux_drivers-*.zip - After this step there should be two files in binary-tmp: - * Multimedia and Graphics library - > R-Car_Series_Evaluation_Software_Package_for_Linux-*.tar.gz - * Related Linux drivers - > R-Car_Series_Evaluation_Software_Package_of_Linux_Drivers-*.tar.gz +Supported Target for bitbake +---------------------------- -3. Copy the graphics acceleration drivers by shell script. - $ cd $AGL_TOP/meta-renesas/meta-rcar-gen2 - $ ./copy_gfx_software_porter.sh ../../binary-tmp +meta-agl: -4. Copy the multimedia acceleration drivers by shell script. - $ cd $AGL_TOP/meta-renesas/meta-rcar-gen2 - $ ./copy_mm_software_lcb.sh ../../binary-tmp - -#### Build from the Source code - -You can build a R-Car2 M2 (porter) image using the following steps: - -1. Export TEMPLATECONF to pick up correct configuration for the build - $ export TEMPLATECONF=$AGL_TOP/meta-renesas/meta-rcar-gen2/conf - -2. Run the following command: - $ cd $AGL_TOP - $ source poky/oe-init-build-env - - Edit conf/bblayers.conf then remove this line. - ##OEROOT##/../meta-agl-demo \ - - (Optional) If you want to use multimedia accelerations, confirm your - conf/bblayer.conf has a entry of `meta-openembedded/meta-multimedia` - in BBLAYERS because packagegroup-rcar-gen2-multimedia needs some extra - packages there. - -3. (Optional) If you want to use multimedia accelerations, uncomment - manually 4 `IMAGE_INSTALL_append_porter` in conf/local.conf. - #IMAGE_INSTALL_append_porter = " \ - # gstreamer1.0-plugins-bad-waylandsink \ - # " - - #IMAGE_INSTALL_append_porter = " \ - # gstreamer1.0-plugins-base-videorate \ - ... - #" - - #IMAGE_INSTALL_append_porter = " \ - # libegl libegl-dev libgbm-dev \ - ... - # " - - #IMAGE_INSTALL_append_porter = " \ - # packagegroup-rcar-gen2-multimedia \ - ... - # " - - Also it is needed to uncomment this, - #MACHINE_FEATURES_append = " multimedia" - - This `multimedia` enables meta-renesas's multimedia configuration. - The version of GStreamer1.0 which AGL distro use, will be changed - to 1.2.3 (meta-renesas prefers) from 1.4.1(meta-agl default) by this switch. - -4. Build the minimal image of AGL Distribution - $ bitbake agl-image-ivi - -### Deployment (SDCARD) - -NOTE: These instructions are based on GENIVI wiki, [here](http://wiki.projects.genivi.org/index.php/Hardware_Setup_and_Software_Installation/koelsch%26porter#Deployment_.28SDCARD.29). - -#### Instructions on the host - -1. Format SD-Card and then, create single EXT3 partition on it. - -2. Mount the SD-Card, for example `/media/$SDCARD_LABEL`. - -3. Copy AGL root file system onto the SD-Card - 1. Go to build directory - $ cd $AGL_TOP/build/tmp/deploy/images/porter - 2. Extract the root file system into the SD-Card - $ sudo tar --extract --numeric-owner --preserve-permissions --preserve-order \ - --totals --directory=/media/$SDCARD_LABEL --file=agl-image-ivi-porter.tar.bz2 - 3. Copy kernel and DTB into the `/boot` of the SD-Card - $ sudo cp uImage uImage-r8a7791-porter.dtb /media/$SDCARD_LABEL/boot - -4. After the copy finished, unmount SD-Card and insert it into the SD-Card slot of the porter board. - -#### Instructions on the host - -NOTE: There is details about porter board [here](http://elinux.org/R-Car/Boards/Porter). - -NOTE: To boot weston on porter board, we need keyboard and mouse. (USB2.0 can be use for this) - -##### Change U-Boot parameters to boot from SD card - -1. Power up the board and, using your preferred terminal emulator, stop the board's autoboot by hitting any key. - - > Debug serial settings are 38400 8N1. Any standard terminal emulator program can be used. - -2. Set the follow environment variables and save them - => setenv bootargs_console console=ttySC6,${baudrate} - => setenv bootargs_video vmalloc=384M video=HDMI-A-1:1024x768-32@60 - => setenv bootcmd_sd 'ext4load mmc 0:1 0x40007fc0 boot/uImage;ext4load mmc 0:1 0x40f00000 boot/uImage-r8a7791-porter.dtb' - => setenv bootcmd 'setenv bootargs ${bootargs_console} ${bootargs_video} root=/dev/mmcblk0p1 rw rootfstype=ext3;run bootcmd_sd;bootm 0x40007fc0 - 0x40f00000' - => saveenv - -##### Boot from SD card - -1. After board reset, U-Boot is started and after a countdown, ... - Linux boot message should be displayed. Please wait a moment. -2. Then weston is booted automatically, and weston-terminal appears. - -3. Have fun! :) - -4. (Optional) This is how to test and play multimedia contents with acceleration. - - 1. Boot porter without mouse and keyboard, it avoid to boot weston automatically. - For now, when running weston, V4L2 deosn't work correctly, so we have to - stop weston first (GST plugin `waylandsink` also doesn't work correctly for now). - - 2. Execute these instructions: - $ export LD_LIBRARY_PATH="/lib:/usr/lib:/usr/local/lib:" - - # Set the mixer - $ amixer set "LINEOUT Mixer DACL" on - $ amixer set "DVC Out" 10 - - $ modprobe -a mmngr mmngrbuf s3ctl uvcs_cmn vspm fdpm - - $ media-ctl -d /dev/media0 -r - $ media-ctl -d /dev/media0 -l '"vsp1.2 rpf.0":1 -> "vsp1.2 uds.0":0 [1]' - $ media-ctl -d /dev/media0 -l '"vsp1.2 uds.0":1 -> "vsp1.2 wpf.0":0 [1]' - $ media-ctl -d /dev/media0 -l '"vsp1.2 wpf.0":1 -> "vsp1.2 lif":0 [1]' - $ media-ctl -d /dev/media0 -V '"vsp1.2 rpf.0":0 [fmt:AYUV32/1920x1080]' - $ media-ctl -d /dev/media0 -V '"vsp1.2 rpf.0":1 [fmt:AYUV32/1920x1080]' - $ media-ctl -d /dev/media0 -V '"vsp1.2 uds.0":0 [fmt:AYUV32/1920x1080]' - $ media-ctl -d /dev/media0 -V '"vsp1.2 uds.0":1 [fmt:AYUV32/640x480]' - $ media-ctl -d /dev/media0 -V '"vsp1.2 wpf.0":0 [fmt:AYUV32/640x480]' - $ media-ctl -d /dev/media0 -V '"vsp1.2 wpf.0":1 [fmt:ARGB32/640x480]' - $ media-ctl -d /dev/media0 -V '"vsp1.2 lif":0 [fmt:ARGB32/640x480]' - - # in caes R-Car M2 (HDMI - DU1 - vspd0) - $ modetest -M rcar-du -s 10@8:1280x720@AR24 -d -P '8@19:640x480+100+200@XR24' & +* `agl-image-ivi` The baseline image of AGL Distributions (console only) +* `agl-image-minimal` For internal use to develop distribution (experimental) +* `agl-image-weston` For internal use to develop distribution (experimental) - After these command, Test pattern will show on display connected to - porter's HDMI port. - Then, you can play H264(MP4) movie like these, - $ gst-launch-1.0 filesrc location=./sample.mp4 ! qtdemux name=d d. ! \ - queue ! omxh264dec no-copy=true ! v4l2sink device=/dev/video1 \ - io-mode=userptr d. ! queue ! faad ! alsasink device=hw:0,0 -- cgit 1.2.3-korg