Страница 1 из 1
Подключаемся к RPi через UART
Добавлено: 26.10.21 18:23
БудДен
Предыдущая тема -
тут
Снова заливаем jessie lite, как описано в прошлой теме. Задача теперь - правильно подключить USB-UART и подать линуксу какую-нибудь команду. А затем попробуем автономную программку с UART оживить.
Re: Подключаемся к RPi через UART
Добавлено: 26.10.21 18:43
БудДен
Повторяя
прошлое, обретаем USB-TTL преобразователь и драйвер для него:
Re: Подключаемся к RPi через UART
Добавлено: 26.10.21 18:46
БудДен
А вот и картинка с пинами наконец-то:

- UART.jpg (106.71 КБ) 2858 просмотров
Re: Подключаемся к RPi через UART
Добавлено: 26.10.21 18:47
БудДен
И ещё для коллекции:

- вся-распиновка-RPi2.png (168.44 КБ) 2856 просмотров
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 - ура, всё работает так.
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, оно нам чё-то пишет. Ура. Это упражнение тоже прошли.
Re: Подключаемся к RPi через UART
Добавлено: 26.10.21 19:16
БудДен
Теперь, поскольку мы готовимся к длительной осаде, попробуем сделать, чтобы образы можно было загружать через UART, для этого есть спец. программка
https://github.com/mrvn/raspbootin
Клонируем её (под тем же debian 9.4), затем git checkout rpi2 (иначе ошибка компиляции).
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.
Re: Подключаемся к RPi через UART
Добавлено: 26.10.21 21:19
БудДен
А он как-то не работает. Он что-то отправляет по UART, но получаются какие-то крокозяблы.
Re: Подключаемся к RPi через UART
Добавлено: 26.10.21 22:33
БудДен
Ну вот, оказывается, для отправки \n в putty нужно нажать Ctrl-j , а screen и mincom вообще какие-то хромые. Т.е. под виртуальным линуксом только putty смогла связаться с программой и нормально пообщаться через UART.
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
Re: Подключаемся к RPi через UART
Добавлено: 27.10.21 14:25
БудДен
Там новый реп,
https://github.com/dwelch67/raspberrypi - уделю ему больше внимания, т.к. код под MIT.
Re: Подключаемся к RPi через UART
Добавлено: 27.10.21 15:22
БудДен
Запустился из него третий пример - uart03 - он учитывает разницу с RPi2, к-рая, как кажется, тут состоит только лишь в другом базовом адресе для периферийных устройств. Там есть bin-файл - его и нужно сохранить как kernel07.img
Также сработало и с minicom, при этом:
- minicom надо запускать из-под sudo
- после изменения конфигурации нужно сохранить её как конфиг. по умолчанию и выйти из minicom
Re: Подключаемся к RPi через UART
Добавлено: 27.10.21 15:56
БудДен
uart04 сработал после замены всех адресов в uart04.c - делал замену 0x20 на 0x3F - нужно внимательно, делать
замены только в начальных #define-ах, дальше такая же подстрока встречается в коде, её не надо трогать.
Re: Подключаемся к RPi через UART
Добавлено: 27.10.21 16:16
БудДен
uart02 также сработал после замены адресов, но не uartx01, который нарисовал опять квадратики.
Re: Подключаемся к RPi через UART
Добавлено: 27.10.21 16:56
БудДен
После вписывания в config.txt строчки init_uart_clock=30000000, стало чуть лучше - теперь хотя бы на нажатие буквы он отвечает буквой, а не несколькими квадратиками. Т.е. похоже, что часы наладились... Другое дело, что буква совсем не та, какая нужна :)
Re: Подключаемся к RPi через UART
Добавлено: 27.10.21 17:12
БудДен
Видимо, выход состоит в том, чтобы найти старое firmware, соответствующее тому времени, когда пример был написан - 23 марта 2015 года.
Re: Подключаемся к RPi через UART
Добавлено: 27.10.21 18:10
БудДен
Поставил Wheesy-2015-02-16, uart02-rpi2.bin заработал, uartx01-pi2.bin - тоже. Ого, теперь можно попробовать ентот загрузчик ядер - raspbootin - ура, заработал. Теперь необязательно записывать ядро на флешку - оно отправляется командой.