Глава 4. SDK Линукс - Linux SDK
4.3. Компиляция u-boot (Compile u-boot)
1) Прежде всего следует отметить, что в исходном коде u-boot нет исходного кода boot0,
эта часть исходного кода в настоящее время не открыта, предоставляется только bin-файл boot0
2) Запустите скрипт build.sh, не забудьте добавить sudo permissions
test@test:~/orangepi-build$ sudo ./build.sh
3) Выберите пакет U-boot package , затем нажмите Enter.
4) Затем выберите модель платы orangepiaero2
5) Затем он начнет компилировать u-boot, некоторая информация, запрашиваемая во время компиляции:
a) исходная версия u-boot
[ o.k. ] Compiling u-boot [ v2018.05 ]
b) Версия инструментар кросс-компиляции
[ o.k. ] Compiler version [ arm-linux-gnueabi-gcc 7.4.1 ]
c) Путь к пакету u-boot
[ o.k. ] Target directory [ orangepi-build/output/debs/u-boot ]
d) Имя пакета пакета u-boot, созданного при компиляции
[ o.k. ] File name [ linux-u-boot-legacy-orangepizero2_2.0.8_arm64.deb ]
е) Время компиляции
[ o.k. ] Runtime [ 1 min ]
f) Повторите команду для компиляции u-boot, используйте следующую команду,
не выбирая через графический интерфейс, вы можете начать компиляцию u-boot напрямую
[ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepizero2
BRANCH=legacy BUILD_OPT=u-boot KERNEL_CONFIGURE=no ]
6) Просмотрите скомпилированный тест пакета
test@test:~/orangepi-build$ ls output/debs/u-boot/
linux-u-boot-legacy-orangepizero2_2.0.8_arm64.deb
7) В созданном пакете u-boot deb содержатся следующие файлы:
Используйте следующие команды, чтобы распаковать пакет deb
test@test: ~/orangepi-build$ cd output/debs/u-boot
test@test:~/orangepi_build/output/debs/u-boot$ $ dpkg -x linux-u-boot-legacy-orangepizero2_2.0.8_arm64.deb .
(Обратите внимание, что в конце команды есть символ точка)
test@test: ~/orangepi_build/output/debs/u-boot$ ls
linux-u-boot-current-orangepizero_2.0.8_armhf.deb usr
Распакованные файлы выглядят следующим образом (3 каталога, 6 файлов):
test@test: ~orangepi-build/output/debs/u-boot$ tree usr/
usr/
lib
linux-u-boot-legacy-orangepizero2_2.0.8_arm64
boot0_sdcard.fex
boot_package.fex
u-boot
LICENSE
orangepi_zero2_defconfig
orangepizero2-u-boot.dts
platform_install.sh
8) Когда ОС сборки orangepi-bulid компилирует исходный код u-boot, она сначала синхронизирует
исходный код u-boot с исходным кодом u-boot сервера github, поэтому,
если вы хотите изменить исходный код u-boot , вам сначала необходимо отключить функцию
загрузки и обновления исходного кода
(вам нужно скомпилировать u-boot один раз, чтобы отключить эту функцию, иначе вам будет предложено
найти исходный код u-boot), в противном случае внесенные изменения будут восстановлены.
Способ следующий:
Установите для переменной IGNORE_UPDATES в userpatches/config-default.conf значение yes
test@test: ~/orangepi-build$ vim userpatches/config-default.conf
IGNORE_UPDATES="yes"
9) При отладке кода u-boot вы можете использовать следующий метод для обновления
u-boot в образе linux для тестирования
a) Загрузите скомпилированный пакет u-boot deb в ОС linux платы разработки
test@test:~/orangepi-build$ cd output/debs/u-boot
test@test: ~/orangepi_build/output/debs/u-boot$ scp \
linux-u-boot-legacy-orangepizero2_2.0.8_arm64.deb root@192.168.1.xxx:/root
b) Затем войдите в плату, удалите установленный deb-пакет u-boot
root@orangepi: ~# apt purge -y linux-u-boot-orangepizero2-legacy
c) Установите только что загруженный новый пакет u-boot deb
root@orangepi:~# dpkg -i linux-u-boot-legacy-orangepizero2_2.0.8_arm64.deb
d) Затем запустите скрипт nand-sata-install
root@orangepi:~# nand-sata-install
e) Затем выберите 5 Install/Update the bootloader on SD/eMMC.
f) После нажатия клавиши Enter сначала появится предупреждение:
g) Нажмите Enter еще раз, чтобы начать обновление u-boot, и после обновления
отобразится следующая информация
h) Затем вы можете перезапустить, чтобы проверить, вступили ли в силу изменения u-boot.