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

Вообщем опять у меня вопрос - хочу общаться с вышеуказанными интерфейсами. Желательно из шелла.
Подскажите направление поиска ...
Работаю с i2c через ioctl /dev/i2c (c 89 0), spi не пользую
Vishay
Jul 30 2007, 13:47
Вопрос работы из shell с i2c и spi - интерфейсами меня тоже интересует. С нетерпением жду продолжения топика.
как устроийство SPI видно, из под консоли у вас под Linux не густо средств чтобы поработать с устройисвами, можно записать, считать
Пример использования последовательной flash, подцепленной к SPI интерфейсу лежит на:
http://www.heavy-online.ru/arm-linux/
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 с поддержкой этих тестовых функций.
Цитата(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
Oct 30 2007, 16:26
Фирма ST для поддержки своего выпускаемого железа содержит свой STLinux, и в документации на него есть примеры программ для работы с i2c и spi интерфейсами :
i2c:
http://www.stlinux.com/docs/manual/distrib...tion_guide6.phpspi:
http://www.stlinux.com/docs/manual/distrib...tion_guide7.php
Для тренировки работы с 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
Nov 20 2007, 12:46
Цитата(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
и так далее