Привет, малиноводы! Модест Карлович на связи
Вчера подключил свой gps-приёмник к UART-пинам новой Raspberry Pi 3, однако gpsd обрабатывать данные с приёмника отказался.
Начал выяснять в чём дело и понял, что старая русская поговорка (я вынес её в заголовок топика) снова актуальна!
Итак, поскольку в Raspberry Pi 3 теперь есть Bluetooth, то выводы uart0 от чипа процессора теперь используются под нужды Bluetooth. Таким образом в Raspberry Pi 3 больше нет нормального хардварного uart'а
Вместо него разработчики сделали программный UART. И это плохо, очень плохо. Программный uart не имеет собственного генератора такта, а использует для работы частоту процессора, а она на Raspberry Pi постоянно меняется в зависимости от нагрузки, соответственно меняется и скорость работы порта. Вы и сами можете это проверить командой
stty -F /dev/ttyS0
(да, теперь этот квазиUART представлен устройством /dev/ttyS0, а не /dev/ttyAMA0 как было раньше)
в выводе команды видно, что скорость работы порта постоянно меняется и зафиксировать её на определённую константу невозможно, а значит невозможно и пользоваться портом для чтения/передачи данных. Вот такую свинью совместимости с предыдущими моделями RasPi подложили сообществу английские электронщики (хотя судя по тупости такого подхода, не удивлюсь если к новому процессору приложили свои таланты китайские инженеры)
Разработчики предлагают абсолютно гениальные решения для решения проблемы с UART:
1.Зафиксировать частоту core_freq на уровне 250mhz, прописав core_freq=250 в конфиг /boot/config.txt, что естественно повлечёт за собой снижение производительности компьютера
2."Вернуть всё в зад", фактически отключив Bluetooth , добавив в конфиг
dtoverlay=pi3-miniuart-bt
Резюмирую статью - Теперь у нас нет возможности нормально пользоваться UART'ом по умолчанию. Для номральной работы нужно либо зафиксировать частоту ядра процессора на пониженном уровне и соответственно потерять часть производительности, либо отказаться от одновременного использования UART и Bluetooth.
Вот такие дела.
О проблемах в архитектуре RasPi3 вам рассказал Модест Карлович! Читайте мой блог тут - http://raspberrypi.ru/profile/Modest_Karlovich/created/topics/
Комментариев: 6
Dancespeed
07.06.2016 в 10:28 ответА если использовать usb-GPS приемник? Интересно, а как тогда реализован wi-fi?
raspiman
10.06.2016 в 13:17 ответC USB gps приёмником проблем возникнуть не должно, т.к работа с ним осуществляется через устройство /dev/USBx
Dancespeed
07.06.2016 в 10:30 ответДля беспроводных сетей один чип, вроде…
Shatki
16.08.2016 в 02:37 ответВесь вечер убил на поиск причины не работы UART на Pi3. Спасибо очень выручила статья!
Olekos
20.04.2017 в 09:14 ответВот тут поподробнее:https://www.youtube.com/watch?v=68jbiuf27AY
Rasp10
15.06.2017 в 15:06 ответThe Raspberry Pi UARTshttps://www.raspberrypi.org/documentation/configuration/uart.md