Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:3
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:7
Форум » starterkit.ru » Embedded Linux
lm75/hwmon drivers for at91sam9 board
chronoman
Добавлено 01.08.2012 15:05
0
Сообщение: 1
chronoman
0

Пункты: 295
Регистрация: 19.04.2010
Не могу разобраться как использовать уже написанные драйвера:
http://lxr.linux.no/#linux+v2.6.33.5/drivers/hwmon/lm75.c
http://lxr.linux.no/#linux+v2.6.33.5/drivers/hwmon/hwmon.c

для получения температуры от LM75 (TCN75).

Подключил датчик к TWI шине, подключил осциллоскоп, чтобы контроллировать че там происходит, идут ли данные.
Скомпиллил и загрузил модули в такой вот последовательности:
sudo insmod ~/driver/hwmon.ko
sudo insmod ~/driver/lm75.ko
lsmod

Module Size Used by
lm75 3382 0
hwmon 1143 1 lm75
rt2800usb 11887 0
rt2800lib 40754 1 rt2800usb
crc_ccitt 1069 1 rt2800lib
rt2x00usb 7598 1 rt2800usb
rt2x00lib 29790 3 rt2800usb,rt2800lib,rt2x00usb
mac80211 216264 3 rt2800lib,rt2x00usb,rt2x00lib
cfg80211 149769 2 rt2x00lib,mac80211
compat 15761 3 rt2x00lib,mac80211,cfg80211

В результате ожидал, что каждые 1.5сек будут идти данные по шине с температурой, но этого не происходит. Никаких логов не выводится (во всяком случае проверял все что есть по /var/log и dmesg

Такое вот тоже не работает:
sudo modprobe lm75.o force_lm75_compat=0,0x49
возвращает ошибку, что модуля такого нет (наверное потому что я его компилю и закидываю отдельно, а не делаю пересборку ядра).

Вообщем то думал, что вот он мол - готовый драйвер как раз под мою микрушку, раз и только считывай с известного места готовые значения и все. А тут вот какая засада. Опять же, я в этом деле человек новый (в драйверах, линухе и прочем). Кто может, просветите пожалуйста. А то уже начинаю думать начинать писать свой драйвер. Благо, первый уже написал.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 01.08.2012 15:19 Сообщение: 2
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
для начала озвучьте платформу и имя АРМа..
далее состегиваете железо, включаете и запускаете утилиту
i2cdetect -y 0
где последняя цифра "0" - это номер шины i2c
смотрите: видится ли ваш чип на шине
далее в конфиг ядра..
lm75 - вроде настолько стандартно ходовой датчик, что просто не может не работать..
и гляньте в доку - может он на 5в..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
chronoman
Добавлено 01.08.2012 17:47 Сообщение: 3
chronoman
0

Пункты: 295
Регистрация: 19.04.2010
Цитата
для начала озвучьте платформу и имя АРМа..
далее состегиваете железо, включаете и запускаете утилиту
i2cdetect -y 0
где последняя цифра "0" - это номер шины i2c
смотрите: видится ли ваш чип на шине
далее в конфиг ядра..
lm75 - вроде настолько стандартно ходовой датчик, что просто не может не работать..
и гляньте в доку - может он на 5в..


линух: 2.6.33.5-at91
камень: Atmel AT91SAM9G20-CU
сенсор: STCN75M2 (2.7 - 5.5)VDC

По поводу команды: sudo i2cdetect -y 0
возвращает ошибку: i2cdetect: command not found

Я тоже уверен что должен работать, бо датчик ходовой. Увы, проверить такими ходовыми тулзами как lm-sensors не получается возможным, бо онные не работают на моей платформе.
Спуститься к концу Подняться к началу
Персональная информация
chronoman
Добавлено 01.08.2012 17:51 Сообщение: 4
chronoman
0

Пункты: 295
Регистрация: 19.04.2010
Чтобы не подумали, что lm-sensors я не установил. Установил, вот что выдает онный на стандартные запросы:
sensors
No sensors found!
Make sure you loaded all the kernel drivers you need.
Try sensors-detect to find out which these are.
sudo sensors-detect
/sys/bus/pci/devices: No such file or directory at /usr/sbin/sensors-detect line 2547
Спуститься к концу Подняться к началу
Персональная информация
chronoman
Добавлено 01.08.2012 18:08 Сообщение: 5
chronoman
0

Пункты: 295
Регистрация: 19.04.2010
Я проинсталлил вот это
sudo apt-get install i2c-tools

Теперь у меня есть i2cdetect но все равно ошибка:
sudo i2cdetect -y 0
Error: Could not open file `/dev/i2c-0' or `/dev/i2c/0': No such file or directory

После этого я сделал вот это:
sudo mknod /dev/i2c-0 c 89 0

И теперь у меня уже немножко другая ошибка:
sudo i2cdetect -y 0
Error: Could not open file `/dev/i2c-0': No such device

Что дальше
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 01.08.2012 18:55 Сообщение: 6
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Что дальше

хм.. давайте "танцевать от печки"
сначала разберемся с i2c bus
что выводит:
Код
ls /dev/i2c*

и
Код
dmesg | grep i2c


Цитата
Увы, проверить такими ходовыми тулзами как lm-sensors

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

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
chronoman
Добавлено 01.08.2012 19:42 Редактировалось 01.08.2012 19:46 Сообщение: 7
chronoman
0

Пункты: 295
Регистрация: 19.04.2010
[quote]хм.. давайте "танцевать от печки"
сначала разберемся с i2c bus
что выводит:
Код
ls /dev/i2c*

и
Код
dmesg | grep i2c

[/quote]
ls ls /dev/i2c*
ls: cannot access ls: No such file or directory
/dev/i2c-0

dmesg | grep i2c
i2c /dev entries driver

Я уже нарыл, что тут советуют скомпилить пропатченный (несколько патчей) атмеловский драйвер от Атмела. Говорят что он глючный (особенно на близких к максимальным скоростям, но мне не проблема понизить скорость, все равно раз в секунду опрашивать только собираюсь или даже еще реже). Вот этот зверь:
http://lxr.linux.no/#linux+v2.6.33.5/drivers/i2c/busses/i2c-at91.c

Вообщем вот говорят, что только с ним возможно поднять аппаратный TWI на атмеле (моем камне), в стандартной сборке его нет, наверное из-за глюкавости и патчей. Вообщем курю, че не так :). Может хехе найти либу программной реализации TWI (какую нить либу, когда то использовал под кодевижн - она там стандартно была, и на маленьких аврках работала отлично, а вот с аппаратным TWI у атмела была какая то гонка, я тогда даже на асме (без всяких осей) не мог заставить его работать без глюков, кое когда проскакивал гон в значениях. А вот софтверно реализованный работал на убой.
И щас вот слышу, что опять какие то мутки с TWI шиной, чего не так то. Я вообще не особо люблю пользоваться этой шиной, но сейчас как бы по другому незя. Спрыгнуть на любимый SPI незя. Вот и курю тут млин над простой задачей неоправданно долго. Все усугубляет то, что я на Вы с Линухом и его драйверами.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 01.08.2012 23:30 Редактировалось 01.08.2012 23:31 Сообщение: 8
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
хех! похоже у вас шинка лежит, должно быть примерно вот так:
Код
root@arm9g45:~# ls /dev/i*
/dev/i2c-0 /dev/initctl
/dev/input:
by-path event0 mice
root@arm9g45:~# dmesg |grep i2c
i2c-gpio i2c-gpio.0: using pins 20 (SDA) and 21 (SCL)
i2c /dev entries driver

тогда идем по шагам:
1. в menuconfig -> drivers->i2c
разрешить работу i2c
bus-support->gpio-based bitband..
2. далее ищите файл платы(борды) примерно в
arch/arm/mach-at91/board-sam9g20*
их там несколько, интересует такой у которого сосед с расширением ".о", вас интересует он же но ".с"
смотрите в п/п инита борды наличие похожих строк
Код
at91_add_device_i2c(0, ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));

и выше структуру типа
Код
static struct i2c_board_info __initdata ek_i2c_devices[] = {
{
I2C_BOARD_INFO("ds1621", 0x48),
},
};

если нет, то допишите, поправив под себя
3. пересборка ядра, проследите что откомпилировались файлы драйвера шины, вашего устройства и файл платы
4. грузите ядро, в логе должно промелькнуть вышеприведенное и появиться шинка i2c-0, на которую можно натравить i2cdetect
если что-то непонятно или какой-то этап не прошел, спрашивайте, желательно с кусочком лога +/-5 строк

зы1 9g20 ~= 9g45 (я так думаю) по корке i2c
зы2 i2c дивная шина, хотя многие ее ругают, а мне нравиться..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 01.08.2012 23:36 Редактировалось 02.08.2012 01:12 Сообщение: 9
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
вот так выглядит результат работы i2cdetect
Код
root@arm9g45:~# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

1. у меня на шине этой платы ничего нет
2. если чип откликается по какому-нить адресу, то вместо черточек будет его адрес
3. мои екзерсисы с ds1621 http://www.starterkit.ru/html/index.php?name=forum&op=view&id=10887

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
chronoman
Добавлено 22.08.2012 01:23 Сообщение: 10
chronoman
0

Пункты: 295
Регистрация: 19.04.2010
Был в отпуске, так что вот только сегодня продолжил, вернувшись к своим железякам.
Сборка ядра с ошибками:
arch/arm/mach-at91/board-electrum-100.c:277:41: error: too many arguments to function ‘at91_add_device_i2c’

/* I2C */
//at91_add_device_i2c(NULL, 0);
at91_add_device_i2c(0, ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));

Вы привели три параметра, а нужно два, подозреваю, что первой ноль лишний, но лучше спрошу :), бо как то второй параметр тоже немножко стремно, не указатель на структуру. Щас попробую поиграться, удалив первый и дав адрес на второй.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux