Сборка загрузчика U-boot для Orange Pi Zero
Ожидает приглашения
В данной статье мы соберем bootloader для Orange Pi Zero. Это пригодится тем кто хочет в дальнейшем с помощью bootloader (u-boot)+ kernel + rootfs (busybox) собрать и запустить свою embedded систему на одно платном компьютере.
Что нам необходимо:
Hardware:
— Orange PI Zero.
— Преобразователь USB-TTL.
— SD карта (минимальный размер 4Гб, и класс не ниже 6-го).
Software:
— OS Ubuntu (у меня 19.04).
— Cross compiler.
— Serial terminal (у меня GTKTerm).

Одно платный компьютер Orange Pi Zero на базу процессора Allwinner H2(Cortex A7 ) 1.2 GHz. На одноплатнике такде присутствует графический ускоритель GPU Mali400MP2. Размер ОЗУ 512 Мб DDR3 SDRAM.
Поддерживаемые ОС: Armbian, Android, Lubuntu, Debian, Raspbian и т.д.
Цена: ~11$ (включая доставку в Украину).
Подключение Debug вывод Orange Pi Zero к ноутбуку:
Подключаем USB-TTL к Orange Pi соглаcно такой схемы:

Далее настраиваем GTKTerm (порт: USB0, скорость 115200, остальное по-умолчанию):

Das U-Boot — компьютерный загрузчик операционной системы, ориентированный на встроенные устройства архитектур MIPS, ARM и т.д.
Загрузка U-Boot происходит в два этапа:
Откуда скачать (у меня версия U-Boot 2019.07-rc3):
Далее распаковываем архив и переходим в корень.
1.1 Очищаем, результат прошлой сборки:
1.2 Указывает defconfig, cross compiler и собирает загрузчик:
В результате мы получим:

Из всех файлов с префиксом u-boot. u-boot.bin, нам нужен файл с пост фиксом «u-boot-sunxi-with-spl.bin».
В моем случаем имя SD карты — /dev/mmcblk0.
2.1 Отмантируем SD карту:
2.2 Разбивает SD карту на два раздела (1-й для U-boot, 2-й для корня системы):
2.3 Форматируем файловые системы на 1-м и 2-м разделе:
2.4 Записываем bootloader на SD карту:
Вставляем SD карту в Orange Pi Zero и запускаем.
Если все правильно было выполнено, то на Debug порте будет следующий вывод:

Далее у вас посыпятся ошибки и u-boot снова перегрузиться, это нормально т.к мы не указали ему Kernel и rootfs.
Что нам необходимо:
Hardware:
— Orange PI Zero.
— Преобразователь USB-TTL.
— SD карта (минимальный размер 4Гб, и класс не ниже 6-го).
Software:
— OS Ubuntu (у меня 19.04).
— Cross compiler.
— Serial terminal (у меня GTKTerm).

Одно платный компьютер Orange Pi Zero на базу процессора Allwinner H2(Cortex A7 ) 1.2 GHz. На одноплатнике такде присутствует графический ускоритель GPU Mali400MP2. Размер ОЗУ 512 Мб DDR3 SDRAM.
Поддерживаемые ОС: Armbian, Android, Lubuntu, Debian, Raspbian и т.д.
Цена: ~11$ (включая доставку в Украину).
Подключение Debug вывод Orange Pi Zero к ноутбуку:
Подключаем USB-TTL к Orange Pi соглаcно такой схемы:

Далее настраиваем GTKTerm (порт: USB0, скорость 115200, остальное по-умолчанию):

1. Сборка загрузчика U-boot для Orange Pi Zero
Das U-Boot — компьютерный загрузчик операционной системы, ориентированный на встроенные устройства архитектур MIPS, ARM и т.д.
Загрузка U-Boot происходит в два этапа:
- С начало первичный загрузчик BootROM копирует U-Boot SPL в оперативную память и передает ему управление.
- U-Boot SPL копирует основной загрузчик U-Boot в оперативную память передает ему управление.
- Далее U-boot загружает Kernel.
Откуда скачать (у меня версия U-Boot 2019.07-rc3):
ftp.denx.de/pub/u-boot
Далее распаковываем архив и переходим в корень.
1.1 Очищаем, результат прошлой сборки:
make distclean
1.2 Указывает defconfig, cross compiler и собирает загрузчик:
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- orangepi_zero_defconfig
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
Зачем нужна кросс компиляция?
Ответ очень прост, так как у нас целевая платформа ARM (Orange Pi Zero), а собирает bootloader мы на ноутбуке или персональном компьютере (архитектура x86), мы должны компилировать с помощью cross compiler.
В результате мы получим:

Из всех файлов с префиксом u-boot. u-boot.bin, нам нужен файл с пост фиксом «u-boot-sunxi-with-spl.bin».
2. Подготавливаем разделы на SD карте
Как узнать какое имя у SD карты?
В каталоге /dev/ появится новая SD карта как SCSI-устройство (sda ...), либо как блочная MMC память (mmcblk0...)


В моем случаем имя SD карты — /dev/mmcblk0.
2.1 Отмантируем SD карту:
sudo umount /dev/mmcblk*
2.2 Разбивает SD карту на два раздела (1-й для U-boot, 2-й для корня системы):
sudo umount /dev/mmcblk0
sudo parted -s /dev/sdx \
mklabel msdos mkpart \
primary ext3 10M 26M \
mkpart primary ext4 26M 100%
2.3 Форматируем файловые системы на 1-м и 2-м разделе:
sudo mkfs.ext3 /dev/mmcblk0p1
sudo mkfs.ext4 /dev/mmcblk0p2
2.4 Записываем bootloader на SD карту:
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8
Вставляем SD карту в Orange Pi Zero и запускаем.
Если все правильно было выполнено, то на Debug порте будет следующий вывод:

Далее у вас посыпятся ошибки и u-boot снова перегрузиться, это нормально т.к мы не указали ему Kernel и rootfs.