Перейти к содержанию
    

at91sam9xeek + Linux + SPI

на отладочной плате установлен линукс, необходимо работать с spi, отладочная плата планируется быть мастером.

 

как подходить к этому вопросу? с чего начинать? после рытья в гугле и аглицких форумов предполагаю что нужно

вписать какое нибудь устройство в исходники ядра, и перекомпилить его. но после перекомпилировки устройство

которое я вписал не появилось в списке устройств в директории /dev. дальше насколько я понял пишется драйвер,

он же модуль ядра, через который все и работается. но, как из приложения работать с модулем? как в приложении

увидеть функции, описанные в модуле?

 

еще предполагаю что может быть где то в директориях линукса есть файл этого spi и можно работать с интерфейсом

через него? но здесь я не представляю как это делать.

 

в общем пока в голове каша, теперь по крупицам собираю инфу и нужно все как то в голове систематизировать,

кто что знает, как и что делать, поделитесь опытом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Воспользуйтесь поиском по форуму. Это обсуждалось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

контроллер вроде как должен быть. а это имеет значение? насколько я понимаю, с моего линукса наверно без разницы с чем работать. контроллер spi вроде выбран, в плате их 2, я выбрал 2, cs я так полагаю нужно задавать уже из приложения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто для кучи железа, которое можно повесить на SPI, в линуксе уже есть драйвера. Не вижу смысла напрямую работать с SPI из приложения. Разве что что-то совсем специфичное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

блин, разумно. но не факт что не придется драйвера писать. пока я вообще не знаю как все это разрабатывать =( инфа вся какая то разрозненная

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите на какой-нить простой драйвер. Например ./drivers/hwmon/lis3lv02d_spi.c и ./drivers/hwmon/lis3lv02d.c

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это насколько я понимаю собирается в модуль? который будет .ko, т.е. драйвер устройства. само устройство я так полагаю описано в какой нибудь плате? и при сборке ядра устройство собирается в ядро, а этот драйвер будет либо в ядре, либо должен будет подключаться вручную?

и еще, это устройство получается уже прицеплено к какому нибудь spi контроллеру, и cs уже жестко задан?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно в модуль, можно вкомпилировать.

Устройство описывается структурой spi_board_info, которую надо передать в spi_register_board_info во время инициализации вашей платформы. Контроллер и CS должны быть определены.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот с этой структурой интресная история. я собирал ядро и фс openembedded`om, он собирает ангстром дистрибутив, его можно выкачать на linux4sam, он интересно все собирает, я еще толком не разобрался как он это делает, но это думаю вопрос времени. вот, он там сначала шаманит с ядром 2.6.27, потом с ядром 2.6.30, на выходе рабочее ядро 2.6.30. я в spi.h добавлял свое устройство, условно device, в оба исходника, и в 2.6.27 и в 2.6.30, когда он компилирует 2.6.27 все нормально, а в 2.6.30 - ругаецца, говорит что неправильное описание. хотя вроде все по исходникам. после того как закоментил некоторые моменты, он скомпилировал, но в /dev моего устройства не появилось. появился файл в /sys/device типа spi_1.1 вроде тот который я сделал. как дальше пользоваться утсройством? оно должно быть в /dev или нет? для чего устройство в /sys/device? что с этим делать? как работать с spi? в даташите писано, ежели хотите писать-читать, то вот вам регистры(а это ячейки памяти) пользуйтесь на здоровье, естессно операционка не дает туда ничего писать. я так полагаю необходим модуль, который как я думаю уже будет туда и писать и читать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Читайте http://www.mjmwired.net/kernel/Documentation/spi/spi-summary http://www.mjmwired.net/kernel/Documentation/spi/spidev и http://www.kernel.org/pub/linux/utils/kern...tplug/udev.html . Грубо говоря SPI это интерфейс. Если на нем есть устройства - udev создаст соответствующие записи в /dev .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...