123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- .. SPDX-License-Identifier: CC-BY-SA-2.0-UK
- Adding a New Machine
- ********************
- Adding a new machine to the Yocto Project is a straightforward process.
- This section describes how to add machines that are similar to those
- that the Yocto Project already supports.
- .. note::
- Although well within the capabilities of the Yocto Project, adding a
- totally new architecture might require changes to ``gcc``/``glibc``
- and to the site information, which is beyond the scope of this
- manual.
- For a complete example that shows how to add a new machine, see the
- ":ref:`bsp-guide/bsp:creating a new bsp layer using the \`\`bitbake-layers\`\` script`"
- section in the Yocto Project Board Support Package (BSP) Developer's
- Guide.
- Adding the Machine Configuration File
- =====================================
- To add a new machine, you need to add a new machine configuration file
- to the layer's ``conf/machine`` directory. This configuration file
- provides details about the device you are adding.
- The OpenEmbedded build system uses the root name of the machine
- configuration file to reference the new machine. For example, given a
- machine configuration file named ``crownbay.conf``, the build system
- recognizes the machine as "crownbay".
- The most important variables you must set in your machine configuration
- file or include from a lower-level configuration file are as follows:
- - :term:`TARGET_ARCH` (e.g. "arm")
- - ``PREFERRED_PROVIDER_virtual/kernel``
- - :term:`MACHINE_FEATURES` (e.g. "screen wifi")
- You might also need these variables:
- - :term:`SERIAL_CONSOLES` (e.g. "115200;ttyS0 115200;ttyS1")
- - :term:`KERNEL_IMAGETYPE` (e.g. "zImage")
- - :term:`IMAGE_FSTYPES` (e.g. "tar.gz jffs2")
- You can find full details on these variables in the reference section.
- You can leverage existing machine ``.conf`` files from
- ``meta-yocto-bsp/conf/machine/``.
- Adding a Kernel for the Machine
- ===============================
- The OpenEmbedded build system needs to be able to build a kernel for the
- machine. You need to either create a new kernel recipe for this machine,
- or extend an existing kernel recipe. You can find several kernel recipe
- examples in the Source Directory at ``meta/recipes-kernel/linux`` that
- you can use as references.
- If you are creating a new kernel recipe, normal recipe-writing rules
- apply for setting up a :term:`SRC_URI`. Thus, you need to specify any
- necessary patches and set :term:`S` to point at the source code. You need to
- create a :ref:`ref-tasks-configure` task that configures the unpacked kernel with
- a ``defconfig`` file. You can do this by using a ``make defconfig``
- command or, more commonly, by copying in a suitable ``defconfig`` file
- and then running ``make oldconfig``. By making use of ``inherit kernel``
- and potentially some of the ``linux-*.inc`` files, most other
- functionality is centralized and the defaults of the class normally work
- well.
- If you are extending an existing kernel recipe, it is usually a matter
- of adding a suitable ``defconfig`` file. The file needs to be added into
- a location similar to ``defconfig`` files used for other machines in a
- given kernel recipe. A possible way to do this is by listing the file in
- the :term:`SRC_URI` and adding the machine to the expression in
- :term:`COMPATIBLE_MACHINE`::
- COMPATIBLE_MACHINE = '(qemux86|qemumips)'
- For more information on ``defconfig`` files, see the
- ":ref:`kernel-dev/common:changing the configuration`"
- section in the Yocto Project Linux Kernel Development Manual.
- Adding a Formfactor Configuration File
- ======================================
- A formfactor configuration file provides information about the target
- hardware for which the image is being built and information that the
- build system cannot obtain from other sources such as the kernel. Some
- examples of information contained in a formfactor configuration file
- include framebuffer orientation, whether or not the system has a
- keyboard, the positioning of the keyboard in relation to the screen, and
- the screen resolution.
- The build system uses reasonable defaults in most cases. However, if
- customization is necessary, you need to create a ``machconfig`` file in
- the ``meta/recipes-bsp/formfactor/files`` directory. This directory
- contains directories for specific machines such as ``qemuarm`` and
- ``qemux86``. For information about the settings available and the
- defaults, see the ``meta/recipes-bsp/formfactor/files/config`` file
- found in the same area.
- Here is an example for "qemuarm" machine::
- HAVE_TOUCHSCREEN=1
- HAVE_KEYBOARD=1
- DISPLAY_CAN_ROTATE=0
- DISPLAY_ORIENTATION=0
- #DISPLAY_WIDTH_PIXELS=640
- #DISPLAY_HEIGHT_PIXELS=480
- #DISPLAY_BPP=16
- DISPLAY_DPI=150
- DISPLAY_SUBPIXEL_ORDER=vrgb
|