Подключаемся к RPi через UART

Только технические вопросы по ЯОС и MINOS. Терминология и прочее - в других форумах.
Ответить
БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Подключаемся к RPi через UART

Сообщение БудДен » 26.10.21 18:23

Предыдущая тема - тут

Снова заливаем jessie lite, как описано в прошлой теме. Задача теперь - правильно подключить USB-UART и подать линуксу какую-нибудь команду. А затем попробуем автономную программку с UART оживить.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 26.10.21 18:43

Повторяя прошлое, обретаем USB-TTL преобразователь и драйвер для него:
Вот это устройство: https://www.chipdip.ru/product/cp2102

Также нужно вот это:

https://arduinoplus.ru/ustanovka-drivera-cp210x/

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 26.10.21 18:46

А вот и картинка с пинами наконец-то:
UART.jpg
UART.jpg (106.71 КБ) 415 просмотров

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 26.10.21 18:47

И ещё для коллекции:
вся-распиновка-RPi2.png
вся-распиновка-RPi2.png (168.44 КБ) 413 просмотров

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 26.10.21 18:59

Подключаем проводки по последней картинке (питание малины при этом выключено).
Затем заходим в диспетчер устройств, смотрим номер порта - видим COM3
Запускаем Putty, ставим в настройках serial COM3, 115200, data bits 8, stop bits 1, parity none, flow control XON/XOFF (я хз что это - всё, кроме скорости уже так стояло). позже выяснилось, что надо ставить flow control = NONE, да и вообще очень сложное и опасное это дело, см. Хабр

Далее в session выбираем serial, ставим COM3, 115200, называем сессию pi, сохраняем её и открываем. Появляется чёрный экран. Включаем питание Pi и почти сразу оно начинает работать. Ждём загрузки, логинимся как pi/raspberyy через putty - ура, всё работает так.
Последний раз редактировалось БудДен 27.10.21 15:21, всего редактировалось 1 раз.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 26.10.21 19:09

На виртуальном линуксе (rl, debian 9.4) делаем sudo apt install gcc-arm-none-eabi, далее клонируем https://github.com/mrvn/RaspberryPi-baremetal куда-нибудь,
заходим в 002-hello-lo-lo-lo и делаем make. Файл uart-rpi2.img копируем на флешку под именем kernel7.img

Молимся, запускаем терминал из putty, оно нам чё-то пишет. Ура. Это упражнение тоже прошли.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 26.10.21 19:16

Теперь, поскольку мы готовимся к длительной осаде, попробуем сделать, чтобы образы можно было загружать через UART, для этого есть спец. программка

https://github.com/mrvn/raspbootin

Клонируем её (под тем же debian 9.4), затем git checkout rpi2 (иначе ошибка компиляции).

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 26.10.21 19:53

Сначала подключимся из виртуального линукса к распбиану.

Восстанавливаем распбиан.
Пробрасываем USB устройство в вирт. Linux на компьютере (VirtualBox это может).
lsusb говорит, что у нас появился CP210x UART bridge.

dmesg | grep tty - бормочет что-то про ttyUSB0.

Попробуем связаться (у нас уже настроен на распбиане последовательный порт,
а питание мы включим и линукс загрузим).

Код: Выделить всё

sudo apt install screen
sudo screen /dev/ttyUSB0 -b 115200
Появляется чернота, нажиамем Enter, появляется подсказка для входа.

Входим. Когда надоело - нажимаем Ctrl-d для выхода, а затем Ctrl-A \ для выхода из screen. В screen как-то легко и непринуждённо можно открыть много сессий к одной и той же малине, тогда начнутся глюки (ввод-вывод будет глотать часть символов и т.п.).

Итак, мы уверены теперь, что UART работает. Попробуем rasbootin.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 26.10.21 21:19

А он как-то не работает. Он что-то отправляет по UART, но получаются какие-то крокозяблы.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 26.10.21 22:33

Ну вот, оказывается, для отправки \n в putty нужно нажать Ctrl-j , а screen и mincom вообще какие-то хромые. Т.е. под виртуальным линуксом только putty смогла связаться с программой и нормально пообщаться через UART.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 27.10.21 14:23

UART в этом наборе упражнений не работает также. Пока они полагаются на настройку UART из прошивки - всё норм.
Когда начинают настраивать сами - плохо получатся.


https://www.keil.com/support/man/docs/a ... 220260.htm

Здесь написано, как писать функцию на ASM, вызываемую из Си. Написал такую, к-рая мигает светодиодиком заданное количество раз
и использую её в качестве трассировки. Модель определяется правильно, но uart всё же настраивается неправильно.

Читаю https://forums.raspberrypi.com/viewtopic.php?t=136111

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 27.10.21 14:25

Там новый реп, https://github.com/dwelch67/raspberrypi - уделю ему больше внимания, т.к. код под MIT.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 27.10.21 15:22

Запустился из него третий пример - uart03 - он учитывает разницу с RPi2, к-рая, как кажется, тут состоит только лишь в другом базовом адресе для периферийных устройств. Там есть bin-файл - его и нужно сохранить как kernel07.img

Также сработало и с minicom, при этом:
- minicom надо запускать из-под sudo
- после изменения конфигурации нужно сохранить её как конфиг. по умолчанию и выйти из minicom

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 27.10.21 15:56

uart04 сработал после замены всех адресов в uart04.c - делал замену 0x20 на 0x3F - нужно внимательно, делать
замены только в начальных #define-ах, дальше такая же подстрока встречается в коде, её не надо трогать.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 27.10.21 16:16

uart02 также сработал после замены адресов, но не uartx01, который нарисовал опять квадратики.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 27.10.21 16:56

После вписывания в config.txt строчки init_uart_clock=30000000, стало чуть лучше - теперь хотя бы на нажатие буквы он отвечает буквой, а не несколькими квадратиками. Т.е. похоже, что часы наладились... Другое дело, что буква совсем не та, какая нужна :)
Последний раз редактировалось БудДен 27.10.21 18:08, всего редактировалось 1 раз.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 27.10.21 17:12

Видимо, выход состоит в том, чтобы найти старое firmware, соответствующее тому времени, когда пример был написан - 23 марта 2015 года.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Подключаемся к RPi через UART

Сообщение БудДен » 27.10.21 18:10

Поставил Wheesy-2015-02-16, uart02-rpi2.bin заработал, uartx01-pi2.bin - тоже. Ого, теперь можно попробовать ентот загрузчик ядер - raspbootin - ура, заработал. Теперь необязательно записывать ядро на флешку - оно отправляется командой.

Ответить