Рубрики
dev

nxp / flex-builder / help

Ссылки:

http://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=LAYERSCAPE-SDK

build_and_deploy_distro.md (собрать и развернуть дистрибутив)

## Сборка и развертывание различных дистрибутивов
flex-builder поддерживает создание различных дистрибутивов различного масштаба, включая богатые ОС (на базе Ubuntu, на основе Debian, на основе CentOS).
и встроенная ОС (дистрибутив на основе Yocto и Buildroot).
Пользователи могут выбрать подходящий дистрибутив в соответствии с требованиями, как показано ниже:

Использование:
flex-builder -i mkrfs [ -r : ] [ -a  ]
Пример:
$ flex-builder -i mkrfs -r ubuntu:main          # generate ubuntu-based main userland for as per extra_main_packages_list for networking
$ flex-builder -i mkrfs -r ubuntu:desktop       # generate Ubuntu-based desktop userland with main packages and gnome desktop for multimedia
$ flex-builder -i mkrfs -r ubuntu:devel         # generate Ubuntu-based devel userland with more main and universe packages for development
$ flex-builder -i mkrfs -r ubuntu:lite          # generate Ubuntu-based lite userland with base packages
$ flex-builder -i mkrfs -r debian:main          # generate Debian-based main userland with main packages
$ flex-builder -i mkrfs -r centos               # generate CentOS-based arm64 userland
$ flex-builder -i mkrfs -r yocto:tiny           # generate Yocto-based tiny arm64 userland
$ flex-builder -i mkrfs -r yocto:devel          # generate Yocto-based devel arm64 userland
$ flex-builder -i mkrfs -r buildroot:tiny       # generate Buildroot-based tiny arm64 userland
$ flex-builder -i mkrfs -r buildroot:devel      # generate Buildroot-based devel arm64 userland


Чтобы быстро установить новый пакет apt для целевой пользовательской среды Arm64 на базе Ubuntu на хост-компьютере, выполните команду, как показано ниже.
$ sudo chroot build/rfs/rootfs__ubuntu_main_arm64 apt install 




сборка и развертывание основного дистрибутива на базе Ubuntu.
Пример:
$ flex-builder -i mkrfs                # generate ubuntu-based main userland, '-r ubuntu:main -a arm64' by default if unspecified
$ flex-builder -i mkboot               # genrate boot_LS_arm64_lts_5.10.tgz
$ flex-builder -c apps                 # build all apps components
$ flex-builder -i merge-component      # merge app components into target userland
$ flex-builder -i packrfs              # pack and compress target userland as .tgz
$ flex-builder -i mkfw -m ls1046ardb   # generate composite firmware_ls1046ardb_.img
$ cd build/images
$ flex-installer -r rootfs__ubuntu_main_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx
or
$ flex-installer -r rootfs__ubuntu_main_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -f firmware_ls1046ardb_sdboot.img -d /dev/sdx

!!! Обратите внимание: '-f  опция используется только для загрузки с SD'.


Сборка и развертывание дистрибутива настольных компьютеров на базе Ubuntu для графического сценария.
Пример:
$ flex-builder -i mkrfs -r ubuntu:desktop
$ flex-builder -c apps -r ubuntu:desktop
$ flex-builder -i mkboot  ('-p LS' for Layerscapes by default, specify '-p IMX' for iMX platforms)
$ flex-builder -i merge-component -r ubuntu:desktop
$ flex-builder -i packrfs -r ubuntu:desktop
$ cd build/images
$ flex-installer -r rootfs__ubuntu_desktop_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx




Сборка и развертывание дистрибутива Ubuntu lite.
Пример:
$ flex-builder -i mkrfs -r ubuntu:lite
$ flex-builder -i mkboot
$ flex-builder -i merge-component -r ubuntu:lite
$ flex-builder -i packrfs -r ubuntu:lite
$ cd build/images
$ flex-installer -r rootfs__ubuntu_lite_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx
Вы можете изменить список extra_lite_packages_list по умолчанию в configs/ubuntu/extra_packages_list для настройки пакетов.


 
Сборка и развертывание дистрибутива на основе Yocto.
Использование:
flex-builder -i mkrfs -r yocto: [ -a  ]
 может быть крошечным, devel,  может быть Arm32, Arm64.
Пример:
$ flex-builder -i mkrfs -r yocto:tiny
$ flex-builder -i mkfw -m ls1046ardb
$ flex-builder -i mkboot
$ cd build/images
$ flex-installer -r rootfs__yocto_tiny_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -f firmware_ls1046ardb_sdboot.img -d /dev/sdx

Вы можете настроить дополнительные пакеты для IMAGE_INSTALL_append в configs/yocto/local_arm64_.conf, 
если хотите установить больше пакетов (например, dpdk и т. д.) в пользовательской среде yocto, вы можете выбрать devel вместо tiny. 
Дополнительно можно добавить yocto рецепты для настройки пакета в каталоге packages/rfs/misc/yocto/recipes-support, 
или вы можете добавить свой собственный компонент приложения в packages/apps//.mk для интеграции нового компонента в целевые rootfs на основе Yocto.


Сборка и развертывание дистрибутива на основе Buildroot.
Использование: 
flex-builder -i mkrfs -r buildroot: -a 
 может быть крошечным, devel, imaevm,  может быть Arm32, Arm64.
Пример:
$ flex-builder -i mkrfs -r buildroot:devel:custom      # customize buildroot .config in interactive menu for arm64 arch
$ flex-builder -i mkrfs -r buildroot:devel             # generate buildroot userland
$ flex-builder -i mkrfs -r buildroot:tiny              # generate arm64 rootfs as per arm64_tiny_defconfig
$ flex-builder -i mkrfs -r buildroot:devel -a arm32    # generate arm32 rootfs as per arm32_devel_defconfig
$ flex-builder -i mkrfs -r buildroot:imaevm            # generate arm64 rootfs as per arm64_imaevm_defconfig
$ flex-builder -i mkfw -m ls1046ardb -b sd
$ flex-builder -i mkboot
$ cd build/images
$ flex-installer -r rootfs__buildroot_tiny_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -f firmware_ls1046ardb_sdboot.img -d /dev/mmcblk0
Вы можете изменить configs/buildroot/qoriq___defconfig для настройки различных пакетов.


 
Сборка и развертывание дистрибутива на базе CentOS.
Использование:    
flex-builder -i mkrfs -r centos [ -a  ]
Пример:
$ flex-builder -i mkrfs -r centos
$ flex-builder -i mkboot
$ flex-builder -i merge-component -r centos
$ flex-builder -i packrfs -r centos
$ cd build/images
$ flex-installer -r rootfs__centos_7.9.2009_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx

memmory.md(память):


Таблица 1. 
Унифицированная структура памяти SD/NOR/QSPI/XSPI объемом 64 МБ на всех платформах QorIQ.
+-----------------------------+---------|--------------|-----------------+
|Firmware Definition          | MaxSize | Flash Offset | SD Start Block# |
|-----------------------------|---------|--------------|-----------------|
|RCW + PBI + BL2 (bl2.pbl)    | 1MB     | 0x00000000   | 0x00008         |
|-----------------------------|---------|--------------|-----------------|
|ATF FIP Image (fip.bin)      | 4MB     | 0x00100000   | 0x00800         |
|BL31 + BL32 + BL33           |         |              |                 |
|-----------------------------|---------|--------------|-----------------|
|Bootloader environment       | 1MB     | 0x00500000   | 0x02800         |
|-----------------------------|---------|--------------|-----------------|
|Secure boot headers          | 2MB     | 0x00600000   | 0x03000         |
|-----------------------------|---------|--------------|-----------------|
|DDR PHY FW or reserved       | 512KB   | 0x00800000   | 0x04000         |
|-----------------------------|---------|--------------|-----------------|
|Fuse provisioning header     | 512KB   | 0x00880000   | 0x04400         |
|-----------------------------|---------|--------------|-----------------|
|DPAA1 FMAN ucode             | 256KB   | 0x00900000   | 0x04800         |
|-----------------------------|---------|--------------|-----------------|
|QE firmware or DP firmware   | 256KB   | 0x00940000   | 0x04A00         |
|-----------------------------|---------|--------------|-----------------|
|Ethernet PHY firmware        | 256KB   | 0x00980000   | 0x04C00         |
|-----------------------------|---------|--------------|-----------------|
|Script for flashing image    | 256KB   | 0x009C0000   | 0x04E00         |
|-----------------------------|---------|--------------|-----------------|
|DPAA2-MC or PFE firmware     | 3MB     | 0x00A00000   | 0x05000         |
|-----------------------------|---------|--------------|-----------------|
|DPAA2 DPL                    | 1MB     | 0x00D00000   | 0x06800         |
|-----------------------------|---------|--------------|-----------------|
|DPAA2 DPC                    | 1MB     | 0x00E00000   | 0x07000         |
|-----------------------------|---------|--------------|-----------------|
|Device tree(needed by uefi)  | 1MB     | 0x00F00000   | 0x07800         |
|-------------+---------------|---------|--------------|-----------------|
|Kernel       |               | 16MB    | 0x01000000   | 0x08000         |
|-------------|sdk_linux.itb  |---------|--------------|-----------------|
|initrd rfs   |               | 30MB    | 0x02000000   | 0x10000         |
|-----------------------------|---------|--------------|-----------------|
|CA or other uses             | 2MB     | 0x03e00000   | 0x1F000         |
+-----------------------------+---------+--------------+-----------------+

Таблица 2.
Унифицированная схема памяти объемом 2 МБ для Layerscape (например, на платформе LS1012AFRWY)
+-----------------------+---------+---------------------------+----------+
| Firmware Definition   | MaxSize | Location                  |SD Block# |
|-----------------------|---------|---------------------------|----------|
| RCW+PBI+BL2 (bl2.pbl) | 64KB    | 0x0000_0000 - 0x0000_FFFF | 0x00008  |
|-----------------------|---------|---------------------------|----------|
| Reserved              | 64KB    | 0x0001_0000 - 0x0001_FFFF | 0x00080  |
|-----------------------|---------|-------------------- ------|----------|
| PFE firmware          | 256KB   | 0x0002_0000 - 0x0005_FFFF | 0x00100  |
|-----------------------|---------|---------------------------|----------|
| FIP (BL31+BL32+BL33)  | 1MB     | 0x0006_0000 - 0x000D_FFFF | 0x00300  |
|-----------------------|---------|---------------------------|----------|
| Environment varialbes | 64KB    | 0x001D_0000 - 0x001D_FFFF | 0x00E80  |
|-----------------------|---------|---------------------------|----------|
| Reserved or script    | 64KB    | 0x001E_0000 - 0x001E_FFFF | 0x00F00  |
|-----------------------|---------|---------------------------|----------|
| Secureboot headers    | 64KB    | 0x001F_0000 - 0x001F_FFFF | 0x00F80  |
+-----------------------+---------+---------------------------+----------+




Таблица 3. 
Унифицированный макет композитной прошивки SD размером 64 МБ для платформ iMX.
+-----------------------------+----------+------------------+
|Firmware Definition          | MaxSize  | Offset           |
|-----------------------------|----------|------------------|
|u-boot.imx or flash.bin      | 4M       | 1k/32k/33k       |
|-----------------------------|----------|------------------|
|u-boot env                   | 512K     | 0x400000         |
|-----------------------------|----------|------------------|
|reserved 1                   | 512K     | 0x480000         |
|-----------------------------|----------|------------------|
|reserved 2                   | 1M       | 0x500000         |
|-----------------------------|----------|------------------|
|kernel |                     | 16M      | 0x600000         |
|-------| sdk_linux_imx.itb   |----------|------------------|
|initrd |                     | 42M      | 0x1600000        |
+-----------------------------+----------+------------------+




Таблица 4. 
Разделы по умолчанию на носителе SD/USB/SATA, установленном с помощью flex-installer.
+---------------+--------------------+-------------------+---------------------+-------------------+-----------------------+
| Region 1      |      Region 2      |     Region 3      |     Region 4        |      Region 5     |      Region 6         |
|  4K(LS)       | (RAW,only SD Boot) |   (Partition-1)   | (Partition-2 EXT4)  | (Partition-3 EXT4)| (Partition-4 EXT4)    |
|1K/32K/33K(iMX)|      64 MiB        |      100 MiB      |      2 GiB Boot     |    5 GiB Backup   |Primary RFS,rest space |
+---------------+--------------------+-------------------+---------------------+-------------------+-----------------------+
| MBR/GPT       | bootloader         | BOOTAA64.EFI      | kernel & dtb        | backup partitio   |    Ubuntu-based RFS   |
|               | env                | (only part of LS) | distro boot scripts | or                | or Debian-based RFS   |
|               | misc firmware      | or                | sdk_linux.itb       | second distro     | or CentOS-based RFS   |
|               | sdk_linux.itb      | other uses        | secure boot headers |                   | or Yocto-based RFS    |
|               |                    |                   |                     |                   | or Buildroot-based RFS|
+---------------+--------------------+-------------------+---------------------+-------------------+-----------------------+
Пользователь может настроить разделы с помощью "flex-installer -i pf -p <список_разделов> -d <устройство>".

lsdk установка и сборка (lsdk_build_install.md)

Linux SDK можно собрать с помощью flex-builder и развернуть с помощью flex-installer.

## Как собрать Linux SDK с нуля с помощью flex-builder

Использование: 
flex-builder -m 

Поддерживаемый Layserscape :
    ls1012ardb, ls1012afrwy, ls1021atwr, ls1028ardb, ls1043ardb, ls1046ardb, ls1046afrwy, ls1088ardb_pb, ls2088ardb, ls2160ardb_rev2, lx2162aqds.

Поддерживаемый iMX :
    imx6qpsabresd, imx6qsabresd, imx6sllevk, imx7ulpevk, imx8mmevk, imx8mnevk, imx8mpevk, imx8mqevk, imx8qmmek, imx8qxpmek

Пример:
$ cd flexbuild
$ source setup.env
$ flex-builder -m ls1046ardb  # automatically build all images (bootloader, linux, app components, distro userland, etc) for ls1046ardb
$ flex-builder -m imx8mpevk   # automatically build all images (bootloader, linux, app components, distro userland, etc) for imx8mpevk
Подробное описание использования см. в docs/flexbuild_usage.md и docs/build_and_deploy_distro.md.


## Как развернуть LSDK с помощью flex-installer
Пример:
- Для автоматического развертывания дистрибутива LSDK на устройстве хранения данных
$ flex-installer -i auto -m ls1046ardb -d /dev/mmcblk0          # install rootfs_lsdk2108_ubuntu_main.tgz and boot_LS_arm64_lts_5.10.tgz
$ flex-installer -i auto -m lx2160ardb -d /dev/sdx -b boot_LS_arm64_lts_5.10.tgz   # specify different kernel version for bootpartition
$ flex-installer -i auto -m ls2088ardb -d /dev/sdx -e dtb       # '-e dtb' option is used for UEFI in DTB way, no need for U-Boot case
$ flex-installer -i auto -m lx2160ardb -d /dev/sdx -e acpi      # '-e acpi' option is used for UEFI in ACPI way, no need for U-Boot case

- Чтобы установить локальные образы дистрибутива вместо автоматизации для одного дистрибутива
$ flex-installer -i pf -d /dev/sdx   (partition and format the target storage device)
$ flex-installer -b boot_LS_arm64_lts_5.10.tgz -r rootfs_lsdk2108_ubuntu_main_arm64.tgz -f firmware_ls1046ardb_sdboot.img -d /dev/sdx
$ flex-installer -b boot_IMX_arm64_lts_5.10.tgz -r rootfs_lsdk2108_ubuntu_desktop_arm64.tgz -f firmware_imx8mpevk_sdboot.img -d /dev/sdx -o 32k


- Чтобы установить локальные образы дистрибутива вместо автоматизации для двух дистрибутивов
$ flex-installer -b  -r rootfs_lsdk2108_ubuntu_main_arm64.tgz -R rootfs_lsdk2108_yocto_devel_arm64.tgz -f  -d /dev/sdx
(выполните 'setenv devpart_root 3;boot'в U-Boot для загрузки второго дистрибутива с partition-3)


- На плате ARM с TinyLinux сначала разделите целевой диск, затем загрузите образы локального дистрибутива на плату и установите, как показано ниже.
$ flex-installer -i pf -d /dev/mmcblk0 (or /dev/sdx)
$ cd /mnt/mmcblk0p3 and download your customized distro images to this partition via wget or scp
$ flex-installer -b  -r  -f  -d 

- Чтобы загружать только образы дистрибутива без установки
$ flex-installer -i download -m ls1046ardb


- Чтобы установить только композитную прошивку

$ flex-installer -f firmware_ls1046ardb_sdboot.img -d /dev/mmcblk0 (or /dev/sdx)
(Примечание. Опция «-f» предназначена только для sdboot, нет необходимости использовать не sdboot.)



## Как собрать составную прошивку с нестандартным RCW
Помимо изменения настроек RCW в configs/board//manifest, пользователи также могут установить
переменная среды «rcw_bin», чтобы переопределить RCW по умолчанию, как показано ниже, например:
$ export rcw_bin=lx2160ardb_rev2/XGGFF_PP_HHHH_RR_19_5_2/rcw_2200_700_3200_19_5_2.bin
$ flex-builder -i clean-firmware
$ flex-builder -i mkfw -m lx2160ardb_rev2
$ unset rcw_bin (не установлено, чтобы избежать влияния на последующую сборку)


## Как запрограммировать композитную прошивку LSDK на флэш-устройство SD/NOR/QSPI/XSPI
- For SD/eMMC card
$ wget http://www.nxp.com/lgfiles/sdk/lsdk2108/firmware__sdboot.img
=> tftp a0000000 firmware__sdboot.img
or
=> load mmc 0:2 a0000000 firmware__sdboot.img

Under U-Boot:
=> mmc write a0000000 8 1f000

Под Linux:
$ flex-installer -f firmware__sdboot.img -d /dev/mmcblk0 (or /dev/sdx)


- Для флэш-памяти IFC-NOR
On LS1043ARDB, LS1021ATWR
=> load mmc 0:2 a0000000 firmware__uboot_norboot.img
or tftp a0000000 firmware__uboot_norboot.img
To program alternate bank:
=> protect off 64000000 +$filesize && erase 64000000 +$filesize && cp.b a0000000 64000000 $filesize
To program current bank
=> protect off 60000000 +$filesize && erase 60000000 +$filesize && cp.b a0000000 60000000 $filesize

On LS2088ARDB:
=> load mmc 0:2 a0000000 firmware_ls2088ardb_uboot_norboot.img
or tftp a0000000 firmware_ls2088ardb_uboot_norboot.img
To program alternate bank:
=> protect off 584000000 +$filesize && erase 584000000 +$filesize && cp.b a0000000 584000000 $filesize
To program current bank:
=> protect off 580000000 +$filesize && erase 580000000 +$filesize && cp.b a0000000 580000000 $filesize

- Для флэш-памяти QSPI-NOR/FlexSPI-NOR 

On LS1012ARDB, LS1028ARDB, LS1046ARDB, LS1088ARDB-PB, LX2160ARDB
=> load mmc 0:2 a0000000 firmware__qspiboot.img
or
=> load mmc 0:2 a0000000 firmware_lx2160ardb_xspiboot.img
or tftp a0000000 firmware__qspiboot.img
=> sf probe 0:1
=> sf erase 0 +$filesize && sf write 0xa0000000 0 $filesize





## Как обновить существующий дистрибутив LSDK с помощью Flexbuild на хосте
Поскольку некоторые компоненты LSDK обновляются быстро после официального выпуска LSDK, 
пользователи могут обновить существующий LSDK с помощью описанные ниже шаги помогут упростить процедуру сборки и развертывания новых изменений в существующем LSDK.


Шаг 1. 
Загрузите последний архив flexbuild и распакуйте его в существующий рабочий каталог flexbuild.
$ tar xvzf flexbuild_.tgz --strip-components 1 -C 
$ cd 
$ source setup.env
$ flex-builder -i repo-fetch (fetch repos of LSDK components)
$ flex-builder -i repo-tag   (switch to new tags of components)


Шаг 2. 
Пересоберите образ LSDK с обновлением компонентов.
Примеры:

Чтобы пересобрать все образы для конкретной машины:
$ flex-builder clean
$ flex-builder -m 

Чтобы перестроить все компоненты приложений:
$ flex-builder -i clean-apps
$ flex-builder -c apps

Чтобы перестроить определенный компонент:
$ flex-builder -i clean-apps
$ flex-builder -c 

Чтобы перестроить linux kernel:
$ flex-builder -i clean-linux
$ flex-builder -c linux                     (use the default kernel repo and tag/branch)
or
$ flex-builder -c linux:: -a  (specify kernel repo and tag/branch)

Чтобы перестроить firmware:
$ flex-builder -i clean-firmware
$ flex-builder -i mkfw -m 

Шаг 3. 
Отправьте вновь созданное изображение с хоста на целевую плату.
После загрузки существующего дистрибутива LSDK на целевой плате и настройки IP-адреса выполните приведенные ниже команды на хосте, 
чтобы отправьте изображения, созданные на шаге 2, на целевую плату.
Примеры:
Чтобы отправить ядро и модули на целевую плату:
$ flex-builder connect 
$ flex-builder push kernel 
$ flex-builder disconnect 

Чтобы перенести один или несколько компонентов приложения на целевую плату:
$ flex-builder connect 
$ flex-builder push apps 
$ flex-builder disconnect 

Перезагрузите целевую плату, чтобы загрузить дистрибутив с обновленными images.

Чтобы обновить составную прошивку, вы можете запрограммировать прошивку, созданную на шаге 2, на SD-карту или флэш-накопитель с помощью U-Boot.
Кроме того, для загрузки с SD вы можете запрограммировать прошивку с помощью приведенной ниже команды в среде Linux:
$ flex-installer -f  -d /dev/sdx [ -o  ]
or
$ sudo dd if= of=/dev/sdX bs=1k seek=
 составляет 4 КБ для плат Layscape, 1 КБ/32 КБ/33 КБ для плат iMX.





## Как добавить поддержку новой пользовательской машины в flexbuild на основе версии LSDK
Предположим, вы добавляете новый специальный компьютер с именем LS1046AXX на базе SoC LS1046A, выполните следующие действия:

1. Запустите команду "flex-builder -i repo-fetch", чтобы впервые получить все git-репозитории компонентов LSDK.

2. Добавьте поддержку новых машин в U-Boot, например LSDK-21.08.
   $ cd components/firmware/uboot
   затем добавьте патчи U-Boot для новой платы LS1046AXX.
    Предположим, что для LS1046AXX добавлен файл конфигурации "components/firmware/u-boot/configs/ls1046axx_tfa_defconfig"  для LS1046AXX,
    настройте ""LS1046AXX: y" в разделе CONFIG_MACHINE в configs/sdk.yml
   $ cd components/firmware/atf
   $ git checkout LSDK-21.08 -b LSDK-21.08-LS1046AXX
   затем добавьте патчи ATF для нового LS1046AXX
   Запустите "flex-builder -c atf -m ls1046axx -b sd", чтобы создать образ ATF с помощью u-boot для загрузки с SD на LS1046AXX.

3. Добавьте поддержку новых машин в ядро Linux, например LSDK-21.08.
   $ cd components/linux/linux
   $ git checkout LSDK-21.08 -b LSDK-21.08-LS1046AXX
   затем добавьте исправления ядра для новой машины, зафиксируйте все исправления в этой ветке и создайте тег, как показано ниже.
   $ git tag LSDK-21.08-LS1046AXX
   Предположим, что новый файл дерева устройств fsl-ls1046axx.dts добавлен в "components/linux/linux/arch/arm64/boot/dts" каталог
   Запустите 'flex-builder -c linux:linux:LSDK-21.08-LS1046AXX' для сборки образа ядра для новой платы LS1046AXX.

4. Добавьте конфигурации в flexbuild для новой машины
   - Добавьте узел ls1046axx в "configs/linux/linux_arm64_LS.its"
   - Установите новый Linux "tag/branch" для LSDK-21.08-LS1046AXX и установите новый uboot "tag/branch" для LSDK-21.08-LS1046AXX в configs/sdk.yml
   - опционально пользователь может использовать разметку памяти, отличную от настроек по умолчанию, изменив ее в "configs/board/common/layerscape_memorylayout.cfg"
   - Добавить манифест для новой машины
     $ mkdir configs/board/ls1046axx
     $ cp configs/board/ls1046ardb/manifest configs/board/ls1046axx
     Обновите настройки в configs/board/ls1046axx/manifest по требованию
     Примечание: как правило, пользователь может повторно использовать настройки rcw, fman, qe, eth-phy используется для существующих ls1046ardb если эти компоненты
     такие же для новых ls1046axx, в противном случае пользователю необходимо добавить новый RCW поддержка конфигурации в "components/firmware/rcw/ls1046axx".
   
   Запустите: 
   'flex-builder -i mkitb -r yocto:tiny' для создания образа lsdk2108_yocto_tiny_LS_arm64.itb
   Запустите: 
   'flex-builder -c bin_firmware' для создания общих образов fman/qe/eth-phy для нового ls1046axx
   Запустите: 
   'flex-builder -i mkfw -m ls1046axx -b sd' to generate firmware_ls1046axx_sdboot.img
   пользователь может загрузить новый lsdk2108_yocto_tiny_LS_arm64.itb из приглашения U-Boot на этапе отладки на машине LS1046AXX
   => tftp a0000000 lsdk2108_yocto_tiny_LS_arm64.itb
   => bootm a0000000#ls1046axx

5. При необходимости создайте все остальные образы для новой пользовательской машины с помощью пользовательской среды lsdk.
   $ flex-builder -i mkrfs
   $ flex-builder -c apps
   $ flex-builder -i mkboot
   $ flex-builder -i merge-component
   $ flex-builder -i packrfs
   Наконец, установите boot_LS_arm64_lts_.tgz и rootfs_lsdk__.tgz, 
   чтобы накопитель SD/USB/SATA на машине LS1046AXX с помощью flex-installer.

##Как запрограммировать отдельный образ LSDK на другой банк флэш-устройства NOR/QSPI/FlexSPI
Если вам нужно прошить другой образ (например,  atf bl2, atf fip, dtb, kernel, etc) в текущий или другой банк для оценки
определенная функция на плате Layerscape, например, для оценки функции TDM с изображением RCW не по умолчанию на LS1043ARDB:

1. Замените файл rcw_1600.bin по умолчанию на rcw_1600_qetdm.bin (или другой файл rcw, который вы хотите) в configs/board/ls1043ardb/manifest.
2. повторно создать образ ATF (образ RCW включен в образ ATF BL2, образ RCW нельзя прошить отдельно)
     $ flex-builder -c atf -m ls1043ardb -b nor
3. скопируйте новый образ BL2 build/firmware/atf/ls1043ardb/bl2_nor.pbl в каталог flash_images/ls1043ardb в загрузочном разделе SD-карты.
4. выполните следующие команды в командной строке uboot на ls1043ardb
=> setenv bd_type mmc
=> setenv bd_part 0:2
=> setenv bank other
=> ls $bd_type $bd_part flash_images/ls1043ardb
=> setenv img bl2
=> setenv bl2_img flash_images/ls1043ardb/bl2_nor.pbl
=> load $bd_type $bd_part $load_addr flash_images.scr
=> source $load_addr
- Чтобы прошить один образ, установите для переменной env u-boot 'img' одно из следующих значений: bl2, fip, mcfw, mcdpc, mcdpl, fman, qe, pfe, phy, dtb или kernel.
- Чтобы записать все изображения в текущий или другой банк, установите для переменной env u-boot 'img' значение all с помощью команды 'setenv img all'.
  Вы можете переопределить настройки по умолчанию для переменных bd_part, flash_type, bl2_img, fip_img, dtb_img, kernel_itb,
  qe_img, fman_img, phy_img, mcfw_img, mcdpl_img, mcdpc_img перед запуском исходного кода $load_addr, если необходимо.



Flexbuild Work Flow (Рабочий процесс Flexbuild)

                                                                                    
+--------------------------------+    +--------------+    +---------------------------------------+
|    Firmware components         |    |              |    |   Generated Images   (build/images)   |
|                                |--->|              |    |                                       |
|u-boot,uefi,rcw,tfa,fman,pfe,   |    |              |    |flex-installer                         |
|mc,qe,dpl,dpc,seco,etc          |    |              |    |lsdk_linux__LS_tiny.itb          |
+--------------------------------+    |              |    |rootfs__ubuntu_.tgz |
                                      |              |    |rootfs__centos_.tgz |
+--------------------------------+    |              |--->|rootfs__debian_.tgz |
|  Linux components              |--->|              |    |rootfs__yocto_.tgz  |
|linux-lts-nxp,cryptodev_linux   |    |              |    |rootfs__buildroot.tgz     |
+--------------------------------+    |              |    |firmware__.img      |
                                      |              |    |firmware___uefi.img |
                                      |              |    |bootpartition__lts_.tgz |
+--------------------------------+    |              |    +---------------------------------------+
|     Apps components            |    |              |
|                                |    |              |    +---------------------------------------+
|fmc,restool,dpdk,wayland,weston |--->|              |    |            RFS (build/rfs)            |
|dce,aiopsl,tsntool,libpkcs11,   |    |              |    |                                       |
|eiq,armnn,secure_obj,ceetm,     |    |              |    |            +------------+             |
|optee_os,optee_client,aiopsl,   |    |              |    |            |  Ubuntu    |             |
|ovs_dpdk,pktgen_dpdk,vpp,etc    |    |              |    |            +------------+             |
|                                |    |              |    |                                       |
+--------------------------------+    |              |    |            +------------+             |
                                      |              |    |            |  Debian    |             |
+--------------------------------+    |              |    |            +------------+             |
|      Configs                   |    |              |    |                                       |
|                                |    |              |    |            +------------+             |
|build_lsdk.cfg                  |    |              |    |            |  CentOS    |             |
|board//manifest        |--->|              |    |            +------------+             |
|linux/linux_.its          |    | flex-builder |--->|                                       |
|ubuntu/extra_packages_list      |    |              |    |            +------------+             |
|buildroot/_defconfig      |    |              |    |            |  Yocto RFS |             |
|yocto/local_arm64_tiny.conf     |    |              |    |            +------------+             |
+--------------------------------+    |              |    |                                       |
                                      |              |    |            +-------------+            |
                                      |              |    |            |Buildroot RFS|            |
                                      |              |    |            +-------------+            |
+--------------------------------+    |              |    |                                       |
|   SD/USB/SATA Storage Drive    |    |              |    |            +------------+             |
|                                |    |              |    |            |  other     |             |
|                                |    |              |    |            +------------+             |
| +---------------+-----------+  |    |              |    |                                       |
| |Boot Partition |  RootFS   |  |    |              |    +---------------------------------------+
| |               |           |  |    |              |                      +                      
| |kernel         |Ubuntu     |  |    |              |    +---------------------------------------+
| |dtb            |Debian     |  |    |              |    |          Boot Partitoion              |
| |lsdk_linux.itb |CentOS     |  |    |              |    |                                       |
| |distro boot.scr|Yocto RFS  |  |    |              |    |          kernel image                 |
| |secure headers |Buildroot  |  |    |              |--->|          composite firmware           |
| |               |           |  |    |              |    |          DTBs                         |
| +---------------+-----------+  |    |              |    |          secure boot header           |
|                                |    |              |    |          distro boot script           |
|                                |    |              |    |          flash_images                 |
|                                |    |              |    |                                       |
|                                |    |              |    |                                       |
+--------------------------------+    +--------------+    +---------------------------------------+
              ^                                                             |                         
              |                                                             v
+-------------------------------------------------------------------------------------------------+
|                                    flex-installer                                               |
+-------------------------------------------------------------------------------------------------+

Flexbuild Usage(Использование Flexbuild)

## Flexbuild использование
$ cd flexbuild
$ source setup.env
$ flex-builder -h

Использование: 
   flex-builder -c  [-a ] [-f ]
   or: 
   flex-builder -i  [-m ] [-a ] [-r :] [-f ]


Наиболее используемый пример с автоматической сборкой:
  flex-builder -m ls1043ardb                  # automatically build all firmware, linux, apps components and ubuntu-based rootfs for single ls1043ardb
  flex-builder -i auto                        # automatically build all firmware, linux, apps components and ubuntu-based rootfs for all arm64 machines


Наиболее используемый пример с отдельной командой:
 flex-builder -i mkfw -m            # generate composite firmware (contains atf, u-boot, peripheral firmware, kernel, dtb, tinylinux rootfs, etc)
 flex-builder -i mkallfw                     # generate composite firmware for all arm64 machines
 flex-builder -i mkrfs                       # generate Ubuntu main arm64 userland, equivalent to "-i mkrfs -r ubuntu:main -a arm64" by default
 flex-builder -i mkrfs -r ubuntu:desktop     # generate Ubuntu desktop arm64 userland
 flex-builder -i mkrfs -r ubuntu:lite        # generate Ubuntu lite arm64 userland
 flex-builder -i mkrfs -r yocto:tiny         # generate Yocto-based arm64 tiny userland
 flex-builder -i mkrfs -r buildroot:tiny     # generate Buildroot-based arm64 tiny userland
 flex-builder -i mkrfs -r centos             # generate CentOS arm64 userland
 flex-builder -i mkitb -r yocto:tiny         # generate lsdk_yocto_tiny_LS_arm64.itb including rootfs__yocto_tiny_arm64.cpio.gz
 flex-builder -c                  # compile  or  (e.g. dpdk,weston,linux,networking,graphics,security,etc)
 flex-builder -c linux                       # compile linux kernel for all arm64 machines, equivalent to "-i compile -c linux -a arm64" by default
 flex-builder -c atf -m ls1046ardb -b sd     # compile atf image for SD boot on LS1046ardb
 flex-builder -i mkboot                      # generate boot partition tarball (contains kernel, dtb, modules, distro boot script, etc) for deployment
 flex-builder -i merge-component             # merge component packages into target arm64 userland
 flex-builder -i packrfs                     # pack and compress target rootfs as rootfs__ubuntu_main_arm64.tgz
 flex-builder -i packapp                     # pack and compress target app components as app_components_LS_arm64.tgz
 flex-builder -i download -m ls1043ardb      # download prebuilt distro images for specific machine
 flex-builder -i repo-fetch                  # fetch all git repositories of components from remote repos if not exist locally
 flex-builder -i repo-update                 # update all components to the latest TOP commmits of current branches
 flex-builder -i mkdistroscr                 # generate distro boot script
 flex-builder docker                         # create or attach Ubuntu docker container to run flex-builder in docker
 flex-builder clean                          # clean all obsolete firmware/linux/apps image except distro rootfs
 flex-builder clean-rfs                      # clean distro rootfs, '-r ubuntu:main -a arm64' by default
 flex-builder clean-firmware                 # clean obsolete firmware image
 flex-builder clean-apps                     # clean obsolete apps component binary image
 flex-builder clean-linux                    # clean obsolete linux image


Поддерживаемые варианты:
  -m, --machine         целевая машина, поддерживает ls1012afrwy,ls1021atwr,ls1028ardb,ls1043ardb,ls1046ardb,ls2088ardb,lx2160ardb_rev2,lx2162aqds,imx8mnevk,imx8mpevk,etc
  -a, --arch            целевая архитектура, действительный аргумент: arm64, arm64:be, arm32, arm32:be, ppc64, ppc32, Arm64 по умолчанию, если не указано
  -b, --boottype        тип загрузочного носителя, допустимый аргумент: sd, emmc, qspi, xspi, nor, nand, по умолчанию все типы, если не указано
  -c, --component       скомпилировать указанную подсистему или компонент, например: firmware, apps, linux, networking, graphics, security, atf, rcw, uboot, dpdk, ovs_dpdk, vpp, fmc, tsntool, weston, xserser, armnn, tflite, etc
  -i, --instruction     инструкция для конкретной цели, действительный аргумент, как показано ниже:
      mkfw              создать составную прошивку (contains atf, u-boot, peripheral firmware, kernel, dtb, tinylinux rootfs, etc)
      mkallfw           генерировать составную прошивку для всех платформ
      mkitb             generate ____.itb
      mkboot            generate boot partition tarball (contains kernel, modules, dtb, distro boot script, secure boot header, etc)
      mkrfs             generate target rootfs, associated with -r, -a and -p options for different distro type and architecture
      mkdistroscr       generate distro autoboot script for all or single machine
      mkflashscr        generate U-Boot script of flashing images for all machines
      signimg           sign various images and generate secure boot header for the specified machine
      merge-component   merge custom component packages and kernel modules into target distro rootfs
      auto              automatically build all firmware, kernel, apps components and distro userland
      clean             clean all the obsolete images except distro rootfs
      clean-firmware    clean obsolete firmware images generated in build/firmware directory
      clean-linux       clean obsolete linux images generated in build/linux directory
      clean-apps        clean obsolete apps images
      clean-rfs         clean target rootfs
      packrfs           pack and compress distro rootfs as .tgz
      packapps          pack and compress apps components as .tgz
      repo-fetch        fetch single or all git repositories if not exist locally
      repo-branch       set single or all git repositories to specified branch
      repo-update       update single or all git repositories to latest HEAD
      repo-commit       set single or all git repositories to specified commit
      repo-tag          set single or all git repositories to specified tag
      rfsraw2ext        convert raw rootfs to ext4 rootfs
      list              list enabled config, machines and components
  -p, --portfolio       specify portfolio of SoC, valid argument: LS or IMX, default LS if unspecified
  -f, --cfgfile         specify config file, configs/sdk.yml is used by default if only the file exists
  -B, --buildarg        secondary argument for various build commands
  -r, --rootfs          specify flavor of target rootfs, valid argument: ubuntu|debian|centos|yocto|buildroot:main|desktop|devel|lite|tiny
  -j, --jobs            number of parallel build jobs, default 16 jobs if unspecified
  -s, --secure          enable security feature in case of secure boot without IMA/EVM
  -t, --ima-evm         enable IMA/EVM feature in case of secure boot with IMA/EVM
  -T, --cot             specify COT (Chain of Trust) type for secure boot, valid argument: arm-cot, arm-cot-with-verified-boot, nxp-cot
  -e, --encapsulation   enable encapsulation and decapsulation feature for chain of trust with confidentiality in case secure boot
  -v, --version         print the version of flexbuild
  -h, --help            print help info




## Как собрать композитную прошивку
Составная прошивка состоит из RCW/PBL, ATF BL2, ATF BL31, BL32 OPTEE, BL33 U-Boot/UEFI, переменных среды загрузчика,
безопасные загрузочные заголовки, прошивка Ethernet, dtb, ядро и крошечный initrd rootfs и т. д., эту составную прошивку можно запрограммировать на
смещение 0x0 во флэш-устройстве NOR/QSPI/FlexSPI или смещение 4 КБ (LS) или 1 КБ/32 КБ/33 КБ (I.MX) на карте SD/eMMC.

Использование: 
flex-builder -i mkfw -m  [-b ]
Использование:
$ flex-builder -i mkfw -m ls1046ardb        # generate all boot types composite firmware_ls1046ardb_.img
$ flex-builder -i mkfw -m ls1046ardb -b sd  # generate specified boot type composite firmware_ls1046ardb_sdboot.img
$ flex-builder -i mkfw -m imx6qsabresd      # generate composite firmware_imx6qsabresd_sdboot.img
$ flex-builder -i mkfw -m imx8mpevk         # generate composite firmware_imx8mpevk_sdboot.img


## Как собрать архив загрузочного раздела
Usage: flex-builder -i  [ -p  ] [ -a  ]
Использование:
$ flex-builder -i mkboot                   # generate boot_LS_arm64_lts_5.10.tgz for arm64 Layerscape platforms
$ flex-builder -i mkboot -a arm32          # generate boot_LS_arm32_lts_5.10.tgz for arm32 Layerscape platforms
$ flex-builder -i mkboot -p IMX            # generate boot_IMX_arm64_lts_5.10.tgz for arm64 iMX platforms
$ flex-builder -i mkboot -p IMX -a arm32   # generate boot_IMX_arm32_lts_5.10.tgz for arm32 iMX platforms

## Как собрать образ Linux ITB FIT
$ flex-builder -i mkitb -r yocto:tiny          # generate yocto-based tiny _yocto_tiny_LS_arm64.itb
$ flex-builder -i mkitb -r yocto:tiny -a arm32 # generate yocto-based tiny _yocto_tiny_LS_arm32.itb
$ flex-builder -i mkitb -r ubuntu:lite         # generate Ubuntu-based lite _ubuntu_lite_LS_arm64.itb
$ flex-builder -i mkitb -r yocto:tiny -p IMX   # generate yocto-based tiny _yocto_tiny_IMX_arm64.itb
$ flex-builder -i mkitb -r ubuntu:lite -p IMX  # generate ubuntu-based lite _ubuntu_lite_IMX_arm64.itb

## Как собрать ядро и модули Linux
Чтобы собрать Linux с репозиторием по умолчанию и текущей веткой в соответствии с конфигурацией по умолчанию
Использование:
flex-builder -c linux [ -a  ] [ -p  ]
Примеры:
$ flex-builder -c linux                         # for arm64 Layerscape platforms by default
$ flex-builder -c linux -a arm32                # for arm32 Layerscape platform
$ flex-builder -c linux -a arm64 -p IMX         # for arm64 i.MX platforms
$ flex-builder -c linux -a arm32 -p IMX         # for arm32 i.MX platforms


Чтобы собрать Linux с указанным репозиторием ядра и веткой/тегом в соответствии с конфигурацией ядра по умолчанию.
Использование: 
flex-builder -c linux:: [ -a  ]
Примеры:
$ flex-builder -c linux:linux-lts-nxp:lf-5.10.y
$ flex-builder -c linux:linux:LSDK-21.08
Чтобы настроить параметры ядра с помощью репозитория по умолчанию и текущей ветки в интерактивном меню.
$ flex-builder -c linux:custom                 # generate a customized .config
$ flex-builder -c linux                        # compile kernel and modules according to the generated .config above


Чтобы собрать собственный Linux с указанным репозиторием ядра и веткой/тегом в соответствии с конфигурацией по умолчанию и конфигурацией добавленного фрагмента.
Использование: 
flex-builder -c linux [ :: ] -B fragment: [ -a  ]
Examples:
$ flex-builder -c linux -B fragment:ima_evm_arm64.config
$ flex-builder -c linux -B fragment:"ima_evm_arm64.config lttng.config"
$ flex-builder -c linux:linux:LSDK-21.08 -B fragment:lttng.config



## Как собрать ATF (TF-A)
Использование: 
flex-builder -c atf [ -m  ] [ -b  ] [ -s ] [ -B bootloader ]
Примеры:
$ flex-builder -c atf -m ls1028ardb -b sd             # build U-Boot based ATF image for SD boot on ls1028ardb
$ flex-builder -c atf -m ls1046ardb -b qspi           # build U-Boot based ATF image for QSPI boot on ls1046ardb
$ flex-builder -c atf -m ls2088ardb -b nor -s         # build U-Boot based ATF image for secure IFC-NOR boot on ls2088ardb
$ flex-builder -c atf -m lx2160ardb -b xspi -B uefi   # build UEFI based ATF image for FlexSPI-NOR boot on lx2160ardb

flex-builder может автоматически создавать зависимые RCW, U-Boot/UEFI, OPTEE и CST перед сборкой ATF для создания целевых образов.
Примечание 1. 
Если вы хотите указать другую конфигурацию RCW вместо конфигурации по умолчанию, сначала измените переменную rcw_ в configs/board//manifest, 
затем запустите "flex-builder -c rcw -m ", чтобы сгенерировать новый образ RCW.
Примечание 2. 
Опция "-s" используется для безопасной загрузки. 
FUSE_PROVISIONING не включен по умолчанию, вы можете изменить CONFIG_FUSE_PROVISIONING:n — y в configs/sdk.yml, чтобы включить его при необходимости.

## Как собрать U-Boot
Использование:
flex-builder -c uboot -m 
Примеры:
$ flex-builder -c uboot -m ls2088ardb                 # build U-Boot image for ls2088ardb
$ flex-builder -c uboot -m imx6qsabresd               # build U-Boot image for imx6qsabresd
$ flex-builder -c uboot -m imx8mpevk                  # build U-Boot image for imx8mpevk

## Как собрать различные компоненты прошивки
Использование:
flex-builder -c  [ -b  ]
Примеры:
$ flex-builder -c rcw -m ls1046ardb                   # build RCW images for ls1046ardb
$ flex-builder -c mc_utils                            # build mc_utils image
$ flex-builder -c bin_firmware                        # build binary fm_ucode, qe_ucode, mc_bin, phy_cortina, pfe_bin, etc



## Как создавать компоненты приложения
Поддерживаемые компоненты приложения: restool, tsntool, gpp_aioptool, dpdk, pktgen_dpdk, ovs_dpdk, flib, fmlib, fmc, spc, openssl, cst, aiopsl,
ceetm, qbman_userspace, eth_config, crconf, optee_os, optee_client, optee_test, libpkcs11, secure_obj, eiq, opencv, tflite, ArmCL,
Flatbuffer, onnx, onnxruntime и т. д.

Использование:
flex-builder -c  [ -a  ] [ -r : ]
Примеры:
$ flex-builder -c apps                                # build all apps components against arm64 Ubuntu main userland by default
$ flex-builder -c apps -r yocto:devel                 # build apps components against arm64 Yocto-based userland
$ flex-builder -c apps -r buildroot:devel             # build all apps components against arm64 buildroot-based userland
$ flex-builder -c fmc -a arm64                        # build FMC component against arm64 Ubuntu main userland
$ flex-builder -c fmc -a arm32                        # build FMC component against arm32 Ubuntu main userland
$ flex-builder -c dpdk -r ubuntu:main                 # build DPDK component against Ubuntu main userland
$ flex-builder -c dpdk -r yocto:devel                 # build DPDK component against Yocto devel userland
$ flex-builder -c weston -r ubuntu:desktop            # build weston component
$ flex-builder -c xserver -r ubuntu:desktop           # build xserver component
$ flex-builder -c optee_os                            # build optee_os component
$ flex-builder -c tflite                              # build tensorflow lite
  (примечание: '-r ubuntu:main -a arm64' используется по умолчанию, если не указано.)

## Управление git-репозиториями различных компонентов.
Использование:
flex-builder -i  [ -B  ]
Примеры:
$ flex-builder -i repo-fetch                          # git clone source repositories of all components
$ flex-builder -i repo-fetch -c dpdk                  # git clone source repository for DPDK
$ flex-builder -i repo-branch                         # switch branches of all components to specified branches according to the config file
$ flex-builder -i repo-tag                            # switch tags of all components to specified tags according to default config
$ flex-builder -i repo-commit                         # set all components to the specified commmits of current branches
$ flex-builder -i repo-update                         # update all components to the latest HEAD commmit of current branches 


## Как использовать другую конфигурацию сборки вместо конфигурации по умолчанию
Пользователь может создать собственный файл конфигурации "configs/custom.yml", flex-builder предпочтительно выберет custom.yml, в противном случае, 
если он есть это файл конфигурации "configs/sdk_internal.yml", он будет использоваться. 
Если есть только "configs/sdk.yml", он будет использован.
Если в каталоге configs имеется несколько файлов конфигурации, пользователь может указать ожидаемый файл, указав опцию "-f ".
Пример:
$ flex-builder -m ls1043ardb -f custom.yml
$ flex-builder -m ls1028ardb -f test.yml
$ flex-builder -m imx8mpevk -f sdk.yml




##Как добавить новый компонент/пакет приложения в Flexbuild
- Добавьте новое "<имя_приложения>: y" в CONFIG_APP и настройте url/branch/tag  репозитория в "configs/sdk.yml",
 Пользователь может напрямую создать новый репозиторий компонентов git в каталоге компоненты/приложения/<категория> до того, как новый репозиторий git будет готов.
- Добавлена поддержка объектов makefile для нового компонента в "packages/apps//.mk".
- Запустите 'flex-builder -c <компонент> -r  -a ', чтобы создать новый компонент на основе целевой корневой файловой системы .
- Запустите 'flex-builder -i merge-comment -r  -a ', чтобы объединить новый пакет компонентов с целевой корневой файловой системой .
- Запустите 'flex-builder -i packagerfs -r  -a ', чтобы упаковать целевую корневую файловую систему .
   (примечание: '-r ubuntu:main -a Arm64' используется по умолчанию, если не указано)




## Как настроить различные пути к пакетам/компонентам и пути вывода изображений вместо пути по умолчанию для совместного использования несколькими пользователями.
Путь к пакетам по умолчанию — /packages, путь вывода изображений по умолчанию — /build. Существует два способа
измените путь по умолчанию:

Способ 1: 
установите PACKAGES_PATH и/или FBOUTDIR в переменной среды(environment variable), как показано ниже:
$ export PACKAGES_PATH=
$ export FBOUTDIR=

Способ 2: 
изменить DEFAULT_PACKAGES_PATH и/или DEFAULT_OUT_PATH в /configs/sdk.yml.

Сборка и развертывание различных дистрибутивов


flex-builder поддерживает создание различных дистрибутивов различного масштаба, 
включая богатые ОС (на базе Ubuntu, на основе Debian, на основе CentOS) и встроенная ОС (дистрибутив на основе Yocto и Buildroot). 
Пользователи могут выбрать подходящий дистрибутив в соответствии с требованиями, как показано ниже:

Использование: 
flex-builder -i mkrfs [ -r : ] [ -a  ]
Пример:
$ flex-builder -i mkrfs -r ubuntu:main          # generate ubuntu-based main userland for as per extra_main_packages_list for networking
$ flex-builder -i mkrfs -r ubuntu:desktop       # generate Ubuntu-based desktop userland with main packages and gnome desktop for multimedia
$ flex-builder -i mkrfs -r ubuntu:devel         # generate Ubuntu-based devel userland with more main and universe packages for development
$ flex-builder -i mkrfs -r ubuntu:lite          # generate Ubuntu-based lite userland with base packages
$ flex-builder -i mkrfs -r debian:main          # generate Debian-based main userland with main packages
$ flex-builder -i mkrfs -r centos               # generate CentOS-based arm64 userland
$ flex-builder -i mkrfs -r yocto:tiny           # generate Yocto-based tiny arm64 userland
$ flex-builder -i mkrfs -r yocto:devel          # generate Yocto-based devel arm64 userland
$ flex-builder -i mkrfs -r buildroot:tiny       # generate Buildroot-based tiny arm64 userland
$ flex-builder -i mkrfs -r buildroot:devel      # generate Buildroot-based devel arm64 userland

Чтобы быстро установить новый пакет apt для целевой пользовательской среды arm64 на базе Ubuntu на хост-компьютере, выполните команду, как показано ниже.
$ sudo chroot build/rfs/rootfs__ubuntu_main_arm64 apt install 


Пример: 
сборка и развертывание основного дистрибутива на базе Ubuntu.
$ flex-builder -i mkrfs                # generate ubuntu-based main userland, '-r ubuntu:main -a arm64' by default if unspecified
$ flex-builder -i mkboot               # genrate boot_LS_arm64_lts_5.10.tgz
$ flex-builder -c apps                 # build all apps components
$ flex-builder -i merge-component      # merge app components into target userland
$ flex-builder -i packrfs              # pack and compress target userland as .tgz
$ flex-builder -i mkfw -m ls1046ardb   # generate composite firmware_ls1046ardb_.img
$ cd build/images
$ flex-installer -r rootfs__ubuntu_main_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx
or
$ flex-installer -r rootfs__ubuntu_main_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -f firmware_ls1046ardb_sdboot.img -d /dev/sdx

Примечание. Параметр -f <прошивка> используется только для загрузки с SD-карты.

Сборка и развертывание дистрибутива настольных компьютеров на базе Ubuntu для графического сценария.
Пример:
$ flex-builder -i mkrfs -r ubuntu:desktop
$ flex-builder -c apps -r ubuntu:desktop
$ flex-builder -i mkboot  ('-p LS' for Layerscapes by default, specify '-p IMX' for iMX platforms)
$ flex-builder -i merge-component -r ubuntu:desktop
$ flex-builder -i packrfs -r ubuntu:desktop
$ cd build/images
$ flex-installer -r rootfs__ubuntu_desktop_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx



Сборка и развертывание дистрибутива Ubuntu lite.
Пример:
$ flex-builder -i mkrfs -r ubuntu:lite
$ flex-builder -i mkboot
$ flex-builder -i merge-component -r ubuntu:lite
$ flex-builder -i packrfs -r ubuntu:lite
$ cd build/images
$ flex-installer -r rootfs__ubuntu_lite_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx
Вы можете изменить список extra_lite_packages_list по умолчанию в configs/ubuntu/extra_packages_list для настройки пакетов.




Сборка и развертывание дистрибутива на основе Yocto.
Использование:
flex-builder -i mkrfs -r yocto: [ -a  ]
 может быть крошечным, devel,  может быть Arm32, Arm64.
Пример:
$ flex-builder -i mkrfs -r yocto:tiny
$ flex-builder -i mkfw -m ls1046ardb
$ flex-builder -i mkboot
$ cd build/images
$ flex-installer -r rootfs__yocto_tiny_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -f firmware_ls1046ardb_sdboot.img -d /dev/sdx

Вы можете настроить дополнительные пакеты для IMAGE_INSTALL_append в configs/yocto/local_arm64_.conf, 
если хотите установить больше пакетов (например, dpdk и т. д.) в пользовательской среде yocto, вы можете выбрать devel вместо tiny. 
Дополнительно можно добавить yocto рецепты для настройки пакета в каталоге packages/rfs/misc/yocto/recipes-support, 
или вы можете добавить свой собственный компонент приложения в packages/apps//.mk для интеграции нового компонента в целевые rootfs на основе Yocto.

 
Сборка и развертывание дистрибутива на основе Buildroot.
Использование: 
flex-builder -i mkrfs -r buildroot: -a 
 может быть крошечным, devel, imaevm,  может быть Arm32, Arm64.
Пример:
$ flex-builder -i mkrfs -r buildroot:devel:custom      # customize buildroot .config in interactive menu for arm64 arch
$ flex-builder -i mkrfs -r buildroot:devel             # generate buildroot userland
$ flex-builder -i mkrfs -r buildroot:tiny              # generate arm64 rootfs as per arm64_tiny_defconfig
$ flex-builder -i mkrfs -r buildroot:devel -a arm32    # generate arm32 rootfs as per arm32_devel_defconfig
$ flex-builder -i mkrfs -r buildroot:imaevm            # generate arm64 rootfs as per arm64_imaevm_defconfig
$ flex-builder -i mkfw -m ls1046ardb -b sd
$ flex-builder -i mkboot
$ cd build/images
$ flex-installer -r rootfs__buildroot_tiny_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -f firmware_ls1046ardb_sdboot.img -d /dev/mmcblk0
Вы можете изменить configs/buildroot/qoriq___defconfig для настройки различных пакетов.


Сборка и развертывание дистрибутива на базе CentOS.
Использование: 
flex-builder -i mkrfs -r centos [ -a  ]
Пример:
$ flex-builder -i mkrfs -r centos
$ flex-builder -i mkboot
$ flex-builder -i merge-component -r centos
$ flex-builder -i packrfs -r centos
$ cd build/images
$ flex-installer -r rootfs__centos_7.9.2009_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx