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

Доступ к регистрам периферии на BeagleBone Black

Пользую Sitara SDK от TI. Пытаюсь создать свой драйвер. Вопрос собственно в следующем. Как писать/читать регистры периферии в kernel space.

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


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

Пытаюсь создать свой драйвер. Вопрос собственно в следующем. Как писать/читать регистры периферии в kernel space.

 

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

Ну а в общем случае задача решается как и везде: подключение хедера в исходник, некоторые подготовительные действия для маппирования регистров,

запись в регистр как в обычную переменную.

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


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

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

Ну а в общем случае задача решается как и везде: подключение хедера в исходник, некоторые подготовительные действия для маппирования регистров,

запись в регистр как в обычную переменную.

 

Я в этом деле новичок. В похожие драйверы заглядывал. Прямого обращения к регистрам в них нет. Там все слишком запутано какими-то многоуровневыми абстракциями, в которых пока разбираться тяжело, тем более, что описания их функционирования нигде нет. Хотелось бы это обойти хотя бы на начальном этапе.

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


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

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

Если хедеров нет и процессор нигде не упоминается, то значит Linux ещё не портирован на этот процессор и задача эта не совсем для новичка.

Ну а вообще о каком процессоре-то речь (вижу вроде ARM9 какой-то), есть ли он в ванильном ядре?

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


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

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

 

Посмотрите здесь:

lxr.free-electrons.com/source/arch/arm/include/asm/io.h

 

 

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

Если хедеров нет и процессор нигде не упоминается, то значит Linux ещё не портирован на этот процессор и задача эта не совсем для новичка.

Ну а вообще о каком процессоре-то речь (вижу вроде ARM9 какой-то), есть ли он в ванильном ядре?

 

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

Изменено пользователем Tarbal

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


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

__raw_writel писать, ну считать read,понятно. Только вначале ioremap сделать для ближайшего кратного размеры страницы адреса и писать от полученного адреса + исходное смещение. Разбираетесь в общем поиском по ioremap

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


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

Благодарю всех за подсказки (особенно две последние)! Помогло! Доступ к периферии получен! Теперь я в родной стихии. Понеслась .....!!

 

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


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

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

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


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

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

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

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

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

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

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

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

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

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