Сегодня снова речь пойдёт про недрогой 7 сегментный дисплей tm1637, пригодный для отображения 4х цифр и двоеточия, характерного для электронных часов. Особенность дисплея в том, что он не следует стандарту i2c, хотя подключение его к GPIO шине и протокол передачи данных по ней очень похож.
Несмотря на то, что я уже написал
библиотеку для tm1637 на FreeBSD и в целом она меня вполне устраивает (два года на этом дисплее моя "малинка" показывала время), отчасти из-за некоей обиды, что такое простое устройство для простого общения с ним требует весьма непростых усилий, а отчасти из-за желания попробовать свои силы, я решил написать простенький драйвер для символьного устройства, на которое можно было бы просто отправить строку цифр.
Теперь же, с помощью этого драйвера, отображение на этом дисплее возможно и из
PHP, и из
Python, и, даже, из
bash с помощью команды
echo.
Продолжить чтение "И снова про tm1637 на FreeBSD"
Всё началось с покупки нового телевизора...
С полки исчезла
DVB-T2 приставка, почти ненужная, но Чемпионат по футболу смотрел именно на ней! Через пару-тройку дней, когда интерес к новым возможностям телевизора угас, я осознал, что с приставкой потерял нечто важное - часы! Простенькие электронные часы на лицевой панели приставки, самосинхронизирующиеся как-то там, всегда на виду... были... Но, вроде бы, не всё безнадёжно - рядом на полке стоит мой... эээ... мини-сервер точного времени для домашней сети -
Raspberry Pi 2 c
GLONASS-приёмником и под управлением
FreeBSD (и кому, как не ему, знать точное время?), а в ящике стола завалялся 7-сегментный цифровой дисплей
tm1637 0.36" с двумя точками как на часах и четырьмя контактами (рублей 50 за него отдал на Aliexpress.com)... Четыре проводка с F-F-контактами для соединения с "малинкой" тоже найдутся.
Посмотрим, что мы с этим можем сделать...
Продолжить чтение "Дисплей tm1637 на FreeBSD"
При подключении к последовательному порту Raspberri Pi 2 на скоростях, отличных от 115200, обязательно столкнётесь с проблемами, будь то приёмник GPS или просто консоль. Мой интерес - подключить GPS-приёмник NEO-6m... Да-да, тот самый, с Aliexpress с закопчённым чипом, но реально работающий и по замечательной цене. Почему-то разработчики "Малинки" решили, что пора приучать себя и покупателей к "скоростям", и зашили 115200 как скорость консоли в DTB (Device Tree Blob). По некоторым причинам, менять скорость передачи на GPS-приёмнике, мне не подходит, значит надо изменить скорость консоли на "Малине".
Продолжить чтение "Скорость консоли в Raspberry Pi 2 во FreeBSD"
Хочу рассказать простыми словами, т.е., как дилетант для другого дилетанта, то, что пришлось вычитывать, додумывать и подбирать достаточно длительное время: как собрать и использовать
device tree overlays на SOC компьютере в ОС FreeBSD.
Для начала о програмно-аппаратном обеспечении:
CODE:
$ uname -a
FreeBSD rpi2 12.0-CURRENT FreeBSD 12.0-CURRENT #8 r328806: Sat Feb 3 08:06:35 +04 2018 root@host.domain:/usr/obj/usr/src/arm.armv7/sys/RPI2_CUSTOM arm
Т.е., это
Raspberry PI 2 с 32-разрядной архитектурой
armv7 под управлением ОС FreeBSD 12.0-CURRENT ревизия r328806 с кастомным ядром, собранной на другом ПК
host.domain с архитектурой
amd64 с помощью кросскомпиляции (Как это сделать, худо бедно, но описано в предыдущей статье).
Дисковое пространство организовано с помощью двух разделов (
msdos и
ufs):
CODE:
$ mount
/dev/mmcsd0s2a on / (ufs, local, noatime, soft-updates)
devfs on /dev (devfs, local)
/dev/mmcsd0s1 on /boot/msdos (msdosfs, local, noatime)
tmpfs on /tmp (tmpfs, local)
procfs on /proc (procfs, local)
fdescfs on /dev/fd (fdescfs)
На разделе
msdos лежат файлы, необходимые для загрузки ОС с помощью
u-boot, а на
ufs - собственно, сама операционная система.
Причина, по которой производились изыскания, это желание сократить связанное с добавлением дополнительных устройств внесение изменений в системный исходный код ОС, а использовать для этого "понятный и доступный" механизм по подключению
оверлеев (или,
плагинов) к существующему дереву устройств, в сочетании с условностями и ограничениями реализации этого "понятного и доступного" механизма во FreeBSD на текущий момент.
Итак...
Продолжить чтение "FreeBSD и device tree overlays"
В сети есть много руководств по созданию образа MicroSD с FreeBSD для Raspberry Pi 2. Это очень полезный опыт в плане разворачивания этой ОС из исходников, со своим ядром (Да! Там и для ARM есть что менять!). Но, для меня уже ясны пара моментов: во-первых, обновление ОС через чистый образ диска - не самая лучшая затея в плане сохранения предыдущих наработок на RPI2. Если у Вас не релизная ветка, то этот вопрос вас волнует. Во-вторых, не очевидно, но техника, используемая для создания образа диска, с небольшой коррекцией прекрасно подходит и для обновления ОС, как мы это обычно делаем на "взрослых" платформах.
Давайте определимся с некоторыми необходимыми пунктами:
- Подразумеваем, что у Вас уже есть установленная FreeBSD на Raspberry PI 2, например, с помощью готового образа с оффициального сайта FreeBSD.org
- Сборка мира и ядра производится кросс-компиляцией на той самой "взрослой" платформе (Она же "хост");
- Для сборки мы будем использовать дерево исходников /usr/src на хосте. Оно же у Вас есть, правда?
- Обновление производится на хосте на смонтированный диск RPI2 (MicroSD). Я для себя отвел папку /mnt/rpi2;
- Для процесса инсталляции на MicroSD требуется установить порт sysutils/u-boot-rpi2;
- Исходя из вышеупомянутых учебников по сборке образа, у нас на MicroSD два раздела: / (/dev/da0s2a) ufs2 и /boot/msdos (/dev/da0s1) msdosfs. При условии, что флешка единственная, предполагаем, что она монтируется как /dev/da0.
Приступим.
Продолжить чтение "Обновление FreeBSD на Raspberry Pi 2"