LINUX.ORG.RU

Разработка I2C драйвера

 , ,


1

3

Здравствуйте. Есть девайс на микроконтроллере STM8, который мониторит температуру и хранит ее в регистре. К нему подключаюсь по I2C с малины и считываю состояние регистров, все работает. Хотелось бы в образовательных целях написать драйвер уровня ядра. Подскажите, как правильно делается.. Желательно, чтобы драйвер уведомлял приложение при измерении температуры. Можно опрашивать в цикле в приложении, но вариант вроде так себе. Можно ли в драйвере дергать какой-то колбек или прерывание, если температура изменилась, чтобы приложение узнало об этом и отреагировало?


Можно ли в драйвере дергать какой-то колбек или прерывание, если температура изменилась

ну если само устройство может в прерывания аппаратно — почему нет.

если применительно к ядру линукс — есть вполне отличная дока по интерфейсу драйверов.

safocl ★★
()

Можно ли в драйвере дергать какой-то колбек или прерывание, если температура изменилась, чтобы приложение узнало об этом и отреагировало?

Колбек - нет, обычно это делается так: приложение открывает устройство в /dev, делает на его дескриптор select() или аналог, а драйвер ему шлёт данные или меняет состояние этого файлового дескриптора.

firkax ★★★★★
()

Можно и опрашивать. Но при опросе можно сделать, чтобы драйвер данные в приложение отдавал не из устройства, а из кэша. А кэш чтобы обновлялся отдельным потоком со своим периодом. Если память меня не подводит, так модуль lm85 делает.

apt_install_lrzsz ★★★
()