Присоединяйтесь!
Авторизация

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

07 June 2016 - Автор Modest_Karlovich

Привет, малиноводы! Модест Карлович на связи

Вчера подключил свой 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/

07 June 2016
Modest_Karlovich
автор статьи

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

  1. Dancespeed

    07 June 2016 - Ответить

    А если использовать usb-GPS приемник? Интересно, а как тогда реализован wi-fi?

    • raspiman

      10 June 2016 - ответить

      C USB gps приёмником проблем возникнуть не должно, т.к работа с ним осуществляется через устройство /dev/USBx

  2. Dancespeed

    07 June 2016 - Ответить

    Для беспроводных сетей один чип, вроде…

  3. Shatki

    15 August 2016 - Ответить

    Весь вечер убил на поиск причины не работы UART на Pi3. Спасибо очень выручила статья!

  4. Olekos

    20 April 2017 - Ответить

    Вот тут поподробнее:https://www.youtube.com/watch?v=68jbiuf27AY

  5. Rasp10

    15 June 2017 - Ответить

    The Raspberry Pi UARTshttps://www.raspberrypi.org/documentation/configuration/uart.md

Отправить комментарий

Авторизуйтесь для отправки комментария

Присоединяйтесь
Новые сообщения