реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Доступ к регистрам периферии на BeagleBone Black
SWW
сообщение Dec 25 2013, 07:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 17-03-05
Пользователь №: 3 421



Пользую Sitara SDK от TI. Пытаюсь создать свой драйвер. Вопрос собственно в следующем. Как писать/читать регистры периферии в kernel space.
Go to the top of the page
 
+Quote Post
Ixt
сообщение Dec 25 2013, 08:06
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 27-10-06
Из: Брянск
Пользователь №: 21 724



Цитата(SWW @ Dec 25 2013, 11:29) *
Пытаюсь создать свой драйвер. Вопрос собственно в следующем. Как писать/читать регистры периферии в kernel space.


Обычно в таких случаях помогает аналогия. Можно посмотреть как сделано в других похожих драйверах, особенно для этой архитектуры.
Ну а в общем случае задача решается как и везде: подключение хедера в исходник, некоторые подготовительные действия для маппирования регистров,
запись в регистр как в обычную переменную.
Go to the top of the page
 
+Quote Post
SWW
сообщение Dec 25 2013, 09:53
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 17-03-05
Пользователь №: 3 421



Цитата(Ixt @ Dec 25 2013, 11:06) *
Обычно в таких случаях помогает аналогия. Можно посмотреть как сделано в других похожих драйверах, особенно для этой архитектуры.
Ну а в общем случае задача решается как и везде: подключение хедера в исходник, некоторые подготовительные действия для маппирования регистров,
запись в регистр как в обычную переменную.


Я в этом деле новичок. В похожие драйверы заглядывал. Прямого обращения к регистрам в них нет. Там все слишком запутано какими-то многоуровневыми абстракциями, в которых пока разбираться тяжело, тем более, что описания их функционирования нигде нет. Хотелось бы это обойти хотя бы на начальном этапе.
Go to the top of the page
 
+Quote Post
Ixt
сообщение Dec 25 2013, 11:26
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 27-10-06
Из: Брянск
Пользователь №: 21 724



Ну а хедеры с описанием регистров, возможных битовых значений есть? Вот и ищите где они используются по исходникам ядра.
Если хедеров нет и процессор нигде не упоминается, то значит Linux ещё не портирован на этот процессор и задача эта не совсем для новичка.
Ну а вообще о каком процессоре-то речь (вижу вроде ARM9 какой-то), есть ли он в ванильном ядре?
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Dec 25 2013, 21:04
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Какой драйвер пишите?

Посмотрите здесь:
lxr.free-electrons.com/source/arch/arm/include/asm/io.h


Цитата(Ixt @ Dec 25 2013, 14:26) *
Ну а хедеры с описанием регистров, возможных битовых значений есть? Вот и ищите где они используются по исходникам ядра.
Если хедеров нет и процессор нигде не упоминается, то значит Linux ещё не портирован на этот процессор и задача эта не совсем для новичка.
Ну а вообще о каком процессоре-то речь (вижу вроде ARM9 какой-то), есть ли он в ванильном ядре?


Процессор Sitara ну например АМ3715. На похожем сделан Beagle board. Sitara давно работает с Линуксом.

Сообщение отредактировал Tarbal - Dec 25 2013, 21:14
Go to the top of the page
 
+Quote Post
DASM
сообщение Dec 25 2013, 21:09
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



__raw_writel писать, ну считать read,понятно. Только вначале ioremap сделать для ближайшего кратного размеры страницы адреса и писать от полученного адреса + исходное смещение. Разбираетесь в общем поиском по ioremap
Go to the top of the page
 
+Quote Post
SWW
сообщение Dec 26 2013, 15:52
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 17-03-05
Пользователь №: 3 421



Благодарю всех за подсказки (особенно две последние)! Помогло! Доступ к периферии получен! Теперь я в родной стихии. Понеслась .....!!
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Mar 27 2014, 09:36
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



А разве из kernel space нет доступа к регистрам напрямую? Насколько я помню, в драйвере можно писать по адресам регистров(как в обычном stand-alone) приложении.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th July 2025 - 03:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01543 секунд с 7
ELECTRONIX ©2004-2016