Подключаемся к RPi через UART
Подключаемся к RPi через UART
Предыдущая тема - тут
Снова заливаем jessie lite, как описано в прошлой теме. Задача теперь - правильно подключить USB-UART и подать линуксу какую-нибудь команду. А затем попробуем автономную программку с UART оживить.
Снова заливаем jessie lite, как описано в прошлой теме. Задача теперь - правильно подключить USB-UART и подать линуксу какую-нибудь команду. А затем попробуем автономную программку с UART оживить.
Re: Подключаемся к RPi через UART
Повторяя прошлое, обретаем USB-TTL преобразователь и драйвер для него:
Вот это устройство: https://www.chipdip.ru/product/cp2102
Также нужно вот это:
https://arduinoplus.ru/ustanovka-drivera-cp210x/
Re: Подключаемся к RPi через UART
А вот и картинка с пинами наконец-то:
Re: Подключаемся к RPi через UART
И ещё для коллекции:
Re: Подключаемся к RPi через UART
Подключаем проводки по последней картинке (питание малины при этом выключено).
Затем заходим в диспетчер устройств, смотрим номер порта - видим 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 - ура, всё работает так.
Затем заходим в диспетчер устройств, смотрим номер порта - видим 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 раз.
Re: Подключаемся к RPi через UART
На виртуальном линуксе (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, оно нам чё-то пишет. Ура. Это упражнение тоже прошли.
заходим в 002-hello-lo-lo-lo и делаем make. Файл uart-rpi2.img копируем на флешку под именем kernel7.img
Молимся, запускаем терминал из putty, оно нам чё-то пишет. Ура. Это упражнение тоже прошли.
Re: Подключаемся к RPi через UART
Теперь, поскольку мы готовимся к длительной осаде, попробуем сделать, чтобы образы можно было загружать через UART, для этого есть спец. программка
https://github.com/mrvn/raspbootin
Клонируем её (под тем же debian 9.4), затем git checkout rpi2 (иначе ошибка компиляции).
https://github.com/mrvn/raspbootin
Клонируем её (под тем же debian 9.4), затем git checkout rpi2 (иначе ошибка компиляции).
Re: Подключаемся к RPi через UART
Сначала подключимся из виртуального линукса к распбиану.
Восстанавливаем распбиан.
Пробрасываем USB устройство в вирт. Linux на компьютере (VirtualBox это может).
lsusb говорит, что у нас появился CP210x UART bridge.
dmesg | grep tty - бормочет что-то про ttyUSB0.
Попробуем связаться (у нас уже настроен на распбиане последовательный порт,
а питание мы включим и линукс загрузим).
Появляется чернота, нажиамем Enter, появляется подсказка для входа.
Входим. Когда надоело - нажимаем Ctrl-d для выхода, а затем Ctrl-A \ для выхода из screen. В screen как-то легко и непринуждённо можно открыть много сессий к одной и той же малине, тогда начнутся глюки (ввод-вывод будет глотать часть символов и т.п.).
Итак, мы уверены теперь, что UART работает. Попробуем rasbootin.
Восстанавливаем распбиан.
Пробрасываем USB устройство в вирт. Linux на компьютере (VirtualBox это может).
lsusb говорит, что у нас появился CP210x UART bridge.
dmesg | grep tty - бормочет что-то про ttyUSB0.
Попробуем связаться (у нас уже настроен на распбиане последовательный порт,
а питание мы включим и линукс загрузим).
Код: Выделить всё
sudo apt install screen
sudo screen /dev/ttyUSB0 -b 115200
Входим. Когда надоело - нажимаем Ctrl-d для выхода, а затем Ctrl-A \ для выхода из screen. В screen как-то легко и непринуждённо можно открыть много сессий к одной и той же малине, тогда начнутся глюки (ввод-вывод будет глотать часть символов и т.п.).
Итак, мы уверены теперь, что UART работает. Попробуем rasbootin.
Re: Подключаемся к RPi через UART
А он как-то не работает. Он что-то отправляет по UART, но получаются какие-то крокозяблы.
Re: Подключаемся к RPi через UART
Ну вот, оказывается, для отправки \n в putty нужно нажать Ctrl-j , а screen и mincom вообще какие-то хромые. Т.е. под виртуальным линуксом только putty смогла связаться с программой и нормально пообщаться через UART.
Re: Подключаемся к RPi через UART
UART в этом наборе упражнений не работает также. Пока они полагаются на настройку UART из прошивки - всё норм.
Когда начинают настраивать сами - плохо получатся.
https://www.keil.com/support/man/docs/a ... 220260.htm
Здесь написано, как писать функцию на ASM, вызываемую из Си. Написал такую, к-рая мигает светодиодиком заданное количество раз
и использую её в качестве трассировки. Модель определяется правильно, но uart всё же настраивается неправильно.
Читаю https://forums.raspberrypi.com/viewtopic.php?t=136111
Когда начинают настраивать сами - плохо получатся.
https://www.keil.com/support/man/docs/a ... 220260.htm
Здесь написано, как писать функцию на ASM, вызываемую из Си. Написал такую, к-рая мигает светодиодиком заданное количество раз
и использую её в качестве трассировки. Модель определяется правильно, но uart всё же настраивается неправильно.
Читаю https://forums.raspberrypi.com/viewtopic.php?t=136111
Re: Подключаемся к RPi через UART
Там новый реп, https://github.com/dwelch67/raspberrypi - уделю ему больше внимания, т.к. код под MIT.
Re: Подключаемся к RPi через UART
Запустился из него третий пример - uart03 - он учитывает разницу с RPi2, к-рая, как кажется, тут состоит только лишь в другом базовом адресе для периферийных устройств. Там есть bin-файл - его и нужно сохранить как kernel07.img
Также сработало и с minicom, при этом:
- minicom надо запускать из-под sudo
- после изменения конфигурации нужно сохранить её как конфиг. по умолчанию и выйти из minicom
Также сработало и с minicom, при этом:
- minicom надо запускать из-под sudo
- после изменения конфигурации нужно сохранить её как конфиг. по умолчанию и выйти из minicom
Re: Подключаемся к RPi через UART
uart04 сработал после замены всех адресов в uart04.c - делал замену 0x20 на 0x3F - нужно внимательно, делать
замены только в начальных #define-ах, дальше такая же подстрока встречается в коде, её не надо трогать.
замены только в начальных #define-ах, дальше такая же подстрока встречается в коде, её не надо трогать.
Re: Подключаемся к RPi через UART
uart02 также сработал после замены адресов, но не uartx01, который нарисовал опять квадратики.
Re: Подключаемся к RPi через UART
После вписывания в config.txt строчки init_uart_clock=30000000, стало чуть лучше - теперь хотя бы на нажатие буквы он отвечает буквой, а не несколькими квадратиками. Т.е. похоже, что часы наладились... Другое дело, что буква совсем не та, какая нужна :)
Последний раз редактировалось БудДен 27.10.21 18:08, всего редактировалось 1 раз.
Re: Подключаемся к RPi через UART
Видимо, выход состоит в том, чтобы найти старое firmware, соответствующее тому времени, когда пример был написан - 23 марта 2015 года.
Re: Подключаемся к RPi через UART
Поставил Wheesy-2015-02-16, uart02-rpi2.bin заработал, uartx01-pi2.bin - тоже. Ого, теперь можно попробовать ентот загрузчик ядер - raspbootin - ура, заработал. Теперь необязательно записывать ядро на флешку - оно отправляется командой.