Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: i2c ioctl
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
/dev/null
Приветствую!
Имеется отладочная плата на DM355. Необходимо написать драйвер для управления CMOS матрицей. Матрицей возможно управлять по I2C, для управления драйвером из user space предполагается использовать ioctl.
Проблема в том, что я не могу сообразить как связать свои команды из user space с kernel space.
В сети нашел некоторые материалы, например http://tldp.org/LDP/lkmpg/2.6/html/x892.html , но особой ясности это не внесло.
Уважаемые, может Вы мне поможете? Хотелось бы почитать еще на эту тему и, в идеале, увидеть пример подобной реализации.
Спасибо.
XVR
Цитата(/dev/null @ Nov 6 2008, 14:12) *
Приветствую!
Имеется отладочная плата на DM355. Необходимо написать драйвер для управления CMOS матрицей. Матрицей возможно управлять по I2C, для управления драйвером из user space предполагается использовать ioctl.
Проблема в том, что я не могу сообразить как связать свои команды из user space с kernel space.
В сети нашел некоторые материалы, например http://tldp.org/LDP/lkmpg/2.6/html/x892.html , но особой ясности это не внесло.
Уважаемые, может Вы мне поможете? Хотелось бы почитать еще на эту тему и, в идеале, увидеть пример подобной реализации.
Спасибо.
По приведенной вами ссылке все описано. IOCTL коды драйвер принимает функцией device_ioctl в файле chardev.c, параметры ioctl_num - номер IOCTL, ioctl_param - его параметр.

Пример посылки этих кодов из user space содержится в файле ioctl.c (функции ioctl_set_msg и ioctl_get_msg и ioctl_get_nth_byte)
/dev/null
Цитата(XVR @ Nov 7 2008, 11:12) *
Пример посылки этих кодов из user space содержится в файле ioctl.c (функции ioctl_set_msg и ioctl_get_msg и ioctl_get_nth_byte)

Все верно и приведенный пример сам по себе работоспособен, но.. Когда я пытаюсь вставить этот код в готовый драйвер, он компилируется только при закомментированной функции device_ioctl.
Поэтому я и хотел бы увидеть ещё примеров реализации. Может тогда на меня сойдет озарение 05.gif
XVR
Цитата(/dev/null @ Nov 10 2008, 10:54) *
Все верно и приведенный пример сам по себе работоспособен, но.. Когда я пытаюсь вставить этот код в готовый драйвер, он компилируется только при закомментированной функции device_ioctl.
Поэтому я и хотел бы увидеть ещё примеров реализации. Может тогда на меня сойдет озарение 05.gif
А что говорит компилятор при незакоментированной функции device_ioctl?
/dev/null
Спасибо!
С компиляцией разобрался и вроде даже команды отрабатывают, но только результат "левый". Считанные значения регистров не соответствуют datasheet-у.
Сейчас "тренируюсь на кошках" - пытаюсь читать/писать с TVP5146, но что то не очень получается. Возможно обращаюсь не на то устройство или сам TVP5146 очень сильно завязан на V4L и такие команды не обрабатывает.
/dev/null
С чтением/записью вроде разобрался, считанные значения вывожу через printk. Теперь как то надо передать полученное значение в пользовательскую программу для дальнейшей обработки. Вроде нашел для этого функцию put_user, теперь надо разобрать как ее прикрутить и работать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.