Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:5
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:9
Форум » starterkit.ru » Embedded Linux
SPI на плате SK-MAT91SAM9260
Novichok
Добавлено 22.07.2010 16:43 Редактировалось 22.07.2010 16:44
0
Сообщение: 1
Novichok
5

Пункты: 36
Регистрация: 08.07.2010
Как я понимаю, есть два способа работы:
1) через эмуляцию SPI на GPIO
2) через использование аппаратного контроллера SPI
Судя по схеме платы, есть возможность использовать аппаратный SPI-контроллер.
Нужно ли монтировать SPI (чтоб система видела его в качестве части своей файловой системы) или как написано здесь http://starterkit.ru/html/index.php?name=forum&op=view&id=7759#7759 ?
Спуститься к концу Подняться к началу
Персональная информация
Lavin
Добавлено 22.07.2010 17:11 Сообщение: 2
Lavin
2.4

Пункты: 1267
Регистрация: 22.05.2009
Пол: Мужчина
Из: Москва
Да как я понимаю ненужно.Как работать со spi я смотрел в драйвере sasa для экрана от сименса..
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 23.07.2010 00:04 Сообщение: 3
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

Как работать со spi я смотрел в драйвере sasa для экрана от сименса..


Если вы про тот драйвер где с spi идет работа напрямую с контроллером минуя линуксовый интерфейс - то это пример как _НЕ НУЖНО_ работать с spi в linux. Там это было продиктовано ситуацией. Смотрите исходники драйверов в ядре.
Спуститься к концу Подняться к началу
Персональная информация
Strijar
Добавлено 23.07.2010 09:41 Сообщение: 4
Strijar
Ранг
5

Группа: Клиенты
Пункты: 1618
Регистрация: 21.04.2009
Пол: Мужчина
На первых порах можно работать с SPI без написания драйвера. Через spidev (linux/Documentation/spi/spidev)
Спуститься к концу Подняться к началу
Персональная информация
Novichok
Добавлено 23.07.2010 16:33 Сообщение: 5
Novichok
5

Пункты: 36
Регистрация: 08.07.2010
Цитата
На первых порах можно работать с SPI без написания драйвера. Через spidev (linux/Documentation/spi/spidev)

Да мы бы с радостью поработали с spi, хоть как-нибудь, но пока мало что понятно. Вообще опыт работы с spi на уровне контроллера есть - не понятно, как получить доступ к нему из Си-кода под Linux ?

В документации к spidev идет речь о ситуации, когда аппаратный spi-контроллер уже виден в системе - я же не вижу его ни в /sys/class, ни в /dev.
Следовательно делаю вывод, что нужно как-то смонтировать spi контроллер, чтобы обращаться потом к контроллеру как к файлу - или я не прав и есть другой способ работы с SPI ?

Честно говоря, не совсем понятен этот абзац документации:

Цитата
The simplest way to arrange to use this driver is to just list it in the
spi_board_info for a device as the driver it should use: the "modalias"
entry is "spidev", matching the name of the driver exposing this API.
Set up the other device characteristics (bits per word, SPI clocking,
chipselect polarity, etc) as usual, so you won't always need to override
them later.


Где находится этот список spi_board_info и как с ним работать ?

Спасибо
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 23.07.2010 16:46 Сообщение: 6
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
поиск->spidev

/arch/arm/mach-at91/board-sam9260ek.c

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Novichok
Добавлено 23.07.2010 17:17 Сообщение: 7
Novichok
5

Пункты: 36
Регистрация: 08.07.2010
По ссылке нашли следующий код:
Цитата

/*
* SPI devices.
*/
static struct spi_board_info ek_spi_devices[] = {

..................

{
.modalias = "spidev",
.chip_select = 2,
.controller_data = AT91_PIN_PC5,
.max_speed_hz = 1 * 1000 * 1000,
.bus_num = 1,
},
{
.modalias = "spidev",
.chip_select = 3,
.controller_data = AT91_PIN_PC4,
.max_speed_hz = 1 * 1000 * 1000,
.bus_num = 1,
}

Подскажите, какую роль выполняет настройка .controller_data (какие пины SPI тут нужно указать) и из каких соображений указывается номер .chip_select ?

В документации об этом написано весьма неконкретно.

Спасибо
Спуститься к концу Подняться к началу
Персональная информация
Strijar
Добавлено 23.07.2010 17:24 Редактировалось 23.07.2010 17:24 Сообщение: 8
Strijar
Ранг
5

Группа: Клиенты
Пункты: 1618
Регистрация: 21.04.2009
Пол: Мужчина
Подскажите, какую роль выполняет настройка .controller_data (какие пины SPI тут нужно указать) и из каких соображений указывается номер .chip_select ?


.controller_data это ваш чип-селект, если он не указан то срабатывает .chip_select пин которого берется из "стандартных" таблиц:

static const unsigned spi0_standard_cs[4]
static const unsigned spi1_standard_cs[4]

Читайте исходники - там все просто ;)
Спуститься к концу Подняться к началу
Персональная информация
Lavin
Добавлено 24.07.2010 11:08 Редактировалось 24.07.2010 11:15 Сообщение: 9
Lavin
2.4

Пункты: 1267
Регистрация: 22.05.2009
Пол: Мужчина
Из: Москва
Спасибо.Хотя я у меня не получилось работать со спи по другому,с spidev все заработало.Вопрос только в нагрузке на систему если постоянно слать от 2 до 20мб/сек из памяти на экран так..
2 sasamy я смотрел ваш первый драйвер.Там вы через драйвер spi вроде бы работаете...
Если скажем через cat /media/file_40megabyte>/dev/spidev1.1 выводить файл в 40мегабайт при частота спи 10мегагерц то загрузка процессора примерно 5-8%.Будет ли такая же нагрузка если вместо файла подусунуть кусок памяти?(Уже не в консоли а в си через стандартные функции записи файлов)
Спуститься к концу Подняться к началу
Персональная информация
Novichok
Добавлено 27.07.2010 15:57 Сообщение: 10
Novichok
5

Пункты: 36
Регистрация: 08.07.2010
Продолжаем разбираться с подключением spidev, выполнили следующие пункты:

Цитата
1) spidev включите в ядре "User mode SPI device driver support"
2.1) поправьте cs в at91sam9260_devices.c

static const unsigned spi0_standard_cs[4] = {...
и
static const unsigned spi1_standard_cs[4] = {...

2.2) жестко включите spi там же

short enable_spi0 = 1;
short enable_spi1 = 1;

3) после запуска mdev -s появятся /dev/spi* с котрыми можно работать из userspace


Однако ни в логах запуска ядра, ни в папке /dev spi не обнаружен. Более того, папка /sys пуста !, в которой как я понял должны быть описания классов устройств. Подскажите как наполнить папку /sys осмысленными описаниями spidev'a ? :)
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux