Ссылки:
1 |
http://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=LAYERSCAPE-SDK |
build_and_deploy_distro.md (собрать и развернуть дистрибутив)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
## Сборка и развертывание различных дистрибутивов flex-builder поддерживает создание различных дистрибутивов различного масштаба, включая богатые ОС (на базе Ubuntu, на основе Debian, на основе CentOS). и встроенная ОС (дистрибутив на основе Yocto и Buildroot). Пользователи могут выбрать подходящий дистрибутив в соответствии с требованиями, как показано ниже: Использование: flex-builder -i mkrfs [ -r <distro_type>:<distro_scale> ] [ -a <arch> ] Пример: $ 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_<sdk_version>_ubuntu_main_arm64 apt install <package> сборка и развертывание основного дистрибутива на базе 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_<boottype>.img $ cd build/images $ flex-installer -r rootfs_<sdk_version>_ubuntu_main_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx or $ flex-installer -r rootfs_<sdk_version>_ubuntu_main_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -f firmware_ls1046ardb_sdboot.img -d /dev/sdx !!! Обратите внимание: '-f <firmware> опция используется только для загрузки с 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_<sdk_version>_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_<sdk_version>_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:<distro_scale> [ -a <arch> ] <distro_scale> может быть крошечным, devel, <arch> может быть 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_<sdk_version>_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_<distro_scale>.conf, если хотите установить больше пакетов (например, dpdk и т. д.) в пользовательской среде yocto, вы можете выбрать devel вместо tiny. Дополнительно можно добавить yocto рецепты для настройки пакета в каталоге packages/rfs/misc/yocto/recipes-support, или вы можете добавить свой собственный компонент приложения в packages/apps/<category>/<comComponent>.mk для интеграции нового компонента в целевые rootfs на основе Yocto. Сборка и развертывание дистрибутива на основе Buildroot. Использование: flex-builder -i mkrfs -r buildroot:<distro_scale> -a <arch> <distro_scale> может быть крошечным, devel, imaevm, <arch> может быть 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_<sdk_version>_buildroot_tiny_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -f firmware_ls1046ardb_sdboot.img -d /dev/mmcblk0 Вы можете изменить configs/buildroot/qoriq_<arch>_<distro_scale>_defconfig для настройки различных пакетов. Сборка и развертывание дистрибутива на базе CentOS. Использование: flex-builder -i mkrfs -r centos [ -a <arch> ] Пример: $ 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_<sdk_version>_centos_7.9.2009_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx |
memmory.md(память):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
Таблица 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)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
Linux SDK можно собрать с помощью flex-builder и развернуть с помощью flex-installer. ## Как собрать Linux SDK с нуля с помощью flex-builder Использование: flex-builder -m <machine> Поддерживаемый Layserscape <machine>: ls1012ardb, ls1012afrwy, ls1021atwr, ls1028ardb, ls1043ardb, ls1046ardb, ls1046afrwy, ls1088ardb_pb, ls2088ardb, ls2160ardb_rev2, lx2162aqds. Поддерживаемый iMX <machine>: 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 <boot> -r rootfs_lsdk2108_ubuntu_main_arm64.tgz -R rootfs_lsdk2108_yocto_devel_arm64.tgz -f <firmware> -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 <bootpartition> -r <rootfs> -f <firmware> -d <device> - Чтобы загружать только образы дистрибутива без установки $ 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/<machine>/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_<machine>_sdboot.img => tftp a0000000 firmware_<machine>_sdboot.img or => load mmc 0:2 a0000000 firmware_<machine>_sdboot.img Under U-Boot: => mmc write a0000000 8 1f000 Под Linux: $ flex-installer -f firmware_<machine>_sdboot.img -d /dev/mmcblk0 (or /dev/sdx) - Для флэш-памяти IFC-NOR On LS1043ARDB, LS1021ATWR => load mmc 0:2 a0000000 firmware_<machine>_uboot_norboot.img or tftp a0000000 firmware_<machine>_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_<machine>_qspiboot.img or => load mmc 0:2 a0000000 firmware_lx2160ardb_xspiboot.img or tftp a0000000 firmware_<machine>_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_<version_update_xx>.tgz --strip-components 1 -C <path_to_existing_flexbuild> $ cd <path_to_existing_flexbuild> $ 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 <machine> Чтобы перестроить все компоненты приложений: $ flex-builder -i clean-apps $ flex-builder -c apps Чтобы перестроить определенный компонент: $ flex-builder -i clean-apps $ flex-builder -c <component> Чтобы перестроить linux kernel: $ flex-builder -i clean-linux $ flex-builder -c linux (use the default kernel repo and tag/branch) or $ flex-builder -c linux:<repo>:<tag|branch> -a <arch> (specify kernel repo and tag/branch) Чтобы перестроить firmware: $ flex-builder -i clean-firmware $ flex-builder -i mkfw -m <machine> Шаг 3. Отправьте вновь созданное изображение с хоста на целевую плату. После загрузки существующего дистрибутива LSDK на целевой плате и настройки IP-адреса выполните приведенные ниже команды на хосте, чтобы отправьте изображения, созданные на шаге 2, на целевую плату. Примеры: Чтобы отправить ядро и модули на целевую плату: $ flex-builder connect <IP_address> $ flex-builder push kernel <IP_address> $ flex-builder disconnect <IP_address> Чтобы перенести один или несколько компонентов приложения на целевую плату: $ flex-builder connect <IP_address> $ flex-builder push apps <IP_address> $ flex-builder disconnect <IP_address> Перезагрузите целевую плату, чтобы загрузить дистрибутив с обновленными images. Чтобы обновить составную прошивку, вы можете запрограммировать прошивку, созданную на шаге 2, на SD-карту или флэш-накопитель с помощью U-Boot. Кроме того, для загрузки с SD вы можете запрограммировать прошивку с помощью приведенной ниже команды в среде Linux: $ flex-installer -f <firmware> -d /dev/sdx [ -o <offset> ] or $ sudo dd if=<firmware> of=/dev/sdX bs=1k seek=<offset> <Offset> составляет 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_<version>.tgz и rootfs_lsdk_<version>_<arch>.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)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
+--------------------------------+ +--------------+ +---------------------------------------+ | Firmware components | | | | Generated Images (build/images) | | |--->| | | | |u-boot,uefi,rcw,tfa,fman,pfe, | | | |flex-installer | |mc,qe,dpl,dpc,seco,etc | | | |lsdk_linux_<arch>_LS_tiny.itb | +--------------------------------+ | | |rootfs_<sdk_version>_ubuntu_<arch>.tgz | | | |rootfs_<sdk_version>_centos_<arch>.tgz | +--------------------------------+ | |--->|rootfs_<sdk_version>_debian_<arch>.tgz | | Linux components |--->| | |rootfs_<sdk_version>_yocto_<arch>.tgz | |linux-lts-nxp,cryptodev_linux | | | |rootfs_<sdk_version>_buildroot.tgz | +--------------------------------+ | | |firmware_<machine>_<boottype>.img | | | |firmware_<machine>_<boottype>_uefi.img | | | |bootpartition_<arch>_lts_<version>.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/<machine>/manifest |--->| | | +------------+ | |linux/linux_<arch>.its | | flex-builder |--->| | |ubuntu/extra_packages_list | | | | +------------+ | |buildroot/<arch>_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)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 |
## Flexbuild использование $ cd flexbuild $ source setup.env $ flex-builder -h Использование: flex-builder -c <component> [-a <arch>] [-f <config-file>] or: flex-builder -i <instruction> [-m <machine>] [-a <arch>] [-r <distro_type>:<distro_scale>] [-f <cfg>] Наиболее используемый пример с автоматической сборкой: 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 <machine> # 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_<sdk_version>_yocto_tiny_arm64.cpio.gz flex-builder -c <component> # compile <component> or <subsystem> (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_<sdk_version>_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 <sdk_version>_<distro_type>_<distro_scale>_<portfolio>_<arch>.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 <machine> [-b <boottype>] Использование: $ flex-builder -i mkfw -m ls1046ardb # generate all boot types composite firmware_ls1046ardb_<boottype>.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 <instruction> [ -p <portfolio> ] [ -a <arch> ] Использование: $ 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 <sdk_version>_yocto_tiny_LS_arm64.itb $ flex-builder -i mkitb -r yocto:tiny -a arm32 # generate yocto-based tiny <sdk_version>_yocto_tiny_LS_arm32.itb $ flex-builder -i mkitb -r ubuntu:lite # generate Ubuntu-based lite <sdk_version>_ubuntu_lite_LS_arm64.itb $ flex-builder -i mkitb -r yocto:tiny -p IMX # generate yocto-based tiny <sdk_version>_yocto_tiny_IMX_arm64.itb $ flex-builder -i mkitb -r ubuntu:lite -p IMX # generate ubuntu-based lite <sdk_version>_ubuntu_lite_IMX_arm64.itb ## Как собрать ядро и модули Linux Чтобы собрать Linux с репозиторием по умолчанию и текущей веткой в соответствии с конфигурацией по умолчанию Использование: flex-builder -c linux [ -a <arch> ] [ -p <portfolio> ] Примеры: $ 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:<kernel_repo>:<branch|tag|commit> [ -a <arch> ] Примеры: $ 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 [ :<kernel_repo>:<tag|branch> ] -B fragment:<xx.config> [ -a <arch> ] 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 <machine> ] [ -b <boottype> ] [ -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_<boottype> в configs/board/<machine>/manifest, затем запустите "flex-builder -c rcw -m <machine>", чтобы сгенерировать новый образ RCW. Примечание 2. Опция "-s" используется для безопасной загрузки. FUSE_PROVISIONING не включен по умолчанию, вы можете изменить CONFIG_FUSE_PROVISIONING:n — y в configs/sdk.yml, чтобы включить его при необходимости. ## Как собрать U-Boot Использование: flex-builder -c uboot -m <machine> Примеры: $ 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 <component> [ -b <boottype> ] Примеры: $ 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 <component> [ -a <arch> ] [ -r <distro_type>:<distro_scale> ] Примеры: $ 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 <instruction> [ -B <args> ] Примеры: $ 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 <cfg>". Пример: $ 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/<category>/<component>.mk". - Запустите 'flex-builder -c <компонент> -r <distro_type:distro_scale> -a <arch>', чтобы создать новый компонент на основе целевой корневой файловой системы <arch>. - Запустите 'flex-builder -i merge-comment -r <distro_type:distro_scale> -a <arch>', чтобы объединить новый пакет компонентов с целевой корневой файловой системой <arch>. - Запустите 'flex-builder -i packagerfs -r <distro_type:distro_scale> -a <arch>', чтобы упаковать целевую корневую файловую систему <arch>. (примечание: '-r ubuntu:main -a Arm64' используется по умолчанию, если не указано) ## Как настроить различные пути к пакетам/компонентам и пути вывода изображений вместо пути по умолчанию для совместного использования несколькими пользователями. Путь к пакетам по умолчанию — <flexbuild_dir>/packages, путь вывода изображений по умолчанию — <flexbuild_dir>/build. Существует два способа измените путь по умолчанию: Способ 1: установите PACKAGES_PATH и/или FBOUTDIR в переменной среды(environment variable), как показано ниже: $ export PACKAGES_PATH=<path> $ export FBOUTDIR=<path> Способ 2: изменить DEFAULT_PACKAGES_PATH и/или DEFAULT_OUT_PATH в <flexbuild_dir>/configs/sdk.yml. |
Сборка и развертывание различных дистрибутивов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
flex-builder поддерживает создание различных дистрибутивов различного масштаба, включая богатые ОС (на базе Ubuntu, на основе Debian, на основе CentOS) и встроенная ОС (дистрибутив на основе Yocto и Buildroot). Пользователи могут выбрать подходящий дистрибутив в соответствии с требованиями, как показано ниже: Использование: flex-builder -i mkrfs [ -r <distro_type>:<distro_scale> ] [ -a <arch> ] Пример: $ 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_<sdk_version>_ubuntu_main_arm64 apt install <package> Пример: сборка и развертывание основного дистрибутива на базе 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_<boottype>.img $ cd build/images $ flex-installer -r rootfs_<sdk_version>_ubuntu_main_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx or $ flex-installer -r rootfs_<sdk_version>_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_<sdk_version>_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_<sdk_version>_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:<distro_scale> [ -a <arch> ] <distro_scale> может быть крошечным, devel, <arch> может быть 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_<sdk_version>_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_<distro_scale>.conf, если хотите установить больше пакетов (например, dpdk и т. д.) в пользовательской среде yocto, вы можете выбрать devel вместо tiny. Дополнительно можно добавить yocto рецепты для настройки пакета в каталоге packages/rfs/misc/yocto/recipes-support, или вы можете добавить свой собственный компонент приложения в packages/apps/<category>/<comComponent>.mk для интеграции нового компонента в целевые rootfs на основе Yocto. Сборка и развертывание дистрибутива на основе Buildroot. Использование: flex-builder -i mkrfs -r buildroot:<distro_scale> -a <arch> <distro_scale> может быть крошечным, devel, imaevm, <arch> может быть 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_<sdk_version>_buildroot_tiny_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -f firmware_ls1046ardb_sdboot.img -d /dev/mmcblk0 Вы можете изменить configs/buildroot/qoriq_<arch>_<distro_scale>_defconfig для настройки различных пакетов. Сборка и развертывание дистрибутива на базе CentOS. Использование: flex-builder -i mkrfs -r centos [ -a <arch> ] Пример: $ 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_<sdk_version>_centos_7.9.2009_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx |