Рубрики
dev

nxp / flex-installer / flex-builder

Ссылки:

https://hackmd.io/@kushaltengli/B1ZSaMdY5
https://docs.nxp.com/bundle/GUID-1441E561-3EAD-47FD-A50D-72E1A4E4D69E/page/GUID-2C30B1D2-2E1A-49BC-A3F7-D481D76B00BE.html
https://docs.nxp.com/bundle/GUID-1441E561-3EAD-47FD-A50D-72E1A4E4D69E/page/GUID-47B8F1F5-3A8F-45F4-A096-4D3DCDE8D07C.html
https://solidrun.atlassian.net/wiki/spaces/developer/pages/197494288/HoneyComb+LX2+ClearFog+CX+LX2+Quick+Start+Guide
https://downloads.openwrt.org/releases/22.03.3/targets/layerscape/armv8_64b/
https://docs.nxp.com/bundle/GUID-1441E561-3EAD-47FD-A50D-72E1A4E4D69E/page/GUID-2C30B1D2-2E1A-49BC-A3F7-D481D76B00BE.html

#wget https://www.nxp.com/lgfiles/sdk/lsdk1909/flex-installer
wget https://www.nxp.com/lgfiles/sdk/lsdk2108/flex-installer
chmod +x flex-installer && sudo mv flex-installer /usr/bin
flex-installer -i download -m lx2160ardb



apt-get install device-tree-compiler

flex-builder compile

!!! https://lsdk.github.io/components.html 
!!! need ubuntu 20.04

0. Достаем файл flexbuild_lsdk2108.tgz 
cd /opt
wget 
1. распаковываем его 
cd /opt
tar -xvf flexbuild_lsdk2108.tgz
cd flexbuild_lsdk2108
2. Меняем окружение
source setup.env
3. использование
flex-builder -h
4. Собираем полную среду (не обезательно)
flex-builder -i auto
flex-builder -i mkrfs -a arm64
flex-builder -c linux -a arm64
flex-builder -i mkfw -m ls1046afrwy -b sd

Добыча исходников ядра из flex-builder

!!!https://community.nxp.com/t5/Layerscape/Obtaining-linux-headers-for-LS1046ARDB/m-p/1452465
0. Переходим в каталог flexbuild
cd /opt/flexbuild_lsdk2108
1. Меняем окружение
source setup.env
2. Производим загрузку исходников
flex-builder -c linux-deb -p LS
3. Искать собранае тут 
cd /opt/flexbuild_lsdk2108/build/linux/linux/arm64/LS/output
тут /opt/flexbuild_lsdk2108/build/linux/kernel/arm64/LS - тут есть Image
тут /opt/flexbuild_lsdk2108/build/linux/linux/arm64/LS/output - тут у нас пакеты deb

P.S. По какой то причине у меня не собрался Image в пакете deb, поэтому я его сам копировал в каталог /boot

NXP docker image in debian 11

apt install docker docker-compose

err LSDK 21.08 makefile error — Please set ‘PYTHON’ appropriately

sudo apt-get install -y python-dev

flex-installer

flex-installer
 -i, --instruction Инструкция по выполнению, действительный аргумент, как показано ниже:
       auto' Автоматически разметить и отформатировать целевой накопитель, а затем загрузить и установить образы дистрибутивов.
      'pf' Разметить и отформатировать только целевой накопитель без установки образов дистрибутивов.
      'download' Загружать только образы дистрибутивов без установки
      'install' Устанавливает только указанный образ, по умолчанию может быть опущен.
      'mksdcard' Создать sdcard.img, включая составную прошивку и образы дистрибутивов.
      'list' Показать список поддерживаемых машин и среды установки
      'backup' Резервное копирование rootfs и загрузочного раздела в виде архива
  -b, --bootimg Образ загрузочного раздела
  -r, --rootfsimg Образ корневого раздела
  -B, --bootpart Указать номер загрузочного раздела для переопределения значения по умолчанию (загрузочный раздел по умолчанию — второй)
  -R, --rootpart Указать номер корневого раздела для переопределения значения по умолчанию (корневой раздел по умолчанию является последним)
  -d, --device Имя целевого накопителя SD/USB/SATA в Linux
  -p, --partition Настроить настраиваемые разделы целевого диска, по умолчанию «-p 4P=100M:2G:5G:-1», если не указано иное.
  -f, --firmware Составной образ прошивки для программирования на SD-карту (только для загрузки с SD)
  -F, --force Принудительно разметить и отформатировать целевой диск независимо от существующих данных на диске
  -e, --efi Используется в случае UEFI в качестве загрузчика вместо U-Boot, допустимый аргумент: dtb или acpi
  -m, --machine Имя целевой машины для указания имени составной прошивки для автоматического развертывания
  -u, --url Укажите URL-адрес веб-сервера дистрибутива, чтобы переопределить URL-адрес по умолчанию для автоматической загрузки дистрибутива.
  -o, --offset Укажите смещение для записи прошивки на устройство хранения (например, 1k, 4k, 32k, 33k)
  -v, --version Распечатать информацию о версии

Автоматически загружать и устанавливать образы дистрибутивов LSDK на целевой накопитель на хост-компьютере или плате ARM:
flex-installer -i auto -m ls1046ardb -d /dev/mmcblk0 (автоматически установить последний дистрибутив LSDK)
Вы можете указать один или несколько параметров '-b  -r  -f  -u ', чтобы переопределить настройки по умолчанию.

Чтобы разбить и отформатировать целевой SD/eMMC/USB-диск и установить пользовательский образ дистрибутива:
flex-installer -i pf -d /dev/mmcblk0 (по умолчанию 4 раздела как 4P=128M:2G:5G:-1)
flex-installer -i pf -d /dev/sdx -p 4P=128M:3G:6G:-1 (указать пользовательские разделы как 4P=128M:3G:6G:-1)

flex-installer -b boot_arm64_lts_5.10.tgz -r rootfs_ubuntu_arm64.tgz -f firmware__sdboot.img -d /dev/sdx (установить несколько образов)
flex-installer -r rootfs_ubuntu_main_arm64.tgz -d /dev/sdx (установить только образ корневого раздела)
flex-installer -b boot_arm64_lts_5.10.tgz -d /dev/sdx (устанавливать только образ загрузочного раздела
flex-installer -f firmware__sdboot.img -d /dev/sdx (устанавливать только составной образ прошивки)

Установите образ локального дистрибутива с 3 пользовательскими разделами, чтобы указать раздел-1 для загрузочного раздела и раздел-3 для раздела rootfs:
flex-installer -i pf -p 3P=2G:4G:-1 -d /dev/mmcblk0
flex-installer -b <загрузка> -r  -f <прошивка> -d /dev/mmcblk0 --bootpart=1 --rootpart=3
После успешной установки запустите «setenv devpart_boot 1;setenv devpart_root 3;boot» в U-Boot, чтобы загрузить дистрибутив из определенного раздела)

На плате ARM в среде TinyLinux сначала разбейте целевой диск, затем загрузите образы дистрибутива на плату и установите, как показано ниже:
   1. flex-installer -i pf -d /dev/mmcblk0 (или /dev/sdx)
   2. cd /mnt/mmcblk0p4 (или /mnt/sdx4) и загрузите образы дистрибутивов в этот раздел через wget или scp
   3. flex-installer -r  -b  -f <прошивка> -d /dev/mmcblk0 (или /dev/sdx)

Конвертируйте образы архивов локальных дистрибутивов в универсальный sdcard.img.
flex-installer -i mksdcard -f <прошивка> -r  [ -b <загрузка> ]

Резервное копирование rootfs и загрузочного раздела с целевого устройства хранения
flex-installer -i backup -d /dev/sdx

Автоматически загруpзить и развернуть образ LSDK:
Для автоматической загрузки и развертывания образов LSDK на доске с помощью съемного устройства хранения данных, которое можно подключить к локальная хост-машина Linux:
1. Подключите съемное запоминающее устройство к хост-компьютеру Linux.
2. Загрузите flex-installer для развертывания образов LSDK.
$ wget https://www.nxp.com/lgfiles/sdk/lsdk2108/flex-installer && chmod +x flex-installer &&
sudo mv flex-установщик /usr/bin
3. Выполните следующую команду flex-installer, чтобы автоматически установить LSDK по умолчанию rootfs_lsdk2108_LS_arm64_main.tgz и boot_LS_arm64_lts_5.10.tgz.
flex-installer -i auto -m ls1046afrwy -d <устройство>
flex-installer -i auto -m ls1046afrwy -d /dev/sdh

Доп:
flex-installer -i pf -d (partition and format target disk)
flex-installer -i auto -m  -d  -  вместо авто можно использовать -f  -b  -r  -u 
flex-installer -b boot_arm64_lts_5.10.tgz -r rootfs_lsdk2108_ubuntu_main_arm64.tgz -f firmware_ls1046ardb_sdboot.img -d /dev/sdx

flex-builder

Главный конфиг файл со всеми настройками:
configs/sdk.yml

Все собранное валится в эти каталоги:
DEFAULT_OUT_PATH: $FBDIR/build
DEFAULT_PACKAGES_PATH: $FBDIR/components


Сборка:
flex-builder -c atf -m ls1046ardb -b sd
flex-builder -i mkfw -m ls1046afrwy -b sd
flex-builder -i mkrfs -a arm64
flex-builder -c linux -a arm64

Если вы хотите использовать другой RCW вместо стандартного, вы можете переконфигурировать переменную rcw_ в /configs/board//manifest, 
затем запустите flex-builder -i clean-firmware;
flex-builder -c atf -m  -b  для создания нового образа ATF с указанным RCW,
если вы модифицировали исходный код U-Boot, RCW или ATF, flex-builder может автоматически перекомпилировать их с измененный источник.


Показать включенные компоненты для сборки:
bld -i list

Собрать компоненты отдельно:
packages/apps/networking/.mk - Вот тут можно изменить параметры сборки компонента
bld -c 
bld -c networking
bld -c security
bld -c graphics -r ubuntu:desktop
bld -c eiq
bld -c dpdk
bld -c ovs_dpdk
bld -c vpp
bld -c fmc
bld -c openssl
bld -c perf
bld -c armnn
bld -c opencv
bld -c tflite


Для установки вручную вы можете просто скопировать архив и распаковать на целевой системе:
tar xf app_components_ubuntu.tgz -C /

Сборка firmware:
Тут собирается all binary firmware images, including uefi_bin, mc_bin, mc_utils, fm_ucode, qe_ucode phy_cortina, phy_inphi, pfe_bin, ddr_phy_bin, dp_firmware.
bld -c bin_firmware

Сборка и генерация композитной firmware (хрен его знает что это):
bld -i mkfw -m ls1046ardb -b sd
flex-builder -i mkfw -m ls1046afrwy -b sd

Сборка /  ядро и компиляция:
bld -c linux
flex-builder -c linux -a arm64
flex-builder -c linux:custom -a arm64   (с выбором компонентов)

Различные очистки:
bld clean
bld clean-firmware
bld clean-apps
bld clean-rfs -r : -a 
flex-builder -i clean-rfs -r ubuntu:desktop

Работа с репозитории:
bld -i repo-commit
bld -i repo-branch
bld -i repo-update

Сборка докера:
bld docker

flex-builder and flex-builder

flex-builder -c bin_firmware
flex-builder -i mkdistroscr -e
flex-builder -i mkdistroscr -e -k 
Eg. Key_id = 0x20000000
flex-builder -c atf -m  -b  -e; flex-builder -i signimg -m  -b  -e
flex-builder -i mkfw -m  -b 
flex-builder -i mkboot -a 
flex-installer -b build/images/bootp_LS__lts_.tgz -r build/rfs/ rootfs_lsdk__LS_ -f build/images/firmware__sdboot_secure.img -d /dev/sdx

Пример создания образа sdcard.img

./flex-installer -i mksdcard -b boot_LS_arm64_lts_5.10_202310241400.tgz -r rootfs_lsdk2108_ubuntu_main_arm64_202310241423.tgz -f firmware_ls1046ardb_sdboot.img

dd if=sdcard.img of=/dev/sdz