Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: I2C и SPI - как использовать под Линуксом ?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Отладочные платы
slava2005
Вообщем опять у меня вопрос - хочу общаться с вышеуказанными интерфейсами. Желательно из шелла.

Подскажите направление поиска ...
Lelick
Цитата(slava2005 @ Jul 26 2007, 20:09) *
Вообщем опять у меня вопрос - хочу общаться с вышеуказанными интерфейсами. Желательно из шелла.

Подскажите направление поиска ...


Работаю с i2c через ioctl /dev/i2c (c 89 0), spi не пользую
Vishay
Вопрос работы из shell с i2c и spi - интерфейсами меня тоже интересует. С нетерпением жду продолжения топика.
dch
как устроийство SPI видно, из под консоли у вас под Linux не густо средств чтобы поработать с устройисвами, можно записать, считать

Пример использования последовательной flash, подцепленной к SPI интерфейсу лежит на:
http://www.heavy-online.ru/arm-linux/
Vishay
2 dch

Интересует нечто вроде программы gpio для чтения/записи состояния выводов general purpose input /output процессора ( см. http://electronix.ru/forum/index.php?showtopic=34444 ) , но только для интерфейсов i2c и spi процессора AT91RM9200 - средство, которое можно было бы использовать вместе с платой Rainbow для подключения к другим устройствам в качестве логического анализотора их i2c, spi интерфейсов.
Это теоретически. Практически видна опасность повреждения DataFlash на плате Rainbow при подключении к интерфейсу spi процессора случайного потока данных. Но против этого можно принять меры аппаратного характера.

P.S. В описании u-boot'a такие средства для i2c и spi вроде бы есть, но в том варианте u-boot, который пропатчен в соотвестввии с http://www.heavy-online.ru/arm-linux/ этого нет. Надо будет как-нибудь попробовать собрать u-boot с поддержкой этих тестовых функций.
dch
Цитата(Vishay @ Aug 6 2007, 13:00) *
P.S. В описании u-boot'a такие средства для i2c и spi вроде бы есть, но в том варианте u-boot, который пропатчен в соотвестввии с http://www.heavy-online.ru/arm-linux/ этого нет.

Начиная с 1.1.1 в u-boot есть поддержка SPI flash - в конфигурационном файле нужно раскомментировать строчку. Даете коман дочку flinfo если SPI флэш не видна - лезете в конфигурационный файл.
Vishay
Фирма ST для поддержки своего выпускаемого железа содержит свой STLinux, и в документации на него есть примеры программ для работы с i2c и spi интерфейсами :

i2c:
http://www.stlinux.com/docs/manual/distrib...tion_guide6.php

spi:
http://www.stlinux.com/docs/manual/distrib...tion_guide7.php
Vishay
Для тренировки работы с i2c интерфейсом платы Rainbow я припаял к ней на проводках микросхему EEPROM M24256 фирмы ST с неким примерно известным запрограммированным до меня содержимым, с закороченными на землю адресными выводами ( адрес на шине i2c 0x50 ) и резистором 5 кОм на выводе /WC для защиты от записи.
Попробовал считать ее содержимое при помощи готовых средств Linux'а, для чего первоначально использовал ядро с поддержкой EEPROM - в каталоге /sys/bus/i2c/devices/0-0050/eeprom видны первые 256 байт EEPROM'а.

cat /sys/bus/i2c/devices/0-0050/eeprom | hexdump -C

Далее попробовал почитать другие адреса EEPOMa при помощи утилит из пакета lm-sensors: i2cdump считала те-же 256 байт, а выше по адресам считывала не совсем-то, что ожидалось.

i=0; /usr/sbin/i2cdump -y 0 0x50 c $i; while [ "$i" -le 128 ]; do echo "i=$i" ; /usr/sbin/i2cdump -y 0 0x50 c $i; let i+=1; done;

Для верификации содержимого EEPROMa пришлось считать его без Linux'а модифицированной программой BasicTWIEeprom из тестовых примеров для AT91RM9200 от Atmel (файл eeprom_read.zip).

Имея т.о точное содержимое EEPROMa в файле, я предпринял еще несколько попыток стандартными средствами Linux'a считать все содержимое EEPROM'a, но они оказались безуспешными.

Далее, я попробовал написать свою программу на Си для решения этой задачи ( файл i2c_program.zip ). Для еe работы необходимо ядро с выключенной поддержкой EEPROM, иначе в адреса 0x50 ... 0x57 шины i2c ничего нельзя записать при помощи вызова ioctl.

Вот скрипт, который я использую для создания устройства /dev/i2c и загрузки программы из компьютера в файловую систему платы Rainbow на ram-диске:

if [ ! -c "/dev/i2c" ] ; then mknod -m 600 /dev/i2c c 89 0 ; fi ; cd /home ; prgn="./i2c_program"; echo -e "binary\nget $prgn" | ./tftp 192.168.2.41 ; if [ -e $prgn ] ; then chmod 544 $prgn ; fi ; ls -l ;

Команда для запуска программы:

#./i2c_program 50 0 255
где параметры командной строки: address_i2c, mem_addr, nbytes.


P.S.
Начал я практическое изучение i2c - интерфейса под Linux-ом на плате Rainbow с такого скрипта:
mknod /dev/i2c c 89 0
ls -l /dev/i2c
dmesg > /dev/i2c
, но при просмотре сигналов интерфейса i2c в осциллограф выяснилось, что текст из dmesg пишется в i2c-адрес 0x7f. ):- .
path_finder
Цитата(Vishay @ Nov 5 2007, 09:50) *
/sys/bus/i2c/devices/0-0050/eeprom видны первые 256 байт EEPROM'а.

cat /sys/bus/i2c/devices/0-0050/eeprom | hexdump -C

остальные части eeprom должны быть:
/sys/bus/i2c/devices/0-0051/eeprom
/sys/bus/i2c/devices/0-0052/eeprom

и так далее
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.