|
модуль ядра, работа по SPI |
|
|
|
Jul 29 2012, 16:16
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
В учебных целях хочу написать драйвер(модуль ядра), который работал бы слейвом в режиме SPI и записывал данные с мастера в буфер. Прочитал тольковую статью http://dmilvdv.narod.ru/Translate/WDDL/index.html но как применительно к моему процессору (SAM9G45) написать модуль SPI-slave не знаю. Драйверы для Linux до этого момента не писал. У меня есть standalone-приложение, реализующее требуемые функции. Если просто перенести соотвествующие процессору *.h файлы, описывающие перифирийные регистры, и, написать функции опроса и записи в эти регистры (как в standalone-приложении) в код модуля ядра? такое будет работать? где можно примеры посмотреть?
|
|
|
|
|
 |
Ответов
|
Jul 31 2012, 10:11
|
Местный
  
Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874

|
с драйвером слейва проблема в том, что надо успеть ответить на запрос Цитата There's an issue of response time ... since SPI has no flow control, typical types of request/response protocol have hard response time limits. So the RT stack may be implicitly required, except for very slow slave. вот здесь, например, обсуждение http://www.mail-archive.com/spi-devel-gene...t/msg00368.htmlа если по-простому, то выключите spi в линуксе совсем, чтобы ОС не знала ничего о нём и оформите исходники, которые работают с регистрами SPI-контроллера в виде модуля ядра просто в этом случае линуксовый фреймворк spi не будет использоваться, тогда не понятно в чём учебная цель
|
|
|
|
|
Jul 31 2012, 17:33
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
Цитата(Idle @ Jul 31 2012, 14:11)  а если по-простому, то выключите spi в линуксе совсем, чтобы ОС не знала ничего о нём и оформите исходники, которые работают с регистрами SPI-контроллера в виде модуля ядра просто в этом случае линуксовый фреймворк spi не будет использоваться, тогда не понятно в чём учебная цель Вот это наверное то что надо! Но насколько я понял из вашей ссылки то проблема в латентности Linux. Если писать с нуля без фреймворка ОСи то эта проблема будет решена? Но как такое сделать нигде не видел. Так же как и в standalone приложении? просто добавить файл *.h где определены регистры и работать с ними? нужно принимать данные на уровне ядра от SPI мастера и писать в кольцевой буфер и по запросу выдавать.
Сообщение отредактировал TigerSHARC - Jul 31 2012, 17:55
|
|
|
|
|
Jul 31 2012, 17:54
|
Местный
  
Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874

|
Цитата(TigerSHARC @ Jul 31 2012, 21:33)  просто добавить файл *.h где определены регистры и работать с ними? да, работать с регистрами, они же промаплены в память; здесь лучше уточнить у работавших непосредственно с arm, возможно там есть какие-то тонкости, как достучаться до этих регистров
|
|
|
|
|
Aug 2 2012, 17:29
|
Местный
  
Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874

|
Цитата(Zelepuk @ Aug 2 2012, 21:15)  Насколько я знаю работать напрямую с регистрами можно только из пространства пользователя, предварительно вручную промапив регистры в память. Думаю на уровне ядра такое не получится. это не так, как дрова-то писать тогда heh  тебя, наверное, спутали примеры под арм где народ дёргает gpio промапив регистры на память в юзерспейсе, друг-другу скидывают на это ссылки и делают по аналогии  я пять лет назад, когда только начинал, пытался что-то промапить под mips, ничего не вышло  в mips и blackfin это делается напрямую, с arm не работал, поэтому лучше уточнить у армоводов
Сообщение отредактировал Idle - Aug 2 2012, 17:30
|
|
|
|
|
Aug 2 2012, 18:27
|
Знающий
   
Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464

|
Цитата(Idle @ Aug 2 2012, 21:29)  это не так, как дрова-то писать тогда heh  тебя, наверное, спутали примеры под арм где народ дёргает gpio промапив регистры на память в юзерспейсе, друг-другу скидывают на это ссылки и делают по аналогии  я пять лет назад, когда только начинал, пытался что-то промапить под mips, ничего не вышло  в mips и blackfin это делается напрямую, с arm не работал, поэтому лучше уточнить у армоводов Как пишутся драйвера пока не до конца понимаю, так как в книгах все равно дается подход высокого уровня. Ниразу еще не видел, чтобы кто-то писал в регистры напрямую, а хочется разобраться досконально что происходит в драйверах, да и привычнее мне писать в регистры напрямую. Да, все именно та как вы пишите. Мне дали ссылку на пример ногодрынга из пользовательской программы. Получается для blackfin даже вручную мапить ничего не надо? Про арм спросить не у кого... Ау! Армоводы!
|
|
|
|
Сообщений в этой теме
TigerSHARC модуль ядра Jul 29 2012, 16:16 Idle подсистема spi не поддерживает slave http://lxr.li... Jul 30 2012, 03:18 xor.kruger В свое время разобрался с SPI в GNU/Linux с помощь... Jul 30 2012, 07:46 TigerSHARC Цитата(xor.kruger @ Jul 30 2012, 11:46) В... Jul 30 2012, 09:01  Idle Цитата(TigerSHARC @ Jul 30 2012, 13:01)
... Jul 31 2012, 07:06   TigerSHARC Цитата(Idle @ Jul 31 2012, 11:06) http://... Jul 31 2012, 08:41      Idle тут история такая что, регистры soc ведь находятся... Aug 2 2012, 19:02 ubobrov Вот, я переделывал драйвер SPI от атмела чтоб он р... Nov 23 2012, 13:04 alx2 Цитата(ubobrov @ Nov 23 2012, 18:04) Вот,... Dec 9 2012, 12:30
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|