SWW 0 25 декабря, 2013 Опубликовано 25 декабря, 2013 · Жалоба Пользую Sitara SDK от TI. Пытаюсь создать свой драйвер. Вопрос собственно в следующем. Как писать/читать регистры периферии в kernel space. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ixt 0 25 декабря, 2013 Опубликовано 25 декабря, 2013 · Жалоба Пытаюсь создать свой драйвер. Вопрос собственно в следующем. Как писать/читать регистры периферии в kernel space. Обычно в таких случаях помогает аналогия. Можно посмотреть как сделано в других похожих драйверах, особенно для этой архитектуры. Ну а в общем случае задача решается как и везде: подключение хедера в исходник, некоторые подготовительные действия для маппирования регистров, запись в регистр как в обычную переменную. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SWW 0 25 декабря, 2013 Опубликовано 25 декабря, 2013 · Жалоба Обычно в таких случаях помогает аналогия. Можно посмотреть как сделано в других похожих драйверах, особенно для этой архитектуры. Ну а в общем случае задача решается как и везде: подключение хедера в исходник, некоторые подготовительные действия для маппирования регистров, запись в регистр как в обычную переменную. Я в этом деле новичок. В похожие драйверы заглядывал. Прямого обращения к регистрам в них нет. Там все слишком запутано какими-то многоуровневыми абстракциями, в которых пока разбираться тяжело, тем более, что описания их функционирования нигде нет. Хотелось бы это обойти хотя бы на начальном этапе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ixt 0 25 декабря, 2013 Опубликовано 25 декабря, 2013 · Жалоба Ну а хедеры с описанием регистров, возможных битовых значений есть? Вот и ищите где они используются по исходникам ядра. Если хедеров нет и процессор нигде не упоминается, то значит Linux ещё не портирован на этот процессор и задача эта не совсем для новичка. Ну а вообще о каком процессоре-то речь (вижу вроде ARM9 какой-то), есть ли он в ванильном ядре? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 25 декабря, 2013 Опубликовано 25 декабря, 2013 (изменено) · Жалоба Какой драйвер пишите? Посмотрите здесь: lxr.free-electrons.com/source/arch/arm/include/asm/io.h Ну а хедеры с описанием регистров, возможных битовых значений есть? Вот и ищите где они используются по исходникам ядра. Если хедеров нет и процессор нигде не упоминается, то значит Linux ещё не портирован на этот процессор и задача эта не совсем для новичка. Ну а вообще о каком процессоре-то речь (вижу вроде ARM9 какой-то), есть ли он в ванильном ядре? Процессор Sitara ну например АМ3715. На похожем сделан Beagle board. Sitara давно работает с Линуксом. Изменено 25 декабря, 2013 пользователем Tarbal Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 25 декабря, 2013 Опубликовано 25 декабря, 2013 · Жалоба __raw_writel писать, ну считать read,понятно. Только вначале ioremap сделать для ближайшего кратного размеры страницы адреса и писать от полученного адреса + исходное смещение. Разбираетесь в общем поиском по ioremap Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SWW 0 26 декабря, 2013 Опубликовано 26 декабря, 2013 · Жалоба Благодарю всех за подсказки (особенно две последние)! Помогло! Доступ к периферии получен! Теперь я в родной стихии. Понеслась .....!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TigerSHARC 0 27 марта, 2014 Опубликовано 27 марта, 2014 · Жалоба А разве из kernel space нет доступа к регистрам напрямую? Насколько я помню, в драйвере можно писать по адресам регистров(как в обычном stand-alone) приложении. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться