Англичанка гадит. Глобальная проблема c UART в новой Raspberry Pi 3

Привет, малиноводы! Модест Карлович на связи
Вчера подключил свой gps-приёмник к UART-пинам новой Raspberry Pi 3, однако gpsd обрабатывать данные с приёмника отказался.
Начал выяснять в чём дело и понял, что старая русская поговорка (я вынес её в заголовок топика) снова актуальна!
Кому интересно welcome под кат.

Итак, поскольку в 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/

Комментарии:

Dancespeed
А если использовать usb-GPS приемник? Интересно, а как тогда реализован wi-fi?
raspiman
C USB gps приёмником проблем возникнуть не должно, т.к работа с ним осуществляется через устройство /dev/USBx
Dancespeed
Для беспроводных сетей один чип, вроде…
Shatki
Весь вечер убил на поиск причины не работы UART на Pi3. Спасибо очень выручила статья!
Olekos
Вот тут поподробнее:https://www.youtube.com/watch?v=68jbiuf27AY

Для написания комментариев необходимо зарегистрироваться