===== Сборка программной части для IMX8M_MN/MM =====
Для сборки загрузчика, ядра и файловой системы, нужно скачать три файла с {{https://disk.yandex.ru/d/yM9h7JoW7H-CYw|диска}}: SDK, firmware, dl.tar.gz, файл образа контейнера и в терминале перейти в каталог с файлами:
* Распаковать sdk tar -xvf sdk_2021.04.24.tar.gz
* Разрешить запуск firmware-imx-8.10.bin chmod +x firmware-imx-8.10.bin
* Cкопировать firmware-imx-8.10.bin в папку sdk_2021.04.24/bootloader cp firmware-imx-8.10.bin sdk_2021.04.24/bootloader
* Собрать образ контейнера sudo docker build -t px30_generic .
==== kernel ====
Для сборки kernel,dtb, нужно перейти в каталог sdk_2021.04.24 и выполнить команду:
sudo docker run -v $(pwd):/BR -t px30_generic make -C /BR/kernel
Результат:
* //kernel/linux-imx/arch/arm64/boot/Image//
* //kernel/linux-imx/arch/arm64/boot/dts/freescale/imx8mm-inmys-uq7-evk-lvds.dtb//
==== bootloader ====
Для сборки bootloader для загрузки с QSPI, нужно перейти в каталог sdk_2021.04.24 и выполнить команду:
sudo docker run -v $(pwd):/BR -t px30_generic make -C /BR/bootloader
Результат:
* //bootloader/uboot-imx/flash.bin.fspi//
Для сборки bootloader для загрузки с sd card, нужно перейти в каталог sdk_2021.04.24 и выполнить команду:
sudo docker run -v $(pwd):/BR -t px30_generic make -C /BR/bootloader flash.bin.sdcard
Результат:
* //bootloader/uboot-imx/flash.bin.sdcard//
Сделать SDcard загрузочной (установка bootloader на SDcard)
dd if=bootloader/uboot-imx/flash.bin.sdcard of=/dev/sdX bs=1024 seek=33
==== rootfs ====
Для сборки 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//
==== создание загрузочной sd карты ====
понадобятся 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
==== Советы howto ====
вот так можно собрать cmake проект:
BR= #/xxx/xxx/buildroot-2020.11
cmake -DCMAKE_TOOLCHAIN_FILE=${BR}/output/host/usr/share/buildroot/toolchainfile.cmake .
make
в toolchainfile.cmake указаны пути к компилятору. библиотекам и includ-ам