Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> несколько вопросов драйвера(модуля), необходима теория 
:(
    Опции темы
slater
Дата 14.3.2011, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 20.11.2009

Репутация: -2
Всего: -4



приветствую!

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

1. как динамически можно подгрузить модуль(драйвер).

      нагуглил пока что можно подгружать с помощью aliasов(сейчас разбираюсь с этим методом)
      Есть еще способы?
      например, по прерыванию? 
      хотелось бы разобраться с этим вопросом, желательно на простейших примерах.

2. как я могу узнать(зная схемотехнику, соотв. и физические адресные линии проца) куда ядро размаппило в адресное пространство linux область памяти некого устройства.
(например, чтобы меня поняли....есть например nor flash, ее адресное пространство, например, 2Мб, эти 2Мб маппятся, например, на адресное пространство процессора по адресам, ну например, начиная с 0х0000 0000 адреса)
      Есть способы посмотреть, что и как ядро размаппило периферию на свое адресное пространство?

3. в своем драйвере мне необходимо писать некие команды некому устройству. Дело в том, что я знаю физические адреса, а не виртуальные. Могу я как то записать определенные значения по определенным физическим адресам(например, при реализации своего файлового метода метода iocnt() ) из kernel-space  и из user-space(из пользовательского процесса)?

4. как узнать, какие порты i/o работают через dma?

заранее преогромное спасибо!

Это сообщение отредактировал(а) slater - 14.3.2011, 12:07
PM MAIL   Вверх
slater
Дата 20.3.2011, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 20.11.2009

Репутация: -2
Всего: -4



up
PM MAIL   Вверх
alexvs11
Дата 20.3.2011, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: -1
Всего: 10



Цитата(slater @  14.3.2011,  12:05 Найти цитируемый пост)
1. как динамически можно подгрузить модуль(драйвер).      нагуглил пока что можно подгружать с помощью aliasов(сейчас разбираюсь с этим методом)      Есть еще способы?      например, по прерыванию?       хотелось бы разобраться с этим вопросом, желательно на простейших примерах.

system( "insmod ..." ); ?  smile rootовские права вам все равно понадобятся


Цитата(slater @  14.3.2011,  12:05 Найти цитируемый пост)
3. в своем драйвере мне необходимо писать некие команды некому устройству. Дело в том, что я знаю физические адреса, а не виртуальные. Могу я как то записать определенные значения по определенным физическим адресам(например, при реализации своего файлового метода метода iocnt() ) из kernel-space  и из user-space(из пользовательского процесса)?

как у вас устройство подключено? если через usb, то там стандартная практика написания usb драйверов, какие адреса вообщем
из user-space пишут в драйвера через ioctl/write, а драйвер уже там сам рулит, при чем адреса
PM MAIL   Вверх
bsa
Дата 20.3.2011, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



slater
1. init_module()
2. на пользовательском уровне это не имеет значение. Поэтому, если тебе это так нужно, то смотри исходники соответствующего модуля
3. есть определенные правила написания драйверов устройств. Поэтому, берешь и читаешь документацию и исходники уже готовых аналогичных устройств.
4. Если устройство подключено через шину PCI или аналогичную, то вся необходимая информация передается ОС. Если же через ISA или еще какую простую шину, то тут или пробовать все возможные варианты, или использовать platform driver (если ресурсы устройства вообще не меняются, как на встраиваемых системах) - в этом случае все физические ресурсы устройства прописываются в ядре, а драйверы уже считывают их и используют. Это позволяет писать общий драйвер устройства независимого от физического подключения.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.