|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Serguei Miridonov 2:5020/400 07 Apr 2005 05:09:09 To : Viktor Subject : Re: Прямой доступ к железу? --------------------------------------------------------------------------------
Viktor wrote:
> Прошу вас, по возможности, дать ссылки на какие-нибудь доки в сети и
> проверить полноту собранного мной из ваших ответов списка мануалов.
> Человек, думаю, разберется. Вот только с Linux'ом он только начал
> знакомиться.
>
> Итак, man (2) на open, read, write, ioctl, ioperm, inb. Что еще?
Если Вы про драйвер, то только man на вышеперечислинное поможет
мало. Это - некий стандартный API, через который практически идёт
обращение к функциям драйвера, т.е. из user space в ядро. Самое
необходимое - это open, close и ioctl. Эти трое должны иметь точки
входа в драйвере. Собственно, это - рабочая часть драйвера. Кроме
этих точек входа есть ещё процедуры инициализации и завершения.
Первая должна "пощупать" железо, распознать его, и попросить у ядра
память под рабочие структуры и пр. Второе - корректно завершить
работу, т.е. заявить об освобождении памяти и "погасить" железо,
если надо.
Это - необходимый минимум. Далее можно усложнять и расширять - если
нужны прерывания - заявить об этом ядру, указав точку входа в
процедуру обработки и т.п.
Всё это перечислено здесь в очень общем виде. Кроме этого, важно
понять, что пространство адресов в ядре и в задаче, откуда
драйверные функции вызываются - разные, поэтому напрямую
пользоваться указателями нельзя, данные туда-сюда нужно передавать
через ядерные функции copy_from_user и copy_to_user.
В общем, надо много чего ещё знать, чтобы писать драйверы. Потому то
мне и кажется, что иногда, если задача простая, если надо только
что-то попробовать, то можно попытаться сделать это и прямо в user
space.
Hо учиться писать драйверы надо. Самое продуктивное, как мне кажется
(по крайней мере я так учился), надо взять и поизучать исходники в
ядре. Как правило, в мире редко бывает что-то абсолютно новое. Так
что, если поискать, то скорее всего можно найти драйвер под нечто
похожее на железяку Вашего приятеля. Или в крайнем случае, и это -
наверняка, можно легко найти, как обращаться к PCI.
--- ifmail v.2.15dev5.3
* Origin: CICESE Research Center, Ensenada, Mexico (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/13396077da3d6.html, оценка из 5, голосов 10
|