реклама на сайте
подробности

 
 
> Драйвер блочного устройства в Linux
3.14
сообщение Oct 25 2005, 20:28
Сообщение #1


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Отзовитесь плиз, кто писал драйвер блочного устройства под линух.
С символьным относительно быстро разобрался, а вто с блочным cranky.gif
Примеры в uClinux не особо помогают, пока даже не могу вычленить нужные части.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
3.14
сообщение Nov 5 2005, 14:42
Сообщение #2


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Блин, чем дальше, тем ... maniac.gif
На данный момент, мой "кастрат" не выходит из request (или не так выходит). Создал тестик, который открывает файл устройства и читает из него 10 байт и закрывает файл. Для отладки, натыкал в драйвере индикаторов выполнения.
После вызова fread, ядро вызвает xsysace_do_request, выполняет команду READ, после этого система виснет, но не так чтобы совсем замереть, терминалка реагирует на нажатие клавиш. cranky.gif

Насчет MBR, меня смутило то что FAT может сохранять свои параметры прямо в MBR.

Насчет цилиндров, например, если посчитать суммарную емкость флешки из параметров которые показывает WinHex, то она не совпадает с общей на 9000 секторов, хотя FAT занимает 971х2, резервных 34 и скрытых 32 сектора.

Еще, когда мой драйвер грузится, то вываливается сообщение о неизвестной таблице партишинов, это что означает, что я не смогу его смонтировать?
Прикрепленные файлы
Прикрепленный файл  adapter.txt ( 25.94 килобайт ) Кол-во скачиваний: 68
 


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
makc
сообщение Nov 5 2005, 17:18
Сообщение #3


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(3.14 @ Nov 5 2005, 17:42)
Блин, чем дальше, тем ...  maniac.gif
*


blush.gif
На самом деле - ничего страшного. Все эти проблемы от того, что нет ясности в том, как драйвер должен работать.


Цитата
На данный момент, мой "кастрат" не выходит из request (или не так выходит). Создал тестик, который открывает файл устройства и читает из него 10 байт и закрывает файл. Для отладки, натыкал в драйвере индикаторов выполнения.
После вызова fread, ядро вызвает xsysace_do_request, выполняет команду READ, после этого система виснет, но не так чтобы совсем замереть, терминалка реагирует на нажатие клавиш.  cranky.gif


Явная проблема xsysace_do_request - нарушена логика его работы. Поясню. Драйвер должен работать следующим образом:
1. Выполняется инициализация и регистрируется блочное устройство. При этом выделяются и резервируются все те аппаратные ресурсы (порты, области памяти, прерывания), которые использует устройство.
2. Рабочий цикл драйвера, в котором он принимает запросы ввода-вывода от различных подсистем ядра (файловая система, интерфейс с пользовательским ПО). При приходе запроса ввода-вывода вызывается зарегистрированная функция-обработчик запросов, которая выполняет передачу данных в запрошенном направлении (READ или WRITE), при этом очередь запросов должна быть обработана полностью. (В этом, кстати, проблема твоего драйвера, но об этом ниже). Обработка запросов может выполняться в отложенном режиме (по таймеру, по прерыванию или иначе), но главное - должна выполняться. Если запрос на ввод-вывод не будет обработан, но подсистема или процесс его сделавший будет "висеть" до тех пор, пока запрос не завершится тем или иным образом. А у тебя этого не происходит, т.к. в функции обработки запросов нет цикла (а должет быть). При этом цикл должен в общем случае выполняться до тех пор, пока есть запросы в очереди (условие ! QUERY_EMPTY).
3. Останов драйвера.

Цитата
Насчет MBR, меня смутило то что FAT может сохранять свои параметры прямо в MBR.


Откуда дровишки? blink.gif Не имеет FAT права сохранять что-либо в MBR. В Boot Record раздела - пожалуйста, но в MBR - никогда.

Цитата
Насчет цилиндров, например, если посчитать суммарную емкость флешки из параметров которые показывает WinHex, то она не совпадает с общей на 9000 секторов, хотя FAT занимает 971х2, резервных 34 и скрытых 32 сектора.


Нужно смотреть на то, что показывает fdisk под линуксом. Он не обманет.

Цитата
Еще, когда мой драйвер грузится, то вываливается сообщение о неизвестной таблице партишинов, это что означает, что я не смогу его смонтировать?


Нет, твой драйвер умеет работать с таблицей разделов, просто на карточке ее нет. Т.е. FAT занимает всю карточк монопольно.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 3.14   Драйвер блочного устройства в Linux   Oct 25 2005, 20:28
- - makc   Цитата(3.14 @ Oct 25 2005, 23:28)Отзовитесь п...   Oct 26 2005, 04:05
- - amw   Цитата(3.14 @ Oct 25 2005, 23:28)Отзовитесь п...   Oct 26 2005, 15:23
- - 3.14   Нижесказанное касается uClinux, ядро 2.4. Начал я ...   Oct 26 2005, 20:35
|- - gab   Цитата(3.14 @ Oct 26 2005, 23:35)Нижесказанно...   Oct 27 2005, 01:35
|- - makc   Цитата(3.14 @ Oct 26 2005, 23:35)Нижесказанно...   Oct 27 2005, 06:23
|- - amw   Цитата(makc @ Oct 27 2005, 09:23)Цитата(3.14 ...   Oct 28 2005, 09:13
|- - amw   Цитата(makc @ Oct 27 2005, 09:23)У меня есть ...   Oct 28 2005, 12:03
- - 3.14   Всем спасибо, с мертвой точки наконец сдвинулся. К...   Oct 29 2005, 12:13
|- - amw   Цитата(3.14 @ Oct 29 2005, 15:13)Всем спасибо...   Nov 1 2005, 16:33
- - 3.14   Мне вот еще что не понятно. В примере с символьным...   Oct 30 2005, 11:14
|- - amw   Цитата(3.14 @ Oct 30 2005, 14:14)Мне вот еще ...   Nov 1 2005, 16:50
|- - amw   В ядрах 2.6 есть еще так называемые шедулеры ввода...   Nov 1 2005, 17:01
|- - makc   Цитата(amw @ Nov 1 2005, 20:01)В ядрах 2.6 ес...   Nov 1 2005, 17:21
|- - amw   Цитата(makc @ Nov 1 2005, 20:21)ЦитатаДрайвер...   Nov 2 2005, 14:13
|- - makc   Цитата(amw @ Nov 2 2005, 17:13)А можна с этог...   Nov 2 2005, 16:37
|- - amw   Цитата(makc @ Nov 2 2005, 19:37)Книга Linux D...   Nov 3 2005, 09:47
- - 3.14   Требуется помощь. Я хочу воспользоваться драивером...   Nov 3 2005, 19:49
- - makc   Отучение может быть выполнено лишь одним способом ...   Nov 3 2005, 20:49
- - 3.14   А если я сделаю так: в фунции xsysace_do_request в...   Nov 3 2005, 21:48
|- - makc   Цитата(3.14 @ Nov 4 2005, 00:48)А если я сдел...   Nov 4 2005, 20:19
- - 3.14   В общем, как то кастрировал этот драйвер, правда м...   Nov 4 2005, 16:01
|- - makc   Цитата(3.14 @ Nov 4 2005, 19:01)В общем, как ...   Nov 4 2005, 20:28
- - 3.14   Спасибо! Поправил с учетом последних указаний,...   Nov 5 2005, 18:35
|- - makc   Цитата(3.14 @ Nov 5 2005, 21:35)Спасибо! ...   Nov 5 2005, 19:18
- - 3.14   Далее. 1) Когда мой тестик читает из устройства 51...   Nov 5 2005, 21:52
- - 3.14   Уф-ф, мон...   Nov 6 2005, 15:56
- - makc   Цитата(3.14 @ Nov 6 2005, 18:56) Уф-ф, мо...   Nov 6 2005, 16:28


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 23:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01312 секунд с 7
ELECTRONIX ©2004-2016