From 3e228cdc5909472c4b1b0f024353f122bdd9fa7f Mon Sep 17 00:00:00 2001 From: Andrei Gherzan <andrei.gherzan@huawei.com> Date: Thu, 25 Mar 2021 22:15:47 +0000 Subject: [PATCH] Include meta-ohos documentation and remove redundant text Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com> Signed-off-by: shettygururaj <gururaj.shetty@huawei.com> --- index.rst | 3 +- meta-ohos | 1 + quick-start/.gitkeep | 0 quick-start/README.rst | 20 - quick-start/build-open-harmony.rst | 65 --- .../downloading-tools-and-sourcecode.rst | 92 ---- quick-start/freeRTOS-flavour.rst | 84 ---- quick-start/images/.gitkeep | 1 - quick-start/images/architecture.png | Bin 77998 -> 0 bytes quick-start/images/architecture.png.license | 3 - quick-start/linux-flavour.rst | 106 ----- quick-start/zephyr-flavour.rst | 83 ---- supported-boards/96b-Avenger.rst | 395 ------------------ supported-boards/96b-nitrogen.rst | 110 ----- supported-boards/README.rst | 28 -- supported-boards/seco-imx8mm-c61.rst | 181 -------- supported-boards/seco-intel-b68.rst | 216 ---------- 17 files changed, 2 insertions(+), 1386 deletions(-) create mode 120000 meta-ohos delete mode 100644 quick-start/.gitkeep delete mode 100644 quick-start/README.rst delete mode 100644 quick-start/build-open-harmony.rst delete mode 100644 quick-start/downloading-tools-and-sourcecode.rst delete mode 100644 quick-start/freeRTOS-flavour.rst delete mode 100644 quick-start/images/.gitkeep delete mode 100644 quick-start/images/architecture.png delete mode 100644 quick-start/images/architecture.png.license delete mode 100644 quick-start/linux-flavour.rst delete mode 100644 quick-start/zephyr-flavour.rst delete mode 100644 supported-boards/96b-Avenger.rst delete mode 100644 supported-boards/96b-nitrogen.rst delete mode 100644 supported-boards/README.rst delete mode 100644 supported-boards/seco-imx8mm-c61.rst delete mode 100644 supported-boards/seco-intel-b68.rst diff --git a/index.rst b/index.rst index 700fcbc..9ab80ac 100644 --- a/index.rst +++ b/index.rst @@ -14,8 +14,7 @@ Welcome to |main_project_name| documentation! :maxdepth: 1 overview/README - quick-start/README - supported-boards/README + meta-ohos/index readme/README contributing/README term/glossary diff --git a/meta-ohos b/meta-ohos new file mode 120000 index 0000000..65080f1 --- /dev/null +++ b/meta-ohos @@ -0,0 +1 @@ +../sources/meta-ohos/docs \ No newline at end of file diff --git a/quick-start/.gitkeep b/quick-start/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/quick-start/README.rst b/quick-start/README.rst deleted file mode 100644 index 20ba4de..0000000 --- a/quick-start/README.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. SPDX-FileCopyrightText: Huawei Inc. -.. -.. SPDX-License-Identifier: CC-BY-4.0 - -.. include:: ../definitions.rst - -Getting Started Guide -##################### - -|main_project_name| is a distributed OS that is designed to run on top of a variety of OS kernels ranging from Linux to RTOSs. To start with, you can build an |main_project_name| image using your preferred OS flavour using the supported boards. Currently, |main_project_name| supports Linux, Zephyr, and FreeRTOS kernels. The supported boards are listed under :ref:`Supported Boards <supported-boards>`. The configuration is set with certain default values which can be customized as per your preference. - -.. toctree:: - :maxdepth: 2 - - downloading-tools-and-sourcecode - build-open-harmony - linux-flavour - zephyr-flavour - freeRTOS-flavour - diff --git a/quick-start/build-open-harmony.rst b/quick-start/build-open-harmony.rst deleted file mode 100644 index 126e3c8..0000000 --- a/quick-start/build-open-harmony.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. SPDX-FileCopyrightText: Huawei Inc. -.. -.. SPDX-License-Identifier: CC-BY-4.0 - -.. _BuildOpenharmony: - -.. include:: ../definitions.rst - -Building and Running |main_project_name| image -############################################## - -This topic provides an overview of meta-ohos architecture, tools, and source code required to build your |main_project_name| image. The meta-ohos is an umbrella meta-layer containing all layers required to build |main_project_name| Image on existing kernel meta-layers. - -.. contents:: - :depth: 3 - -**Figure 1 meta-ohos overview** - -.. figure:: images/architecture.png - :align: center - :alt: meta-ohos overview - -.. _prerequisites: - -Prerequisites -************* -* All the bitbake commands must be executed in your localhost as a normal user instead of a root user. -* Install the following build dependencies packages for bitbake: - - * chrpath - * gawk -* Install Python latest version -* Install **Ubuntu 20.04 LTS** version - -.. _building-image: - -Procedure -*********** - -|main_project_name| can be hosted on top of a variety of kernels. Currently supported kernels (a.k.a. OHOS flavours) are Linux, Zephyr, and FreeRTOS (experimental). - -You can use the following syntax to build the OHOS flavour of your choice. - -.. code-block:: console - - $ TEMPLATECONF=../sources/meta-ohos/flavours/<lower_case_flavour> . ./sources/poky/oe-init-build-env build-<flavour>-<target_machine> - $ bitbake <image-name> - -.. Note:: - - MACHINE variable can be set up in *conf/local.conf* file under build directory or via command line: - -**Example:** - -.. code-block:: console - - $ MACHINE=<target_machine> bitbake <image-name> - - -Currently, |main_project_name| supports Linux, Zephyr, and FreeRTOS kernels. For more information on buidling an image with different OHOS flavours, see the following topics: - -* :ref:`FreeRTOS flavour <freertos_flavour>` -* :ref:`Zephyr flavour <zephyr_flavour>` -* :ref:`Linux flavour <linux_flavour>` - diff --git a/quick-start/downloading-tools-and-sourcecode.rst b/quick-start/downloading-tools-and-sourcecode.rst deleted file mode 100644 index 37f4818..0000000 --- a/quick-start/downloading-tools-and-sourcecode.rst +++ /dev/null @@ -1,92 +0,0 @@ -.. SPDX-FileCopyrightText: Huawei Inc. -.. -.. SPDX-License-Identifier: CC-BY-4.0 - -.. include:: ../definitions.rst - -Downloading Tools and Source Code -################################# - -.. _downloading-tools: - -Downloading Tools -***************** - -To start with, you need to install git-repo by executing the following command. Git-repo helps you to manage repositories, revision control systems, and automate parts of the development workflow. - -.. code-block:: console - - $ sudo add-apt-repository ppa:zyga/oh-tools - $ sudo apt-get update - $ sudo apt-get install git-repo - -.. _downloading-source-code: - -Downloading Source Code -*********************** - -Once git-repo has been installed, you can clone the necessary repositories. - -**For OHOS User** - -If you are a user and wants to build your product on top of OHOS, then clone the ‘stable’ branch by executing the following commands: - -.. code-block:: console - - $ mkdir ohos; cd ohos - $ repo init -u https://git.ostc-eu.org/OSTC/OHOS/manifest.git -b stable - $ repo sync --no-clone-bundle - -**For OHOS Developer** - -If you are a developer and wants to contribute to OHOS, then clone the ‘develop’ branch by executing the following commands: - -.. code-block:: console - - $ mkdir ohos; cd ohos - $ repo init -u https://git.ostc-eu.org/OSTC/OHOS/manifest.git -b develop -m develop.xml - $ repo sync --no-clone-bundle - -The preceding commands creates the following directory structure (layers): - -.. code-block:: console - - ./ohos/ - └─ sources - ├── meta-freertos - ├── meta-ohos - ├── meta-openembedded - ├── meta-zephyr - ├── <various yocto layers> - └── poky - -To verify the created directory structure (layers), run the following command: - -.. code-block:: console - - $ cd sources && ls -l - -Navigate to *ohos* directory by running the following command: - -.. code-block:: console - - $ cd .. - -.. list-table:: meta-ohos - :widths: auto - :header-rows: 1 - - * - Placeholder Name - - Description - * - meta-freertos - - FreeRTOS distro layer compatible with OpenEmbedded. - * - meta-ohos - - A set of meta-layers for building Open Harmony OS. - * - meta-openembedded - - Layers, recipes, packages, and source material for developing a image. - * - meta-zephyr - - Layers required for building Zephyr images. - * - <various yocto layers> - - Layers required to build yocto images. - * - poky - - Layers required to build customised embedded device images. diff --git a/quick-start/freeRTOS-flavour.rst b/quick-start/freeRTOS-flavour.rst deleted file mode 100644 index 4da1104..0000000 --- a/quick-start/freeRTOS-flavour.rst +++ /dev/null @@ -1,84 +0,0 @@ -.. SPDX-FileCopyrightText: Huawei Inc. -.. -.. SPDX-License-Identifier: CC-BY-4.0 - -.. _freertos_flavour: - -.. include:: ../definitions.rst - -FreeRTOS flavour -################ - -OHOS FreeRTOS flavour is designed to be simple and easy to use. It is based on `freertos` distribution. - -For getting started with |main_project_name|, *Downloading Tools* and *Source Code* perform the procedure in :ref:`Getting Started <BuildOpenharmony>`. - -OHOS FreeRTOS flavour supports the following images and machines: - -Supported images -**************** - -* freertos-demo - -Supported machines -****************** - -.. list-table:: Supported machines - :widths: auto - :header-rows: 1 - - * - Machine Name - - Details - * - qemuarmv5 - - Emulator - -Prerequisites -************* -* All the bitbake commands must be executed in your localhost as a normal user instead of a root user. -* Install the following build dependencies packages for bitbake: - - * chrpath - * gawk -* Install Python latest version -* Install **Ubuntu 20.04 LTS** version - -Procedure -********* - -Perform the following steps to build the image on the supported machine: - -1. Select the preferred image and machine to build your image. For example, for **qemuarmv5** machine and **freertos-demo** image, execute: - -.. code-block:: console - - $ TEMPLATECONF=../sources/meta-ohos/flavours/freertos . ./sources/poky/oe-init-build-env build-ohos-freertos-qemuarmv5 - $ bitbake freertos-demo - -2. Test the image built by executing the following test command considering qemuarmv5 machine as an example: - -.. code-block:: console - - $ runqemu qemuarmv5 - -Result -****** - -After successful bootup, you should see the following: - -.. code-block:: console - - ###### - FreeRTOS sample application - ###### - - A text may be entered using a keyboard. - It will be displayed when 'Enter' is pressed. - - Periodic task 10 secs - Waiting For Notification - Blocked... - Task1 - Task1 - You entered: "HelloFreeRTOS" - Unblocked - Notification Received - Waiting For Notification - Blocked... - -To exit qemu, use key combination: **Ctrl-A** followed by 'x'. diff --git a/quick-start/images/.gitkeep b/quick-start/images/.gitkeep deleted file mode 100644 index 8b13789..0000000 --- a/quick-start/images/.gitkeep +++ /dev/null @@ -1 +0,0 @@ - diff --git a/quick-start/images/architecture.png b/quick-start/images/architecture.png deleted file mode 100644 index 90835273de6675e9be662f56c1d5898ad5217f6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77998 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 aWo6pt;}rDXGlc?w4(va&?}g^MoBst<O_4PK diff --git a/quick-start/images/architecture.png.license b/quick-start/images/architecture.png.license deleted file mode 100644 index b23a85e..0000000 --- a/quick-start/images/architecture.png.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: Huawei Inc. - -SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file diff --git a/quick-start/linux-flavour.rst b/quick-start/linux-flavour.rst deleted file mode 100644 index 3cc5a72..0000000 --- a/quick-start/linux-flavour.rst +++ /dev/null @@ -1,106 +0,0 @@ -.. SPDX-FileCopyrightText: Huawei Inc. -.. -.. SPDX-License-Identifier: CC-BY-4.0 - -.. _linux_flavour: - -.. include:: ../definitions.rst - -Linux flavour -############# - -OHOS Linux flavour is based on `poky` distribution. - -For getting started with |main_project_name|, *Downloading Tools* and *Source Code* perform the procedure in :ref:`Getting Started <BuildOpenharmony>`. - -OHOS Linux flavour supports the following images and machines: - -Supported images -**************** -.. list-table:: Supported images - :widths: auto - :header-rows: 1 - - * - Image Name - - Size - - Description - * - openharmony-image-base - - Approximate 100-200 MB - - OpenHarmony image including the base OS software stack - * - openharmony-image-extra - - Approximate 100-200 MB - - OpenHarmony Wayland image including the base OS software stack - -Supported machines -****************** - -.. list-table:: Supported machines - :widths: auto - :header-rows: 1 - - * - Machine Name - - Details - * - qemux86-64 (default) - - Emulator - * - qemux86 - - Emulator - * - qemuarm - - Emulator - * - qemuarm64 - - Emulator - * - seco-intel-b68 (SECO SBC-B68) - - `Details <https://www.seco.com/en/products/sbc-b68-enuc>`__ - * - stm32mp1-av96 (96Boards Avenger96) - - `Details <https://www.96boards.org/product/avenger96/>`__ - * - seco-imx8mm-c61 (SECO SBC-C61) - - `Details <https://www.seco.com/en/products/sbc-c61>`__ - -Prerequisites -************* -* All the bitbake commands must be executed in your localhost as a normal user instead of a root user. -* Install the following build dependencies packages for bitbake: - - * chrpath - * gawk -* Install Python latest version -* Install **Ubuntu 20.04 LTS** version - -Procedure -********* - -1. You can select the preferred image and machine to build your image. For example, for **qemux86-64** machine and **openharmony-image-base** image, execute: - -.. code-block:: console - - $ TEMPLATECONF=../sources/meta-ohos/flavours/linux . ./sources/poky/oe-init-build-env build-ohos-linux-qemux86-64 - $ bitbake openharmony-image-base - -2. Test the image built by executing the following test command considering **qemux86-64** machine as an example: - -.. code-block:: console - - $ runqemu qemux86-64 qemuparams="-nographic" - -Result -****** - -* After successful bootup, you should see the following: - -.. code-block:: console - - $ qemux86-64 login: - -* The default login as root without a password. After login you should see the following prompt: - -.. code-block:: console - - $ root@qemux86-64:~# - - -* To exit qemu, you can either shut down the system using the following command or - -.. code-block:: console - - $ root@qemux86:~# poweroff -f - -or close qemu using key combination: **Ctrl-A** followed by 'x'. diff --git a/quick-start/zephyr-flavour.rst b/quick-start/zephyr-flavour.rst deleted file mode 100644 index 5e8c1e7..0000000 --- a/quick-start/zephyr-flavour.rst +++ /dev/null @@ -1,83 +0,0 @@ -.. SPDX-FileCopyrightText: Huawei Inc. -.. -.. SPDX-License-Identifier: CC-BY-4.0 - -.. _zephyr_flavour: - -.. include:: ../definitions.rst - -Zephyr flavour -############## - -OHOS Zephyr flavour is based on zephyr distribution. - -For getting started with |main_project_name|, *Downloading Tools* and *Source Code* perform the procedure in :ref:`Getting Started <BuildOpenharmony>`. - -OHOS Zephyr flavour supports the following images or machines: - -Supported images -**************** - -* Zephyr comes with multiple sample applications, for more details on available recipes, see `sources/meta-zephyr/recipes-kernel/zephyr-kernel/`. You can add your own recipes to use sample applications provided with Zephyr. For more details, `Click <https://github.com/zephyrproject-rtos/zephyr/tree/master/samples>`_. - -Supported machines -****************** - -.. list-table:: Supported machines - :widths: auto - :header-rows: 1 - - * - Machine Name - - Details - * - qemu-x86 (default) - - Emulator - * - qemu-cortex-m3 - - Emulator - * - 96b-nitrogen (96Boards Nitrogen) - - `Details <https://www.96boards.org/product/nitrogen/>`__ - * - 96b-avenger96 (96Boards Avenger96) - - `Details <https://www.96boards.org/product/avenger96/>`__ - -Prerequisites -************* -* All the bitbake commands must be executed in your localhost as a normal user instead of a root user. -* Install the following build dependencies packages for bitbake: - - * chrpath - * gawk -* Install Python latest version -* Install **Ubuntu 20.04 LTS** version - -Procedure -********* - -Perform the following steps to build the image on the supported machine: - -1. You can select the preferred image and machine to build your image. For example, for **qemu-x86* machine and **zephyr-philosophers** image, execute: - -.. code-block:: console - - $ TEMPLATECONF=../sources/meta-ohos/flavours/zephyr . ./sources/poky/oe-init-build-env build-ohos-zephyr-qemu-x86 - $ bitbake zephyr-philosophers - -2. Test the image built by executing the following test command considering **qemu-x86** machine as an example: - -.. code-block:: console - - $ runqemu qemu-x86 - -Result -****** - -After successful bootup, you should see the following: - -.. code-block:: console - - Booting from ROM..*** Booting Zephyr OS build zephyr-v2.4.0 *** - Philosopher 0 [P: 3] THINKING [ 300 ms ] - Philosopher 1 [P: 2] EATING [ 575 ms ] - Philosopher 2 [P: 1] STARVING - Philosopher 3 [P: 0] EATING [ 525 ms ] - Philosopher 4 [C: -1] THINKING [ 475 ms ] - -To exit qemu, use key combination: **Ctrl-A** followed by 'x'. diff --git a/supported-boards/96b-Avenger.rst b/supported-boards/96b-Avenger.rst deleted file mode 100644 index 10bdcaf..0000000 --- a/supported-boards/96b-Avenger.rst +++ /dev/null @@ -1,395 +0,0 @@ -.. _avenger96: - -.. SPDX-FileCopyrightText: Huawei Inc. -.. -.. SPDX-License-Identifier: CC-BY-4.0 - -.. include:: ../definitions.rst - -96Boards Avenger96 -################## - - -.. contents:: - :depth: 3 - -Overview -******** - -Avenger96 is a STM32MP157xx (Cortex-A7 + Cortex-M4) development board designed by the 96Boards initiative. Due to presence of the application -processors and the microcontroller, Avenger96 can simultaneously run Linux and Zephyr kernels. The application processor is responsible for -powering up and programming the microcontroller with the appropriate image. Linux provides interfaces to communicate with the program running on the microcontroller. - -Hardware -******** - -* For detailed specification, see `Avenger96 product page on the 96Boards website <https://www.96boards.org/product/avenger96/>`__. - -* For hardware user manual, see `96Boards GitHub documentation repository <https://github.com/96boards/documentation/blob/master/consumer/avenger96/hardware-docs/files/avenger96-hardware-user-manual.pdf>`__. - -* For hardware schematics, see `96Boards GitHub documentation repository <https://github.com/96boards/documentation/blob/master/consumer/avenger96/hardware-docs/files/avenger96-schematics.pdf>`__. - -For more details on Avenger96 board, see `Avenger96 product page <https://www.96boards.org/product/avenger96/>`__. - -Working with the board -********************** - -Supported images -================ - -.. list-table:: Supported images - :widths: auto - :header-rows: 1 - - * - Image Name - - Size - - Description - * - openharmony-image-base - - Approximate 100-200 MB - - OpenHarmony image including the base OS software stack - * - openharmony-image-extra - - Approximate 100-200 MB - - OpenHarmony Wayland image including the base OS software stack - - -Building OHOS image -=================== - -To clone the source code, perform the procedure in :ref:`Getting Started <BuildOpenharmony>`. - -Linux image ------------ - -1. Source the environment with proper template settings, flavour being *linux* and target machine being *stm32mp1-av96*. Pay attention - to how relative paths are constructed. The value of *TEMPLATECONF* is relative to the location of the build directory *./build-linux-stm32mp1-av96*, that is going to be created after - this step: - -.. code-block:: console - - $ TEMPLATECONF=../sources/meta-ohos/flavours/linux . ./sources/poky/oe-init-build-env build-ohos-linux-stm32mp1-av96 - -2. You will find yourself in the newly created build directory. Call *bitbake* to build the image. For example, if you are using *openharmony-image-base* run the following command: - -.. code-block:: console - - $ MACHINE=stm32mp1-av96 bitbake openharmony-image-base - -To generate images for eMMC on SD card, refer to the :ref:`Flashing OHOS image <Flashing_ohos>`. - -Zephyr image ------------- - -1. Source the environment with proper template settings, flavour being *zephyr* and target machine being *96b-avenger96*: - -.. code-block:: console - - $ TEMPLATECONF=../sources/meta-ohos/flavours/zephyr . ./sources/poky/oe-init-build-env build-ohos-zephyr-96b-avenger96 - -2. You will find yourself in the newly created build directory. Call *bitbake* to build the image. The image name is the name of the Zephyr application. - -.. code-block:: console - - $ MACHINE=96b-avenger96 bitbake zephyr-philosophers - -3. The output file will be located in the build directory *./tmp-newlib/deploy/images/96b-avenger96/*. - -.. _Flashing_ohos: - -Flashing OHOS image -******************* - -For Linux, STM meta-layer provide a convenient shell script that helps you to create a SD card image. You can also use the `STM32 Cube -Programmer <https://wiki.dh-electronics.com/index.php/Avenger96_Image_Programming>`__. - -For Zephyr, there is no automation as for now. To have the ELF file in the filesystem: - -* Copy the image manually to the filesystem using a method of your choice -* Include it in the image before flashing the card/eMMC -* Copy the file manually to the card or just *scp* it to the board after you set up networking. - -Linux image -=========== - -SD card -------- - -The Avenger96 board supports multiple boot options which are selected by the DIP-switch S3. Make sure the boot switch is set to boot from the SD-Card. - -To set the boot option from the SD card using DIP-switch S3, set the BOOT 0 (Switch 1) and BOOT 2 (Switch 3) to 1 and set BOOT 1 (Switch 2) to 0 on the circuit board. - -For more information on Avenger96 boot options, see `Getting Started with the Avenger96 <https://www.96boards.org/documentation/consumer/avenger96/getting-started/#starting-the-board-for-the-first-time>`__. - -1. After the image is built, run the following script with flash layout TSV file provided as an argument. From the build directory created - during the environment source. For example, if you are using openharmony-image-base run the following command: - -.. code-block:: console - - $ cd tmp/deploy/images/stm32mp1-av96 - $ ./scripts/create_sdcard_from_flashlayout.sh ./flashlayout_openharmony-image-base/extensible/FlashLayout_sdcard_stm32mp157a-av96-extensible.tsv - -2. The following output is displayed. For the image to be flashed to the card, copy and paste the commands to the terminal to flash the image onto the card. - -:: - - [WARNING]: A previous raw image are present on this directory - [WARNING]: ./flashlayout_openharmony-image-base/extensible/../../FlashLayout_sdcard_stm32mp157a-av96-extensible.raw - [WARNING]: would you like to erase it: [Y/n] - - Create Raw empty image: ./flashlayout_openharmony-image-base/extensible/../../FlashLayout_sdcard_stm32mp157a-av96-extensible.raw of 2368MB - Create partition table: - [CREATED] part 1: fsbl1 [partition size 256.0 KiB] - [CREATED] part 2: fsbl2 [partition size 256.0 KiB] - [CREATED] part 3: ssbl [partition size 2.0 MiB] - [CREATED] part 4: boot [partition size 64.0 MiB] - [CREATED] part 5: vendorfs [partition size 16.0 MiB] - [CREATED] part 6: rootfs [partition size 2.2 GiB] - - Partition table from ./flashlayout_openharmony-image-base/extensible/../../FlashLayout_sdcard_stm32mp157a-av96-extensible.raw - - Populate raw image with image content: - [ FILLED ] part 1: fsbl1, image: arm-trusted-firmware/tf-a-stm32mp157a-av96-trusted.stm32 - [ FILLED ] part 2: fsbl2, image: arm-trusted-firmware/tf-a-stm32mp157a-av96-trusted.stm32 - [ FILLED ] part 3: ssbl, image: bootloader/u-boot-stm32mp157a-av96-trusted.stm32 - [ FILLED ] part 4: boot, image: st-image-bootfs-poky-stm32mp1-av96.ext4 - [ FILLED ] part 5: vendorfs, image: st-image-vendorfs-poky-stm32mp1-av96.ext4 - [ FILLED ] part 6: rootfs, image: openharmony-image-base-stm32mp1-av96.ext4 - - ########################################################################### - ########################################################################### - - RAW IMAGE generated: ./flashlayout_openharmony-image-base/extensible/../../FlashLayout_sdcard_stm32mp157a-av96-extensible.raw - - WARNING: before to use the command dd, please umount all the partitions - associated to SDCARD. - sudo umount `lsblk --list | grep mmcblk0 | grep part | gawk '{ print $7 }' | tr '\n' ' '` - - To put this raw image on sdcard: - sudo dd if=./flashlayout_openharmony-image-base/extensible/../../FlashLayout_sdcard_stm32mp157a-av96-extensible.raw of=/dev/mmcblk0 bs=8M conv=fdatasync status=progress - - (mmcblk0 can be replaced by: - sdX if it's a device dedicated to receive the raw image - (where X can be a, b, c, d, e) - - ########################################################################### - ########################################################################### - -3. To unmount the card, call the ``umount`` command printed by the ``create_sdcard_from_flashlayout.sh`` script. - -4. To flash the image card, call the ``dd`` command printed by the ``create_sdcard_from_flashlayout.sh`` script. - -5. Put the card to the board and turn it on. - -STM32 Cube Programmer ---------------------- - -After you build the image, follow the instructions in `Avenger96 Image Programming <https://wiki.dh-electronics.com/index.php/Avenger96_Image_Programming>`__, -pointing the program to the *./tmp/deploy/images/stm32mp1-av96/flashlayout_openharmony-image-base/trusted/FlashLayout_emmc_stm32mp157a-av96-trusted.tsv* flash layout file. - -.. _zephyr-image-1: - -Zephyr image -============ - -**Prerequisites** - -* Linux is running on the board. -* Make sure that Linux is built with *remoteproc* support. To check status of remoteproc do: - -.. code-block:: console - - root@stm32mp1-av96:~# dmesg | grep remoteproc - [ 2.336231] remoteproc remoteproc0: m4 is available - -1. Copy the Zephyr image to the board using a method of your choice. - -2. Check what the ``remoteproc`` framework knows about the name and location of the firmware file. The default values are presented as - follows. Empty path defaults to ``/lib/firmware``: - -:: - - root@stm32mp1-av96:~# cat /sys/module/firmware_class/parameters/path - <empty> - - root@stm32mp1-av96:~# cat /sys/class/remoteproc/remoteproc0/firmware - rproc-m4-fw - -3. Configure the name and the location to suit your needs. For example, the - firmware is located in ``/root/zephyr.elf``: - -:: - - root@stm32mp1-av96:~# echo "/root" > /sys/module/firmware_class/parameters/path - root@stm32mp1-av96:~# echo "zephyr.elf" > /sys/class/remoteproc/remoteproc0/firmware - -4. Power up the Cortex-M4 core: - -:: - - root@stm32mp1-av96:~# echo start > /sys/class/remoteproc/remoteproc0/state - remoteproc remoteproc0: powering up m4 - remoteprocroc remoteproc0: Booting fw image rproc-m4-fw, size 591544 - rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:m4_led (ops 0xc0be1210) - remoteproc remoteproc0: remote processor m4 is now - -5. Firmware output can be inspected with: - -:: - - root@stm32mp1-av96:~# cat /sys/kernel/debug/remoteproc/remoteproc0/trace0 - Philosopher 5 [C:-2] STARVING - Philosopher 3 [P: 0] DROPPED ONE FORK - Philosopher 3 [P: 0] THINKING [ 25 ms ] - Philosopher 2 [P: 1] EATING [ 425 ms ] - Philosopher 3 [P: 0] STARVING - Philosopher 4 [C:-1] STARVING - Philosopher 4 [C:-1] HOLDING ONE FORK - Philosopher 4 [C:-1] EATING [ 800 ms ] - Philosopher 3 [P: 0] HOLDING ONE FORK - Philosopher 2 [P: 1] DROPPED ONE FORK - Philosopher 2 [P: 1] THINKING [ 725 ms ] - Philosopher 1 [P: 2] EATING [ 225 ms ] - -There is no fully-featured console available in Linux yet, so typing commands to the Zephyr application is not possible. - -Testing the board -***************** - -Serial port -=========== - -To connect the USB converter serial port to the low-speed connector, see `Hardware User Manual <https://github.com/96boards/documentation/blob/master/consumer/avenger96/hardware-docs/files/avenger96-hardware-user-manual.pdf>`__. - -.. warning:: - - * The low speed connector is 1.8V tolerant, therefore the converter must be 1.8V tolerant. - * Do not connect 5V or 3.3V tolerant devices to the connector to avoid SoC damage. - -Ethernet -======== - -Wired connection works out of the box. You can use standard tools like ``ip``, ``ifconfig`` to configure the connection. The connection seems -to have stable 1Gb/s bandwidth. - -USB Host -======== - -Just plug something to the USB port. The board seems to work fine with an external 500GB USB 3.0 HDD. - -:: - - root@stm32mp1-av96:~# lsusb - Bus 002 Device 003: ID 0930:0b1f Toshiba Corp. - Bus 002 Device 002: ID 0424:2513 Standard Microsystems Corp. 2.0 Hub - Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub - Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub - root@stm32mp1-av96:~# lsusb -t - /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/2p, 480M - |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/3p, 480M - |__ Port 2: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 480M - /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M - root@stm32mp1-av96:~# mount | grep sda - /dev/sda1 on /home/root/sda1 type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro) - -USB OTG -======= - -The board supports that feature. For now it only works in DFU mode with STM32 Cube Programmer. Using the board as USB Gadget is currently under -development. - -eMMC -==== - -It can be used to store the firmware with STM32 Cube Programmer. It can also be mounted under Linux booted from another medium: - -:: - - root@stm32mp1-av96:~# mount /dev/mmcblk2p4 emmc/ - [ 3006.721643] EXT4-fs (mmcblk2p4): recovery complete - [ 3006.726627] EXT4-fs (mmcblk2p4): mounted filesystem with ordered data mode. Opts: (null) - [ 3006.733931] ext4 filesystem being mounted at /home/root/emmc supports timestamps until 2038 (0x7fffffff) - root@stm32mp1-av96:~# ls -l emmc - drwxr-xr-x 2 root root 1024 Mar 9 12:34 bin - drwxr-xr-x 2 root root 1024 Mar 9 12:34 boot - drwxr-xr-x 2 root root 1024 Mar 9 12:34 dev - drwxr-xr-x 17 root root 1024 Mar 9 12:34 etc - drwxr-xr-x 3 root root 1024 Mar 9 12:34 home - drwxr-xr-x 3 root root 1024 Mar 9 12:34 lib - drwx------ 2 root root 12288 Jan 12 2021 lost+found - drwxr-xr-x 2 root root 1024 Mar 9 12:34 media - drwxr-xr-x 2 root root 1024 Mar 9 12:34 mnt - dr-xr-xr-x 2 root root 1024 Mar 9 12:34 proc - drwxr-xr-x 2 root root 1024 Jan 1 2000 run - drwxr-xr-x 2 root root 1024 Mar 9 12:34 sbin - dr-xr-xr-x 2 root root 1024 Mar 9 12:34 sys - lrwxrwxrwx 1 root root 8 Mar 9 12:34 tmp -> /var/tmp - drwxr-xr-x 10 root root 1024 Mar 9 12:34 usr - drwxr-xr-x 8 root root 1024 Mar 9 12:34 var - -Radio -===== - -Radio relies on proprietary BRCM firmware. It is already included in the image. - -WiFi ----- - -WiFi can be controlled with ``wpa_supplicant``, which is a standard Linux tool. Please refer to the tool manual for the details. - -Example ``wpa_suppliant`` configs look like below. Assuming the config is saved in a file named ``wpa.conf`` and the interface is named -``wlan0``, WiFi can be brought up with ``wpa_supplicant -i wlan0 -c ./wpa.conf``: - -:: - - # Access Point mode example configuration - fast_reauth=1 - update_config=1 - - ap_scan=2 - network={ - ssid="Avenger96 AP" - mode=2 - frequency=2412 - key_mgmt=WPA-PSK - proto=RSN - pairwise=CCMP - psk="PlaintextPasswordsAreGreat" - } - -:: - - # Connection to an open network with broadcasted SSID - network={ - ssid="0xDEADBEEF" - key_mgmt=NONE - } - -Bluetooth ---------- - -Bluetooth is currently not stable. It can be controlled with ``bluetoothctl``, which is a standard Linux tool. Please refer to the tool manual for the details. Devices scanning can be enabled as follows: - -:: - - root@stm32mp1-av96:~# bluetoothctl - Agent registered - [CHG] Controller 00:9D:6B:AA:77:68 Pairable: yes - [bluetooth]# power on - Changing power on succeeded - [CHG] Controller 00:9D:6B:AA:77:68 Powered: yes - [bluetooth]# discoverable on - Changing discoverable on succeeded - [CHG] Controller 00:9D:6B:AA:77:68 Discoverable: yes - [bluetooth]# scan on - Discovery started - [CHG] Controller 00:9D:6B:AA:77:68 Discovering: yes - [NEW] Device E2:A0:50:99:C9:61 Hue Lamp - [NEW] Device 57:2D:D5:48:8C:D0 57-2D-D5-48-8C-D0 - [NEW] Device E4:04:39:65:9C:2A TomTom GPS Watch - [NEW] Device C0:28:8D:49:67:7E C0-28-8D-49-67-7E - -Pairing and establishing connection is possible with ``pair`` and ``connect`` commands, but the connection is dropped instantly. This issue is under investigation. - -HDMI -==== - -Development in progres. diff --git a/supported-boards/96b-nitrogen.rst b/supported-boards/96b-nitrogen.rst deleted file mode 100644 index 6920a9b..0000000 --- a/supported-boards/96b-nitrogen.rst +++ /dev/null @@ -1,110 +0,0 @@ -.. SPDX-FileCopyrightText: Huawei Inc. -.. -.. SPDX-License-Identifier: CC-BY-4.0 - -.. _nitogen: - -.. include:: ../definitions.rst - -96Boards Nitrogen -################# - -.. contents:: - :depth: 3 - -Overview -******** - -Nitrogen, a compliant IoT Edition board provides economical and compact BLE solutions for various IoT projects. This board includes the below features: - -* Nordic nRF52832 microcontroller -* 64 KB of RAM -* 512 KB on-board flash storage. - -Nitrogen hardware supports the Nordic Semiconductor nRF52832 ARM Cortex-M4F CPU. - - -Hardware -******** - -* For detailed specifications, see `Nitrogen product page on the 96Boards website <https://www.96boards.org/product/nitrogen/>`_. - -* For hardware user manual, see `Seeed wiki <https://wiki.seeedstudio.com/BLE_Nitrogen/>`_. - -* For hardware schematics, see `Seeed Document <https://github.com/SeeedDocument/BLE-Nitrogen/tree/master/res>`_. - -For more details on 96Boards Nitrogen, see `Nitrogen product page <https://www.96boards.org/product/nitrogen/>`_. - -Working with the board -********************** - -Supported image -=============== - -* zephyr-philosophers - -Building an application -======================= - -|main_project_name| OS Zephyr flavour is based on Zephyr kernel. - -* Source the environment with proper template settings, flavour being zephyr and target machine being 96b-nitrogen: - -.. code-block:: console - - $ TEMPLATECONF=../sources/meta-ohos/flavours/zephyr . ./sources/poky/oe-init-build-env build-ohos-zephyr-96b-nitrogen - -* You will find yourself in the newly created build directory. Call bitbake to build the image. The supported image name is zephyr-philosophers. - -.. code-block:: console - - $ MACHINE=96b-nitrogen bitbake zephyr-philosophers - -MACHINE variable can be set up in conf/local.conf file under build directory or via command line. - - -Flashing an application -======================= - -Installing pyOCD ----------------- - -pyOCD is an open source Python package for programming and debugging Arm Cortex-M microcontrollers using multiple supported types of USB debug probes. It is fully cross-platform, with support for Linux. - -* The latest stable version of pyOCD can be installed via `pip <https://pip.pypa.io/en/stable/>`_ as follows: - -.. code-block:: console - - $ pip install --pre -U pyOCD - -* To install the latest pre-release version from the HEAD of the master branch, do the following: - -.. code-block:: console - - $ pip install --pre -U git+https://github.com/mbedmicro/pyOCD.git - -* To install directly from the source by cloning the git repository, do the following: - -.. code-block:: console - - $ python setup.py install - -* Verify that the board is detected by pyOCD by executing the command: - -.. code-block:: console - - $ pyOCD-flashtool -l - -.. note:: - - When *ValueError: The device has no langid* error is displayed due to lack of permission, perform the instructions as suggested in https://github.com/pyocd/pyOCD/tree/master/udev. - -How to flash ------------- - -* To flash the image, execute the command used to build the image with -c flash_usb appended. - For example, to flash the already built zephyr-philosophers image, do: - -.. code-block:: console - - $ MACHINE=96b-nitrogen bitbake zephyr-philosophers -c flash_usb diff --git a/supported-boards/README.rst b/supported-boards/README.rst deleted file mode 100644 index 47ffb67..0000000 --- a/supported-boards/README.rst +++ /dev/null @@ -1,28 +0,0 @@ -.. SPDX-FileCopyrightText: Huawei Inc. -.. -.. SPDX-License-Identifier: CC-BY-4.0 - -.. _supported-boards: - -.. include:: ../definitions.rst - -Supported Boards -################ - -|main_project_name| project developers are continually adding board-specific support. Currently, you can build an |main_project_name| image using your preferred OS flavour using the supported boards. Currently, |main_project_name| supports the following boards: - -.. toctree:: - :maxdepth: 1 - - 96b-Avenger - 96b-nitrogen - seco-intel-b68 - seco-imx8mm-c61 - -For more detailed information of kernel specific flavours, see :ref:`Getting Started <BuildOpenharmony>`. - -.. note:: - - A single board can be included in more than one flavour only when it has **well-maintained support** in targeted kernels. - - diff --git a/supported-boards/seco-imx8mm-c61.rst b/supported-boards/seco-imx8mm-c61.rst deleted file mode 100644 index 5483922..0000000 --- a/supported-boards/seco-imx8mm-c61.rst +++ /dev/null @@ -1,181 +0,0 @@ -.. SPDX-FileCopyrightText: Huawei Inc. -.. -.. SPDX-License-Identifier: CC-BY-4.0 - -.. include:: ../definitions.rst - -SBC-C61 SECO -############ - - -.. contents:: - :depth: 3 - - -Overview -******** -SBC-C61 is an SBC built upon the NXP i.MX 8M mini Application Processors characterised by HEVC/VP9 decoding in 1080p60. As for the memory, it features a LPDDR4 RAM. The range of connectivity options is particularly -broad, with optional Wi-Fi and BT LE 4.2 and optionally soldered on-board LTE Cat 4 Modem with microSIM slot or eSIM. Interestingly, it also features a Cortex-M4, that is real-time operating system capable -for serving real-time applications that process data as it comes in without buffer delays. - -Hardware -******** - -For more detailed specifications of SBC-C61 SECO board, see `SBC-C61 Specification <https://www.seco.com/en/products/sbc-c61>`__. - -Working with the board -********************** - -Supported image -=============== - -.. list-table:: Supported images - :widths: auto - :header-rows: 1 - - * - Image Name - - Size - - Description - * - openharmony-image-base - - Approximate 100-200 MB - - OpenHarmony image including the base OS software stack - - -Building OHOS image -=================== - -To clone the source code, perform the procedure in :ref:`Getting Started <BuildOpenharmony>`. - -Linux image ------------ - -1. Source the environment with proper template settings, flavour being ``linux`` and target machine being ``seco-imx8mm-c61``. - -.. code-block:: console - - $ TEMPLATECONF=../sources/meta-ohos/flavours/linux . ./sources/poky/oe-init-build-env build-ohos-linux-seco-imx8mm-c61 - -2. You will find yourself in the newly created build directory. Call ``bitbake`` to build the image. The supported image is ``openharmony-image-base``. - -.. code-block:: console - - $ MACHINE=seco-imx8mm-c61 bitbake openharmony-image-base - -To generate images for eMMC, refer to the following flashing procedure. - -Flashing OHOS image -******************* - -Linux image -=========== - -MMC Storage ------------ - -**Prerequisites** - -* USB To UART adapter -* USB to OTG adapter -* Download and install `mfgtools <https://github.com/NXPmicro/mfgtools>`__ -* Linux Host - -To flash OHOS using USB to OTG adapter, perform the following steps: - -#. Short circuit pin 1 and 2 of CN52 pin header to enter the Serial Download mode. -#. Connect USB to OTG adapter to your host PC -#. Navigate to the inside build output directory: - - .. code-block:: console - - $ cd tmp/deploy/images/seco-imx8mm-c61/ - -#. Unzip build output using Gzip software: - - .. code-block:: console - - $ gzip -d openharmony-image-base-seco-imx8mm-c61.wic.gz - -#. To write uboot and image(p1:kernel, p2:dtb, rootfs) into c61 mmc via mfgtools: - - .. code-block:: console - - $ sudo uuu -b emmc_all imx-boot-seco-imx8mm-c61-emmc.bin-flash_evk openharmony-image-base-seco-imx8mm-c61.wic - -#. Power ON SBC-C61 -#. Remove **CN52 short circuit** -#. Press the reset button - -Testing the board -***************** - -Ethernet -======== - -You can use standard tools like ``ip``, ``ifconfig`` to configure the connection. - -:: - - root@seco-imx8mm-c61:~# ifconfig - eth0 Link encap:Ethernet HWaddr 1A:20:58:83:70:F0 - UP BROADCAST MULTICAST MTU:1500 Metric:1 - RX packets:0 errors:0 dropped:0 overruns:0 frame:0 - TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 - collisions:0 txqueuelen:1000 - RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) - -USB Host -======== - -:: - - root@seco-imx8mm-c61:~# lsusb - Bus 001 Device 003: ID 058f:6387 Alcor Micro Corp. Flash Drive - Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub - Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub - -eMMC -==== - -:: - - root@seco-imx8mm-c61:~# fdisk -l /dev/mmcblk0 - Disk /dev/mmcblk0: 59 GB, 63585648640 bytes, 124190720 sectors - 1940480 cylinders, 4 heads, 16 sectors/track - Units: sectors of 1 * 512 = 512 bytes - - Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type - /dev/mmcblk0p1 * 64,0,1 893,3,4 8192 114403 106212 51.8M c Win95 FAT32 (LBA) - /dev/mmcblk0p2 896,0,1 1023,3,32 114688 558903 444216 216M 83 Linux - -Loaded Modules -============== - -:: - - root@seco-imx8mm-c61:~# lsmod - Module Size Used by - nfc 90112 0 - bluetooth 409600 8 - ecdh_generic 16384 1 bluetooth - ecc 32768 1 ecdh_generic - rfkill 36864 3 nfc,bluetooth - ipv6 442368 26 - caam_jr 196608 0 - caamhash_desc 16384 1 caam_jr - caamalg_desc 36864 1 caam_jr - crypto_engine 16384 1 caam_jr - rng_core 24576 1 caam_jr - authenc 16384 1 caam_jr - libdes 24576 1 caam_jr - snd_soc_simple_card 20480 0 - fsl_imx8_ddr_perf 20480 0 - crct10dif_ce 20480 1 - snd_soc_simple_card_utils 24576 1 snd_soc_simple_card - rtc_snvs 16384 1 - snvs_pwrkey 16384 0 - caam 40960 1 caam_jr - clk_bd718x7 16384 0 - error 24576 4 caamalg_desc,caamhash_desc,caam,caam_jr - imx8mm_thermal 16384 0 - snd_soc_fsl_sai 20480 0 - imx_cpufreq_dt 16384 0 diff --git a/supported-boards/seco-intel-b68.rst b/supported-boards/seco-intel-b68.rst deleted file mode 100644 index f4bb8d4..0000000 --- a/supported-boards/seco-intel-b68.rst +++ /dev/null @@ -1,216 +0,0 @@ -.. SPDX-FileCopyrightText: Huawei Inc. -.. -.. SPDX-License-Identifier: CC-BY-4.0 - -.. include:: ../definitions.rst - -SBC-B68-eNUC SECO -################# - - -.. contents:: - :depth: 3 - - -Overview -******** - -The SBC-B68-eNUC is a flexible and expandable full industrial x86 embedded NUC™ SBC with the Intel® Atom X Series, Intel® Celeron® J / N -Series and Intel® Pentium® N Series (formerly code name Apollo Lake) Processors. Also available in industrial temperature version, the board -offers wide range of connectivity options through WLAN and WWAN M.2 slots as well as wide input voltage range. Featuring Quad Channel -soldered down LPDDR4-2400 memory, up to 8GB, thanks to its versatile expansion capabilities it is particularly suitable for embedded -applications like HMI, multimedia devices, industrial IoT and industrial automation. - -Hardware -******** - -For more detailed specifications of SBC-B68-eNUC SECO board, see `SBC-B68-eNUC Specification <https://www.seco.com/en/products/sbc-b68-enuc>`__. - - -Working with the board -********************** - -Supported images -================ - -.. list-table:: Supported images - :widths: auto - :header-rows: 1 - - * - Image Name - - Size - - Description - * - openharmony-image-base - - Approximate 100-200 MB - - OpenHarmony image including the base OS software stack - * - openharmony-image-extra - - Approximate 100-200 MB - - OpenHarmony Wayland image including the base OS software stack - - -Building OHOS image -=================== - -To clone the source code, perform the procedure in :ref:`Getting Started <BuildOpenharmony>`. - -Linux image ------------ - -1. Source the environment with proper template settings, flavour being *linux* and target machine being *seco-intel-b68*. - -.. code-block:: console - - $ TEMPLATECONF=../sources/meta-ohos/flavours/linux . ./sources/poky/oe-init-build-env build-linux-seco-intel-b68 - -2. You will find yourself in the newly created build directory. Call *bitbake* to build the image. For example, if you are using *openharmony-image-base* run the following command: - -.. code-block:: console - - $ MACHINE=seco-intel-b68 bitbake openharmony-image-base - -To generate images for SSD Disk, refer to the following flashing OHOS image section. - -Flashing OHOS image -******************* - -.. _linux-image-2: - -Linux image -=========== - -USB Storage ------------ - -**Prerequisites** - -* Mini DisplayPort to HDMI converter cable -* HDMI Monitor -* USB Storage -* Linux Host - -To flash OHOS using USB storage, perform the following steps: - -**Prepare OHOS bootable USB** - -#. Connect USB storage to your host PC. - -#. Run the following command in your local host: - -.. code-block:: console - - $ dd if=tmp/deploy/images/seco-intel-b68/openharmony-image-base-seco-intel-b68.wic of=/dev/sdbX - -**Run OHOS** - -#. Connect bootable USB to target - -#. Connect mini DP++ to HDMI adapter to HDMI monitor - -#. Power on B68 and press **Esc** to enter **BIOS** mode. - -#. Go to Save and Exit submenu - -#. Select the bootable USB device under **Boot Override** and press Enter. - - -Testing the board -***************** - -Ethernet -======== - -Wired connection works out of the box. You can use standard tools like ``ip``, ``ifconfig`` to configure the connection. - -USB Host -======== - -:: - - root@seco-intel-b68:~# lsusb - /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/7p, 5000M - /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/8p, 480M - -eMMC -==== - -:: - - root@seco-intel-b68:~# fdisk -l /dev/mmcblk1 - Disk /dev/mmcblk1: 29 GB, 31268536320 bytes, 61071360 sectors - 954240 cylinders, 4 heads, 16 sectors/track - Units: sectors of 1 * 512 = 512 bytes - -PCI buses -========= - -:: - - root@seco-intel-b68:~# lspci - 00:00.0 Host bridge: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge (rev 0b) - 00:02.0 VGA compatible controller: Intel Corporation HD Graphics 500 (rev 0b) - 00:0e.0 Audio device: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster (rev 0b) - 00:0f.0 Communication controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Trusted Execution Engine (rev 0b) - 00:12.0 SATA controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series SATA AHCI Controller (rev 0b) - 00:13.0 PCI bridge: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #3 (rev fb) - 00:13.3 PCI bridge: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #4 (rev fb) - 00:15.0 USB controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series USB xHCI (rev 0b) - 00:16.0 Signal processing controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #1 (rev 0b) - 00:16.3 Signal processing controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #4 (rev 0b) - 00:17.0 Signal processing controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #5 (rev 0b) - 00:17.1 Signal processing controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #6 (rev 0b) - 00:18.0 Signal processing controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #1 (rev 0b) - 00:18.2 Signal processing controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #3 (rev 0b) - 00:1b.0 SD Host controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series SDXC/MMC Host Controller (rev 0b) - 00:1c.0 SD Host controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series eMMC Controller (rev 0b) - 00:1f.0 ISA bridge: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Low Pin Count Interface (rev 0b) - 00:1f.1 SMBus: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series SMBus Controller (rev 0b) - 01:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03) - 02:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03) - -Loaded Modules -============== - -:: - - root@seco-intel-b68:~# lsmod - Module Size Used by - nfc 73728 0 - bnep 20480 2 - uio 20480 0 - snd_hda_codec_hdmi 53248 1 - iwlwifi 299008 0 - cfg80211 688128 1 iwlwifi - snd_hda_codec_cirrus 20480 1 - snd_hda_codec_generic 65536 1 snd_hda_codec_cirrus - ledtrig_audio 16384 1 snd_hda_codec_generic - intel_rapl_msr 16384 0 - snd_soc_skl 114688 0 - snd_soc_sst_ipc 16384 1 snd_soc_skl - snd_soc_sst_dsp 24576 1 snd_soc_skl - snd_hda_ext_core 20480 1 snd_soc_skl - snd_soc_acpi_intel_match 36864 1 snd_soc_skl - snd_soc_acpi 16384 2 snd_soc_acpi_intel_match,snd_soc_skl - snd_soc_core 200704 1 snd_soc_skl - intel_rapl_common 20480 1 intel_rapl_msr - snd_compress 20480 1 snd_soc_core - ac97_bus 16384 1 snd_soc_core - intel_pmc_bxt 16384 0 - intel_telemetry_pltdrv 20480 0 - intel_telemetry_core 16384 1 intel_telemetry_pltdrv - snd_hda_intel 32768 0 - x86_pkg_temp_thermal 16384 0 - snd_intel_dspcfg 16384 2 snd_hda_intel,snd_soc_skl - snd_hda_codec 98304 4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_cirrus - coretemp 16384 0 - snd_hda_core 65536 7 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_hda_codec_cirrus,snd_soc_skl - snd_pcm 86016 7 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_compress,snd_soc_core,snd_soc_skl,snd_hda_core - snd_timer 32768 1 snd_pcm - i915 1888256 5 - mei_me 32768 0 - video 40960 1 i915 - mei 81920 1 mei_me - -Video -===== - -Output video tested with *DP++* to *HDMI* adapter. -- GitLab