Carolinus 0 3 июня, 2009 Опубликовано 3 июня, 2009 · Жалоба кто знает, как работать с сабжем? гугл мало информации дает. Знаю, что в ядре есть драйвер протокола. Если можно, пример исходников (инициализация устройств, запись, чтение и пр.) Или ссылки, где можно про это почитать. Короче, буду благодарен любой информации по сабжу и его использованию в uclinux. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
faa 4 3 июня, 2009 Опубликовано 3 июня, 2009 · Жалоба кто знает, как работать с сабжем? гугл мало информации дает. Знаю, что в ядре есть драйвер протокола. Если можно, пример исходников (инициализация устройств, запись, чтение и пр.) Или ссылки, где можно про это почитать. Короче, буду благодарен любой информации по сабжу и его использованию в uclinux. Подключаем устройство и пользуем. Проблем практически нет :) Под какой платформой хотите использовать I2C? Какое устройство надо подключить? В исходниках ядра практически все есть. Все уровни: там и драйвер для нужной платформы, и драйвер I2C, и драйвер для устройства. Если драйвера под платформу нет - пишем по аналогии с существующими. Если нет драйвера для устройства - вкуриваем даташит для девайса и исходники драйверов, которые уже есть в ядре. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Carolinus 0 4 июня, 2009 Опубликовано 4 июня, 2009 · Жалоба Подключаем устройство и пользуем. Проблем практически нет :) Под какой платформой хотите использовать I2C? Какое устройство надо подключить? В исходниках ядра практически все есть. Все уровни: там и драйвер для нужной платформы, и драйвер I2C, и драйвер для устройства. Если драйвера под платформу нет - пишем по аналогии с существующими. Если нет драйвера для устройства - вкуриваем даташит для девайса и исходники драйверов, которые уже есть в ядре. Под арм7. Нужно подключить фискальную память и эклз Хотелось бы, если можно, пример работы: инициализация, чтение/запись, закрытие. Или где это можно почитать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
faa 4 4 июня, 2009 Опубликовано 4 июня, 2009 · Жалоба Под арм7. Нужно подключить фискальную память и эклз Хотелось бы, если можно, пример работы: инициализация, чтение/запись, закрытие. Или где это можно почитать. У процессора есть такой интерфейс? Если нет - то только через дерганье ногами GPIO. Причем стандарт I2C, ЕМНИП, требует наличие открытого коллектора. Все остальное в ядре. Там все просто и понятно. Под linux-ом будет крутиться, под хRTOS какой-нибудь или самописная системка будет? ЗЫ: Для конкретных советов мало исходной информации. ЗЫЗЫ: Правильно заданный вопрос содержит в себе 90% ответа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Carolinus 0 4 июня, 2009 Опубликовано 4 июня, 2009 · Жалоба У процессора есть такой интерфейс? Если нет - то только через дерганье ногами GPIO. Причем стандарт I2C, ЕМНИП, требует наличие открытого коллектора. Все остальное в ядре. Там все просто и понятно. Под linux-ом будет крутиться, под хRTOS какой-нибудь или самописная системка будет? ЗЫ: Для конкретных советов мало исходной информации. ЗЫЗЫ: Правильно заданный вопрос содержит в себе 90% ответа. интерфейс есть, порт торчит, дрова в ядре есть. Ось я в сабже указал (ucLinux). Пишу на C/C++ насколько я понял, ид устройства зашивается в драйвер. т.е. нужно либо переписывать, либо писать свой, так? вопросы: в системе в /dev есть устройства i2c0, i2c1, i2c2, У устройства есть, как я понял из описания протокола, свой ид. Почему порт один, а в /dev 3 устройства? Это устройства с тремя разными идями, висящие на одном порту? или на плате есть 3 порта, из которых выведен наружу только один? Как мне начать обмен с устройством, т.е. проинициализировать его, указать, например, скорость? или скорость задана жестко и менять ее нельзя? Как открыть устройство? Тупо fopen('/dev/i2c0'...) или нужно подключать какой-нить .h файл со спец. функциями? Как читать из устройства? например, для ком-порта мы заполняем структуру termios, в которой, в частности, описываем, сколько байт должно быть принято, сколько ждать, если порт не отвечает. Есть ли что-то аналогичное для i2c? Просто слово i2c я услышал тройку дней назад. А сильно нужно, чтоб девайс работал. Спросить тоже особо не у кого. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovalchuk_i_v 0 4 июня, 2009 Опубликовано 4 июня, 2009 · Жалоба интерфейс есть, порт торчит, дрова в ядре есть. Ось я в сабже указал (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, практически там уже все написано, просто добавишь свои устройства. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Carolinus 0 4 июня, 2009 Опубликовано 4 июня, 2009 · Жалоба Руслан, для того чтобы узнать как настраивается i2c нужно прочитать несколько страниц из user manual для lpc2468, уверяю тебя работа с i2c не сложнее работы uart. После понимания работы контроллера i2c, имеет смысл ознакомится с исходным кодом драйвера i2c, практически там уже все написано, просто добавишь свои устройства. Вань, чтением всего этого я как раз сейчас и занимаюсь. Я хочу собрать как можно больше информации обо всем этом. Я спрашивал КОНКРЕТНЫЕ примеры работы с устройствами, потому что имея их на руках + маны + код драйвера, разобраться ПРОЩЕ И БЫСТРЕЕ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovalchuk_i_v 0 4 июня, 2009 Опубликовано 4 июня, 2009 · Жалоба Ну какие примеры? Открываешь устройство (ф-ция open("/dev/i2cX",...)), пишешь/читаешь, закрываешь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Carolinus 0 4 июня, 2009 Опубликовано 4 июня, 2009 · Жалоба что я и спрашивал. спасибо за ответ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
faa 4 4 июня, 2009 Опубликовано 4 июня, 2009 (изменено) · Жалоба Ну какие примеры? Открываешь устройство (ф-ция open("/dev/i2cX",...)), пишешь/читаешь, закрываешь. ioctl(..) еще может понадобиться :) ЗЫ: процы с ядром arm7 тоже разные бывают - есть совсем убогие, а есть очень навороченные - чего в них только нет ( MMU, МАС, контроллер TFT и т.п.). Изменено 4 июня, 2009 пользователем faa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Carolinus 0 5 июня, 2009 Опубликовано 5 июня, 2009 · Жалоба ioctl(..) еще может понадобиться :) ЗЫ: процы с ядром arm7 тоже разные бывают - есть совсем убогие, а есть очень навороченные - чего в них только нет ( MMU, МАС, контроллер TFT и т.п.). lpc 2468 про ioctl можно поподробнее? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
faa 4 5 июня, 2009 Опубликовано 5 июня, 2009 (изменено) · Жалоба 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 или еще как). это все упрощенно - на сам деле все немного веселее :) А ioctl позволяет кроме "стандартных" операций (открыть, закрыть, прочитать, записать) добавить специфические операции (функции) для устройства (с параметрами - если надо), ну и естественно пользовать их (операции) из программы user-а (из неядреного пространства). Изменено 5 июня, 2009 пользователем faa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться