Полная версия этой страницы:
at91sam9xeek + Linux + SPI
sangre
Jan 28 2011, 07:38
на отладочной плате установлен линукс, необходимо работать с spi, отладочная плата планируется быть мастером.
как подходить к этому вопросу? с чего начинать? после рытья в гугле и аглицких форумов предполагаю что нужно
вписать какое нибудь устройство в исходники ядра, и перекомпилить его. но после перекомпилировки устройство
которое я вписал не появилось в списке устройств в директории /dev. дальше насколько я понял пишется драйвер,
он же модуль ядра, через который все и работается. но, как из приложения работать с модулем? как в приложении
увидеть функции, описанные в модуле?
еще предполагаю что может быть где то в директориях линукса есть файл этого spi и можно работать с интерфейсом
через него? но здесь я не представляю как это делать.
в общем пока в голове каша, теперь по крупицам собираю инфу и нужно все как то в голове систематизировать,
кто что знает, как и что делать, поделитесь опытом.
mdmitry
Jan 28 2011, 14:37
Воспользуйтесь поиском по форуму. Это обсуждалось.
sangre
Jan 31 2011, 07:50
что то как то поиск не очень удался, как то все везде сумбурно...
Dron_Gus
Jan 31 2011, 08:12
Вы подробней расскажите, с чем Вы хотите работать по spi.
контроллер вроде как должен быть. а это имеет значение? насколько я понимаю, с моего линукса наверно без разницы с чем работать. контроллер spi вроде выбран, в плате их 2, я выбрал 2, cs я так полагаю нужно задавать уже из приложения.
Dron_Gus
Feb 1 2011, 07:24
Просто для кучи железа, которое можно повесить на SPI, в линуксе уже есть драйвера. Не вижу смысла напрямую работать с SPI из приложения. Разве что что-то совсем специфичное.
блин, разумно. но не факт что не придется драйвера писать. пока я вообще не знаю как все это разрабатывать =( инфа вся какая то разрозненная
Dron_Gus
Feb 1 2011, 10:15
Посмотрите на какой-нить простой драйвер. Например ./drivers/hwmon/lis3lv02d_spi.c и ./drivers/hwmon/lis3lv02d.c
это насколько я понимаю собирается в модуль? который будет .ko, т.е. драйвер устройства. само устройство я так полагаю описано в какой нибудь плате? и при сборке ядра устройство собирается в ядро, а этот драйвер будет либо в ядре, либо должен будет подключаться вручную?
и еще, это устройство получается уже прицеплено к какому нибудь spi контроллеру, и cs уже жестко задан?
Dron_Gus
Feb 1 2011, 11:18
Можно в модуль, можно вкомпилировать.
Устройство описывается структурой
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? в даташите писано, ежели хотите писать-читать, то вот вам регистры(а это ячейки памяти) пользуйтесь на здоровье, естессно операционка не дает туда ничего писать. я так полагаю необходим модуль, который как я думаю уже будет туда и писать и читать?
Dron_Gus
Feb 2 2011, 12:33
благодарю за ссылки, почитаю =)
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.