develop/beyond-GSG.html · develop/beyond-GSG.rst 공식 원문 ↗

Zephyr 3.7.0 · Develop · Advanced Setup

시작 안내서 그 다음 단계

기본 설치를 마친 뒤 개발 환경을 안정적으로 유지하고 실제·가상 target에서 application을 실행하는 방법을 설명합니다.

Official pathdevelop/beyond-GSG.html
Source filedevelop/beyond-GSG.rst
Source versionZephyr 3.7.0
TranslationFull · reviewed

본문 기준: Zephyr 3.7.0 LTS3 · 이후 유지보수 패치는 별도입니다.

Part 1

요약·해설

운영체제별 pip 주의점, SDK 선택과 갱신, west workspace 동기화, board alias, blinky build, Linux udev 권한, QEMU와 native_sim 실행을 단계별로 설명합니다.

환경

Python · pip · Toolchain

Source

Git · West · Modules

실행

Board · QEMU · native_sim

Part 2

접을 수 있는 영어 원문 전체

영어 원문 전체 펼치기
원문 SHA-256 2B1B585B0B3C0B4705246214E0794DA41F42A55E9E92E6A5E96E42AD6F18BBB8
.. _beyond-gsg:

Beyond the Getting Started Guide
################################

The :ref:`getting_started` gives a straight-forward path to set up
your Linux, macOS, or Windows environment for Zephyr development. In
this document, we delve deeper into Zephyr development setup
issues and alternatives.

.. _python-pip:

Python and pip
**************

Python 3 and its package manager, pip\ [#pip]_, are used extensively by Zephyr
to install and run scripts required to compile and run Zephyr
applications, set up and maintain the Zephyr development environment,
and build project documentation.

Depending on your operating system, you may need to provide the
``--user`` flag to the ``pip3`` command when installing new packages. This is
documented throughout the instructions.
See `Installing Packages`_ in the Python Packaging User Guide for more
information about pip\ [#pip]_, including `information on -\\-user`_.

- On Linux, make sure ``~/.local/bin`` is at the front of your :envvar:`PATH`
  :ref:`environment variable <env_vars>`, or programs installed with ``--user``
  won't be found. Installing with ``--user`` avoids conflicts between pip
  and the system package manager, and is the default on Debian-based
  distributions.

- On macOS, `Homebrew disables -\\-user`_.

- On Windows, see the `Installing Packages`_ information on ``--user`` if you
  require using this option.

On all operating systems, pip's ``-U`` flag installs or updates the package if the
package is already installed locally but a more recent version is available. It
is good practice to use this flag if the latest version of a package is
required.  (Check the :zephyr_file:`scripts/requirements.txt` file to
see if a specific Python package version is expected.)

Advanced Platform Setup
***********************

Here are some alternative instructions for more advanced platform setup
configurations for supported development platforms:

.. toctree::
   :maxdepth: 1

   Linux setup alternatives <getting_started/installation_linux.rst>
   macOS setup alternatives <getting_started/installation_mac.rst>
   Windows setup alternatives <getting_started/installation_win.rst>

.. _gs_toolchain:

Install a Toolchain
*******************

Zephyr binaries are compiled and linked by a *toolchain* comprised of
a cross-compiler and related tools which are different from the compiler
and tools used for developing software that runs natively on your host
operating system.

You can install the :ref:`Zephyr SDK <toolchain_zephyr_sdk>` to get toolchains for all
supported architectures, or install an :ref:`alternate toolchain <toolchains>`
recommended by the SoC vendor or a specific board (check your specific
:ref:`board-level documentation <boards>`).

You can configure the Zephyr build system to use a specific toolchain by
setting :ref:`environment variables <env_vars>` such as
:envvar:`ZEPHYR_TOOLCHAIN_VARIANT <{TOOLCHAIN}_TOOLCHAIN_PATH>` to a supported
value, along with additional variable(s) specific to the toolchain variant.

.. _gs_toolchain_update:

Updating the Zephyr SDK toolchain
*********************************

When updating Zephyr SDK, check whether the :envvar:`ZEPHYR_TOOLCHAIN_VARIANT`
or :envvar:`ZEPHYR_SDK_INSTALL_DIR` environment variables are already set.

* If the variables are not set, the latest compatible version of Zephyr SDK will be selected
  by default. Proceed to next step without making any changes.

* If :envvar:`ZEPHYR_TOOLCHAIN_VARIANT` is set, the corresponding toolchain will be selected
  at build time. Zephyr SDK is identified by the value ``zephyr``.
  If the :envvar:`ZEPHYR_TOOLCHAIN_VARIANT` environment variable is not ``zephyr``, then either
  unset it or change its value to ``zephyr`` to make sure Zephyr SDK is selected.

* If the :envvar:`ZEPHYR_SDK_INSTALL_DIR` environment variable is set, it will override
  the default lookup location for Zephyr SDK. If you install Zephyr SDK to one
  of the :ref:`recommended locations <toolchain_zephyr_sdk_bundle_variables>`,
  you can unset this variable. Otherwise, set it to your chosen install location.

For more information about these environment variables in Zephyr, see :ref:`env_vars_important`.

Cloning the Zephyr Repositories
*******************************

The Zephyr project source is maintained in the `GitHub zephyr repo
<https://github.com/zephyrproject-rtos/zephyr>`_. External modules used
by Zephyr are found in the parent `GitHub Zephyr project
<https://github.com/zephyrproject-rtos/>`_.  Because of these
dependencies, it's convenient to use the Zephyr-created :ref:`west
<west>` tool to fetch and manage the Zephyr and external module source
code.  See :ref:`west-basics` for more details.

Once your development tools are installed, use :ref:`west` to create,
initialize, and download sources from the zephyr and external module
repos.  We'll use the name ``zephyrproject``, but you can choose any
name that does not contain a space anywhere in the path.

.. code-block:: console

   west init zephyrproject
   cd zephyrproject
   west update

The ``west update`` command fetches and keeps :ref:`modules` in the
:file:`zephyrproject` folder in sync with the code in the local zephyr
repo.

.. warning::

   You must run ``west update`` any time the :file:`zephyr/west.yml`
   changes, caused, for example, when you pull the :file:`zephyr`
   repository, switch branches in it, or perform a ``git bisect`` inside of
   it.

Keeping Zephyr updated
======================

To update the Zephyr project source code, you need to get the latest
changes via ``git``. Afterwards, run ``west update`` as mentioned in
the previous paragraph.

.. code-block:: console

   # replace zephyrproject with the path you gave west init
   cd zephyrproject/zephyr
   git pull
   west update

Export Zephyr CMake package
***************************

The :ref:`cmake_pkg` can be exported to CMake's user package registry if it has
not already been done as part of :ref:`getting_started`.

.. _gs-board-aliases:

Board Aliases
*************

Developers who work with multiple boards may find explicit board names
cumbersome and want to use aliases for common targets.  This is
supported by a CMake file with content like this:

.. code-block:: cmake

   # Variable foo_BOARD_ALIAS=bar replaces BOARD=foo with BOARD=bar and
   # sets BOARD_ALIAS=foo in the CMake cache.
   set(pca10028_BOARD_ALIAS nrf51dk/nrf51822)
   set(pca10056_BOARD_ALIAS nrf52840dk/nrf52840)
   set(k64f_BOARD_ALIAS frdm_k64f)
   set(sltb004a_BOARD_ALIAS efr32mg_sltb004a)

and specifying its location in :envvar:`ZEPHYR_BOARD_ALIASES`.  This
enables use of aliases ``pca10028`` in contexts like
``cmake -DBOARD=pca10028`` and ``west -b pca10028``.

Build and Run an Application
****************************

You can build, flash, and run Zephyr applications on real
hardware using a supported host system. Depending on your operating system,
you can also run it in emulation with QEMU, or as a native application with
:ref:`native_sim <native_sim>`.
Additional information about building applications can be found in the
:ref:`build_an_application` section.

Build Blinky
============

Let's build the :zephyr:code-sample:`blinky` sample application.

Zephyr applications are built to run on specific hardware, called a
"board"\ [#board_misnomer]_. We'll use the Phytec :ref:`reel_board
<reel_board>` here, but you can change the ``reel_board`` build target
to another value if you have a different board. See :ref:`boards` or run
``west boards`` from anywhere inside the ``zephyrproject`` directory for
a list of supported boards.

#. Go to the zephyr repository:

   .. code-block:: console

      cd zephyrproject/zephyr

#. Build the blinky sample for the ``reel_board``:

   .. zephyr-app-commands::
      :app: samples/basic/blinky
      :board: reel_board
      :goals: build

The main build products will be in :file:`build/zephyr`;
:file:`build/zephyr/zephyr.elf` is the blinky application binary in ELF
format. Other binary formats, disassembly, and map files may be present
depending on your board.

The other sample applications in the :zephyr_file:`samples` folder are
documented in :ref:`samples-and-demos`.

.. note:: If you want to reuse an
   existing build directory for another board or application, you need to
   add the parameter ``-p=auto`` to ``west build`` to clean out settings
   and artifacts from the previous build.

Run the Application by Flashing to a Board
==========================================

Most hardware boards supported by Zephyr can be flashed by running
``west flash``. This may require board-specific tool installation and
configuration to work properly.

See :ref:`application_run` and your specific board's documentation in
:ref:`boards` for additional details.

.. _setting-udev-rules:

Setting udev rules
===================

Flashing a board requires permission to directly access the board
hardware, usually managed by installation of the flashing tools.  On
Linux systems, if the ``west flash`` command fails, you likely need to
define udev rules to grant the needed access permission.

Udev is a device manager for the Linux kernel and the udev daemon
handles all user space events raised when a hardware device is added (or
removed) from the system.  We can add a rules file to grant access
permission by non-root users to certain USB-connected devices.

The OpenOCD (On-Chip Debugger) project conveniently provides a rules
file that defined board-specific rules for most Zephyr-supported
arm-based boards, so we recommend installing this rules
file by downloading it from their sourceforge repo, or if you've
installed the Zephyr SDK there is a copy of this rules file in the SDK
folder:

* Either download the OpenOCD rules file and copy it to the right
  location::

     wget -O 60-openocd.rules https://sf.net/p/openocd/code/ci/master/tree/contrib/60-openocd.rules?format=raw
     sudo cp 60-openocd.rules /etc/udev/rules.d

* or copy the rules file from the Zephyr SDK folder::

     sudo cp ${ZEPHYR_SDK_INSTALL_DIR}/sysroots/x86_64-pokysdk-linux/usr/share/openocd/contrib/60-openocd.rules /etc/udev/rules.d

Then, in either case, ask the udev daemon to reload these rules::

   sudo udevadm control --reload

Unplug and plug in the USB connection to your board, and you should have
permission to access the board hardware for flashing. Check your
board-specific documentation (:ref:`boards`) for further information if
needed.

Run the Application in QEMU
===========================

On Linux and macOS, you can run Zephyr applications via emulation on your host
system using `QEMU <https://www.qemu.org/>`_ when targeting either
the x86 or ARM Cortex-M3 architectures. (QEMU is included with the Zephyr
SDK installation.)

On Windows, you need to install QEMU manually from
`Download QEMU <https://www.qemu.org/download/#windows>`_. After installation,
add path to QEMU installation folder to PATH environment variable.
To enable QEMU in Test Runner (Twister) on Windows,
:ref:`set the environment variable <env_vars>`
``QEMU_BIN_PATH`` to the path of QEMU installation folder.

For example, you can build and run the :ref:`hello_world` sample using
the x86 emulation board configuration (``qemu_x86``), with:

.. zephyr-app-commands::
   :zephyr-app: samples/hello_world
   :host-os: unix
   :board: qemu_x86
   :goals: build run

To exit QEMU, type :kbd:`Ctrl-a`, then :kbd:`x`.

Use ``qemu_cortex_m3`` to target an emulated Arm Cortex-M3 sample.

.. _gs_native:

Run a Sample Application natively (Linux)
=========================================

You can compile some samples to run as host programs
on Linux. See :ref:`native_sim` for more information. On 64-bit host operating systems, you
need to install a 32-bit C library, or build targeting :ref:`native_sim/native/64<native_sim32_64>`.

First, build Hello World for ``native_sim``.

.. zephyr-app-commands::
   :zephyr-app: samples/hello_world
   :host-os: unix
   :board: native_sim
   :goals: build

Next, run the application.

.. code-block:: console

   west build -t run
   # or just run zephyr.exe directly:
   ./build/zephyr/zephyr.exe

Press :kbd:`Ctrl-C` to exit.

You can run ``./build/zephyr/zephyr.exe --help`` to get a list of available
options.

This executable can be instrumented using standard tools, such as gdb or
valgrind.

.. rubric:: Footnotes

.. [#pip]

   pip is Python's package installer. Its ``install`` command first tries to
   reuse packages and package dependencies already installed on your computer.
   If that is not possible, ``pip install`` downloads them from the Python
   Package Index (PyPI) on the Internet.

   The package versions requested by Zephyr's :file:`requirements.txt` may
   conflict with other requirements on your system, in which case you may
   want to set up a virtualenv for Zephyr development.

.. [#board_misnomer]

   This has become something of a misnomer over time. While the target can be,
   and often is, a microprocessor running on its own dedicated hardware
   board, Zephyr also supports using QEMU to run targets built for other
   architectures in emulation, targets which produce native host system
   binaries that implement Zephyr's driver interfaces with POSIX APIs, and even
   running different Zephyr-based binaries on CPU cores of differing
   architectures on the same physical chip. Each of these hardware
   configurations is called a "board," even though that doesn't always make
   perfect sense in context.

.. _information on -\\-user:
 https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site
.. _Homebrew disables -\\-user:
 https://docs.brew.sh/Homebrew-and-Python#note-on-pip-install---user
.. _Installing Packages:
 https://packaging.python.org/tutorials/installing-packages/

Part 3

한국어 전문 번역

시작 안내서 그 다음 단계

시작 안내서는 Linux, macOS, Windows에서 Zephyr 개발 환경을 설정하는 곧은 경로를 제공합니다. 이 문서는 그보다 더 깊이 들어가 Zephyr 개발 환경 구성에서 마주치는 문제와 대안을 설명합니다.

Python과 pip

Python 3와 package manager인 pip1는 Zephyr application을 compile·실행하는 데 필요한 script 설치와 실행, Zephyr 개발 환경 구성·유지, project documentation build에 폭넓게 사용됩니다.

운영체제에 따라 새 package를 설치할 때 pip3 command에 --user flag를 지정해야 할 수 있습니다. 이 조건은 관련 설치 절차마다 안내되어 있습니다. pip와 --user의 자세한 내용은 Python Packaging User Guide의 Installing Packages 및 --user 정보를 참고하십시오.

  • Linux에서는 ~/.local/bin을 PATH 환경 변수의 맨 앞에 두어야 합니다. 그렇지 않으면 --user로 설치한 program을 찾지 못합니다. --user 설치는 pip와 system package manager의 충돌을 피하며 Debian 계열 distribution에서는 기본값입니다.
  • macOS에서는 Homebrew가 --user를 비활성화합니다.
  • Windows에서 이 option이 필요하다면 Installing Packages의 --user 설명을 참고하십시오.

모든 운영체제에서 pip의 -U flag는 package가 아직 없으면 설치하고, 로컬에 더 오래된 version이 있으면 갱신합니다. 최신 package가 필요할 때 이 flag를 사용하는 것이 좋습니다. 특정 Python package version이 요구되는지는 scripts/requirements.txt에서 확인합니다.

고급 Platform 설정

지원 개발 platform을 더 복잡한 방식으로 구성해야 한다면 운영체제별 대안 지침을 참고하십시오.

Toolchain 설치

Zephyr binary는 cross-compiler와 관련 도구로 구성된 toolchain으로 compile·link됩니다. 이 도구들은 host 운영체제에서 native로 실행하는 software를 개발할 때 쓰는 compiler·도구와 다릅니다.

Zephyr SDK를 설치하면 지원되는 모든 architecture용 toolchain을 얻을 수 있습니다. 또는 SoC vendor나 특정 board가 권장하는 대체 toolchain을 설치할 수 있습니다. 이 경우 해당 board 문서를 확인하십시오.

Zephyr build system에서 특정 toolchain을 선택하려면 환경 변수를 설정합니다. 예를 들어 ZEPHYR_TOOLCHAIN_VARIANT에 지원되는 값을 지정하고, 선택한 toolchain variant에 필요한 추가 variable도 함께 설정합니다.

Zephyr SDK toolchain 갱신

Zephyr SDK를 갱신하기 전에 ZEPHYR_TOOLCHAIN_VARIANT 또는 ZEPHYR_SDK_INSTALL_DIR 환경 변수가 이미 설정되어 있는지 확인합니다.

  • 두 variable이 모두 설정되지 않았다면 최신 compatible Zephyr SDK가 기본으로 선택됩니다. 아무것도 바꾸지 않고 다음 단계로 진행합니다.
  • ZEPHYR_TOOLCHAIN_VARIANT가 설정되어 있으면 build할 때 그 값에 해당하는 toolchain을 선택합니다. Zephyr SDK를 나타내는 값은 zephyr입니다. 값이 zephyr가 아니라면 variable을 해제하거나 값을 zephyr로 바꾸어 SDK가 선택되게 합니다.
  • ZEPHYR_SDK_INSTALL_DIR가 설정되어 있으면 Zephyr SDK의 기본 검색 위치를 덮어씁니다. SDK를 권장 위치 중 하나에 설치했다면 이 variable을 해제할 수 있습니다. 다른 위치라면 실제 설치 위치로 설정합니다.

자세한 설명은 중요 환경 변수를 참고하십시오.

Zephyr repository 복제

Zephyr project source는 GitHub zephyr repository에서 관리합니다. Zephyr가 사용하는 외부 module은 상위 GitHub Zephyr project 아래에 있습니다. 이런 dependency 때문에 Zephyr가 만든 west 도구를 사용하면 Zephyr source와 외부 module source를 편리하게 가져오고 관리할 수 있습니다. 자세한 내용은 west 기초를 참고하십시오.

개발 도구를 설치한 뒤 west로 workspace를 만들고 초기화하고 Zephyr와 외부 module repository의 source를 내려받습니다. 아래에서는 이름을 zephyrproject로 사용하지만 path 어디에도 공백이 없는 다른 이름을 선택해도 됩니다.

west init zephyrproject
cd zephyrproject
west update

west update는 zephyrproject folder 안의 module을 가져오고, 로컬 zephyr repository가 지정한 code와 동기화합니다.

Zephyr 최신 상태 유지

Zephyr project source code를 갱신하려면 git으로 최신 변경을 받은 다음 앞에서 설명한 west update를 실행합니다.

# replace zephyrproject with the path you gave west init
cd zephyrproject/zephyr
git pull
west update

Zephyr CMake package 내보내기

Zephyr CMake package를 아직 시작 안내서 과정에서 내보내지 않았다면 CMake user package registry로 export할 수 있습니다.

Board alias

여러 board를 사용하는 개발자는 명시적인 board name이 번거로워 자주 쓰는 target에 alias를 지정하고 싶을 수 있습니다. 다음과 같은 CMake file로 이를 지원합니다.

# Variable foo_BOARD_ALIAS=bar replaces BOARD=foo with BOARD=bar and
# sets BOARD_ALIAS=foo in the CMake cache.
set(pca10028_BOARD_ALIAS nrf51dk/nrf51822)
set(pca10056_BOARD_ALIAS nrf52840dk/nrf52840)
set(k64f_BOARD_ALIAS frdm_k64f)
set(sltb004a_BOARD_ALIAS efr32mg_sltb004a)

이 file 위치를 ZEPHYR_BOARD_ALIASES 환경 변수에 지정합니다. 그러면 cmake -DBOARD=pca10028이나 west -b pca10028처럼 pca10028 alias를 사용할 수 있습니다.

Application build와 실행

지원되는 host system에서는 실제 hardware용 Zephyr application을 build·flash·실행할 수 있습니다. 운영체제에 따라 QEMU emulation으로 실행하거나 native_sim으로 native application처럼 실행할 수도 있습니다. 추가 build 설명은 Application build 절을 참고하십시오.

Blinky build

Blinky sample application을 build해 봅니다.

Zephyr application은 특정 hardware, 즉 "board"2에서 실행하도록 build합니다. 여기서는 Phytec reel_board를 사용하지만 다른 board가 있다면 build target을 바꿀 수 있습니다. 지원 board 목록은 board 문서에서 보거나 zephyrproject directory 안에서 west boards를 실행해 확인합니다.

  1. Zephyr repository로 이동합니다.
    cd zephyrproject/zephyr
  2. reel_board용 blinky sample을 build합니다.
    west build -b reel_board samples/basic/blinky

주요 build 산출물은 build/zephyr에 생성됩니다. build/zephyr/zephyr.elf는 ELF format의 blinky application binary입니다. Board에 따라 다른 binary format, disassembly, map file도 생성될 수 있습니다.

samples folder의 다른 sample application은 Samples and Demos에 설명되어 있습니다.

Board에 flash하여 application 실행

Zephyr가 지원하는 대부분의 hardware board는 west flash로 flash할 수 있습니다. 정상 동작을 위해 board별 도구 설치와 설정이 필요할 수 있습니다.

Application 실행과 해당 board 문서에서 자세한 내용을 확인하십시오.

udev rule 설정

Board를 flash하려면 hardware에 직접 접근할 권한이 필요하며 보통 flashing tool 설치 과정에서 관리됩니다. Linux에서 west flash가 실패한다면 필요한 접근 권한을 부여하는 udev rule이 없을 가능성이 큽니다.

Udev는 Linux kernel의 device manager이며 udev daemon은 hardware device가 system에 추가되거나 제거될 때 발생하는 user-space event를 처리합니다. 특정 USB device에 root가 아닌 사용자도 접근하도록 rule file을 추가할 수 있습니다.

OpenOCD(On-Chip Debugger) project는 Zephyr가 지원하는 대부분의 Arm board에 대한 rule을 담은 file을 제공합니다. SourceForge에서 내려받거나 Zephyr SDK folder의 사본을 사용해 설치하는 방법을 권장합니다.

  • OpenOCD rule file을 내려받아 올바른 위치로 복사합니다.
    wget -O 60-openocd.rules https://sf.net/p/openocd/code/ci/master/tree/contrib/60-openocd.rules?format=raw
    sudo cp 60-openocd.rules /etc/udev/rules.d
  • 또는 Zephyr SDK folder의 rule file을 복사합니다.
    sudo cp ${ZEPHYR_SDK_INSTALL_DIR}/sysroots/x86_64-pokysdk-linux/usr/share/openocd/contrib/60-openocd.rules /etc/udev/rules.d

어느 방법을 사용했든 udev daemon에 rule을 다시 읽도록 요청합니다.

sudo udevadm control --reload

Board의 USB 연결을 뺐다가 다시 연결하면 flash를 위한 hardware 접근 권한이 생깁니다. 필요하면 해당 board 문서에서 추가 정보를 확인하십시오.

QEMU에서 application 실행

Linux와 macOS에서는 x86 또는 Arm Cortex-M3 architecture를 target으로 할 때 QEMU로 host system에서 Zephyr application을 emulation할 수 있습니다. QEMU는 Zephyr SDK 설치에 포함됩니다.

Windows에서는 QEMU download에서 직접 설치하고 QEMU 설치 folder를 PATH 환경 변수에 추가해야 합니다. Windows의 Test Runner(Twister)에서 QEMU를 사용하려면 QEMU_BIN_PATH 환경 변수를 QEMU 설치 folder로 설정합니다.

qemu_x86 emulation board configuration으로 Hello World sample을 build하고 실행하는 예:

# From the root of the zephyr repository
west build -b qemu_x86 samples/hello_world
west build -t run

QEMU를 종료하려면 Ctrl-a를 누른 다음 x를 입력합니다. Arm Cortex-M3 emulation sample은 qemu_cortex_m3 target을 사용합니다.

Sample application을 native로 실행하기(Linux)

일부 sample은 Linux host program으로 compile해 실행할 수 있습니다. 자세한 내용은 native_sim을 참고하십시오. 64-bit host 운영체제에서는 32-bit C library를 설치하거나 native_sim/native/64를 target으로 build해야 합니다.

먼저 Hello World를 native_sim용으로 build합니다.

# From the root of the zephyr repository
west build -b native_sim samples/hello_world

그다음 application을 실행합니다.

west build -t run
# or just run zephyr.exe directly:
./build/zephyr/zephyr.exe

Ctrl-C로 종료합니다. ./build/zephyr/zephyr.exe --help를 실행하면 사용할 수 있는 option 목록을 볼 수 있습니다. 이 executable은 gdb나 valgrind 같은 표준 도구로 계측할 수 있습니다.

각주

1. pip는 Python package installer입니다. install command는 먼저 computer에 이미 설치된 package와 dependency를 재사용하려고 합니다. 불가능하면 인터넷의 Python Package Index(PyPI)에서 내려받습니다. Zephyr requirements.txt가 요구하는 package version이 system의 다른 요구사항과 충돌할 수 있으며, 이 경우 Zephyr 개발용 virtualenv를 구성할 수 있습니다.

2. 시간이 지나면서 "board"라는 명칭은 다소 부정확해졌습니다. Target은 전용 hardware board의 microprocessor일 때가 많지만, Zephyr는 QEMU로 다른 architecture를 emulation하는 target, POSIX API로 Zephyr driver interface를 구현하는 native host binary target, 하나의 physical chip에서 architecture가 다른 여러 CPU core에 별도 Zephyr binary를 실행하는 구성도 지원합니다. 문맥상 완벽히 맞지 않더라도 이런 hardware configuration을 모두 "board"라고 부릅니다.

Source

출처

영어 원문에는 문단, 문서 지시문, 표, 코드, 코드 심벌, 경로를 그대로 보존했습니다.