Skip to content

Скорость консоли в Raspberry Pi 2 во FreeBSD

При подключении к последовательному порту Raspberri Pi 2 на скоростях, отличных от 115200, обязательно столкнётесь с проблемами, будь то приёмник GPS или просто консоль. Мой интерес - подключить GPS-приёмник NEO-6m... Да-да, тот самый, с Aliexpress с закопчённым чипом, но реально работающий и по замечательной цене. Почему-то разработчики "Малинки" решили, что пора приучать себя и покупателей к "скоростям", и зашили 115200 как скорость консоли в DTB (Device Tree Blob). По некоторым причинам, менять скорость передачи на GPS-приёмнике, мне не подходит, значит надо изменить скорость консоли на "Малине".
Анализ DTS (исходника DTB) выявил блок chosen, в котором указаны рекомендации системе по параметрам консоли:
CODE:
        chosen {                 stdout-path = "serial0:115200n8";         };

Отсутствие чётности и длина символа 8 бит нас устраивает, а вот скорость требует коррекции. Чтобы не вносить изменения в глобальное дерево устройств, воспользуемся оверлеями, для чего создадим файл chosen.dts:
CODE:
/dts-v1/; /plugin/; / {         compatible = "brcm,bcm2836";         fragment@0 {                 target-path = "/";                 __overlay__ {                         chosen {                                 stdout-path = "serial0:9600n8";                         };                 };         }; };

и выполним команду:
CODE:
dtc -@ -I dts -O dtb -o chosen.dtbo chosen.dts

Полученный файл chosen.dtbo и есть оверлей.
Как его использовать?
Я использую файл /boot/msdos/config.txt, добавляя в него строчку:
CODE:
dtoverlay=chosen.dtbo

и предварительно скопировав оверлей в папку /boot/msdos/overlays/. Но такой способ сработает, только если у вас подключение дерева устройств происходит через /boot/msdos/config.txt строчками:
CODE:
device_tree_address=0x100 device_tree=rpi2.dtb

и файл rpi2.dtb лежит здесь же, в /boot/msdos/.
Если же дерево устройств определяется автоматически из папки /boot/dtb/, то оверлей следует скопировать в папку /boot/dtb/overlays/ и подключать в файле /boot/loader.conf строчкой:
CODE:
fdt_overlays=chosen.dtbo

Но этот способ я не проверял. Мне он пока не нравится, так как не могу понять как передать параметры оверлею, если это понадобится.
Как результат, сразу после загрузки:
CODE:
# stty -f /dev/ttyu0 speed 9600 baud; lflags: -isig -iexten -echo iflags: -ixon -ixany -imaxbel ignbrk -brkint ignpar oflags: -opost -onlcr tab0 cflags: cs8 -parenb -hupcl clocal discard dsusp   eof     eol     eol2    erase   erase2  intr    kill     ^@      ^@      ^@      ^@      ^@      ^@      ^@      ^@      ^@       lnext   min     quit    reprint start   status  stop    susp    werase   ^@      0       ^@      ^@      ^@      ^@      ^@      ^@      ^@      


И последнее...
Я не указал об этом тексте, но, возможно, вы, как и я, пожелаете отключить консоль на порту ttyu0 в файле /etc/ttys, поменяв для соответствующего порта параметр с on или onifconsole на off.

Спасибо за внимание.

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
To leave a comment you must approve it via e-mail, which will be sent to your address after submission.
Опции формы