реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> i2c в uclinux, кто знает, как работать с сабжем?
Carolinus
сообщение Jun 3 2009, 13:28
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 4-05-08
Пользователь №: 37 256



кто знает, как работать с сабжем? гугл мало информации дает. Знаю, что в ядре есть драйвер протокола.
Если можно, пример исходников (инициализация устройств, запись, чтение и пр.) Или ссылки, где можно про это почитать. Короче, буду благодарен любой информации по сабжу и его использованию в uclinux.
Go to the top of the page
 
+Quote Post
faa
сообщение Jun 3 2009, 19:48
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 726
Регистрация: 14-09-06
Из: Москва
Пользователь №: 20 394



Цитата(Carolinus @ Jun 3 2009, 17:28) *
кто знает, как работать с сабжем? гугл мало информации дает. Знаю, что в ядре есть драйвер протокола.
Если можно, пример исходников (инициализация устройств, запись, чтение и пр.) Или ссылки, где можно про это почитать. Короче, буду благодарен любой информации по сабжу и его использованию в uclinux.


Подключаем устройство и пользуем. Проблем практически нет smile.gif

Под какой платформой хотите использовать I2C? Какое устройство надо подключить?
В исходниках ядра практически все есть. Все уровни: там и драйвер для нужной платформы, и драйвер I2C, и драйвер для устройства. Если драйвера под платформу нет - пишем по аналогии с существующими. Если нет драйвера для устройства - вкуриваем даташит для девайса и исходники драйверов, которые уже есть в ядре.
Go to the top of the page
 
+Quote Post
Carolinus
сообщение Jun 4 2009, 05:52
Сообщение #3





Группа: Участник
Сообщений: 14
Регистрация: 4-05-08
Пользователь №: 37 256



Цитата(faa @ Jun 3 2009, 23:48) *
Подключаем устройство и пользуем. Проблем практически нет smile.gif

Под какой платформой хотите использовать I2C? Какое устройство надо подключить?
В исходниках ядра практически все есть. Все уровни: там и драйвер для нужной платформы, и драйвер I2C, и драйвер для устройства. Если драйвера под платформу нет - пишем по аналогии с существующими. Если нет драйвера для устройства - вкуриваем даташит для девайса и исходники драйверов, которые уже есть в ядре.


Под арм7. Нужно подключить фискальную память и эклз
Хотелось бы, если можно, пример работы: инициализация, чтение/запись, закрытие. Или где это можно почитать.
Go to the top of the page
 
+Quote Post
faa
сообщение Jun 4 2009, 07:01
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 726
Регистрация: 14-09-06
Из: Москва
Пользователь №: 20 394



Цитата(Carolinus @ Jun 4 2009, 09:52) *
Под арм7. Нужно подключить фискальную память и эклз
Хотелось бы, если можно, пример работы: инициализация, чтение/запись, закрытие. Или где это можно почитать.

У процессора есть такой интерфейс? Если нет - то только через дерганье ногами GPIO.
Причем стандарт I2C, ЕМНИП, требует наличие открытого коллектора.
Все остальное в ядре. Там все просто и понятно.
Под linux-ом будет крутиться, под хRTOS какой-нибудь или самописная системка будет?
ЗЫ: Для конкретных советов мало исходной информации.
ЗЫЗЫ: Правильно заданный вопрос содержит в себе 90% ответа.
Go to the top of the page
 
+Quote Post
Carolinus
сообщение Jun 4 2009, 07:58
Сообщение #5





Группа: Участник
Сообщений: 14
Регистрация: 4-05-08
Пользователь №: 37 256



Цитата(faa @ Jun 4 2009, 11:01) *
У процессора есть такой интерфейс? Если нет - то только через дерганье ногами GPIO.
Причем стандарт I2C, ЕМНИП, требует наличие открытого коллектора.
Все остальное в ядре. Там все просто и понятно.
Под linux-ом будет крутиться, под хRTOS какой-нибудь или самописная системка будет?
ЗЫ: Для конкретных советов мало исходной информации.
ЗЫЗЫ: Правильно заданный вопрос содержит в себе 90% ответа.


интерфейс есть, порт торчит, дрова в ядре есть. Ось я в сабже указал (ucLinux). Пишу на C/C++
насколько я понял, ид устройства зашивается в драйвер. т.е. нужно либо переписывать, либо писать свой, так?
вопросы: в системе в /dev есть устройства i2c0, i2c1, i2c2, У устройства есть, как я понял из описания протокола, свой ид.
Почему порт один, а в /dev 3 устройства? Это устройства с тремя разными идями, висящие на одном порту? или на плате есть 3 порта, из которых выведен наружу только один?
Как мне начать обмен с устройством, т.е. проинициализировать его, указать, например, скорость? или скорость задана жестко и менять ее нельзя?
Как открыть устройство? Тупо fopen('/dev/i2c0'...) или нужно подключать какой-нить .h файл со спец. функциями? Как читать из устройства? например, для ком-порта мы заполняем структуру termios, в которой, в частности, описываем, сколько байт должно быть принято, сколько ждать, если порт не отвечает. Есть ли что-то аналогичное для i2c?

Просто слово i2c я услышал тройку дней назад. А сильно нужно, чтоб девайс работал. Спросить тоже особо не у кого.
Go to the top of the page
 
+Quote Post
Ivan_Kov
сообщение Jun 4 2009, 08:16
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 30-10-06
Из: г. Курск
Пользователь №: 21 787



Цитата(Carolinus @ Jun 4 2009, 11:58) *
интерфейс есть, порт торчит, дрова в ядре есть. Ось я в сабже указал (ucLinux). Пишу на C/C++
насколько я понял, ид устройства зашивается в драйвер. т.е. нужно либо переписывать, либо писать свой, так?
вопросы: в системе в /dev есть устройства i2c0, i2c1, i2c2, У устройства есть, как я понял из описания протокола, свой ид.
Почему порт один, а в /dev 3 устройства? Это устройства с тремя разными идями, висящие на одном порту? или на плате есть 3 порта, из которых выведен наружу только один?
Как мне начать обмен с устройством, т.е. проинициализировать его, указать, например, скорость? или скорость задана жестко и менять ее нельзя?
Как открыть устройство? Тупо fopen('/dev/i2c0'...) или нужно подключать какой-нить .h файл со спец. функциями? Как читать из устройства? например, для ком-порта мы заполняем структуру termios, в которой, в частности, описываем, сколько байт должно быть принято, сколько ждать, если порт не отвечает. Есть ли что-то аналогичное для i2c?

Просто слово i2c я услышал тройку дней назад. А сильно нужно, чтоб девайс работал. Спросить тоже особо не у кого.


Руслан, для того чтобы узнать как настраивается i2c нужно прочитать несколько страниц из user manual для lpc2468, уверяю тебя работа с i2c не сложнее работы uart.
После понимания работы контроллера i2c, имеет смысл ознакомится с исходным кодом драйвера i2c, практически там уже все написано, просто добавишь свои устройства.
Go to the top of the page
 
+Quote Post
Carolinus
сообщение Jun 4 2009, 08:31
Сообщение #7





Группа: Участник
Сообщений: 14
Регистрация: 4-05-08
Пользователь №: 37 256



Цитата(Ivan_Kov @ Jun 4 2009, 12:16) *
Руслан, для того чтобы узнать как настраивается i2c нужно прочитать несколько страниц из user manual для lpc2468, уверяю тебя работа с i2c не сложнее работы uart.
После понимания работы контроллера i2c, имеет смысл ознакомится с исходным кодом драйвера i2c, практически там уже все написано, просто добавишь свои устройства.


Вань, чтением всего этого я как раз сейчас и занимаюсь.
Я хочу собрать как можно больше информации обо всем этом. Я спрашивал КОНКРЕТНЫЕ примеры работы с устройствами, потому что имея их на руках + маны + код драйвера, разобраться
ПРОЩЕ И БЫСТРЕЕ.
Go to the top of the page
 
+Quote Post
Ivan_Kov
сообщение Jun 4 2009, 08:43
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 30-10-06
Из: г. Курск
Пользователь №: 21 787



Цитата(Carolinus @ Jun 4 2009, 12:31) *

Ну какие примеры?
Открываешь устройство (ф-ция open("/dev/i2cX",...)), пишешь/читаешь, закрываешь.
Go to the top of the page
 
+Quote Post
Carolinus
сообщение Jun 4 2009, 08:49
Сообщение #9





Группа: Участник
Сообщений: 14
Регистрация: 4-05-08
Пользователь №: 37 256



что я и спрашивал. спасибо за ответ.
Go to the top of the page
 
+Quote Post
faa
сообщение Jun 4 2009, 12:09
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 726
Регистрация: 14-09-06
Из: Москва
Пользователь №: 20 394



Цитата(Ivan_Kov @ Jun 4 2009, 12:43) *
Ну какие примеры?
Открываешь устройство (ф-ция open("/dev/i2cX",...)), пишешь/читаешь, закрываешь.

ioctl(..) еще может понадобиться smile.gif

ЗЫ: процы с ядром arm7 тоже разные бывают - есть совсем убогие, а есть очень навороченные - чего в них только нет ( MMU, МАС, контроллер TFT и т.п.).

Сообщение отредактировал faa - Jun 4 2009, 12:20
Go to the top of the page
 
+Quote Post
Carolinus
сообщение Jun 5 2009, 08:25
Сообщение #11





Группа: Участник
Сообщений: 14
Регистрация: 4-05-08
Пользователь №: 37 256



Цитата(faa @ Jun 4 2009, 16:09) *
ioctl(..) еще может понадобиться smile.gif

ЗЫ: процы с ядром arm7 тоже разные бывают - есть совсем убогие, а есть очень навороченные - чего в них только нет ( MMU, МАС, контроллер TFT и т.п.).


lpc 2468
про ioctl можно поподробнее?
Go to the top of the page
 
+Quote Post
faa
сообщение Jun 5 2009, 20:54
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 726
Регистрация: 14-09-06
Из: Москва
Пользователь №: 20 394



Цитата(Carolinus @ Jun 5 2009, 12:25) *
lpc 2468
про ioctl можно поподробнее?

Драйверов в linux для I2C (см. исходники ядра) как минимум три уровня (грубо и для простоты картины) - поддержка интерфейса I2C процессора, сам протокол, драйвер устройства-клиента.
Например:

/drivers/i2c/busses/i2c-ep93xx.c - процессор - поддержка со стороны процессора (1-й уровень - дрыгаем ногами GPIO)

/drivers/i2c/algos - сам протокол (2-й уровень -протокол обмена по i2c)

/drivers/i2c/chips/eeprom.c - клиент (устройство) - 3-й уровень (поддержка устройства-клиента)
или
/drivers/rtc/rtc-isl1208.c и /drivers/rtc/rtc-dev.c - клиент (isl1208 -3-й уровень) и переход -> rtc - другой класс-тип устройства
в результате имеем /dev/rtc - где устройство isl1208 есть таймер реального времени (/dev/rtc), подключенный по I2C, и user-у абсолютно индеферентно, каким образом этот RTC пристегнут (I2C, SPI или еще как).

это все упрощенно - на сам деле все немного веселее smile.gif

А ioctl позволяет кроме "стандартных" операций (открыть, закрыть, прочитать, записать) добавить специфические операции (функции) для устройства (с параметрами - если надо), ну и естественно пользовать их (операции) из программы user-а (из неядреного пространства).

Сообщение отредактировал faa - Jun 5 2009, 21:08
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 14:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01452 секунд с 7
ELECTRONIX ©2004-2016