Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Доступ к регистрам периферии на BeagleBone Black
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
SWW
Пользую Sitara SDK от TI. Пытаюсь создать свой драйвер. Вопрос собственно в следующем. Как писать/читать регистры периферии в kernel space.
Ixt
Цитата(SWW @ Dec 25 2013, 11:29) *
Пытаюсь создать свой драйвер. Вопрос собственно в следующем. Как писать/читать регистры периферии в kernel space.


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


Я в этом деле новичок. В похожие драйверы заглядывал. Прямого обращения к регистрам в них нет. Там все слишком запутано какими-то многоуровневыми абстракциями, в которых пока разбираться тяжело, тем более, что описания их функционирования нигде нет. Хотелось бы это обойти хотя бы на начальном этапе.
Ixt
Ну а хедеры с описанием регистров, возможных битовых значений есть? Вот и ищите где они используются по исходникам ядра.
Если хедеров нет и процессор нигде не упоминается, то значит Linux ещё не портирован на этот процессор и задача эта не совсем для новичка.
Ну а вообще о каком процессоре-то речь (вижу вроде ARM9 какой-то), есть ли он в ванильном ядре?
Tarbal
Какой драйвер пишите?

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


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


Процессор Sitara ну например АМ3715. На похожем сделан Beagle board. Sitara давно работает с Линуксом.
DASM
__raw_writel писать, ну считать read,понятно. Только вначале ioremap сделать для ближайшего кратного размеры страницы адреса и писать от полученного адреса + исходное смещение. Разбираетесь в общем поиском по ioremap
SWW
Благодарю всех за подсказки (особенно две последние)! Помогло! Доступ к периферии получен! Теперь я в родной стихии. Понеслась .....!!
TigerSHARC
А разве из kernel space нет доступа к регистрам напрямую? Насколько я помню, в драйвере можно писать по адресам регистров(как в обычном stand-alone) приложении.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.