Skip to content

FreeBSD драйвер для приёмника кодов с пульта управления 433МГц (или 315 МГц)

FreeBSD kernel driver for gpio based remote control codes receiver. Я рад представить свой новый FreeBSD драйвер для радиомодуля MX-RM-5V. Хочу заострить внимание, что это приёмник радио сигнала - моя задача была именно в получении кода нажатой кнопки с пульта управления и выполнения соответствующей этому коду задачи. Драйвер, как раз, и занимается получением и декодированием радио импульсов до того момента, пока не сочтёт, что получилось что-то похожее на RC-код. Поиском соответствующей задачи и её выполнением будет заниматься отдельный сервис (aka daemon), который большую часть времени проводит в ожидании события kevent (или poll) от драйвера. Получение данного события для демона означает, что у драйвера для него есть новый код, который можно считать непосредственно с символьного устройства драйвера или с помощью вызова ioctl(). В моём случае, пара драйвер и демон, служит для ручного включения и выключения света и аэрации аквариума, которые в обычном режиме управляются по расписанию моим OrangePI Zero. "Апельсинка" скрыта от посторонних глаз за аквариумом, а для ручного управления используется 4х-кнопочный пульт rf-433МГц от китайских настенных выключателей "miniTiger", закреплённый в распечатанном на 3D-принтере держателе.
Продолжить чтение "FreeBSD драйвер для приёмника кодов с пульта управления 433МГц (или 315 МГц)"

FreeBSD и device tree overlays

Хочу рассказать простыми словами, т.е., как дилетант для другого дилетанта, то, что пришлось вычитывать, додумывать и подбирать достаточно длительное время: как собрать и использовать 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"