загрузчик U-boot и сериальная отладка
- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
загрузчик U-boot и сериальная отладка
Вопросы того:
- как устроен и работает загрузчик U-boot
- как скомпилировать U-boot
- как поместить U-boot на SD-карточку для SoC
- как вести удалённую сериальную отладку U-boot, получать сообщения загрузчика
- как устроен и работает загрузчик U-boot
- как скомпилировать U-boot
- как поместить U-boot на SD-карточку для SoC
- как вести удалённую сериальную отладку U-boot, получать сообщения загрузчика
- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: загрузчик U-boot и сериальная отладка
Das U-BootOlej писал(а): - как устроен и работает загрузчик U-boot
Das U-Boot (англ. Universal bootloader — универсальный загрузчик, от нем. Das U-Boot — подводная лодка) — компьютерный загрузчик операционной системы, ориентированный на встроенные устройства архитектур MIPS, PowerPC, ARM и другие. Может быть установлен в загрузочную ПЗУ. Разработка ориентирована на Linux. Распространяется под лицензией GNU GPL.
Важность Das U-Boot в Embedded Linux систем достаточно лаконично изложена в книге Embedded Linux системы, Карим Ягмур. Текст о U-Boot начинается словами: «Хотя существует довольно много других загрузчиков, Das U-Boot, универсальный загрузчик, возможно, является самым богатым, самым гибким и наиболее активно развивающимся из загрузчиков с открытым исходным кодом».
Поддерживаемые файловые системы
Squashfs (Cramfs)
ext2
ext4
FAT
FDOS
JFFS2
ReiserFS
UBIFS
YAFFS2
ZFS
- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: загрузчик U-boot и сериальная отладка
По поводу U-boot для Orange Pi - очень полезные замечания, что их стоит скопировать на память:
u-boot. запросто и быстро компилируется на OPi
надо например мне включить в u-boot CONFIG_OLD_SUNXI_KERNEL_COMPAT=yкопирую туда .config моей платы,Код: Выделить всё
git clone http://git.denx.de/u-boot-sunxi.git cd u-boot-sunxi
затем:
пара минут иКод: Выделить всё
make menuconfig make -j4
Здесь, первая команда предназначена для очистки переменных окружения U-Boot, а вторая, – для записи начального SPL загрузчика и, непосредственно, U-Boot.Код: Выделить всё
dd if=/dev/zero of=/dev/mmcblk0 bs=1024 seek=544 count=128 dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8
правда u-boot патчить перед сборкой надо, но для проверки сойдёт.Код: Выделить всё
reboot
и да дебаг-консоль CH340/CH340G, с помощью неё можно подключится к serial console на плате, где будет выводиться информация, которую будет писать U-Boot, а потом и ядро если загрузиться.
И, наконец:цифры длин и смещений отсюда: https://github.com/linux-sunxi/u-boot-sunxi/wikiА откуда вы взяли цифры длин и смещений?
u-boot for Allwinner sunxi series of SoCs (A10, A13, A10s, and A20)
...
Storage map
How the SD-Card is used by u-boot-mmc, counted in 512B sectors / 1KB blocks:
sector start size
0 0 8KB Unused, available for partition table etc.
16 8 32KB Initial SPL loader
80 40 504KB u-boot (sector 64 / 32KB for 2013.07 and earlier)
1088 544 128KB environment
1344 672 128KB Falcon mode boot params
1600 800 ---- Falcon mode kernel start
2048 1024 - Free for partitions (higher if using Falcon boot)
- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: загрузчик U-boot и сериальная отладка
Для отладки U-boot (да и вообще отладки) используем UART отладочный выход, который есть даже на Orange Pi One (как младшей модели) ... но об этом часто не пишут.
Вот пишут: 5 Распиновка Orange Pi One & Lite

Со стороны Armbian этот отладочный порт выглядит так:
Вот пишут: 5 Распиновка Orange Pi One & Lite
Просто эти 3 штырька торчат особняком, впритык к сетевому RG-45, не обозначены, и в большинстве описаний OPi One, почему то ???, вообще не упоминаются:5.1 GPIO — 40 Выводов общего назначения
5.2 CSI — Разъем камеры
5.3 UART отладочный вывод
...
1 GND
2 RX
3 TX

Со стороны Armbian этот отладочный порт выглядит так:
Код: Выделить всё
root@orangepione:~# stty < /dev/ttyS0
speed 115200 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel iutf8
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: загрузчик U-boot и сериальная отладка
А для подключения этого UART отладочного выхода к инструментальному (отладочному) компьютеру используем USB/UART конверторы:Olej писал(а):Для отладки U-boot (да и вообще отладки) используем UART отладочный выход,
Вот такой я нашёл/заказал вот такое чудо за 19,89 грн.
Адаптер USB COM RS232 TTL PL2303 Arduino

P.S. Поражает размах воображения

Но нашёл/заказал ещё и вот такой конвертер с кабелем (с конвертерами-платками я когда-то сталкивался, а вот такое чудо вижу впервые ... новинка?):
Тоже можно найти по цене 45 грн. ... а можно и за 100 грн.

P.S. Если кого смущают единицы измерения стоимости в грн., то умножте цифры на 2 и получите руб.

Со стороны инструментального компьютера (на Linux, разумеется) этот канал отображается как /dev/ttyUSB0 (или /dev/ttyUSB1 и т.д.).
И подключаемся к нему любой утилитой монитором сериального порта.
- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: загрузчик U-boot и сериальная отладка
Как работать с этим портом?Olej писал(а): Со стороны инструментального компьютера (на Linux, разумеется) этот канал отображается как /dev/ttyUSB0 (или /dev/ttyUSB1 и т.д.).
И подключаемся к нему любой утилитой монитором сериального порта.
(даже не работать, собственно, а наблюдать ... потому что нас интересует односторонний приём)
1. Тот же многоликий и вездесущий putty (так любимый выньдаунами, потому что он у них единственный

2. Возможно даже так прокатит, учитывая интерес только к однонаправленному обмену (только чтение), от root, естественно:
Код: Выделить всё
# cat /dev/ttyUSB0
...
Да, есть такой пакет (практически в любом дистрибутиве) ... требует установки...
Код: Выделить всё
[olej@xenix My.pasport]$ yum list screen
Последняя проверка окончания срока действия метаданных: 6 days, 22:30:24 назад, Пт 01 июн 2018 18:04:24.
Имеющиеся пакеты
screen.x86_64 4.6.2-1.fc27 updates
[olej@xenix My.pasport]$ sudo yum install screen
[sudo] пароль для olej:
Последняя проверка окончания срока действия метаданных: 1:14:34 назад, Пт 08 июн 2018 15:20:33.
Зависимости разрешены.
========================================================================================================================
Пакет Архитектура Версия Репозиторий Размер
========================================================================================================================
Установка:
screen x86_64 4.6.2-1.fc27 updates 577 k
Результат транзакции
========================================================================================================================
Установка 1 Пакет
Объем загрузки: 577 k
Объем изменений: 942 k
Продолжить? [д/Н]: y
Загрузка пакетов:
screen-4.6.2-1.fc27.x86_64.rpm 1.2 MB/s | 577 kB 00:00
------------------------------------------------------------------------------------------------------------------------
Общий размер 441 kB/s | 577 kB 00:01
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
Подготовка : 1/1
Запуск скриптлета: screen-4.6.2-1.fc27.x86_64 1/1
Установка : screen-4.6.2-1.fc27.x86_64 1/1
Запуск скриптлета: screen-4.6.2-1.fc27.x86_64 1/1
Running as unit: run-rb1f9ec94b5154fbebb2364b1c22b55ab.service
Проверка : screen-4.6.2-1.fc27.x86_64 1/1
Установлено:
screen.x86_64 4.6.2-1.fc27
Выполнено!
Код: Выделить всё
# screen /dev/ttyUSB0 115200
...
4. Наконец ... общеизвестный и добротный:
Я пользуюсь minicomне забудьте добавить себя в группу dialout или др. кому будут принадлежать /dev/ttyS0 .. /dev/ttyUSB0 в вашем дистрибе, ну или от рута или через sudo.Код: Выделить всё
# minicom -D /dev/ttyUSB0
- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: загрузчик U-boot и сериальная отладка
Сегодня получил это чудо.Olej писал(а): Но нашёл/заказал ещё и вот такой конвертер с кабелем (с конвертерами-платками я когда-то сталкивался, а вот такое чудо вижу впервые ... новинка?):
Единственный минус - никакого сопроводительного описания на него, конечно, нет, а его 4 шнурка UART - никак не подписаны, естественно.

Называется это чудо у продавцов так: "USB-UART конвертер PL2303HX/CH340G в корпусе с кабелем", а распиновка по цвету проводов (если не врут

- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: загрузчик U-boot и сериальная отладка
Проверяю подключение соединения со стороны UART (SoC)...Olej писал(а):5.3 UART отладочный вывод
...
1 GND
2 RX
3 TX
И, конечно, как всегда - для начала ошибся.
Потому как:
1. Картинка выше - "вывернута наизнанку", этот разъём UART и увидеть нельзя в такой ориентации (слева-направо), его закрывает RG-45 ... или только можно, но с тыльной стороны, со стороны печатной платы. А нам нужны штырьки для подключения, которые слева-направо выглядят так: TX - RX - GND - так как на 2-й картинке:

2. Но на этой 2-й картинке штырьки подписаны с точки зрения функционального назначения SoC. А нам кабель UART нужно подключить перекрёстно, поменяв TX - RX относительно того, что на картинке, с точностью до наоборот...
3. В итоге, подключение штырьков - слева-направо:
3 - белый (со стороны края платы, TX SoC)
2 - зелёный
1 - чёрный
- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: загрузчик U-boot и сериальная отладка
Теперь можно проверять соединение...Olej писал(а): 3. В итоге, подключение штырьков - слева-направо:
3 - белый (со стороны края платы, TX SoC)
2 - зелёный
1 - чёрный
Со стороны Orange Pi:
Код: Выделить всё
root@orangepione:~# stty < /dev/ttyS0
speed 115200 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel iutf8
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
Код: Выделить всё
nvidia ~ # stty -F/dev/ttyUSB0 -a
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
Код: Выделить всё
nvidia ~ # stty -F/dev/ttyUSB0 115200
nvidia ~ # stty -F/dev/ttyUSB0 -a
speed 115200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
Передача со стороны десктопа:
Код: Выделить всё
nvidia ~ # echo 12345 > /dev/ttyUSB0
Код: Выделить всё
root@orangepione:~# cat /dev/ttyS0
12345
^C

- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: загрузчик U-boot и сериальная отладка
Для работы с сериальной консолью можно использовать любой монитор последовательной линии ... а их миллион.Olej писал(а):Всё путём- соединение ОК.
Если не установлен - можете установить дополнительно:
Код: Выделить всё
olej@nvidia ~/2018_WORK/Bilety/06.14_malevich $ apt install minicom
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Рекомендуемые пакеты:
lrzsz
НОВЫЕ пакеты, которые будут установлены:
minicom
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 232 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 928 kB.
Пол:1 http://archive.ubuntu.com/ubuntu xenial/universe amd64 minicom amd64 2.7-1build1 [232 kB]
Получено 232 kБ за 0с (328 kБ/c)
Выбор ранее не выбранного пакета minicom.
(Чтение базы данных … на данный момент установлено 468685 файлов и каталогов.)
Подготовка к распаковке …/minicom_2.7-1build1_amd64.deb …
Распаковывается minicom (2.7-1build1) …
Обрабатываются триггеры для man-db (2.7.5-1) …
Настраивается пакет minicom (2.7-1build1) …
Код: Выделить всё
olej@nvidia ~/2018_WORK/Bilety/06.14_malevich $ apt install screen
[sudo] пароль для olej:
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Предлагаемые пакеты:
iselect | screenie | byobu ncurses-term
НОВЫЕ пакеты, которые будут установлены:
screen
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 560 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 972 kB.
Пол:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 screen amd64 4.3.1-2build1 [560 kB]
Получено 560 kБ за 0с (830 kБ/c)
Выбор ранее не выбранного пакета screen.
(Чтение базы данных … на данный момент установлено 468626 файлов и каталогов.)
Подготовка к распаковке …/screen_4.3.1-2build1_amd64.deb …
Распаковывается screen (4.3.1-2build1) …
Обрабатываются триггеры для systemd (229-4ubuntu21.2) …
Обрабатываются триггеры для ureadahead (0.100.0-19) …
ureadahead will be reprofiled on next reboot
Обрабатываются триггеры для install-info (6.1.0.dfsg.1-5) …
Обрабатываются триггеры для man-db (2.7.5-1) …
Настраивается пакет screen (4.3.1-2build1) …
Обрабатываются триггеры для systemd (229-4ubuntu21.2) …
Обрабатываются триггеры для ureadahead (0.100.0-19) …
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя