драйвера для ядра линукса на WS2811 RGB LED Strip?
Что-то мне подсказывает: это проще делать на отдельной микрухе + UART или отдельном Cortex-M ядре. Такой ногодрыг (GPIO) не для ядра.
почитателям раста) https://github.com/phip1611/ws2818-rgb-led-spi-driver
да вот не могу понять надо ли пвм на ноге
Так посмотри на протокол. Там ШИМ не поможет. Самое простое взять ардуинку/синею таблетку/... и через UART/i2c/... отправлять данные с Linux на неё. А потом уже управлять светодиодами. Написать драйвер для Linux, который с микросекундной точностью будет дёргать GPIO не реально и неразумно. Эксперименты с чем-то другим отнимут много времени и нафиг не нужны.
Из ядра такое не стоит. Если прям не охото лишних железок то из юзерспейс можно замутить.
Напрямую пин выкинуть?
если такое ногодрыгом будешь проворачивать - у тебя ядро колом станет или уронится. Можно в теории, шим кормить по таймеру ДМА, я думаю. Если таблицу приготовить. Но какой в этом смысл?
тем менее есть драйвера, которые умеют дергать ноги с микросекундной точностью, не уверен правда, что это можно делать на любом проце, но на малине можно
тут еще зависит что он хочет. Просто выставить цвет или со всякими фейдами красивые переливы вываливать
Да по идее просто цвет
если в другом месте не надо так активно дергать ногами, то всё ок, ядро держит)
мы этого не знаем, исходим из худшего варианта. Все как в реальной жизни 😀
Да, через sys , хотя это вроде уже устаревший способ.
я не знаю точностей как оно работает, но все вот эти переливы не фризят ядро
А какой актуальный?
я довольно долго тестировал ядро в таких условиях, вроде никаких подвисаний не заметил
Нужно доки смотреть. Но устаревший не значит, что его нельзя использовать. Просто новый более "безопасный".
через sysfs дергать норгами можно конечно, но это как раз не оптимальный способ
Вот его и думал, когда говорил «напрямую пин»
есть драйвера для конкретных борд, абьюзящие ту или иную периферию. ногодрыгом софтварным не выйдет.
Ну нога свободна, с этим проблем не должно быть
дело не в свободности ноги, а в том что линукс это не ртос.
Не совсем так. Он как раз более быстрый без оверхеда от библиотеки. Но можно накосячить.
не, тормозной он. библиотека это очень тонкий враппер над йоктлом.
sysfs тоже абстракция
А что межает залейтвовать таймер в шиме
потому что надо менять скважность шима на каждый бит
Тогда нахрена линукс
чтоб крутить другой софт
Собственно для STM32 я так и делал. DMA пишет из массива в регистр сравнения таймера, по half transfer рассчитывается новый буфер.
Даже если ты на лету ШИМ в драйвере перестраиваешь без дма? Хмм, мне всегда казалось что адекватный способ, при наличии чего либо, чем моргание ws281x, это готовить таблицу и напихивать ее в таймер ШИМ через дма. Если периферия так может конечно.
https://github.com/e-yes/ws2812-spi вообще на питоне запилил (автор оригинала не я, я говнокод вычистил)
Обсуждают сегодня