aboutsummaryrefslogtreecommitdiffstats
path: root/docs/3_Developer_Guides/6_AGL_Layers
diff options
context:
space:
mode:
authorShankho Boron Ghosh <shankhoghosh123@gmail.com>2020-11-30 00:35:56 +0530
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2020-12-07 19:57:24 +0000
commit6884dcaf7cfd18d806e6d303892265ec5234f1a9 (patch)
tree40ecb19d58b9bf37526267bd7707e0fc76fca4e9 /docs/3_Developer_Guides/6_AGL_Layers
parent3d5ee95786cf1d6cd39772cb45c789157dde861d (diff)
Added AGL Layers in Developer Guides
Revised and added AGL Layers as a part of Developer Guides. Bug-AGL: [SPEC-3633] Signed-off-by: Shankho Boron Ghosh <shankhoghosh123@gmail.com> Change-Id: Ie66bd8bfd89d129c7fc49c20a83c331e069e4a46 Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/documentation/+/25661 Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org> Tested-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
Diffstat (limited to 'docs/3_Developer_Guides/6_AGL_Layers')
-rw-r--r--docs/3_Developer_Guides/6_AGL_Layers/1_Overview.md25
-rw-r--r--docs/3_Developer_Guides/6_AGL_Layers/2_meta-agl.md124
-rw-r--r--docs/3_Developer_Guides/6_AGL_Layers/3_meta-agl-demo.md159
-rw-r--r--docs/3_Developer_Guides/6_AGL_Layers/4_meta-agl-devel.md143
4 files changed, 451 insertions, 0 deletions
diff --git a/docs/3_Developer_Guides/6_AGL_Layers/1_Overview.md b/docs/3_Developer_Guides/6_AGL_Layers/1_Overview.md
new file mode 100644
index 0000000..dec8054
--- /dev/null
+++ b/docs/3_Developer_Guides/6_AGL_Layers/1_Overview.md
@@ -0,0 +1,25 @@
+---
+title: Overview
+---
+
+The [AGL Project](https://www.automotivelinux.org/) is an automotive-specific
+development environment that provides a Linux distribution
+([AGL UCB](https://www.automotivelinux.org/software/unified-code-base)).
+
+AGL uses layers designed to be compatible with the
+[Yocto Project](https://www.yoctoproject.org) and the
+[OpenEmbedded Project (OE)](https://www.openembedded.org/wiki/Main_Page).
+
+This section provides information about the layers used by the AGL Project:
+
+* **`meta-agl`**: Minimal set of software needed to create an AGL distribution
+ used to boot a system.
+ AGL profiles are built on top of this minimal set of software.
+
+* **`meta-agl-demo`**: Provides a reference or demo platform and applications
+ for the AGL Distribution.
+ The reference UI is part of the `meta-agl-demo` layer.
+
+* **`meta-agl-devel`**: Contains components under development or being tested.
+ This layer also contains software packages that OEMs need but do not exist
+ in AGL.
diff --git a/docs/3_Developer_Guides/6_AGL_Layers/2_meta-agl.md b/docs/3_Developer_Guides/6_AGL_Layers/2_meta-agl.md
new file mode 100644
index 0000000..03134b0
--- /dev/null
+++ b/docs/3_Developer_Guides/6_AGL_Layers/2_meta-agl.md
@@ -0,0 +1,124 @@
+---
+title: meta-agl
+---
+
+## Introduction
+
+The `meta-agl` layer provides the minimal set of software
+to boot an AGL Distribution system.
+You use this layer as the minimal core on which to build AGL profiles.
+
+**NOTE:** The `meta-agl` layer does not include a reference UI.
+ The reference UI is included as part of the
+ [`meta-agl-demo`](3_meta-agl-demo.md) layer.
+ Furthermore, `meta-agl` does not include additional components, such
+ as security, which are part of the
+ `meta-agl-extra` layer.
+
+## Sub-Layers
+
+The `meta-agl` layer itself contains many sub-layers and files.
+Following is a "tree" look at the layer:
+
+```
+.
+├── docs
+├── meta-agl
+├── meta-agl-bsp
+├── meta-agl-distro
+├── meta-agl-profile-cluster
+├── meta-agl-profile-cluster-qt5
+├── meta-agl-profile-core
+├── meta-agl-profile-graphical
+├── meta-agl-profile-graphical-html5
+├── meta-agl-profile-graphical-qt5
+├── meta-agl-profile-hud
+├── meta-agl-profile-telematics
+├── meta-app-framework
+├── meta-netboot
+├── meta-security
+├── README-AGL.md
+├── README.md
+├── scripts
+├── templates
+```
+
+This list provides some overview information on the files and sub-layers
+in `meta-agl`:
+
+* `docs`: Contains files that support AGL documentation.
+* `meta-agl`: Contains layer configuration for the `meta-agl` layer.
+* `meta-agl-bsp`: Contains adaptations for recipes and required packages
+ to boot an AGL distribution on targeted hardware and emulation (i.e. QEMU).
+* `meta-agl-distro`: Contains distro configuration and supporting scripts.
+* `meta-agl-profile-cluster`: The middleware for the AGL cluster profile.
+ The set of packages required for AGL Cluster Distribution.
+ Profiles include support for Wayland images.
+* `meta-agl-profile-cluster-qt5`: The middleware for the AGL Qt5-based cluster profile.
+ The set of packages required for AGL Qt5-based Cluster Distribution.
+ Profiles include support for Wayland images with Qt5.
+* `meta-agl-profile-core`: Configuration and recipes for the AGL core profiles.
+* `meta-agl-profile-graphical`: Configuration and recipes supporting graphical user
+ interfaces.
+* `meta-agl-profile-graphical-html5`: Configuration and recipes supporting profiles
+ with HTML user interface support.
+* `meta-agl-profile-graphical-qt5`: Configuration and recipes supporting profiles
+ with Qt5-based user interface support.
+* `meta-agl-profile-hud`: Configuration and recipes supporting profiles with
+ Head-Up-Display (HUD) support.
+* `meta-agl-profile-telematics`: Configuration and recipes supporting profiles with
+ telematics support.
+* `meta-app-framework`: Configuration and recipes supporting the AGL Application
+ Framework.
+* `meta-netboot`: Contains recipes and configuration adjustments to allow network
+ boot through network block device (NBD) since network file system (NFS) does not
+ support security labels.
+* `meta-security`: Configuration and recipes supporting security applications.
+* `scripts`: AGL development setup and support scripts.
+* `templates`: Base, feature, and machine templates used in the AGL development
+ environment.
+
+## Packagegroups
+
+This section describes the AGL
+[packagegroup](https://yoctoproject.org/docs/3.1.2/dev-manual/dev-manual.html#usingpoky-extend-customimage-customtasks)
+design:
+
+* packagegroup-agl-image-minimal
+
+ packagegroup-agl-core-automotive.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
+
+ The previous list of Packagegroups are used to create the `agl-image-minimal` image,
+ which is a small image just capable of allowing a device to boot.
+
+ Subsystem should maintain packagegroup-agl-core-[subsystem].bb which should
+ hold sufficient packages to build `agl-image-minimal`.
+
+* packagegroup-agl-image-ivi
+
+ packagegroup-agl-ivi-automotive.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
+
+ The previous list of Packagegroups are used to create the `agl-image-ivi`
+ image, which is a baseline image (i.e. Service Layer and Operating System
+ Layer defined in AGL Spec v1.0) for the AGL profiles.
+
+* packagegroup-agl-test.bb
+
+ Additional tools used in QA tests (for agl-image*-qa).
+
diff --git a/docs/3_Developer_Guides/6_AGL_Layers/3_meta-agl-demo.md b/docs/3_Developer_Guides/6_AGL_Layers/3_meta-agl-demo.md
new file mode 100644
index 0000000..a38f7ba
--- /dev/null
+++ b/docs/3_Developer_Guides/6_AGL_Layers/3_meta-agl-demo.md
@@ -0,0 +1,159 @@
+---
+title: meta-agl-demo
+---
+
+## Introduction
+
+The `meta-agl-demo` layer is the reference user interface layer for the DEMO
+platform of Automotive Grade Linux (AGL).
+The layer provides a reference platform and applications.
+The BitBake target name for the DEMO platform is `agl-demo-platform`, which is
+the full DEMO platform image.
+
+## Layer Dependencies
+
+This section describes dependencies for the `meta-agl-demo` layer.
+Dependencies are grouped into base, hardware, and feature dependencies.
+
+### Base Dependencies
+
+The `meta-agl-demo` layer has the following base dependencies:
+
+- Yocto Project Release:
+
+ - URI: git://git.yoctoproject.org/poky
+ - Branch: "thud"
+ - Tested Revision: See the
+ [`default.xml`](https://github.com/leon-anavi/AGL-repo/blob/master/default.xml)
+ manifest file for the `AGL-repo` repository for revision information.
+
+- AGL `meta-agl` Layer:
+
+ - URI: https://gerrit.automotivelinux.org/gerrit/AGL/meta-agl
+ - Branch: "master"
+
+- OpenEmbedded `meta-openembedded` Layer:
+
+ - Branch: "thud"
+ - Tested Revision: See the
+ [`default.xml`](https://github.com/leon-anavi/AGL-repo/blob/master/default.xml)
+ manifest file for the `AGL-repo` repository for revision information.
+
+ Specifically, out of `meta-openembedded`, these sub-layers are used:
+
+ - `meta-oe`
+ - `meta-multimedia`
+ - `meta-networking`
+ - `meta-python`
+
+- Yocto Project `meta-qt5` Layer from the
+ [OpenEmbedded Layer Index](https://layers.openembedded.org/layerindex/branch/master/layers/):
+
+ - URI: https://github.com/meta-qt5/meta-qt5.git
+ - Branch: "thud"
+ - Tested Revision: See the
+ [`default.xml`](https://github.com/leon-anavi/AGL-repo/blob/master/default.xml)
+ manifest file for the `AGL-repo` repository for revision information.
+
+### Hardware Dependencies
+
+Aside from the previously listed base dependencies, if you are using a
+[supported Renesas board](../../0_Getting_Started/2_Building_AGL_Image/5_3_RCar_Gen_3.md)
+supported Renesas board, these dependencies exist:
+
+- AGL's `meta-renesas` Layer:
+
+ - URI: https://gerrit.automotivelinux.org/gerrit/AGL/meta-renesas
+
+### Feature Dependencies
+
+The `meta-agl-demo` layer has the following AGL [feature](../../0_Getting_Started/2_Building_AGL_Image/3_Initializing_Your_Build_Environment.md#agl-features)
+dependencies:
+
+- Yocto Project `meta-security` Layer:
+
+ - URI: https://git.yoctoproject.org/cgit/cgit.cgi/meta-security
+ - Branch: "master"
+ - Tested Revision: See the
+ [`default.xml`](https://github.com/leon-anavi/AGL-repo/blob/master/default.xml)
+ manifest file for the `AGL-repo` repository for revision information.
+
+- AGL's `meta-app-framework` Layer within the `meta-agl` Layer:
+
+ - URI: https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl.git
+ - Branch: "master"
+
+**The `agl-sota` Feature:**
+
+- Here Technologies' `meta-updater` Layer:
+
+ - URI: https://github.com/advancedtelematic/meta-updater/
+ - Branch: "thud"
+
+- Here Technologies' `meta-updater-qemux86-64` Layer:
+
+ - URI: https://github.com/advancedtelematic/meta-updater-qemux86-64/
+ - Branch: "thud"
+
+- OpenEmbedded's `meta-openembedded` Layer:
+
+ - URI: https://github.com/openembedded/meta-openembedded
+ - Branch: "thud"
+ - Tested Revision: See the
+ [`default.xml`](https://github.com/leon-anavi/AGL-repo/blob/master/default.xml)
+ manifest file for the `AGL-repo` repository for revision information.
+
+ Specifically, out of `meta-openembedded`, these sub-layers are used:
+
+ - `meta-filesystems`
+ - `meta-oe`
+ - `meta-python`
+
+**The `agl-netboot` Feature:**
+
+- AGL's `meta-netboot` Layer within the `meta-agl` Layer:
+
+ - URI: https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl.git
+ - Branch: "master"
+
+
+## Packagegroups
+
+AGL DEMO Platform's [packagegroups](https://www.yoctoproject.org/docs/3.1.2/dev-manual/dev-manual.html#usingpoky-extend-customimage-customtasks)
+consist of the following:
+
+- packagegroup-agl-demo-platform
+
+ This packagegroup is used for generating the `agl-demo-platform` image,
+ which is the full image for the AGL distributions IVI profile. You can see the
+ recipe (i.e. `agl-demo-platform.bb`) that installs the
+ `packagegroup-agl-demo-platform` packagegroup [here](https://git.automotivelinux.org/AGL/meta-agl-demo/tree/recipes-platform/images/agl-demo-platform.bb).
+
+ As meta-agl's design of packagegroups, the `agl-demo-platform.bb` recipe installs
+ only `packagegroup-agl-demo-platform` and the packages of the DEMO applications.
+
+ ``agl-demo-platform`` contains the following three packagegroups:
+
+ * `packagegroup-agl-image-minimal`
+ * `packagegroup-agl-image-ivi`
+ * `packagegroup-agl-demo-platform`
+
+- packagegroup-agl-appfw*
+
+ These packagegroups contain packages for the AGL distribution's
+ Application Framework. Subsystem should maintain
+ `packagegroup-agl-appfw-[subsystem].bb`, which should hold sufficient packages
+ for the Application Framework.
+
+ Subsystems also can maintain their own packagegroups using appropriate
+ `recipes-*/`.
+
+ For example, Qt5 has two packagegroups in `meta-agl-demo`:
+ `packagegroup-agl-appfw-native-qt5` and `packagegroup-agl-demo-qt-examples`,
+ which are under `recipes-qt/`.
+
+ The `packagegroup-agl-appfw-native-qt5` is included by `packagegroup-agl-appfw-native` because Qt5 belongs to native application framework of AGL Distro.
+
+ Because the `packagegroup-agl-demo-qt-examples` is not mandatory for the AGL
+ Application Framework and the AGL DEMO, the packagegroup is added to the layer's
+ `local.conf` file only when needed. \ No newline at end of file
diff --git a/docs/3_Developer_Guides/6_AGL_Layers/4_meta-agl-devel.md b/docs/3_Developer_Guides/6_AGL_Layers/4_meta-agl-devel.md
new file mode 100644
index 0000000..8932b82
--- /dev/null
+++ b/docs/3_Developer_Guides/6_AGL_Layers/4_meta-agl-devel.md
@@ -0,0 +1,143 @@
+---
+title: meta-agl-devel
+---
+
+## Introduction
+
+The `meta-agl-devel` layer contains components that are being tested or
+still in development.
+The layer also contains software packages that Original Equipment
+Manufacturers (OEMs) need but are not included in the AGL software.
+
+## Sub-Layers
+
+The `meta-agl-devel` layer contains the following files and sub-layers:
+
+```
+.
+├── meta-agl-telemetry
+├── meta-audio-4a-framework
+├── meta-audio-soundmanager-framework
+├── meta-egvirt
+├── meta-gstrecorder-rcar-gen3
+├── meta-hmi-framework
+├── meta-oem-extra-libs
+├── README.md
+├── templates
+```
+
+The following list provides a summary of these sub-layers:
+
+* `meta-agl-telemetry`: Provides the smallest AGL image.
+ The image is designed to be used when a device requires restricted
+ scope of responsibilites (e.g. collecting vehicle telemetry).
+
+* `meta-audio-4a-framework`: A collection of recipes used for the
+ first integration of 4A (i.e. Advanced AGL Audio Architecture).
+
+* `meta-pipewire`: A collection of recipes used for the integration
+ of the pipewire sound system.
+
+* `meta-audio-soundmanager-framework`: Supports the Soundmanager
+ Audio Framework features, which maps to the `agl-audio-soundmanager-framework`
+ AGL feature.
+
+* `meta-egvirt`: The AGL Virtualization Expert Group (EG-VIRT) layer.
+ This layer supports the design, test, implementation, and assessment
+ of virtualization technologies (e.g. containers, hypervisors, system
+ partitioners, and so forth) aimed at AGL ARMv8 and Intel platforms.
+
+* `meta-gstrecorder-rcar-gen3`: Supports streaming audio and video for
+ the Pro and Premier board kits (e.g.
+ [Renesas R-Car Starter Kit Pro Board](https://www.elinux.org/R-Car/Boards/M3SK)
+ and
+ [Renesas R-Car Starter Kit Premier Board](https://www.elinux.org/R-Car/Boards/H3SK)).
+
+* `meta-hmi-framework`: Provides AGL's Human Machine Interface (HMI) framework
+ through resource management consisting of sounds, windows, and input control.
+ For more information, see the
+ [HMI-Framework Page](https://wiki.automotivelinux.org/hmiframework) of the
+ AGL Wiki.
+
+* `meta-oem-extra-libs`: Provides libraries and software packages needed by
+ OEMs but not provided by the AGL software.
+
+* `templates`: Feature templates that support the `meta-agl-devel` layer.
+
+## Additional Sub-Layer Information
+
+This section provides additional information for the `meta-egvirt`,
+`meta-oem-extra-libs`, and `meta-hmi-framework` layers.
+
+### Virtualization Support
+
+The `meta-egvirt` layer enables virtualization support in AGL.
+The AGL Virtualization Expert (EG-VIRT) group is responsible
+for design and implementation of AGL virtualization solutions
+(.e.g the Virtualization platform architecture of AGL).
+You can read about EG-VERT's efforts on the
+"[Virtualization Expert Group's](https://wiki.automotivelinux.org/eg-virt)"
+page of the AGL wiki.
+
+Additionally, you can learn more about virtualization as it applies to AGL
+by reading
+"[The Automotive Grade Linux Software Defined Connected Car Architecture](https://www.automotivelinux.org/wp-content/uploads/sites/4/2018/06/agl_software_defined_car_jun18.pdf)"
+whitepaper.
+
+### OEM Extra Libraries
+
+The `meta-oem-extra-libs` layer provides additional software packages many OEMs need
+but are not part of the AGL source.
+Following is the list of packages this layer provides:
+
+ * boost
+ * fixesproto
+ * imagemagick
+ * iptables
+ * Xorg-macros
+ * zlib
+ * eglibc = glibc
+ * libcurl
+ * libgif
+ * libneon
+ * mongoose
+ * fuse
+ * protocol buffers
+ * bsdiff
+ * module-init-tools
+ * libcroco
+ * libtiff
+ * librsvg
+ * libpcap
+
+To add these packages to your library, you need to include the
+`agl-oem-extra-libs` AGL feature when you initialize your build
+environment using the `aglsetup.sh` script.
+
+For information on how to use the `aglsetup.sh` script to initialize
+your build environment, see the
+"[Initializing Your Build Environment](../../0_Getting_Started/2_Building_AGL_Image/3_Initializing_Your_Build_Environment.md)"
+section.
+
+Once you have included the AGL feature, you can build your image.
+
+### HMI Framework
+
+The `meta-hmi-framework` layer supports the Human-Machine Interface (HMI) Framework.
+The HMI-Framework is the User Interface (UI) to control the Infotainment System.
+Work continues to close the gap between the user experience of a smart phone
+and the Infotainment System in a vehicle, for example.
+
+You can find more out about HMI Framework progress on the
+"[HMI Framework](https://wiki.automotivelinux.org/hmiframework)" page on the AGL Wiki.
+
+To add HMI Framework support to your image, you need to include the
+`hmi-framework` AGL feature when you initialize your build
+environment using the `aglsetup.sh` script.
+
+For information on how to use the `aglsetup.sh` script to initialize
+your build environment, see the
+"[Initializing Your Build Environment](../../0_Getting_Started/2_Building_AGL_Image/3_Initializing_Your_Build_Environment.md)"
+section.
+
+Once you have included the AGL feature, you can build your image. \ No newline at end of file