Рубрики
dev

yocto raspberry4

Рубрики
dev

yocto napi наша

0. Подготовка системы  debian/ubuntu:
apt install lz4 vim sudo gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python3 python3-pip python3-pyelftools python3-pexpect xz-utils debianutils iputils-ping libsdl1.2-dev xterm

1. Опционально, команда python выполняет python3
update-alternatives --install /usr/bin/python python /usr/bin/python3 1


2. Настраиваем локаль:
vim /etc/locale.gen
-------------------
en_US.UTF-8           <---------- найти и раскоментить
------------------
 
Перечитать local:
locale-gen
На этом все, теперь у вас должна появится local en_US.UTF-8


3. Создаем пользователя например useryocto
useradd useryocto
Входим под пользователем useryocto
su -  useryocto

 
4.  Создаем директорию yocto и cкачиваем репазитори napi
mkdir yocto
cd yocto
git clone --depth 1 git://git.yoctoproject.org/poky -b kirkstone
cd poky
git clone --depth 1 git://git.openembedded.org/meta-openembedded.git -b kirkstone
git clone --depth 1 git://git.yoctoproject.org/meta-arm.git -b kirkstone
git clone --depth 1 https://gitlab.nnz-ipc.net/pub/napilinux/meta-influx.git -b kirkstone
git clone --depth 1 https://gitlab.nnz-ipc.net/pub/napilinux/meta-nnz.git -b kirkstone
git clone --depth 1 https://github.com/sbabic/meta-swupdate -b kirkstone
git clone git://git.yoctoproject.org/meta-raspberrypi -b kirkstone

5. После загрузки выполняем 
source oe-init-build-env

6. На этом этапе мы можем скопировать настроенные слои
# napi image :
# -- # cp ../meta-nnz/conf/bblayers.conf.sample.napi conf/bblayers.conf
# frontcontrol image:
# -- # cp ../meta-nnz/conf/bblayers.conf.sample.fc conf/bblayers.conf
Я копирую слой для rpi
cp ../meta-nnz/conf/bblayers.conf.sample.rpi conf/bblayers.conf

7. Еще нужно добавить основной конфиг в котором мы в будущем выберем нужную платформу
cp ../meta-nnz/conf/local.conf.sample conf/local.conf


8. Редактируем файл local.conf
vim conf/local.conf 
---------------------------
MACHINE ?= "napi-rk3308b-s"  <----------------- ищем строку MACHINE
---------------------------
Возможные варианты: 
MACHINE ?=  "napi-rk3308b-s"
MACHINE ?= "napi-rk3308"
MACHINE ?= "roc-pc-rk3328"
MACHINE ?= "rockpro64-rk3399"


9. Сборка
Возможные варианты сборки:
nnz-frontcontrol-image
nnz-napi-image
nnz-napi-image-dev
nnz-napi-image-dev-noupdate


Пример сборки:
bitbake -k nnz-frontcontrol-image

Загрузка  исходников без сборки:
bitbake nnz-frontcontrol-image --runall=fetch
bitbake nnz-napi-image --runall=fetch
bitbake nnz-napi-image-dev --runall=fetch
bitbake nnz-napi-image-dev-noupdate --runall=fetch

Ошибка:
Я собирал от пользователя user и архивы закинул другому пользователю и получил ошибку:
Error, TMPDIR has changed location. 
You need to either move it back to /home/user/yocto/poky/build/tmp or delete it and rebuild
Просто удалил файлы сборки из tmp, так как в архиве были нужные исходники для сборки, а самой сборки не производилось.
rm -rf ~/yocto/poky/build/tmp

10. Собранные имеджи искать тут:
~/yocto/poky/build/tmp/deploy/images


11. Учетные данные по умолчанию.
Username: root
Password: napilinux


Прошивка napi (rk3308)

Ссылки:
бутлодеры:
https://dl.radxa.com/rockpis/images/loader/ 
Образы napi:
https://download.napilinux.ru/linuximg/

Компоненты для rkdeveloptool
sudo apt-get install libudev-dev libusb-1.0-0-dev dh-autoreconf


rkdeveloptool
git clone https://github.com/rockchip-linux/rkdeveloptool
cd rkdeveloptool
autoreconf -i
./configure
make
cp rkdeveloptool /usr/local/bin/

Убедится что нету других rkdeveloptool
whereis  rkdeveloptool



Команды rkdeveloptool
rkdeveloptool - справка
rkdeveloptool ld - лист устройств
rkdeveloptool db  <файл загрузчика> - загрузка бутлодера
rkdeveloptool wl 0 <файл образа> - загрузка прошивки

Порядок прошивки:
0. нажимаем и удерживаем клавишу Maskrom, затем коротко нажимаем клавишу Reset не отпускаем Maskrom, через несколько секунд отпускаем Maskrom;
1. Грузим бутлодер
sudo rkdeveloptool db rk3308_loader_uart0_m0_emmc_port_support_sd_20190717.bin
Или
sudo rkdeveloptool db  rk3308_loader_ddr589MHz_uart0_m0_v2.06.136sd.bin
!!! Если бутлодер не правильный или вы его не загрузили, то получите ошибку: Write LBA failed!


2. Прошиваем прошивку
sudo rkdeveloptool wl 0 <файл образа>
Пример:
rkdeveloptool wl 0 napi-rk3308b-s-latest-dev.img


P.S Очистка nand:
Создаем пустой файл с помощью dd
dd if=/dev/zero of=./zero.img bs=4M count=10
Шьем этим файлом.
rkdeveloptool db  <файл загрузчика> - загрузка бутлодера
rkdeveloptool wl 0 zero.img
minicom -D /dev/ttyUSB1 -b15000000
Рубрики
dev

arm toolchain / crosstool-ng / gcc

0. Настройка crosstool-ng и сборка

# ubuntu
# apt-get install gcc-arm-none-eabi gdb-arm-none-eabi libnewlib-doc stm21flash git gcc make cmake libusb-1.0-0-dev

# для archlinux
# pacman -Sy arm-none-eabi-gcc arm-none-eabi-gdb stm32flash gcc make cmake git cvs aria2 ncurses help2man

git clone https://github.com/crosstool-ng/crosstool-ng
cd crosstool-ng

# Проверяем доступные версии
git tag

# Меняем на версию 1.26.0
git checkout crosstool-ng-1.26.0

# Сначала выполняем 
./bootstrap 


#Конфигурируем и собираем ( флаг enable-local нужен, чтобы использовать инструмент прямо в локальной папке, без установки в систему)

./configure --enable-local 

# Как только конфигуратор выдаст
# Now run:
#  make
# переходим к сборке

make

1. Подготовка toolchain:

0. Проверяем доступные 
./ct-ng list-samples

1. выбираю архитектуру ARM, пусть будет arm-unknown-eabi и собираю тулчейн
./ct-ng arm-unknown-linux-gnueabi

# если требуется что то еще добавить 
#  ./ct-ng menuconfig 


2. собираем
./ct-ng build

3. Смотрим на результат в папке ~/x-cross
в папке lib будут все собранные для тулчейна библиотеки
в папке include - все заголовочные файлы
в папке bin - все компиляторы и утилиты
Никто не мешает нам собрать с помощью crosstool-ng несколько тулчейнов с разными конфигурациями, 
все они попадут в соответствующую папку ~/x-tools/ ну и потом можно попробовать каждый из компиляторов, выбрать какой-то один, которым пользоваться.
!!! ~/x-cross будет в корне директории вашего пользователя

Проверка:
# для полстоянки строку export можно добавить в ~/.bashrc или ~/.pam_environment.
export PATH=$PATH:$HOME/x-tools/arm-unknown-linux-gnueabi/bin
arm-unknown-linux-gnueabi-gcc -v

2.Пример сборка ядра:


cd /opt
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.2.tar.bz2 
tar xjf linux-3.2.tar.bz2 
cd linux-3.2 
make ARCH=arm Universal_defconfig 
make ARCH=arm Menuconfig

Последняя команда вызывает меню конфигурации ядра, перейдите в раздел "Kernel Features", 
установите флажок "Use the ARM EABI to compile", а затем выйдите (обязательно сохраните изменения).

Скомпилируем ядро:
make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabi- all

3. Пример с BusyBoX

wget http://busybox.net/downloads/busybox-1.19.3.tar.bz2
tar xjf busybox-1.19.3.tar.bz2
cd busybox-1.19.3
make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabi- defconfig
make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabi- install

Рубрики
dev

наша yocto nxp ls1046

Ссылка:

https://docs.yoctoproject.org/
https://github.com/nxp-qoriq/yocto-sdk/tree/kirkstone
i2c

pre install yocto

Для debian/ubuntu установить пакеты
apt install vim sudo gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pyelftools python3-pexpect xz-utils debianutils iputils-ping libsdl1.2-dev xterm


Версия python 3+ по умолчанию:
update-alternatives --list python - проверяем
update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1

Для любителей поставить русскую local нужно добавить еще local en_US.UTF-8:
0. vim /etc/locale.gen
-------------------
en_US.UTF-8           <---------- найти и раскоментить
------------------
 
1. Перечитать local:
locale-gen
 
На этом все, теперь у вас должна появится local en_US.UTF-8

Создаем пользователя от которого будем собирать в его каталоге:

useradd useryocto
su -  useryocto

Качаем бинарный файл для загрузки репы:

mkdir ~/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo  > ~/bin/repo
chmod a+x ~/bin/repo
PATH=${PATH}:~/bin


Создаем каталог yocto-sdk и скачиваем yocto:

mkdir yocto-sdk
cd yocto-sdk
repo init -u https://github.com/nxp-qoriq/yocto-sdk -b kirkstone
repo sync --force-sync

Теперь тебе надо в папке sources подменить meta-qoriq нашей

cd sources
rm -rf meta-qoriq
git clone https://Какой-то_наш_гитлаб/yocto/meta-qoriq
cd ..

Теперь нужно выполнить следующие (будет создан каталог) / в каталоге yokto-sdk

. ./setup-env -m ls1046ardb

Теперь нужно отредактировать файл build_ls1046ardb/conf/local.conf


vim build_ls1046ardb/conf/local.conf
В конец файла добавить:
DISTRO_FEATURES:append = " systemd "
DISTRO_FEATURES_BACKFILL_CONSIDERED:append = " sysvinit"
VIRTUAL-RUNTIME_init_manager = "systemd"
VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"

GLIBC_GENERATE_LOCALES = "en_US.UTF-8 ru_RU.UTF-8"
IMAGE_LINGUAS = "en-us ru-ru"


Первая сборка:


Первая сборка:
bitbake fsl-image-networking

Сборка образа под sd карту:
wic create ls104x-uboot-bootpart --no-fstab-update -e fsl-image-networking

На потом:

Параметры ядра /proc/cmdlist
uboot
setenv bootargs "console=ttyS0,115200  debug ignore_loglevel printk.synchronous=1 root=/dev/ram0 earlycon=uart8250,mmio,0x21c0500 mtdparts=1550000.spi-0:1m(rcw),15m(u-boot),48m(kernel.itb);7e800000.flash:16)"
saveenv


setenv othbootargs "debug ignore_loglevel printk.synchronous=1"
saveenv


orig boot_script:
distroboot=
'sf probe;'
'env exists dtb || setenv dtb fsl-ls1046a-rdb-sdk.dtb;'
'env exists kernel_image || setenv kernel_image Image;'
'env exists devpart_boot || setenv devpart_boot 1;'
'env exists devpart_root || setenv devpart_root 2;'
'part uuid $devtype $devnum:$devpart_root partuuidr;'
'setenv bootargs console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=PARTUUID=$partuuidr rw rootwait $othbootargs;'
'load $devtype $devnum:$devpart_boot $kernel_addr_r $kernel_image;'
'load $devtype $devnum:$devpart_boot $fdt_addr_r $dtb;'
'env exists secureboot && echo validating secureboot && run secureboot_validate;'
'booti $kernel_addr_r - $fdt_addr_r'


boot_script fix:
distroboot=
'sf probe;
'env exists dtb || setenv dtb fsl-ls1046a-rdb-sdk.dtb;
'env exists kernel_image || setenv kernel_image Image;
'env exists devpart_boot || setenv devpart_boot 1;
'env exists devpart_root || setenv devpart_root 2;
'part uuid $devtype $devnum:$devpart_root partuuidr;
'setenv bootargs console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=PARTUUID=$partuuidr rw rootwait $othbootargs;
'load $devtype $devnum:$devpart_boot $kernel_addr_r $kernel_image;
'load $devtype $devnum:$devpart_boot $fdt_addr_r $dtb;
'env exists secureboot && echo validating secureboot && run secureboot_validate;
'booti $kernel_addr_r - $fdt_addr_r


Сборка:
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "script" -d boot.script ls1046ardb_boot.scr
uboot:
setenv othbootargs "debug ignore_loglevel printk.synchronous=1"
saveenv

Файлы:

~/yocto-sdk/sources/meta-qoriq/recipes-support/bwt-tools/files
 - тут наши файлы wx и т.д
~/yocto-sdk/sources/meta-qoriq/recipes-support/bwt-tools/bwt-tools.bb
 - Вот этим рецептом вкарячивает
~/yocto-sdk/sources/meta-qoriq/recipes-fsl/packagegroups/packagegroup-nnz-tests.bb
 - тут список пакетов котоый будут собраны в образ


Пример добавления новых файлов:

был добавлен архив с файлами(bwt и linux-kernel) для сборки
~/yocto-sdk/sources/meta-qoriq/recipes-support/bwt-tools/bwt-tools.bb
tar -cvzf addrus.tar.gz  addrus
file://addrus.tar.gz                                                                                                             
cp -r ${S}/addrus/* -t ${D}/opt/



--------------------
LICENSE = "CLOSED"

SRC_URI = " 
        file://bwt-tools.tar.gz 
        file://nxp_script.tar.gz 
        file://bwt-logging-tools.tar.gz 
        file://addrus.tar.gz 
"

SRC_URI[sha256sum] = "f0f577a9cb50b9d5fdbe711fcc383da841c1762cd0d49930608184de39a38977"

SRCREV = "81f14a00f1dd48e7b0138916224940ddb38cc765"

S = "${WORKDIR}"

INSANE_SKIP:${PN}:append = "already-stripped arch"


RDEPENDS:${PN}="bash libftdi libpci python3 python3-core dbus-lib openssl libcrypto libudev libnl-genl libnl-route libnl libssl libusb1 libelf"

do_install() {
    #${sysconfdir} = /etc
    #${bindir} = /usr/bin
    #${libdir} = /usr/lib
    #${localstatedir} = /var

    install -d ${D}${bindir}

    install -d ${D}/opt/bwt

    cp -r ${S}/bwt-tools/opt/* -t ${D}/opt/
    cp -r ${S}/bwt-logging-tools/opt/* -t ${D}/opt/

    cp -r ${S}/addrus/* -t ${D}/opt/  
    
    install -d ${D}/etc

    cp -r ${S}/bwt-tools/etc/* -t ${D}/etc/
    cp -r ${S}/bwt-logging-tools/etc/* -t ${D}/etc/

    install -d ${D}/lib/systemd/system
    install -d ${D}/lib/systemd/system-preset

    cp -r ${S}/bwt-logging-tools/lib/* -t ${D}/lib/

    install -d ${D}/lib/firmware/bwt

    install -d ${D}${libdir}/engines-1.1

    cp -r ${S}/bwt-tools${libdir}/* -t ${D}${libdir}/

    install -d ${D}/usr/share/ifupdown2/addons

    install -m 644 -D ${S}/bwt-tools/usr/share/ifupdown2/addons/hydra.py ${D}/usr/share/ifupdown2/addons/hydra.py

    install -m 644 -D ${S}/bwt-tools/opt/bwt/bh2b/firmware/fw/bh2b_fw_sivers.bin ${D}/lib/firmware/bwt/bh2b_fw.bin

    install -d ${D}/etc/modprobe.d

    install -d ${D}/home/root

    install -m 644 -D ${S}/nxp_script/bh2.conf ${D}/etc/modprobe.d/bh2.conf
    install -m 644 -D ${S}/nxp_script/hint.txt ${D}/home/root/hint.txt
    install -m 644 -D ${S}/nxp_script/00_fm1-mac3.network ${D}/etc/systemd/network/00_fm1-mac3.network
    install -m 644 -D ${S}/nxp_script/set_mac.service ${D}/etc/systemd/system/set_mac.service
    install -m 744 -D ${S}/nxp_script/cpu_test.sh ${D}/usr/bin/cpu_test
    install -m 744 -D ${S}/nxp_script/wx.sh ${D}/usr/bin/wx
    install -m 744 -D ${S}/nxp_script/set_mac ${D}/usr/bin/set_mac
 
}

FILES:${PN} += "/opt /etc /lib /home /usr/lib /usr/bin /usr/share"

INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"

inherit systemd
SYSTEMD_SERVICE:${PN} = "set_mac.service"

--------------------



для тестов

для файл с пакетами выглядит вот так вот:
cat ~/yocto-sdk/sources/meta-qoriq/recipes-fsl/packagegroups/packagegroup-nnz-tests.bb

# Copyright (C) 2015 Freescale Semiconductor
# Released under the MIT license (see COPYING.MIT for the terms)

SUMMARY = "nnz Package group for tests"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"

PACKAGE_ARCH = "${MACHINE_ARCH}"
inherit packagegroup

PACKAGES = "${PN}"

RDEPENDS:${PN} = " 
    lsof 
    gdb 
    make 
    gcc 
    cmake 
    strace  
    mc 
    openssh-sftp   
    ssh 
    nano 
    kernel-dev 
    linux-libc-headers-dev  
    git 
    gawk 
    kernel-module-bh2 
    bwt-tools 
    distro-bootscr 
    cryptodev-module 
    wpa-supplicant 
    iperf3 
    hostapd 
    tcpdump 
    vim 
    ifupdown 
    minicom 
    screen 
    tmux 
    dhcpcd 
    glibc-utils 
    localedef 
    p7zip 
    htop 
    lmsensors 
    tzdata 
    ntp 
    batctl 
    batman-adv 
    i2c-tools 
    iproute2-ss 
    init-ifupdown 
    fmlib 
    fm-ucode 
    bmon 
    openvswitch 
    lsof 
    binutils 
    zip 
    flex 
    bison 
    findutils 
    xz 
    curl 
    net-snmp 
    net-snmp-server-snmpd 
"

config
repo
set_mac_ls1046

WIC

wic create ls104x-uboot-bootpart --no-fstab-update -e fsl-image-networking

Объяснение ключевых компонентов команды:
wic:
wic - это утилита в Yocto Project, предназначенная для создания образов дисков на основе инструкций в .wks файлах (WIC Kickstart файлов).

create:
create - это команда, указывающая утилите wic создать образ.

ls104x-uboot-bootpart:
Это имя файла .wks (WIC Kickstart), который содержит инструкции о том, как создать образ. 
Этот файл определяет, как должны быть разметаны разделы на диске, какие файлы должны быть включены в каждый раздел и т.д.

--no-fstab-update:
Эта опция указывает wic не обновлять файл fstab в создаваемом образе. 
Обычно wic обновляет fstab для соответствия новому разделу, но эта опция отключает это поведение.

-e fsl-image-networking:
Эта опция указывает wic, какой образ файловой системы использовать.
 В данном случае, fsl-image-networking - это имя образа, который был ранее собран с помощью BitBake. 
Этот образ будет использован для создания файловой системы в соответствии с инструкциями в файле ls104x-uboot-bootpart.wks.


Возможная проблема с загрукой системы:

Ошибка:
[    5.578153] EXT4-fs (mmcblk0p2): recovery complete
[    5.583890] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none.
[    5.593662] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    5.602973] devtmpfs: mounted
[    5.607624] Freeing unused kernel memory: 6912K
[    5.612259] Run /sbin/init as init process
can't run '/etc/init.d/rcS': No such file or directory



Проверяем:
root@(none):/# ls /lib/systemd/systemd
/lib/systemd/systemd
root@(none):/# ls -l /lib/systemd/systemd
-rwxr-xr-x 1 root root 88216 Mar  9  2018 /lib/systemd/systemd
root@(none):/# ls -l /sbin/init
lrwxrwxrwx 1 root root 12 Mar  9  2018 /sbin/init -> /bin/busybox
А вот и проблема " /sbin/init -> /bin/busybox":

Пробуем решить
root@(none):/# find /etc -name '*sysv*' -delete
root@(none):/# ln -sf /lib/systemd/systemd /sbin/init
root@(none):/# ls -l /sbin/init
lrwxrwxrwx 1 root root 20 Jan  1 00:22 /sbin/init -> /lib/systemd/systemd

Перезагружаемся и грузимся в систему.

Пытки обновить с kirkstone

cd source
git clone -b kirkstone https://github.com/OSSystems/meta-browser.git
git clone -b kirkstone https://github.com/kraj/meta-clang
git clone -b kirkstone git://git.yoctoproject.org/meta-cloud-services
git clone -b kirkstone git://git.yoctoproject.org/meta-freescale
git clone -b kirkstone https://github.com/Freescale/meta-freescale-distro.git
git clone -b kirkstone git://git.openembedded.org/meta-openembedded
git clone -b kirkstone https://git.yoctoproject.org/meta-security
git clone -b kirkstone git://git.yoctoproject.org/meta-selinux
git clone -b kirkstone https://github.com/meta-debian/meta-debian.git poky/meta-debian
git clone -b kirkstone https://github.com/meta-debian/meta-debian.git
git clone -b kirkstone git://git.yoctoproject.org/meta-virtualization
cat ./poky/meta-debian/scripts/install-deps.sh
sudo ./poky/meta-debian/scripts/install-deps.sh


fix


. ./setup-env -m ls1046ardb
vim /home/aptyocto/yocto-sdk/build_ls1046ardb/conf/local.conf
-------------------------------------------------------------
MACHINE ??= 'ls1046ardb'
DISTRO ?= 'fsl-qoriq'
PACKAGE_CLASSES ?= "package_deb"
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
USER_CLASSES ?= "buildstats"
PATCHRESOLVE = "noop"
BB_DISKMON_DIRS ??= "
    STOPTASKS,${TMPDIR},1G,100K 
    STOPTASKS,${DL_DIR},1G,100K 
    STOPTASKS,${SSTATE_DIR},1G,100K 
    STOPTASKS,/tmp,100M,100K 
    HALT,${TMPDIR},100M,1K 
    HALT,${DL_DIR},100M,1K 
    HALT,${SSTATE_DIR},100M,1K 
    HALT,/tmp,10M,1K"
PACKAGECONFIG:append:pn-qemu-system-native = " sdl"
CONF_VERSION = "2"

# Parallelism Options
BB_NUMBER_THREADS = "6"
PARALLEL_MAKE = "-j 6"
DL_DIR = "/home/aptyocto/yocto-sdk/downloads"
SSTATE_DIR = "/home/aptyocto/yocto-sdk/sstate-cache"
INITRAMFS_IMAGE = "core-image-minimal"
ACCEPT_FSL_EULA = "1"


DISTRO_FEATURES:append = " systemd package-management"
DISTRO_FEATURES_BACKFILL_CONSIDERED:append = " sysvinit"
VIRTUAL-RUNTIME_init_manager = "systemd"
VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"
 
GLIBC_GENERATE_LOCALES = "en_US.UTF-8 ru_RU.UTF-8"
IMAGE_LINGUAS = "en-us ru-ru"

IMAGE_INSTALL:append = " systemd systemd-compat-units systemd-analyze apt gnupg dpkg"
-------------------------------------------------------------


Пересобираем:
Очистите предыдущую сборку (по желанию):
bitbake -c cleanall  fsl-image-networking

Запустите сборку образа:
bitbake  fsl-image-networking
wic create ls104x-uboot-bootpart --no-fstab-update -e fsl-image-networking

Рецепт postgresql

cat > sources/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_14.5.bb << "EOF"
require postgresql.inc

LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=75af6e3eeec4a06cdd2e578673236fc3"

SRC_URI += "
   file://not-check-libperl.patch 
   file://0001-Add-support-for-RISC-V.patch 
   file://0001-Improve-reproducibility.patch 
   file://0001-configure.ac-bypass-autoconf-2.69-version-check.patch 
   file://remove_duplicate.patch 
   file://0001-config_info.c-not-expose-build-info.patch 
"

SRC_URI[sha256sum] = "d4f72cb5fb857c9a9f75ec8cf091a1771272802f2178f0b2e65b7b6ff64f4a30"

CVE_CHECK_IGNORE += "
   CVE-2017-8806 
"


inherit systemd

SYSTEMD_SERVICE_${PN} = "postgresql.service"


do_install:append() {
    install -D -m 0644 ${WORKDIR}/postgresql.service ${D}${systemd_system_unitdir}/postgresql.service
}

INITSCRIPT_PACKAGES = "${PN}"
INITSCRIPT_NAME = "postgresql"
INITSCRIPT_PARAMS = "defaults 99"



pkg_postinst:${PN}() {
    if [ -z "$D" ]; then
        if [ ! -d /var/lib/postgresql/data ]; then
            mkdir -p /var/lib/postgresql/data
            chown 28:28 /var/lib/postgresql/data
            chmod 700 /var/lib/postgresql/data
        fi
        
        su -s /bin/bash postgres -c "pg_ctl init -D /var/lib/postgresql/data"
    fi
}
EOF


cat > postgresql.service << "EOF"
[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres

# Port number for server to listen on
Environment=PGPORT=5432

# Location of database directory
Environment=PGDATA=/var/lib/postgresql/data

# Disable OOM kill on the postmaster
OOMScoreAdjust=-17

ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/usr/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/usr/bin/pg_ctl reload -D ${PGDATA} -s

# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300

[Install]
WantedBy=multi-user.target
EOF

Для очистки и пере сборки рецепта

bitbake -c clean postgresql
bitbake postgresql

bitbake -c clean wx
bitbake wx


bitbake fsl-image-networking

wic create ls104x-uboot-bootpart --no-fstab-update -e fsl-image-networking

серийник / запись в nand

rmmod at24
echo -n "bs04" | od -An -t x1
i2cset -y 0 0x54 0x00 0x62 0x73 0x30 0x34 i
modprobe at24

Рубрики
dev

yocto каша

yocto версии:

https://wiki.yoctoproject.org/wiki/Releases

Scarthgap           5.0	 April 2024
Nanbield            4.3	October 2023
Mickledore          4.2	May 2023
Langdale            4.1	October 2022
Kirkstone           4.0	May 2022
Honister            3.4	October 2021
Hardknott           3.3	April 2021
Gatesgarth          3.2	Oct 2020
Dunfell             3.1	April 2020
Zeus                3.0	October 2019
Warrior             2.7	April 2019
Thud                2.6	Nov 2018
Sumo                2.5	April 2018
Rocko               2.4	Oct 2017
Pyro                2.3	May 2017
Morty               2.2	Nov 2016
Krogoth             2.1	Apr 2016
Jethro              2.0	Nov 2015
Fido                1.8	Apr 2015

qemu+yocto+tun-tap

Ссылка:
https://habr.com/ru/articles/335038/

0. Pre for debian/ubuntu:
apt-get install chrpath gawk texinfo python
adduser yoctob0
su - yoctob0

1. install yocto pyro
mkdir yocto
cd yocto
git clone -b kirkstone git://git.yoctoproject.org/poky.git
git clone -b kirkstone git://git.openembedded.org/meta-openembedded
source ./poky/oe-init-build-env (Рабочий каталог будет "yocto/ build")

2.  Правка конфигурационных файлов
Рабочий каталог будет "yocto/ build"
В файле conf/bblayers.conf поправляем:
у меня пользователь yocto-habr1, его нужно поменять на своего
vim ~/yocto/build/conf/bblayers.conf
----------------------
# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
POKY_BBLAYERS_CONF_VERSION = "2"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " 
  /home/yocto-habr1/yocto/poky/meta 
  /home/yocto-habr1/yocto/poky/meta-poky 
  /home/yocto-habr1/yocto/poky/meta-yocto-bsp 
  /home/yocto-habr1/yocto/meta-openembedded/meta-oe 
  /home/yocto-habr1/yocto/meta-openembedded/meta-networking 
  /home/yocto-habr1/yocto/meta-openembedded/meta-webserver 
  /home/yocto-habr1/yocto/meta-openembedded/meta-python 
  /home/yocto-habr1/yocto/meta-openembedded/meta-multimedia 
  "
----------------------

3. Устанавливаем некоторые полезные пакеты. В файле conf/local.conf
vim ~/yocto/build/conf/local.conf
-------------------
... что то выше
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"

CORE_IMAGE_EXTRA_INSTALL = " 
kernel-modules 
lrzsz 
setserial 
strongswan 
opkg 
nbench-byte 
lmbench 
alsa-utils 
i2c-tools 
devmem2 
dosfstools 
libdrm-tests 
netkit-ftp 
iproute2 
iptables 
bridge-utils 
socat 
wget 
curl 
vlan 
#dhcp-server 
dnsmasq 
dhcp-client 
ntp 
libstdc++ 
nginx 
ppp 
proftpd 
boost 
openssl 
openssh 
fcgi 
mc 
ethtool 
minicom 
procps 
tcpdump 
file 
vim 
iperf3"
... что то ниже
-------------------


4. Дополнительно надо поправить файл конфигурации sshd «yocto/poky/meta/recipes-connectivity/openssh/openssh/sshd_config».
vim ~/yocto/poky/meta/recipes-connectivity/openssh/openssh/sshd_config
--------------------------------
... что то вверху
# override default of no subsystems
#Subsystem      sftp    /usr/libexec/sftp-server - это комментируем #
Subsystem sftp internal-sftp - эту строку пишем
... что то внизу
--------------------------------

Эта поправка необходима для того, чтобы не устанавливать дополнительный сервер sftp. 
Используется он при монтировании файл-системы через ssh.

5. Собираем:
bitbake core-image-minimal

Если сборка закончилась успехом, то на выходе получаем:
rootfs - ~/yocto/build/tmp/deploy/images/qemux86/core-image-minimal-qemux86-ДАТА_И_ВРЕМЯ.rootfs.ext4
kernel - ~/yocto/build/tmp/deploy/images/qemux86/bzImage—4.10.17+git0+e92bd55409_6648a34e00-r0-qemux86-ДАТА_И_ВРЕМЯ.bin
bzImage
core-image-minimal-qemux86.ext4

Системы сборки определяет, что изменялось и дописывает файлы с отпечатком времени в названии файла. 
На самые последние версии указывают линки.

Очистка проeкта / Full clean build in Yocto Project

Ссылка:
https://tutorialadda.com/yocto/how-to-do-clean-build-in-yocto-project

0. # Delete sstate cache direcotry
rm -rf sstate-cache/

1. Delete tmp directory
rm -rf tmp/

2. # Run bitbake
bitbake core-image-minimal


P.S. Пробовал пользоваться но как то не помогало
Команды очистки Bitbake
#для полной очистки рецепта  Команда Cleanall удаляет выходные файлы рецептов, sstate-cache и файлы загрузки. 
bitbake -fc cleanall <имя_рецепта>
# очищаем вывод рецепта  Команда Clean удалила выходные файлы из каталога tmp.
$ bitbake -c clean <имя_рецепта>

Еще пример сборки yocto + настройка ядра:

Выполните команду:
bitbake -c menuconfig virtual/kernel 
Она откроет новое окно, в котором будет запущено средство конфигурирование ядра.

например Настройте B.A.T.M.A.N. 
Для этого, в сессии menuconfig, установите параметры B.A.T.M.A.N., 
которые вы хотели бы видеть в категории 
Networking Support > Networking Options > BATMAN.

Далее нужно скопировать ядро
cp build/tmp/work/ВАШ_poky_linux/linux-yocto/ВАШЕ_Т_ЯДРО/linux-edison-standard-build/.config device-software/meta-ВАША/recipes-kernel/linux/files/defconfig

bitbake -c compile_kernel modules virtual/kernel

Если вам нужны полные модули tarball выполните: 
bitbake -c deploy virtual/kernel

Тарболы ищем тут:
build/tmp/deploy/images/ВАШ_yocto
Рубрики
dev

NanoPi_R5S

Ссылки:

https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R5S
https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R5S#Install_Flash_Image_File_to_eMMC
https://download.friendlyelec.com/NanoPiR5S
https://www.friendlyelec.com/index.php?route=product/product&product_id=287
Обзор маршрутизатора NanoPi R5S — Часть 1: распаковка, OpenWrt и сетевые тесты с помощью iperf3
Предварительный просмотр NanoPi R5S — Часть 2: Ubuntu 20.04 (FriendlyCore)
Рубрики
dev

uboot / u-boot

Ссылки:

https://github.com/b14esh/bash/blob/master/sdcard-builder/sdcard-builder.sh
https://habr.com/ru/post/434942/
https://habr.com/ru/sandbox/132293/
ftp://ftp.denx.de/pub/u-boot/ - тут брать uboot
https://u-boot.readthedocs.io/en/latest/
https://github.com/ARM-software/u-boot/blob/master/doc/README.memory-test
https://ru.wikipedia.org/wiki/Dd

Компиляция на примере debian 11:

0. Скачиваем 
cd /opt
#git clone https://source.codeaurora.org/external/qoriq/qoriq-components/u-boot.git - офф nxp git
#git clone https://github.com/u-boot/u-boot.git - офф реп u-boot
#wget ftp://ftp.denx.de/pub/u-boot/u-boot-2023.04-rc4.tar.bz2

0.1 Распаковываем
tar -xvf  u-boot-2023.04-rc4.tar.bz2

0.2 Переходим в каталог 
cd u-boot-2023.04-rc4

0.3 использование git / git переключения веток
git clone https://github.com/u-boot/u-boot.git
cd u-boot
git status 
git tag 
git checkout NAME_TAG

1. Готовимся к компиляции 
make help - получаем помощь если требуется 
make distclean

2. Смотрим что за что отвечает
#make 	O=../olimex-uboot 	                # адрес где будет лежать результат сборки
#	-j4 					# количество потоков для сборки
#	ARCH=arm 				# тип архитектуры для которой собирается
#	CROSS_COMPILE=arm-linux-gnueabihf- 	# кросс компилятор нашего процессора
#	xconfig					# команда запуска GUI конфигуратора

2.1 Собственно если мы не вызываем xconfig то нам надо перед компиляцией создать файл конфигурации
!!! собственно тут веселье только начинается
!!! возможно понадобятся обяз параметры
#make oldconfig
#make menuconfig
#make xconfig
Но не спешите это запускать!!!
в каталоге ./configs/ есть готовые конфиги для оборудования

3. Приступаем к первой сборке
#apt-get install gcc-aarch64-linux-gnu
#make O=../me-uboot -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
#make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
#make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- orangepi_zero_defconfig
#export ARCH=arm64
# файл some_board_defconfig соответствует имени в каталоге .config
# ls1046afrwy_tfa_defconfig или вот это orangepi_zero_defconfig
#make some_board_defconfig
#make CROSS_COMPILE=aarch64-unknown-none-
#packages/firmware/u-boot.mk:34:     export ARCH=arm && export CROSS_COMPILE=arm-linux-gnueabihf-; 
#packages/firmware/u-boot.mk:36:     export ARCH=arm64 && export CROSS_COMPILE=aarch64-linux-gnu-; 


make distclean
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- orangepi_zero_defconfig
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

nxp

The compiled U-Boot image, u-boot-with-spl-pbl.bin, is available at u-boot/.
You need to use u-boot-with-spl-pbl.bin because for SD boot, ls104x devices use different way for bootloader from ls1088/ls2088/lx2160 devices.
#make -j4 ls1046afrwy_tfa_defconfig

make distclean
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make ls1046ardb_sdcard_defconfig
make -j4 

dd if=u-boot-with-spl-pbl.bin of=/dev/sdX bs=512 seek=8 conv=fsync

error install mtest

# board/freescale/ls1046ardb/ls1046ardb_rcw_sd.cfg 
#https://e2e.ti.com/support/processors-group/processors/f/processors-forum/717115/linux-am3352-adding-mtest-command-in-u-boot
error: ‘CONFIG_SYS_MEMTEST_START’ undeclared (first use in this function); did you mean ‘CONFIG_SYS_MEMTEST_SCRATCH’?
error: ‘CONFIG_SYS_MEMTEST_END’ undeclared (first use in this function); did you mean ‘CONFIG_SYS_MEMTEST_SCRATCH’?

vim include/configs/ls1046a_common.h
----------------------------------------
#define CONFIG_CMD_MEMTEST
#define CONFIG_SYS_ALT_MEMTEST
#define CONFIG_SYS_MEMTEST_START  0xFF000000
#define CONFIG_SYS_MEMTEST_END    0xFFFFFFFF
----------------------------------------

DEBUG

vim include/configs/ls1046a_common.h
------------------------------------
#define DEBUG 1 
#define DDR_DEBUG 1
------------------------------------

DDR

git clone https://source.codeaurora.org/external/qoriq/qoriq-components/u-boot.git
make distclean
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make ls1046ardb_sdcard_defconfig
make menuconfig                     <----------- на этом этапе добавил чего надо от uboot / mtest minfo и т.д.

далее скопировал исходы из другой платы где есть какая то память (nxp форуме нагуглил )
cp board/freescale/ls1043ardb/ddr.h board/freescale/ls1046ardb/ddr.h    <---- поправил
cp board/freescale/ls1043ardb/ddr.c board/freescale/ls1046ardb/ddr.c    <---- поправил
vim include/configs/ls1046ardb.h <---- поправил
vim include/common.h   <--------- поправил


vim ddr.c
---------
/* DDR model number: MT40A512M8HX-093E */
#ifdef CONFIG_SYS_DDR_RAW_TIMING
dimm_params_t ddr_raw_timing = {
        .n_ranks = 1,
        .rank_density = 4294967296u,
        .capacity = 429496726u,
        .primary_sdram_width = 64,
        .ec_sdram_width = 8,
        .registered_dimm = 0,
        .mirrored_dimm = 0,
        .n_row_addr = 16,
        .n_col_addr = 10,
        .bank_addr_bits = 0,
        .bank_group_bits = 1,
        .edc_config = 0,
        .burst_lengths_bitmask = 0x0c,
        .tckmin_x_ps = 750,
        .tckmax_ps = 1900,
        .caslat_x = 0x0001FFE00,
        .taa_ps = 13320,
        .trcd_ps = 13320,
        .trp_ps = 13320,
        .tras_ps = 33000,
        .trc_ps = 46500,
        .trfc1_ps = 350000,
        .trfc2_ps = 260000,
        .trfc4_ps = 160000,
        .tfaw_ps = 15000,
        .trrds_ps = 5300,
        .trrdl_ps = 6400,
        .tccdl_ps = 5355,
        .refresh_rate_ps = 7800000,
        .dq_mapping_ors = 0,
};
---------

uboot env

printenv - показать переменные 

setenv ipaddr 192.168.1.126 - задать адрес для интерфейса
set ipaddr2 192.168.1.127 -  задать еще один ip адрес
setenv serverip 192.168.1.1 - задать адрес для tfp
setenv netmask 255.255.255.0 - задать vfcre
setenv ethaddr 02:80:ad:20:57:23 - задать мак адрес
setenv bootargs "console=ttyS0,115200 root=/dev/ram"
setenv bootdelay 3
setenv baudrate 115200
setenv stdin serial
setenv stdout serial
setenv stderr serial
setenv bootfile "img-dnp9200"
setenv bootcmd bootm 0x10040000

setenv ethact fm1-mac4
setenv eth1addr 00:00:00:00:00:04
setenv ethprime FM1@DTSEC4

setenv ethact fm1-mac3
setenv eth2addr 00:00:00:00:00:F4
setenv ethprime FM1@DTSEC3



dd

bs=n — размер блока
count=n — сколько блоков скопировать
seek=n — сколько блоков пропустить от начала в выходном файле перед копированием
noerror — игнорировать ошибки ввода-вывода
if=файл — читает данные из файла вместо стандартного ввода
of=файл — пишет данные в файл вместо стандартного вывода
ibs=nn и obs=nn — задаёт, сколько байтов нужно считывать или записывать за раз
skip=n — сколько блоков пропустить от начала во входном файле перед копированием

dd if=u-boot-with-spl-pbl.bin of=/dev/sda bs=1024 seek=4 conv=fsync

dd if=fsl_fman_ucode_ls1046_r1.0_106_4_18.bin of=/dev/sda bs=1024 seek=9216

uefi

# 0
load mmc 0:2 $fdt_addr_r dtb
load mmc 0:1 $kernel_addr_r /EFI/grub/grubaa64.efi
bootefi $kernel_addr_r $fdt_addr_r

# 1
load mmc 0 $fdt_addr_r dtb
load mmc 0 $kernel_addr_r /EFI/grub/grubaa64.efi
bootefi $kernel_addr_r $fdt_addr_r

# 2 
setenv bootargs console=ttyS0,115200 root=/dev/ram0 earlycon=uart8250,mmio,0x21c0500 mtdparts=1550000.spi-0:1m(rcw),15m(u-boot),48m(kernel.itb)
setenv fdt_addr_r 0x84080000
setenv kernel_addr_r 0x90000000
load mmc 0 $fdt_addr_r /boot/fsl-ls1046a-rdb.dtb
load mmc 0 $kernel_addr_r /boot/grub/BOOTAA64.EFI
bootefi $kernel_addr_r $fdt_addr_r

boot SPI

setenv bootargs root=/dev/ram0 earlycon=uart8250,mmio,0x21c0500 console=ttyS0,115200
sf probe 0:0
sf read 0x90480000 1000000 2800000
bootm 0x90480000

boot sd nxp

#fdisk # fs ext4
/dev/sda1  *     4096 62332927 62328832 29.7G 83 Linux
#uboot burn
#dd if=u-boot-with-spl-pbl.bin of=/dev/sda bs=512 seek=8
#dtb
#fsl-ls1046a-rdb.dtb  
#fsl-ls1046a-rdb-sdk.dtb  
#fsl-ls1046a-rdb-usdpaa.dtb  
#fsl-ls1046a-rdb-usdpaa-shared.dtb
#cp Image Image.gz u-boot-dtb  /mnt/sda1/boot/


setenv bootargs console=ttyS0,115200 ip=dhcp root=/dev/mmcblk0p1 earlycon=uart8250,mmio,0x21c0500 rootfstype=ext4 rootwait rw
setenv load_kernel ext2load mmc :1 82000000 boot/Image
setenv load_dtb ext2load mmc :1 8f000000 boot/u-boot-dtb.bin
setenv bootcmd mmc rescan; run load_kernel load_dtb; booti 82000000 - 8f000000
saveenv



Проверка mmc карты (sdcard):

mmc
mmc info - информация об "сd card"
mmc list - покажет номер "sd reader" для дальнейшего использования с командой "ls"

ls mmc 0  - покажет содержимое "/"
ls mmc 0 /boot - покажет содержимое "/boot"
ls mmc 2.1:3 / - покажет содержимое корневого каталога на устройстве MMC 2, аппаратном разделе 1 и разделе номер 3

dm

Команда dm позволяет просмотреть информацию о модели драйвера, 
включая дерево устройств и список доступных u-классов.
dm tree
dm uclass

Диагностика uboot:

dm tree
mdio list
mii device
net list 
bdinfo
ls mmc 0

screen как терминал для COM порта

screen -L -Logfile cabinet-bootup.log /dev/ttyS0 115200
-L -Logfile cabinet-bootup.log — записываем сессию в файл cabinet-bootup.log
/dev/ttyS0 — использовать это последовательное устройство
115200 — Baud rate

Backup and restore

printenv - проверяем окружения

bootcmd	- Эта команда используется для задания стандартного поведения при запуске
board=evb_rk3128 - Эта команда определяет используемый CPU / плату разработки 
devtype=spinand	Эта переменная определяет используемое флэш-устройство


При помощи этих команд мы можем узнать больше о SPI flash:
rksfc
rksfc - rockchip sfc sub-system
rksfc scan
rksfc info



uboot — вероятно, содержит образ UBoot / загрузчик первого этапа
trust — образ Trusted execution environment
boot — образ ядра / ramdisk
rootfs — самый большой раздел, файловая система рута ядра
user data — пользовательские данные, скорее всего, используется для записи рекордов, пользовательских настроек и пр.

usb - USB sub-system
Инициализация USB хранилища / внешней флешки
usb start
usb info

Сначала мы можем попробовать считать всю SPI flash в ОЗУ при помощи следующей команды. 
В качестве адреса назначения можно попробовать адрес, сохранённый в $ramdisk_addr_r, то есть 0x6a200000:
rksfc read $ramdisk_addr_r 0 0x35E00

Считываем из SPI в память:
rksfc read $scriptaddr 0 0x35E00
Записываем из памяти на usb
usb write $scriptaddr 0 0x35E00


Читаем из USB в память:
usb read $scriptaddr 0 0x35E00
Записываем из памяти в SPI
rksfc write $scriptaddr 0x35E00 0


Проверяем доступные разделы:
mount
df
ls -lathr /dev/block/by-name/
lsblk

DD для бекапа:
cd /mnt/usb/
dd if=/dev/sda1 of=part1.bin
dd if=/dev/sda2 of=part2.bin
dd if=/dev/sda3 of=part3.bin
dd if=/dev/sda4 of=part4.bin
dd if=/dev/sda5 of=part5.bin

file * - команда расскажет все о файлах

мы можем извлечь раздел squashfs с помощью unsquashfs и попробовать смонтировать раздел ext2, чтобы убедиться в их правильности
unsquashfs part4.bin


dhcp в uboot

setenv ethaddr 02:80:ad:20:57:23 - задать мак адрес
dhcp - получить адрес
boot - продолжить загрузку

для тесту:


dnsmasq -i enp0s20f0u1u4 --dhcp-range=10.0.100.10,10.0.100.50  -d -u nobody -p0 -K --log-dhcp
ip a a 10.0.100.1/24  dev  enp0s20f0u1u4
ip link set up dev enp0s20f0u1u4



cat > /etc/systemd/system/mac_set.service << "EOF"
[Unit]
Description=Change MAC address of network interface
After=network.target

[Service]
ExecStart=/usr/bin/set_mac
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=default.target
EOF

chmod +x /usr/bin/set_mac
systemctl daemon-reload && systemctl enable mac_set.service



cat > /usr/bin/set_mac << "EOF"
#!/bin/sh
INTERFACE="end0"
MAC="02:FF:FF:FF:FF:FF"
  ip link set dev $INTERFACE down
  ip link set dev $INTERFACE address $MAC
  ip link set dev $INTERFACE up
EOF



MAC=$(printf '02:%02X:%02X:%02X:%02X:%02X' $[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $[RANDOM%256])
Рубрики
dev

buildroot / debian 11

Ссылки:

https://buildroot.org/
https://github.com/ya-streams/manifest
https://habr.com/ru/post/449348/

Начинаем начинать:

Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation.
Buildroot — это простой, эффективный и удобный инструмент для создания встраиваемых систем Linux с помощью кросс-компиляции.
Buildroot похоже на yocto.

0. Скачиваем окружение:
apt install rsync bc
git clone git://git.buildroot.net/buildroot
cd buildroot
git pull


1. Buildroot использует всеми известный make, например что бы получить помощь введите:
make help

2. Показать доступные платформы для сборки:
make list-defconfigs | less


Built-in configs:
  aarch64_efi_defconfig               - Build for aarch64_efi
  acmesystems_acqua_a5_256mb_defconfig - Build for acmesystems_acqua_a5_256mb
  acmesystems_acqua_a5_512mb_defconfig - Build for acmesystems_acqua_a5_512mb
  acmesystems_aria_g25_128mb_defconfig - Build for acmesystems_aria_g25_128mb
  acmesystems_aria_g25_256mb_defconfig - Build for acmesystems_aria_g25_256mb
  acmesystems_arietta_g25_128mb_defconfig - Build for acmesystems_arietta_g25_128mb
  acmesystems_arietta_g25_256mb_defconfig - Build for acmesystems_arietta_g25_256mb
  amarula_vyasa_rk3288_defconfig      - Build for amarula_vyasa_rk3288
  andes_ae350_45_defconfig            - Build for andes_ae350_45
  arcturus_ucls1012a_defconfig        - Build for arcturus_ucls1012a
  arcturus_ucp1020_defconfig          - Build for arcturus_ucp1020
  armadeus_apf27_defconfig            - Build for armadeus_apf27
  armadeus_apf28_defconfig            - Build for armadeus_apf28
  armadeus_apf51_defconfig            - Build for armadeus_apf51
  arm_foundationv8_defconfig          - Build for arm_foundationv8
  aspeed_ast2500evb_defconfig         - Build for aspeed_ast2500evb
  aspeed_ast2600evb_defconfig         - Build for aspeed_ast2600evb
  asus_tinker_rk3288_defconfig        - Build for asus_tinker_rk3288
  at91sam9260eknf_defconfig           - Build for at91sam9260eknf
  at91sam9g20dfc_defconfig            - Build for at91sam9g20dfc
  at91sam9g45m10ek_defconfig          - Build for at91sam9g45m10ek
  at91sam9rlek_defconfig              - Build for at91sam9rlek
  at91sam9x5ek_defconfig              - Build for at91sam9x5ek
  at91sam9x5ek_dev_defconfig          - Build for at91sam9x5ek_dev
  at91sam9x5ek_mmc_defconfig          - Build for at91sam9x5ek_mmc
  at91sam9x5ek_mmc_dev_defconfig      - Build for at91sam9x5ek_mmc_dev
  atmel_sama5d27_som1_ek_mmc_dev_defconfig - Build for atmel_sama5d27_som1_ek_mmc_dev
  atmel_sama5d2_xplained_mmc_defconfig - Build for atmel_sama5d2_xplained_mmc
  atmel_sama5d2_xplained_mmc_dev_defconfig - Build for atmel_sama5d2_xplained_mmc_dev
  atmel_sama5d3xek_defconfig          - Build for atmel_sama5d3xek
  atmel_sama5d3_xplained_defconfig    - Build for atmel_sama5d3_xplained
  atmel_sama5d3_xplained_dev_defconfig - Build for atmel_sama5d3_xplained_dev
  atmel_sama5d3_xplained_mmc_defconfig - Build for atmel_sama5d3_xplained_mmc
  atmel_sama5d3_xplained_mmc_dev_defconfig - Build for atmel_sama5d3_xplained_mmc_dev
  atmel_sama5d4_xplained_defconfig    - Build for atmel_sama5d4_xplained
  atmel_sama5d4_xplained_dev_defconfig - Build for atmel_sama5d4_xplained_dev
  atmel_sama5d4_xplained_mmc_defconfig - Build for atmel_sama5d4_xplained_mmc
  atmel_sama5d4_xplained_mmc_dev_defconfig - Build for atmel_sama5d4_xplained_mmc_dev
  avenger96_defconfig                 - Build for avenger96
  bananapi_m2_ultra_defconfig         - Build for bananapi_m2_ultra
  bananapi_m2_zero_defconfig          - Build for bananapi_m2_zero
  bananapro_defconfig                 - Build for bananapro
  beagleboardx15_defconfig            - Build for beagleboardx15
  beagleboneai_defconfig              - Build for beagleboneai
  beaglebone_defconfig                - Build for beaglebone
  beaglebone_qt5_defconfig            - Build for beaglebone_qt5
  beaglev_defconfig                   - Build for beaglev
  beelink_gs1_defconfig               - Build for beelink_gs1
  broadcom_northstar_defconfig        - Build for broadcom_northstar
  canaan_kd233_defconfig              - Build for canaan_kd233
  chromebook_elm_defconfig            - Build for chromebook_elm
  chromebook_snow_defconfig           - Build for chromebook_snow
  ci20_defconfig                      - Build for ci20
  cubieboard2_defconfig               - Build for cubieboard2
  engicam_imx6qdl_icore_defconfig     - Build for engicam_imx6qdl_icore
  engicam_imx6qdl_icore_qt5_defconfig - Build for engicam_imx6qdl_icore_qt5
  engicam_imx6qdl_icore_rqs_defconfig - Build for engicam_imx6qdl_icore_rqs
  engicam_imx6ul_geam_defconfig       - Build for engicam_imx6ul_geam
  engicam_imx6ul_isiot_defconfig      - Build for engicam_imx6ul_isiot
  freescale_imx28evk_defconfig        - Build for freescale_imx28evk
  freescale_imx6dlsabreauto_defconfig - Build for freescale_imx6dlsabreauto
  freescale_imx6dlsabresd_defconfig   - Build for freescale_imx6dlsabresd
  freescale_imx6qsabreauto_defconfig  - Build for freescale_imx6qsabreauto
  freescale_imx6qsabresd_defconfig    - Build for freescale_imx6qsabresd
  freescale_imx6sxsabresd_defconfig   - Build for freescale_imx6sxsabresd
  freescale_imx6ullevk_defconfig      - Build for freescale_imx6ullevk
  freescale_imx7dsabresd_defconfig    - Build for freescale_imx7dsabresd
  freescale_imx8mmevk_defconfig       - Build for freescale_imx8mmevk
  freescale_imx8mnevk_defconfig       - Build for freescale_imx8mnevk
  freescale_imx8mpevk_defconfig       - Build for freescale_imx8mpevk
  freescale_imx8mqevk_defconfig       - Build for freescale_imx8mqevk
  freescale_imx8qmmek_defconfig       - Build for freescale_imx8qmmek
  freescale_imx8qxpmek_defconfig      - Build for freescale_imx8qxpmek
  freescale_p1025twr_defconfig        - Build for freescale_p1025twr
  freescale_t1040d4rdb_defconfig      - Build for freescale_t1040d4rdb
  freescale_t2080_qds_rdb_defconfig   - Build for freescale_t2080_qds_rdb
  friendlyarm_nanopi_r2s_defconfig    - Build for friendlyarm_nanopi_r2s
  galileo_defconfig                   - Build for galileo
  globalscale_espressobin_defconfig   - Build for globalscale_espressobin
  grinn_chiliboard_defconfig          - Build for grinn_chiliboard
  grinn_liteboard_defconfig           - Build for grinn_liteboard
  hifive_unleashed_defconfig          - Build for hifive_unleashed
  imx23evk_defconfig                  - Build for imx23evk
  imx6-sabreauto_defconfig            - Build for imx6-sabreauto
  imx6-sabresd_defconfig              - Build for imx6-sabresd
  imx6-sabresd_qt5_defconfig          - Build for imx6-sabresd_qt5
  imx6slevk_defconfig                 - Build for imx6slevk
  imx6sx-sdb_defconfig                - Build for imx6sx-sdb
  imx6ulevk_defconfig                 - Build for imx6ulevk
  imx6ullevk_defconfig                - Build for imx6ullevk
  imx6ulpico_defconfig                - Build for imx6ulpico
  imx7dpico_defconfig                 - Build for imx7dpico
  imx7d-sdb_defconfig                 - Build for imx7d-sdb
  imx8mmpico_defconfig                - Build for imx8mmpico
  imx8mn_bsh_smm_s2_defconfig         - Build for imx8mn_bsh_smm_s2
  imx8mn_bsh_smm_s2_pro_defconfig     - Build for imx8mn_bsh_smm_s2_pro
  imx8mpico_defconfig                 - Build for imx8mpico
  imx8mqevk_defconfig                 - Build for imx8mqevk
  kontron_bl_imx8mm_defconfig         - Build for kontron_bl_imx8mm
  kontron_pitx_imx8m_defconfig        - Build for kontron_pitx_imx8m
  kontron_smarc_sal28_defconfig       - Build for kontron_smarc_sal28
  lafrite_defconfig                   - Build for lafrite
  lego_ev3_defconfig                  - Build for lego_ev3
  licheepi_zero_defconfig             - Build for licheepi_zero
  linksprite_pcduino_defconfig        - Build for linksprite_pcduino
  ls1028ardb_defconfig                - Build for ls1028ardb
  mender_x86_64_efi_defconfig         - Build for mender_x86_64_efi
  microchip_sam9x60ek_mmc_defconfig   - Build for microchip_sam9x60ek_mmc
  microchip_sam9x60ek_mmc_dev_defconfig - Build for microchip_sam9x60ek_mmc_dev
  microchip_sama5d27_wlsom1_ek_mmc_defconfig - Build for microchip_sama5d27_wlsom1_ek_mmc
  microchip_sama5d27_wlsom1_ek_mmc_dev_defconfig - Build for microchip_sama5d27_wlsom1_ek_mmc_dev
  microchip_sama5d2_icp_mmc_defconfig - Build for microchip_sama5d2_icp_mmc
  microchip_sama5d2_icp_mmc_dev_defconfig - Build for microchip_sama5d2_icp_mmc_dev
  microchip_sama7g5ek_mmc_defconfig   - Build for microchip_sama7g5ek_mmc
  microchip_sama7g5ek_mmc_dev_defconfig - Build for microchip_sama7g5ek_mmc_dev
  minnowboard_max_defconfig           - Build for minnowboard_max
  mx25pdk_defconfig                   - Build for mx25pdk
  mx51evk_defconfig                   - Build for mx51evk
  mx53loco_defconfig                  - Build for mx53loco
  mx6cubox_defconfig                  - Build for mx6cubox
  mx6sx_udoo_neo_defconfig            - Build for mx6sx_udoo_neo
  mx6udoo_defconfig                   - Build for mx6udoo
  nexbox_a95x_defconfig               - Build for nexbox_a95x
  nezha_defconfig                     - Build for nezha
  nitrogen6sx_defconfig               - Build for nitrogen6sx
  nitrogen6x_defconfig                - Build for nitrogen6x
  nitrogen7_defconfig                 - Build for nitrogen7
  nitrogen8m_defconfig                - Build for nitrogen8m
  nitrogen8mm_defconfig               - Build for nitrogen8mm
  nitrogen8mn_defconfig               - Build for nitrogen8mn
  nitrogen8mp_defconfig               - Build for nitrogen8mp
  octavo_osd32mp1_brk_defconfig       - Build for octavo_osd32mp1_brk
  octavo_osd32mp1_red_defconfig       - Build for octavo_osd32mp1_red
  odroidc2_defconfig                  - Build for odroidc2
  odroidxu4_defconfig                 - Build for odroidxu4
  olimex_a10_olinuxino_lime_defconfig - Build for olimex_a10_olinuxino_lime
  olimex_a13_olinuxino_defconfig      - Build for olimex_a13_olinuxino
  olimex_a20_olinuxino_lime2_defconfig - Build for olimex_a20_olinuxino_lime2
  olimex_a20_olinuxino_lime_defconfig - Build for olimex_a20_olinuxino_lime
  olimex_a20_olinuxino_micro_defconfig - Build for olimex_a20_olinuxino_micro
  olimex_a33_olinuxino_defconfig      - Build for olimex_a33_olinuxino
  olimex_a64_olinuxino_defconfig      - Build for olimex_a64_olinuxino
  olimex_imx233_olinuxino_defconfig   - Build for olimex_imx233_olinuxino
  olimex_stmp157_olinuxino_lime_defconfig - Build for olimex_stmp157_olinuxino_lime
  olpc_xo175_defconfig                - Build for olpc_xo175
  olpc_xo1_defconfig                  - Build for olpc_xo1
  openblocks_a6_defconfig             - Build for openblocks_a6
  orangepi_lite2_defconfig            - Build for orangepi_lite2
  orangepi_lite_defconfig             - Build for orangepi_lite
  orangepi_one_defconfig              - Build for orangepi_one
  orangepi_one_plus_defconfig         - Build for orangepi_one_plus
  orangepi_pc_defconfig               - Build for orangepi_pc
  orangepi_pc_plus_defconfig          - Build for orangepi_pc_plus
  orangepi_r1_defconfig               - Build for orangepi_r1
  orangepi_zero_defconfig             - Build for orangepi_zero
  orangepi_zero_plus2_defconfig       - Build for orangepi_zero_plus2
  orangepi_zero_plus_defconfig        - Build for orangepi_zero_plus
  pandaboard_defconfig                - Build for pandaboard
  pcengines_apu2_defconfig            - Build for pcengines_apu2
  pc_x86_64_bios_defconfig            - Build for pc_x86_64_bios
  pc_x86_64_efi_defconfig             - Build for pc_x86_64_efi
  pine64_defconfig                    - Build for pine64
  pine64_sopine_defconfig             - Build for pine64_sopine
  qemu_aarch64_ebbr_defconfig         - Build for qemu_aarch64_ebbr
  qemu_aarch64_sbsa_defconfig         - Build for qemu_aarch64_sbsa
  qemu_aarch64_virt_defconfig         - Build for qemu_aarch64_virt
  qemu_arm_ebbr_defconfig             - Build for qemu_arm_ebbr
  qemu_arm_versatile_defconfig        - Build for qemu_arm_versatile
  qemu_arm_vexpress_defconfig         - Build for qemu_arm_vexpress
  qemu_arm_vexpress_tz_defconfig      - Build for qemu_arm_vexpress_tz
  qemu_m68k_mcf5208_defconfig         - Build for qemu_m68k_mcf5208
  qemu_m68k_q800_defconfig            - Build for qemu_m68k_q800
  qemu_microblazebe_mmu_defconfig     - Build for qemu_microblazebe_mmu
  qemu_microblazeel_mmu_defconfig     - Build for qemu_microblazeel_mmu
  qemu_mips32r2el_malta_defconfig     - Build for qemu_mips32r2el_malta
  qemu_mips32r2_malta_defconfig       - Build for qemu_mips32r2_malta
  qemu_mips32r6el_malta_defconfig     - Build for qemu_mips32r6el_malta
  qemu_mips32r6_malta_defconfig       - Build for qemu_mips32r6_malta
  qemu_mips64el_malta_defconfig       - Build for qemu_mips64el_malta
  qemu_mips64_malta_defconfig         - Build for qemu_mips64_malta
  qemu_mips64r6el_malta_defconfig     - Build for qemu_mips64r6el_malta
  qemu_mips64r6_malta_defconfig       - Build for qemu_mips64r6_malta
  qemu_nios2_10m50_defconfig          - Build for qemu_nios2_10m50
  qemu_or1k_defconfig                 - Build for qemu_or1k
  qemu_ppc64_e5500_defconfig          - Build for qemu_ppc64_e5500
  qemu_ppc64le_powernv8_defconfig     - Build for qemu_ppc64le_powernv8
  qemu_ppc64le_pseries_defconfig      - Build for qemu_ppc64le_pseries
  qemu_ppc64_pseries_defconfig        - Build for qemu_ppc64_pseries
  qemu_ppc_bamboo_defconfig           - Build for qemu_ppc_bamboo
  qemu_ppc_e500mc_defconfig           - Build for qemu_ppc_e500mc
  qemu_ppc_g3beige_defconfig          - Build for qemu_ppc_g3beige
  qemu_ppc_mac99_defconfig            - Build for qemu_ppc_mac99
  qemu_ppc_mpc8544ds_defconfig        - Build for qemu_ppc_mpc8544ds
  qemu_riscv32_virt_defconfig         - Build for qemu_riscv32_virt
  qemu_riscv64_nommu_virt_defconfig   - Build for qemu_riscv64_nommu_virt
  qemu_riscv64_virt_defconfig         - Build for qemu_riscv64_virt
  qemu_s390x_defconfig                - Build for qemu_s390x
  qemu_sh4eb_r2d_defconfig            - Build for qemu_sh4eb_r2d
  qemu_sh4_r2d_defconfig              - Build for qemu_sh4_r2d
  qemu_sparc64_sun4u_defconfig        - Build for qemu_sparc64_sun4u
  qemu_sparc_ss10_defconfig           - Build for qemu_sparc_ss10
  qemu_x86_64_defconfig               - Build for qemu_x86_64
  qemu_x86_defconfig                  - Build for qemu_x86
  qemu_xtensa_lx60_defconfig          - Build for qemu_xtensa_lx60
  qemu_xtensa_lx60_nommu_defconfig    - Build for qemu_xtensa_lx60_nommu
  raspberrypi0_defconfig              - Build for raspberrypi0
  raspberrypi0w_defconfig             - Build for raspberrypi0w
  raspberrypi2_defconfig              - Build for raspberrypi2
  raspberrypi3_64_defconfig           - Build for raspberrypi3_64
  raspberrypi3_defconfig              - Build for raspberrypi3
  raspberrypi3_qt5we_defconfig        - Build for raspberrypi3_qt5we
  raspberrypi4_64_defconfig           - Build for raspberrypi4_64
  raspberrypi4_defconfig              - Build for raspberrypi4
  raspberrypicm4io_64_defconfig       - Build for raspberrypicm4io_64
  raspberrypicm4io_defconfig          - Build for raspberrypicm4io
  raspberrypi_defconfig               - Build for raspberrypi
  raspberrypizero2w_defconfig         - Build for raspberrypizero2w
  riotboard_defconfig                 - Build for riotboard
  rock64_defconfig                    - Build for rock64
  rock_pi_n8_defconfig                - Build for rock_pi_n8
  rockpro64_defconfig                 - Build for rockpro64
  roseapplepi_defconfig               - Build for roseapplepi
  s6lx9_microboard_defconfig          - Build for s6lx9_microboard
  sheevaplug_defconfig                - Build for sheevaplug
  sipeed_lichee_rv_defconfig          - Build for sipeed_lichee_rv
  sipeed_lichee_rv_dock_defconfig     - Build for sipeed_lichee_rv_dock
  sipeed_maix_bit_defconfig           - Build for sipeed_maix_bit
  sipeed_maix_bit_sdcard_defconfig    - Build for sipeed_maix_bit_sdcard
  sipeed_maix_dock_defconfig          - Build for sipeed_maix_dock
  sipeed_maix_dock_sdcard_defconfig   - Build for sipeed_maix_dock_sdcard
  sipeed_maixduino_defconfig          - Build for sipeed_maixduino
  sipeed_maixduino_sdcard_defconfig   - Build for sipeed_maixduino_sdcard
  sipeed_maix_go_defconfig            - Build for sipeed_maix_go
  sipeed_maix_go_sdcard_defconfig     - Build for sipeed_maix_go_sdcard
  snps_arc700_axs101_defconfig        - Build for snps_arc700_axs101
  snps_archs38_axs103_defconfig       - Build for snps_archs38_axs103
  snps_archs38_haps_defconfig         - Build for snps_archs38_haps
  snps_archs38_hsdk_defconfig         - Build for snps_archs38_hsdk
  socrates_cyclone5_defconfig         - Build for socrates_cyclone5
  solidrun_clearfog_defconfig         - Build for solidrun_clearfog
  solidrun_clearfog_gt_8k_defconfig   - Build for solidrun_clearfog_gt_8k
  solidrun_macchiatobin_defconfig     - Build for solidrun_macchiatobin
  spike_riscv64_defconfig             - Build for spike_riscv64
  stm32f429_disco_xip_defconfig       - Build for stm32f429_disco_xip
  stm32f469_disco_sd_defconfig        - Build for stm32f469_disco_sd
  stm32f469_disco_xip_defconfig       - Build for stm32f469_disco_xip
  stm32mp157a_dk1_defconfig           - Build for stm32mp157a_dk1
  stm32mp157c_dk2_defconfig           - Build for stm32mp157c_dk2
  stm32mp157c_odyssey_defconfig       - Build for stm32mp157c_odyssey
  terasic_de10nano_cyclone5_defconfig - Build for terasic_de10nano_cyclone5
  toradex_apalis_imx6_defconfig       - Build for toradex_apalis_imx6
  ts4900_defconfig                    - Build for ts4900
  ts5500_defconfig                    - Build for ts5500
  ts7680_defconfig                    - Build for ts7680
  uevm5432_defconfig                  - Build for uevm5432
  versal_vck190_defconfig             - Build for versal_vck190
  visionfive2_defconfig               - Build for visionfive2
  visionfive_defconfig                - Build for visionfive
  wandboard_defconfig                 - Build for wandboard
  warp7_defconfig                     - Build for warp7
  warpboard_defconfig                 - Build for warpboard
  zynq_microzed_defconfig             - Build for zynq_microzed
  zynqmp_kria_kv260_defconfig         - Build for zynqmp_kria_kv260
  zynqmp_zcu102_defconfig             - Build for zynqmp_zcu102
  zynqmp_zcu106_defconfig             - Build for zynqmp_zcu106
  zynq_qmtech_defconfig               - Build for zynq_qmtech
  zynq_zc706_defconfig                - Build for zynq_zc706
  zynq_zed_defconfig                  - Build for zynq_zed

3. Произвели выбор
make  raspberrypi0_defconfig

4. Произвели сборку
!!! make source - можно просто скачать исходники
make all

Добавление пакетов:

sudo apt install  libncurses-dev
!!! .config - сюда добавляются все наши изменения
!!! make savedefconfig - для сохранения изменений в файл по умолчанию
!!! git diff

make menuconfig
make all

Правильное сохранение изменений:

Нужно просто создавать окружение для работы:
https://github.com/ya-streams/buildroot_external
source br_external/env_setup.sh
set_tragert YOU_NAME

Ну а дальше у вас будет команда m аналог make
m raspberrypi0_defconfig
m all
m menuconfig
m all

Что нам это дает?
У нас нет проблем с обновлением makebuild.
Наши изменения не затрагиваются после обновления makebuild.

Если что то надо положить в образ buildroot:

Для этого существует специальный каталог:
rootfs_overlay

Добавление root fs overlay:
Данный механизм позволяет легко добавлять/заменять файлы в target-файловой системе.
Если файл есть в "root fs overlay", но нет в target, то он будет добавлен
Если файл есть в "root fs overlay" и в target, то он будет заменён.
Сначала зададим путь к "root fs overlay dir". 
Это делается в разделе "System configuration → Root filesystem" overlay directories:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

Где искать собранные образы:

Образы ищем тут:
buildroot/output/images/
Для записи на сдкарту он будет называется sdcard.img 

Загрузка:

SoC ROCM Bootloader
Fires stage program loader (FLP)
SoC - System of Chip
Прошит на производстве
Загружает SPL из внешней FLASH во внутреннею SRAM
Код закрыт


Seccond stage program loader (SPL)
Функционал ограничен размером SRAM
Инициализирует DRAM, загружает TPL из внешней FLASH в DRAM
Код чаще всего закрыт


Third stage Program Loader (TPL)
U-boot / Bareboox
Загружает и передает управление ядру(передает device tree)
Доступна командная строка

Linux kernel
Device tree
Инициализирует драйвера
Монтирует файловую систему
Запускает процесс init
Рубрики
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

Рубрики
dev

yocto / nxp

0. Готовим каталог пользователя
mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

1. скачиваем слои от nxp
export PATH=${PATH}:~/bin
mkdir yocto-sdk
cd yocto-sdk
repo init -u https://source.codeaurora.org/external/qoriq/qoriq-components/yocto-sdk -b dunfell
repo sync --no-clone-bundle

1.Список используемых слоев и ручное добавление слоев
mkdir yocto-sdk
cd yocto-sdk
mkdir sources
git clone git://git.yoctoproject.org/poky sources/poky
git clone git://git.yoctoproject.org/meta-cloud-services sources/meta-cloud-services
git clone git://git.yoctoproject.org/meta-freescale sources/meta-freescale
git clone git://git.yoctoproject.org/meta-security sources/meta-security
git clone git://git.yoctoproject.org/meta-selinux sources/meta-selinux
git clone git://git.yoctoproject.org/meta-virtualization sources/meta-virtualization
git clone https://github.com/OSSystems/meta-browser sources/meta-browser
git clone https://github.com/kraj/meta-clang sources/meta-clang
git clone https://github.com/Freescale/meta-freescale-distro sources/meta-freescale-distro
git clone https://github.com/openembedded/meta-openembedded sources/meta-openembedded
git clone https://github.com/TimesysGit/meta-timesys sources/meta-timesys
git clone https://source.codeaurora.org/external/qoriq/qoriq-components/meta-qoriq sources/meta-qoriq
cp sources/meta-qoriq/tools/setup-env .


1.1 Приветствие:
Добро пожаловать в Freescale QorIQ SDK (эталонный дистрибутив)
Yocto Project имеет обширную документацию по OE, включая справочное руководство, которое можно найти по адресу:
     http://yoctoproject.org/documentation
Для получения дополнительной информации об OpenEmbedded посетите их веб-сайт:
     http://www.openembedded.org/
Теперь вы можете запустить 'bitbake '
    fsl-image-networking
    fsl-image-networking-full


2. Производим сборку 
cd ~/yocto-sdk
. ./setup-env -m ls1046afrwy
!!! fsl-image-networking - офф образ nxp
!!! fsl-image-networking-full  - офф образ nxp
!!! core-image-sato - будет собран дистрибутив с GUI
!!! core-image-base - базовая версия
!!! core-image-minimal - что то там минимальное
!!! ovs-dpdk - что то там с openvswitch и dpdk
 
bitbake fsl-image-networking

Настройка  fsl-image-multimedia-full убираем x11 и сборка
vim conf/local.conf 
-------------------
DISTRO_FEATURES_remove = " x11" <--- убираем #, раскомментировать строку, тем самым сборка будет без x11
-------------------
Производим сборку:
bitbake fsl-image-multimedia-full

Сборка под sdcard:
wic create ls104x-uboot-bootpart --no-fstab-update -e fsl-image-networking

ссылки:

err: lxc-4.0.1-r
https://github.com/intel/iotg-yocto-ese-manifest/issues/3
http://linuxcontainers.org/downloads/lxc/lxc-4.0.1.tar.gz
https://github.com/WindRiver-Labs/wrlinux-x/issues/14

ERROR: lxc-4.0.1-r0 do_fetch: Fetcher failure for URL: 'http://linuxcontainers.org/downloads/lxc-4.0.1.tar.gz'. Unable to fetch URL from any source.

err: lxc-4.0.1-r
https://github.com/intel/iotg-yocto-ese-manifest/issues/3


fix изменяем слой отредактировав ссылку "SRC_URI = "http://linuxcontainers.org/downloads/${BPN}-${PV}.tar.gz":
vim ~/yocto-sdk/sources/meta-virtualization/recipes-containers/lxc/lxc_4.0.1.bb
---------------------------------------------------------------------
#SRC_URI = "http://linuxcontainers.org/downloads/${BPN}-${PV}.tar.gz - ищем это и изменяем !!! эту стоку удаляем
SRC_URI = "http://linuxcontainers.org/downloads/lxc/${BPN}-${PV}.tar.gz
---------------------------------------------------------------------

ERROR: go-systemd-4+gitAUTOINC+b4a58d9518-r0 do_fetch: Fetcher failure for URL: 'git://github.com/coreos/go-systemd.git'. Unable to fetch URL from any source.

https://github.com/WindRiver-Labs/wrlinux-x/issues/14

vim ~/yocto-sdk/sources/meta-virtualization/recipes-devtools/go/go-systemd_git.bb
---------------------------------------------------------------------------------
#SRC_URI = "git://${PKG_NAME}.git" - это меняем и не забываем что комментарии тут оставлять не льзя
SRC_URI = "git://${PKG_NAME}.git;branch=main" 
---------------------------------------------------------------------------------

ERROR git

Иногда встречаются ошибки связанные с git и yocto подсказывает что надо сделать, и пишет какую надо сделать команду git.
Пример:
git config --global --add safe.directory ~/yocto-sdk/build_ls1046afrwy/tmp/work/aarch64-fsl-linux/gnulib/2018-03-07.03-r0/git

ERROR: Task (~/yocto-sdk/sources/meta-virtualization/recipes-devtools/go/go-systemd_git.bb:do_deploy_source_date_epoch) failed with exit code '1'

#https://community.nxp.com/t5/i-MX-Processors/ERROR-do-fetch-Fetcher-failure-for-URL-git-github-com-fsnotify/m-p/1401484

vim ~/yocto-sdk/sources/meta-virtualization/recipes-devtools/go/go-systemd_git.bb
---------------------------------------------------------------------------------
#SRC_URI = "git://${PKG_NAME}.git;branch=master;protocol=https""  - меняем это
SRC_URI = "git://${PKG_NAME}.git;branch=main;protocol=https" 
---------------------------------------------------------------------------------

u-boot tftp

=> setenv ipaddr 
=> setenv serverip 
LS1046ARDB и FRWY-LS1046A
=> setenv bootargs root=/dev/ram0 rw console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 ramdisk_size=0x10000000
LX2160ARDB (rev1.0 and rev2.0)
=> setenv bootargs console=ttyAMA0,115200 root=/dev/ram0 rw earlycon=pl011,mmio32,0x21c0000 ramdisk_size=0x2000000 default_hugepagesz=1024m hugepagesz=1024m hugepages=2 pci=pcie_bus_perf
Download:
LS1046ARDB:
=> tftp 0x8f000000 fsl-ls1046a-rdb-sdk.dtb
LX2160ARDB:
=> tftp 0x8f000000 fsl-lx2160a-rdb.dtb
=> booti 0x82000000 0xa0000000 0x8f000000

Booting board with full rootfs from large storage device

1. Prepare the media (SD/USB/SATA) and format it to ext2 format.
2. Mount the ext2 partition, extract a full rootfs into this partition, and unmount the partition.
3. Power up or reset the board.
4. Press a key on the keyboard when prompted on the terminal to enter into the U-Boot command line.
5. Set up the environment in U-Boot using command described in the table below.

LS1046ARDB and  FRWY-LS1046A
=> setenv bootargs root=/dev/sda* rootdelay=5 rw console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500

LX2160ARDB
=> setenv bootargs console=ttyAMA0,115200 root=/dev/sda* rw rootdelay=10 earlycon=pl011,mmio32,0x21c0000 ramdisk_size=0x2000000 default_hugepagesz=1024m hugepagesz=1024m hugepages=2 pci=pcie_bus_perf

enable DPAA2 Ethernet in Linux using commands

LX2160ARDB:
=> sf probe 0:0
=> sf read 0x80a00000 0xa00000 0x300000
=> sf read 0x80e00000 0xe00000 0x100000
=> fsl_mc start mc 0x80a00000 0x80e00000
=> sf read 0x80d00000 0xd00000 0x100000
=> fsl_mc lazyapply dpl 0x80d00000

Download images and boot up:

LS1046ARDB:
=> tftp 0x8f000000 fsl-ls1046a-rdb-sdk.dtb

FRWY-LS1046A:
=> tftp 0x8f000000 fsl-ls1046a-frwy-sdk.dtb

LX2160ARDB:
=> tftp 0x8f000000 fsl-lx2160a-rdb.dtb
=> booti 0x82000000 - 0x8f000000

Program TF-A binaries on NAND flash:

1. Boot the board from default bank.
2. Flash bl2_nand.pbl to NAND flash:
=> tftp 82000000 $path/bl2_nand.pbl
=> nand erase 0x0 $filesize;nand write 0x82000000 0x0 $filesize;
3. Flash fip_uboot.bin to NAND flash:
=> tftp 82000000 $path/fip_uboot.bin
=> nand erase 0x100000 $filesize;nand write 0x82000000 0x100000 $filesize;
4. Boot the board from NAND flash. The board boots with TF-A.

Question:

Question 1: How can I compile ATF with OPTEE?
Answer: For compiling ATF with OPTEE, add the below line in your conf/local.conf file:
DISTRO_FEATURES_append = " optee"

Question 2: How can I compile ATF with RCW image that is different from default image?
Answer: Modify RCWNOR or RCWSD and RCWNAND in .conf file. 
For example, update ls1043ardb.conf file in meta-freescale layer as follows:
RCWNOR ?= "RR_FQPP_1455/rcw_1600"

Question 3: How can I add custom additional packages to default rootfs?
Answer: Set IMAGE_INSTALL_append in the conf/local.conf file.
Рубрики
dev

yocto project / debian 11 / raspberry pi

Ссылки:

https://autobuilder.yoctoproject.org/typhoon/#/ - имиджи,  билды
https://docs.yoctoproject.org/2.5/mega-manual/mega-manual.html - хороший мануал от разработчиков yocto
https://www.yoctoproject.org/
https://layers.openembedded.org/layerindex/branch/master/layers/
https://git.yoctoproject.org/
https://youtu.be/EVQ47PvlORE - не плохое видео на тему установки и настройки yocto 
https://www.embeddedts.com/blog/building-a-yocto-image-for-nxp-i-mx6-products/
https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html

https://wiki.yoctoproject.org/wiki/Main_Page



https://docs.yoctoproject.org/2.1/ref-manual/ref-manual.html#ref-images
https://docs.yoctoproject.org/2.1/bitbake-user-manual/bitbake-user-manual.html#bitbake-user-manual-command
https://docs.yoctoproject.org/2.1/ref-manual/ref-manual.html#var-PACKAGE_CLASSES
https://docs.yoctoproject.org/2.1/dev-manual/dev-manual.html#dev-manual-newbie
https://docs.yoctoproject.org/2.1/dev-manual/dev-manual.html#dev-manual-model
https://docs.yoctoproject.org/2.1/dev-manual/dev-manual.html#dev-manual-intro

Требования:

50 свободное место под yocto (на самом деле 150+ желательно, зависит от проекта)
Рекомендованные дистрибутивы linux: Fedora, openSUSE, CentOS, Debian, Ubuntu
Git 1.8.3.1 или выше
tar 1.27 или выше
Python 3.4.0 или выше

Добавляем родные репы в /etc/apt/source.list:

deb http://deb.debian.org/debian bullseye main contrib non-free
deb-src http://deb.debian.org/debian bullseye main contrib non-free
 
deb http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
deb-src http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
 
deb http://deb.debian.org/debian bullseye-updates main contrib non-free
deb-src http://deb.debian.org/debian bullseye-updates main contrib non-free
 
deb http://deb.debian.org/debian bullseye-backports main contrib non-free
deb-src http://deb.debian.org/debian bullseye-backports main contrib non-free

отключаем ipv6 / мне он там не нужен (:

0. Добавляем в конец
vim /etc/sysctl.conf 
---------------------
#disable ipv6 settins
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.enp1s0.disable_ipv6 = 1
--------------------
Сохраняем файл.
 
1. Применяем:
sysctl -p

Для удобства доступа к серверу yocto:

0. что бы не водить пароли на своем ПК можно сгенерировать ключ и отправить публичный ключ на будущий сервер yocto
ssh-keygen - генерируем ключи
ssh-copy-id user@ip - копирование публичного ключа

1. что бы каждый раз не вводить пароли при sudo можно разрешить
visudo
-----------------
... <-- какой то текст выше
# User privilege specification
root    ALL=(ALL:ALL) ALL
user  ALL=(ALL) NOPASSWD: ALL  <--- пишем примерно следующие, где user, ваш пользователь
... <-- какой то текст ниже 
-----------------

2. Добавление пользователя в группу root
usermod -aG sudo user

4. Настройки для vim 
cat > ~/.vimrc << "EOF"
"color blue
"color evening
color morning
set mouse=v
syntax on
EOF

5. Добавление swap / я создаю виртуалки без раздела подкачки
fallocate -l 1G /.swap
chmod 600 /.swap
mkswap /.swap
echo '/.swap none swap defaults 0 0' >> /etc/fstab
swapon /.swap

Установка необходимых пакетов для yocto на debian 11:

apt install vim sudo gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pyelftools python3-pexpect xz-utils debianutils iputils-ping libsdl1.2-dev xterm

Версия python 3+ по умолчанию:

update-alternatives --list python - проверяем
update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1

Для любителей поставить русскую local нужно добавить еще local en_US.UTF-8:

0. vim /etc/locale.gen
-------------------
en_US.UTF-8           <---------- найти и раскоментить
------------------

1. Перечитать local:
locale-gen

На этом все, теперь у вас должна появится local en_US.UTF-8

Установка yocto:

0. В домашнем каталоге создаем каталог yocto и входим в него 
mkdir yocto
cd yocto

1. Создаем каталог и начинаем скачивать пакеты для сборки yocto
mkdir sources
cd sources
git clone git://git.yoctoproject.org/poky -b dunfell
git clone git://git.yoctoproject.org/meta-raspberrypi -b dunfell
git clone https://git.openembedded.org/meta-openembedded -b dunfell

2. Выполняем инициализацию окружения
!!! после применения команд ниже будет создан каталог build
!!! если мы хотим использовать свое имя для каталога build то вводим ". sources/poky/oe-init-build-env YOU_NAME"
cd ~/yocto
. sources/poky/oe-init-build-env


3. настраиваем слои:
!!! Внимание вот тут может быть косяк с путями до файлов
!!! сама yocta в этом файле генерирует прямые пути до файлов
vim conf/bblayers.conf
----------------------
# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
POKY_BBLAYERS_CONF_VERSION = "2"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " 
  ${TOPDIR}/../yocto/sources/poky/meta 
  ${TOPDIR}/../yocto/sources/poky/meta-poky 
  ${TOPDIR}/../yocto/sources/poky/meta-yocto-bsp 
  ${TOPDIR}/../yocto/sources/meta-raspberrypi 
  ${TOPDIR}/../yocto/sources/meta-openembedded/meta-oe 
  ${TOPDIR}/../yocto/sources/meta-openembedded/meta-networking 
  ${TOPDIR}/../yocto/sources/meta-openembedded/meta-python 
  "
----------------------

4. Устройство для которого мы собираем сборку yocto
Редактируем файл:
vim conf/local.conf
-------------------
#MACHINE ??= "qemux86-64" - эту строку мы комментируем
MACHINE ?= "raspberrypi0-wifi" - добавляем рядом  само имя мы нашли на сайте yocto
DISTRO ?= "poky" - используемый дистрибутив, пока не трогаем
-------------------


5. Преступая к сборке инфа
core-image-sato - будет собран дистрибутив с GUI
core-image-base - базовая версия
core-image-minimal - что то там минимальное

6. Сборка
cd ~/yocto
bitbake core-image-base

7. После сборки:
файлы .bz2 (.wic) sdimg
Собранное искать в каталоге yocto/build/tmp/deploy/images/raspberrypi0-wifi

8. Пример записи на sd карту:
dd if=tmp/deploy/images/raspberrypi3-64/core-image-base-raspberrypi3-64.rpi-sdimg of=/dev/sdX
dd if=core-image-minimal-raspberrypi0-wifi.wic of=/dev/sdh bs=1M


Добавить слой:

Чтобы добавить слой в файл конфигурации:
bitbake-layers add-layer
Рубрики
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