Skip to content

lipro-yocto/lpn-central

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Li-Pro.Net Central embedded environment

Central is an integration of various components to form a complete prepackaged build system and development environment derived from Poky. Central is another word for concentration, inner, or main. This points exactly to the goals here.

1. Architecture

Central defines two different working domains that are all common for a generic embedded device.

    +---------------------------+
    |{s}     +---------------+  |
    |        |{o}   +-----+  |  |
    | CEDI   |      |{d}  |  |  |
    |        | CORE | BSP |  |  |
    |        |      |     |  |  |
    |        |      +-----+  |  |
    |        +---------------+  |
    +---------------------------+
Central Distro (CEDI)

The Li-Pro.Net Central Distribution for demonstartion purposes.

Core Components (CORE)

The CORE provides packages and features to extend the Yocto core functionality with the new Central distribution and more differentiated definitions for the image build process.

BSP Components (BSP)

The BSP provides adaptions and corrections of given external Yocto BSP layer.

2. Yocto Integration

The scope of the Yocto integration includes meta-cedi and meta-lpn-bsp of this multi layer project.

2.1. Layers

-=------------------------------------------------------------------------------
                                                            BitBake priority 7

                                         /---------------\
                                         |   meta-qt5    |
                                         \-------+-------/
                                                 |
-=---------------------------------------------  | -=---------------------------
                                                 |          BitBake priority 6
                                                 V
/----------------\   /---------------\   /---------------\   /---------------\
|  meta-lpn-bsp  +-->|   meta-cedi   +-->: meta(central) :<--+    meta-oe    :
\----------------/   \-------+-------/   \-------+-------/   \-------+-------/
                             |                   :
-=-------------------------  | -=--------------  | -=---------------------------
                             |                   |          BitBake priority 5
                             V                   |
/----------------\   /---------------\           |
| meta-yocto-bsp +-->|   meta-poky   |           |
\----------------/   \-------+-------/           |
                             |                   |
                             V                   |
                     /---------------\           |
                     :  meta(yocto)  +<----------/
                     \---------------/

Legend

/-\ A needs B /=\   /-\ C needs D /-\
|A+---------->+B|   |C+<--------->+D|
\-/           \-/   \-/ D needs C \-/

A, C, and D are in scope, provided by this project.
B is out of scope, provided by external project.

2.2. Features

Concepts

Yocto maintains machines, distributions and images. A distribution is kind of superset of features that are deployable to various machines by one or multiple images. Features can be used to describe an image, a machine or a distribution. They can grouped into FEATURE_PACKAGES, that are mapped to package groups. Package groups provide the container where packages fall in.

2.2.1. Distribution Features

The Central Project is using distro features as shipped with the Yocto Project metadata. There are some features that are part of all images if:

  • the machine supports that features

  • the feature is not explicitly excluded by the image definition

Those features are declared in the Central distribution and are available via the package feed.

Table 1. Features enabled by the Central distribution
Feature Meaning

acl

Include ACL file attribute support.

alsa

Include ALSA support (OSS compatibility kernel modules installed if available).

api-documentation

Enables generation of API documentation during recipe builds. The resulting documentation is added to SDK tarballs when the bitbake -c populate_sdk command is used. See the "Adding API Documentation to the Standard SDK" section in the Yocto Project Application Development and the Extensible Software Development Kit (eSDK) manual.

bluetooth

Include bluetooth support (integrated BT only).

cramfs

Include CramFS support.

directfb

Include DirectFB support.

ext2

Include tools for supporting for devices with internal HDD or Microdrive for storing files (instead of Flash only devices).

ipsec

Include IPSec support.

ipv6

Include IPv6 support.

keyboard

Include keyboard support (e.g. keymaps will be loaded during boot).

largefile

Include large file support (enabled per default).

ldconfig

Include support for ldconfig and ld.so.conf on the target.

multiarch

Include multiple architecture support (experimental).

nfs

Include NFS client support (for mounting NFS exports on device).

opengl

Include the Open Graphics Library, which is a cross-language, multi-platform application programming interface used for rendering two and three-dimensional graphics.

pci

Include PCI bus support.

pcmcia

Include PCMCIA/CompactFlash support.

ppp

Include PPP dialup support.

ptest

Enables building the package tests where supported by individual recipes. For more information on package tests, see the "Testing Packages With ptest" section in the Yocto Project Development Tasks Manual.

smbfs

Include SMB networks client support (for mounting Samba/Microsoft Windows shares on device).

systemd

Include support for this init manager, which is a full replacement of for init with parallel starting of services, reduced shell overhead, and other features. This init manager is used by many distributions.

usbgadget

Include USB Gadget Device support (for USB networking, serial, storage).

usbhost

Include USB Host support (allows to connect external keyboard, mouse, storage, network etc).

wayland

Include the Wayland display server protocol and the library that supports it.

wifi

Include WiFi support (integrated only).

xattr

Include extended file attribute support.

x11

Include the X server and libraries.

2.2.2. Image Features

The Central Project is using image features as shipped with the Yocto Project metadata and introduce new images features as shown below. The image features are relevant for production and development.

Table 2. Features used by Central production images
Feature Meaning

base-central

Installs packages that are prerequisite to all the other production features and is configured to every Central image intrinsically. base-central is not a real image feature and can not present explicitly in IMAGE_FEATURES. The related package groups will be enabled permanently by the Central image class central-image.bbclass.

Install Central Package Groups
  • packagegroup-base-central, replace packagegroup-central-base

package-management

Installs package management tools and preserves the package manager database.

splash

Enables showing a splash screen during boot. By default, this screen is provided by psplash, which does allow customization. If you prefer to use an alternative splash screen package, you can do so by setting the SPLASH variable to a different package name (or names) within the image recipe or at the distro configuration level.

x11-base

Installs the X server with a minimal environment. It is depending directly on the x11 feature that have to contain in DISTRO_FEATURES.

Table 3. Features used by Central development images
Feature Meaning

allow-empty-password

Allows Dropbear and OpenSSH to accept root logins and logins from accounts having an empty password string.

debug-tweaks

Makes an image suitable for development (e.g. allows root logins without passwords and enables post-installation logging). See the features allow-empty-password, empty-root-password, post-install-logging in the Yocto Project Reference Manual for additional information.

dev-pkgs

Installs development packages (headers and extra library links) for all packages installed in a given image.

empty-root-password

Sets the root password to an empty string, which allows logins with a blank password.

post-install-logging

Enables logging postinstall script runs to the /var/log/postinstall.log file on first boot of the image on the target system.

eclipse-debug

Provides Eclipse remote debugging support.

qt5-sdk

Introduced and only usable by Central: Installs a full Qt5 SDK and demo application that runs on the device. The behavior is similar to the class populate_sdk_qt5 or image meta-toolchain-qt5 with activated feature qtcreator-debug.

Install Qt5 Package Groups
  • packagegroup-qt5-toolchain-target

  • packagegroup-qt5-qtcreator-debug

ssh-server-openssh

Installs the OpenSSH SSH server, which is more full-featured than Dropbear. Note that if both the OpenSSH SSH server and the Dropbear minimal SSH server are present in IMAGE_FEATURES, then OpenSSH will take precedence and Dropbear will not be installed. See the ssh-server-dropbear features in the Yocto Project Reference Manual too.

tools-cross

Introduced and only usable by Central: Installs basic cross development tools.

Install Central Package Groups ← dependent image feature
  • packagegroup-central-tools-cross

tools-debug

Installs debugging tools such as strace and gdb. For information on GDB, see the "Debugging With the GNU Project Debugger (GDB) Remotely" section in the Yocto Project Development Manual. For information on tracing and profiling, see the Yocto Project Profiling and Tracing Manual.

Install Central Package Groups ← dependent image feature
  • packagegroup-central-tools-debug

tools-profile

Installs profiling tools such as oprofile, exmap, and LTTng. For general information on user-space tools, see the "User-Space Tools" section in the Yocto Project Application Developer’s Guide.

Install Central Package Groups ← dependent image feature
  • packagegroup-central-tools-profile

tools-sdk

Installs a full SDK that runs on the device.

Install Central Package Groups ← dependent image feature
  • packagegroup-central-sdk, replace packagegroup-central-dev

tools-testapps

Installs device testing tools (e.g. touchscreen debugging).

Install Central Package Groups ← dependent image feature
  • packagegroup-central-tools-testapps

2.3. Images

2.3.1. Central Minimal Images

Central Minimal Images
Figure 1. Central Minimal Images Relationships
Table 4. Central Minimal Images
Image Name Formal Description

central-image-minimal

A small image just capable of allowing an Central device to boot. It is a direct derivation of the Yocto core image with Central specific enhancements to enable booting.

require ${COREBASE}/meta/recipes-core/images/core-image-minimal.bb
IMAGE_INSTALL += "packagegroup-central-boot ${CENTRAL_IMAGE_EXTRA_INSTALL}"

central-image-minimal-dev

A small image just capable of allowing an Central device to boot and is suitable for development work.

require central-image-minimal.bb

Yocto image features

Central image features

  • dev-pkgs

central-image-minimal-mtdutils

A small image capable of booting a Central device with support for the Minimal Memory Technology Devices (MTD) Utilities, which let the user interact with the MTD subsystem in the kernel to perform operations on flash devices.

require central-image-minimal.bb

Yocto image features

Central image features

  • mtd-utils

central-image-minimal-initramfs

A small image capable of booting a Central device. The kernel includes the Minimal RAM-based Initial Root Filesystem (initramfs), which finds the first 'init' program more efficiently. It is a direct derivation of the Yocto core initramfs image.

require ${COREBASE}/meta/recipes-core/images/core-image-minimal-initramfs.bb

2.3.2. Central Product, Debug and Development Images

Central Flavour Images
Figure 2. Central Flavour Images Relationships
Table 5. Central Product Images
Image Name Formal Description

central-image-base

A console-only image that fully supports the target device hardware provided by Central.

Yocto image features

Central image features

  • package-management

  • splash

central-image

A product image capable of allowing an Central device to boot in graphical mode and provides full feature support.

require central-image-base.bb

Yocto image ← distro features

Central image features

  • x11-base ← x11

Table 6. Central Development Images
Image Name Formal Description

central-image-dev

A console-only image that fully supports the target device hardware for development provided by Central.

Yocto image features

Central image features

  • debug-tweaks

  • ssh-server-openssh

  • tools-sdk

  • tools-testapps

  • ptest-pkgs

  • tools-cross

central-dev-image

A developer image just capable of allowing an Central device to boot in graphical mode and is suitable for full featured development work.

require central-image-dev.bb
require central-image.bb

Yocto image features

Central image features

  • qt5-sdk

Table 7. Central Debug and Development Images
Image Name Formal Description

central-image-debug

A console-only image that fully supports the target device hardware for debugging development provided by Central.

Yocto image features

Central image features

  • debug-tweaks

  • ssh-server-openssh

  • eclipse-debug

  • tools-debug

  • tools-profile

  • tools-sdk

  • dev-pkgs

  • dbg-pkgs

  • src-pkgs

  • tools-cross

central-debug-image

A developer image just capable of allowing an Central device to boot in graphical mode and is suitable for full featured debugging and development work.

require central-image-debug.bb
require central-image.bb

Yocto image features

Central image features

  • qt5-sdk

3. Contributing

To contribute to the setup you should send a pull request to this GitHub project or send the patches for review to the authors mailing address.

When creating patches, please use something like:

$: git format-patch -s --subject-prefix='lpn-central][PATCH' origin

When sending patches, please use something like:

$: git send-email --to rexut@users.noreply.github.com <generated patch>

To contribute to the development of this BSP and/or submit patches for new boards please send the patches against the respective project as informated bellow:

The following layers are included on this release:

Table 8. Included Layers

poky

base build system and metadata

Path

sources/poky

GIT

git://git.yoctoproject.org/poky

Project

https://www.yoctoproject.org/tools-resources/projects/poky

Mailing list

https://lists.yoctoproject.org/listinfo/yocto

meta-mingw

collection of extra packages and features for MinGW based SDKs

Path

sources/meta-mingw

GIT

git://git.yoctoproject.org/meta-mingw

Project

https://git.yoctoproject.org/cgit/cgit.cgi/meta-mingw

Mailing list

https://lists.yoctoproject.org/listinfo/yocto
NOTE: Use [meta-mingw] in subject to easy the processing

meta-openembedded

collection of OpenEmbedded extra packages and features

Path

sources/meta-openembedded

GIT

git://github.com/openembedded/meta-openembedded.git
git://git.openembedded.org/meta-openembedded

Project

https://github.com/openembedded/meta-openembedded
http://git.openembedded.org/meta-openembedded

Mailing list

http://lists.openembedded.org/mailman/listinfo/openembedded-devel
NOTE: Use [meta-oe] in subject to easy the processing

meta-qt5

support for Qt5 extra packages and features

Path

sources/meta-qt5

GIT

git://github.com/meta-qt5/meta-qt5.git

Project

https://github.com/meta-qt5/meta-qt5

Mailing list

http://lists.openembedded.org/mailman/listinfo/openembedded-devel
NOTE: Use [meta-qt5] in subject to easy the processing

About

Li-Pro.Net Central embedded environment

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published