Управляем чем угодно откуда угодно

Нужен драйвер SMBus

Виртурилка, 3G/4G, WiFi, моторчики, датчики, GPS и прочее - питание, драйвера, совместимость и т.д.

Нужен драйвер SMBus

Сообщение holmes » 27 мар 2014, 16:41

Здравствуйте уважаемые разработчики. Вопрос скорее к вам.

Можно ли подключать устройство с SMBus к I2C в2р? И можно ли сделать драйвер для SMBus?
Я так понял что спецификация для SMBus одна http://smbus.org/specs/smbus20.pdf
А вот что-то из описания ядра линуха https://www.kernel.org/doc/Documentation/i2c/smbus-protocol
Аватара пользователя
holmes
 
Сообщения: 83
Зарегистрирован: 13 ноя 2013, 00:02
Откуда: Мск

Re: Нужен драйвер SMBus

Сообщение Gol » 31 мар 2014, 19:14

holmes писал(а):Здравствуйте уважаемые разработчики. Вопрос скорее к вам.

Можно ли подключать устройство с SMBus к I2C в2р? И можно ли сделать драйвер для SMBus?
Я так понял что спецификация для SMBus одна http://smbus.org/specs/smbus20.pdf
А вот что-то из описания ядра линуха https://www.kernel.org/doc/Documentation/i2c/smbus-protocol


Насколько помню, SMBus поверх I2C работает, так что поддержка уже есть. Кстати я когда какой-то датчик по I2C на сишечке опрашивал, как раз по SMBus дело было. В ядре включено "Autoselect pertinent helper modules", так что smbus должна по дефолту работать.
Аватара пользователя
Gol
 
Сообщения: 507
Зарегистрирован: 17 фев 2012, 01:44
Откуда: Тула-Свободный-Щёкино-Тула-Москва

Re: Нужен драйвер SMBus

Сообщение holmes » 31 мар 2014, 22:42

Просто может я еще не до конца скурил информацию по работе с i2c на в2р (и в целом о внутренней организации протокола), но у меня так и не сформировалось представление как реализовать общение с девайсом. Конкретно это OpenUPS от mini-box.
В pdf по первой ссылке примерно на странице 28 начинается описание протокола, и не знаю как это реализовать.
По сути там такой же протокол как в ноутбучных аккках (девайс для подобного применения и делался).
Я понимаю что это слишком частная проблема, но все же, если будет возможность, буду очень благодарен за любую помощь. Пока продолжаю курить доки и гугл.
Аватара пользователя
holmes
 
Сообщения: 83
Зарегистрирован: 13 ноя 2013, 00:02
Откуда: Мск

Re: Нужен драйвер SMBus

Сообщение eagafonov » 01 апр 2014, 11:45

IMHO для начала надо определить, видно ли устройство на шине вообще. Для этого можно использовать i2cdetect.

На SO нашёлся как раз вопрос, в котором с примерами команд товарищ не может найти батарейку на шине.
http://stackoverflow.com/questions/1211 ... t-detected

Вообще с i2c устройствами можно работать как минимум двумя способами.

Номер раз - без использования специфического драйвера - через устройство /dev/i2c-x (/dev/i2c-1, /dev/i2c-2 и тaк далее)
Открывается файл, вызовами ioctl/read/write читаешь/пришешь регистры устройства.

Я в своё время нашёл пример работы с акселерометром MPU6050 на форуме RPI и адаптировал для виртурилки.
Код лежит тут https://github.com/eagafonov/mpu6050-demo (Осторожной, С++).
Обёртка для работы с i2c - в файлах i2c.{cpp,h}
Остальное - специфика для MPU6050 и различные конкретный примеры работы с этим модулем.

Второй способ - через ядрёный драйвер, который скрывает всю i2c-шную подноготную протокола и выдаёт пользователю протокол, специфичный для устройства. Не знаю, есть ли в ядре драйвер для батарейки, вроде через ACPI всё управление питанием идёт.

По опыту ковыряния драйвера для той же MPU6050 то ещё удовольствие, особенно без опыта kernel-development'а.
Хотя level-up можно получить в случае успеха :)

Как-то так.

Суммируя: должно работать но надо проверять.
Аватара пользователя
eagafonov
 
Сообщения: 175
Зарегистрирован: 18 сен 2013, 23:39
Откуда: Нижненовгородск

Re: Нужен драйвер SMBus

Сообщение holmes » 10 апр 2014, 02:47

А можно как-нибудь скриптом прочитать WORD с шины i2c?
Аватара пользователя
holmes
 
Сообщения: 83
Зарегистрирован: 13 ноя 2013, 00:02
Откуда: Мск

Re: Нужен драйвер SMBus

Сообщение eagafonov » 10 апр 2014, 11:52

Кстати, да...

i2cget http://www.lm-sensors.org/wiki/man/i2cget

Код: Выделить всё
i2cget [-y] i2cbus chip-address [data-address [mode]]



Вообще про i2c tools
http://www.lm-sensors.org/wiki/i2cToolsDocumentation
Аватара пользователя
eagafonov
 
Сообщения: 175
Зарегистрирован: 18 сен 2013, 23:39
Откуда: Нижненовгородск

Re: Нужен драйвер SMBus

Сообщение holmes » 10 апр 2014, 23:15

Не определяется устройство =(
Батарейка имеет адрес 0х70, как у моторшилда. Поэтому я убрал из автозагрузки motorshield и telegue чтоб драйвер не занимал шину.
Однако теперь i2cdetect вообще не видит ничего на 70 адресе.
Что можно предпринять?
Аватара пользователя
holmes
 
Сообщения: 83
Зарегистрирован: 13 ноя 2013, 00:02
Откуда: Мск

Re: Нужен драйвер SMBus

Сообщение phoenix367 » 10 апр 2014, 23:36

holmes писал(а):Не определяется устройство =(
Батарейка имеет адрес 0х70, как у моторшилда. Поэтому я убрал из автозагрузки motorshield и telegue чтоб драйвер не занимал шину.
Однако теперь i2cdetect вообще не видит ничего на 70 адресе.
Что можно предпринять?


Так а что за устройство? Вообще, если адреса совпадают, то придется делать мультиплексирование шины ручками. Я такое делал с часами. Работает на ура.
У вас есть возможность осциллограмму снять? Тогда можно было бы сразу понять, доходит сигнал с SCK до устройства вообще и что оно отвечает.
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Re: Нужен драйвер SMBus

Сообщение holmes » 11 апр 2014, 00:33

Мультиплексирование не требуется, моторшилд отключен, а потом будет перенесен на 60 адрес (благо это возможно).
А вот адрес батарейки поменять невозможно.
Батарейка вот такая http://www.mini-box.com/OpenUPS
Осцилла нет к сожалению.
Аватара пользователя
holmes
 
Сообщения: 83
Зарегистрирован: 13 ноя 2013, 00:02
Откуда: Мск

Re: Нужен драйвер SMBus

Сообщение holmes » 11 апр 2014, 02:02

Хм, похоже батарейка определяется на 0х38, а не на 0х70.
Но на любой регистр выдает Read failed. i2cdump ничего не дал.
Аватара пользователя
holmes
 
Сообщения: 83
Зарегистрирован: 13 ноя 2013, 00:02
Откуда: Мск

След.

Вернуться в Железо - заставляем работать

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron