Для сборки загрузчика, ядра и файловой системы, нужно скачать три файла с диска: SDK, firmware, dl.tar.gz, файл образа контейнера и в терминале перейти в каталог с файлами:
tar -xvf sdk_2021.04.24.tar.gz
chmod +x firmware-imx-8.10.bin
cp firmware-imx-8.10.bin sdk_2021.04.24/bootloader
sudo docker build -t px30_generic .
Для сборки kernel,dtb, нужно перейти в каталог sdk_2021.04.24 и выполнить команду:
sudo docker run -v $(pwd):/BR -t px30_generic make -C /BR/kernel
Результат:
Для сборки bootloader для загрузки с QSPI, нужно перейти в каталог sdk_2021.04.24 и выполнить команду:
sudo docker run -v $(pwd):/BR -t px30_generic make -C /BR/bootloader
Результат:
Для сборки bootloader для загрузки с sd card, нужно перейти в каталог sdk_2021.04.24 и выполнить команду:
sudo docker run -v $(pwd):/BR -t px30_generic make -C /BR/bootloader flash.bin.sdcard
Результат:
Сделать SDcard загрузочной (установка bootloader на SDcard)
dd if=bootloader/uboot-imx/flash.bin.sdcard of=/dev/sdX bs=1024 seek=33
Для сборки rootfs, нужно перейти в каталог sdk_2021.04.24 и выполнить команду:
sudo docker run -v $(pwd):/BR -t px30_generic make -C /BR/rootfs
Начнёт скачиваться buildroot. На некотором моменте загрузка завершится с ошибкой, нужно будет распаковать архив dl:
sudo tar -xvf ../dl.tar.gz -C rootfs/buildroot-2020.11
Выполнить очистку проекта
cd rootfs/buildroot-2020.11/ sudo make clean cd ../../
Запустить сборку второй раз:
sudo docker run -v $(pwd):/BR -t px30_generic make -C /BR/rootfs
Результат: rootfs/buildroot-2020.11/output/images/rootfs.ext2
понадобятся bootloader/uboot-imx/flash.bin.sdcard rootfs/buildroot-2020.11/output/images/rootfs.ext2 (собранные есть на яндекс диске: https://disk.yandex.ru/d/yM9h7JoW7H-CYw)
sudo su cd <...>/sdk_2021.04.24 dev=/dev/sdX umount ${dev}* echo 'o n p 1 16384 +2G n p 2 4210688 +1G w'| tr ' ' '\n' | fdisk ${dev} dd if=rootfs/buildroot-2020.11/output/images/rootfs.ext2 of=${dev}1 bs=1M dd if=bootloader/uboot-imx/flash.bin.sdcard of=${dev} bs=1024 seek=33 sync
Вставить sd карту в отладочную плату, установить jumper «bios_dis» (загружаться с sdcard а не с qspi) подать питание, в u-boot, после «Hit any key to stop autoboot:» ввести
setenv mmcdev 1 saveenv boot
вот так можно собрать cmake проект:
BR=<path_to_buildroot> #/xxx/xxx/buildroot-2020.11 cmake -DCMAKE_TOOLCHAIN_FILE=${BR}/output/host/usr/share/buildroot/toolchainfile.cmake . make в toolchainfile.cmake указаны пути к компилятору. библиотекам и includ-ам