Board.KolibriOS.org
http://board.kolibrios.org/

Как писать драйвера
http://board.kolibrios.org/viewtopic.php?f=3&t=707
Страница 2 из 3

Автор:  k@sTIg@r [ Пт май 11, 2007 5:56 pm ]
Заголовок сообщения: 

Правильно.
Внимательней читай статью. Ты должен зарегистрировать сервис (в статье stdcall RegService, my_service, service_proc)
Вот тут я не знаю, что произойдет если не регистрировать сервис....

Кстати:
version dd 0x00030003
текущая 0x00050005!!!!!

и еще:
jmp $
насчет этого не уверен, некорректно как-то...

Автор:  Serge [ Пт май 11, 2007 6:01 pm ]
Заголовок сообщения: 

Mihail

Значит твоя видеокарта не поддерживается. Драйвер работает на ATI 7500 - x800

Автор:  Serge [ Пт май 11, 2007 6:25 pm ]
Заголовок сообщения: 

Драйвер должен зарегистрировать себя RegService и вернуть хэндл ядру в еах. Если еах=0 то ядро считает что усторойство не поддерживается или его не удаётся настроить и освобождает память которую драйвер занимает. Никаких дополнительных проверок хэндла не производится хотя надо их добавить.

Автор:  Mihail [ Пт май 11, 2007 7:16 pm ]
Заголовок сообщения: 

k@sTIg@r писал(а):
Правильно.
Внимательней читай статью. Ты должен зарегистрировать сервис (в статье stdcall RegService, my_service, service_proc)

Я полагаю что START вообще не запускается.
Цитата:
version dd 0x00030003
текущая 0x00050005!!!!!

В http://kolibrios.org/files/download/k_0.6.5.0_src.7z
k_0.6.5.0_src\kernel\drivers
везде 00030003
Цитата:
и еще:
jmp $

Как я понимаю, возвав load_driver до
; START MULTITASKING
с jmp $ после START система должна зависнуть.
Но этого не происходит, работает как ни в чем не бывало.

Если не трудно пришли мне образ загрузочной дискеты
и исходники драйвера. fpauk@mail.ru

Автор:  Mihail [ Пт май 11, 2007 7:25 pm ]
Заголовок сообщения: 

Serge писал(а):
Mihail

Значит твоя видеокарта не поддерживается. Драйвер работает на ATI 7500 - x800


Я запускаю под Bochs-2.3

После
proc START stdcall, state:dword
в kernel\drivers\ati2d.asm
я вствил
jmp $
но система не зависла.

Похоже, что драйвер вообще не загружается.

Автор:  Serge [ Пт май 11, 2007 8:00 pm ]
Заголовок сообщения: 

Mihail

Проверил в Боше, зависла как и положено. Посмотри образ, может скопировал патченный драйвер в другую папку.

Автор:  Mihail [ Сб май 12, 2007 11:16 am ]
Заголовок сообщения: 

Serge писал(а):
Mihail

Посмотри образ, может скопировал патченный драйвер в другую папку.


Это я могу. Но тем-же JMP $ я это проверил.
Или в другую в смылсле не в /rd/1/DRIVERS ?
Я использовал образ из http://kolibrios.org/files/download/k_0.6.5.0_ru.7z
и заменил в нем старый ati2d.obj на мой с jmp $
после
proc START stdcall, state:dword

Автор:  Serge [ Сб май 12, 2007 1:30 pm ]
Заголовок сообщения: 

Mihail

Драйвер должен быть в папке /rd/1/DRIVERS. Если ты заменил драйвер то у тебя не запускается START. Вариантов три: ядро не может найти драйвер в /rd/1/DRIVERS, драйвер пытается импортировать несуществующие функции, версии драйверной модели не совпадают. Если ты брал оригинальный образ дистрибутива то исходники драйвера должны быть из дистриба или скачай последние версии исходников с SVN и замени ядро и все драйверы, а потом эксперементируй. Или протрассируй вызов load_driver в отладочном Боше.

Автор:  Mihail [ Сб май 12, 2007 4:55 pm ]
Заголовок сообщения: 

Serge писал(а):
Mihail

Драйвер должен быть в папке /rd/1/DRIVERS. Если ты заменил драйвер то у тебя не запускается START. Вариантов три: ядро не может найти драйвер в /rd/1/DRIVERS, драйвер пытается импортировать несуществующие функции, версии драйверной модели не совпадают. Если ты брал оригинальный образ дистрибутива то исходники драйвера должны быть из дистриба или скачай последние версии исходников с SVN и замени ядро и все драйверы, а потом эксперементируй. Или протрассируй вызов load_driver в отладочном Боше.


В сочетании http://kolibrios.org/files/download/k_0.6.5.0_dbg.7z
с http://kolibrios.org/files/download/k_svn.488_ru.7z
работает.

Автор:  Serge [ Сб май 12, 2007 5:05 pm ]
Заголовок сообщения: 

Mihail

Что значит "работает" ?

Автор:  Mihail [ Сб май 12, 2007 6:51 pm ]
Заголовок сообщения: 

Serge писал(а):
Mihail

Что значит "работает" ?


На данном этапе, я вывожу сообщение из своего драйвера на экран
(с помощью boot_log).

Автор:  Mihail [ Сб июн 23, 2007 3:24 pm ]
Заголовок сообщения: 

Драйвер FORTH исполняет исходный форт-текст в файле /sys/drivers/AUTOEXEC.F
http://fpauk.narod.ru/k_svn.549_src_f.rar
Теперь драйвера могут быть представлены в виде исходных текстов Форта.
Т.е. модифицироваться под Колибри.

Почемуто зависает srv_handler при том, что service_proc ничего не делает.

Автор:  Galkov [ Вт ноя 25, 2008 1:44 pm ]
Заголовок сообщения:  Re: Как писать драйвера

diamond писал(а):
Вот, написал статью, демонстрирующую программирование драйвера.
http://diamondz.land.ru/writedrv.htm
Приведённый там пример может быть полезен и безотносительно к обучению - написан фильтр, показывающий все обращения программ к файловой системе.

Вопрос возник (fmon.asm#371):
Код:
        jz      @f
        push    str_skipped
        call    [con_printf]
@@:

Это я чего-то недопонял, или просто опечатка :?:

Автор:  diamond [ Вт ноя 25, 2008 2:20 pm ]
Заголовок сообщения:  Re: Как писать драйвера

Galkov писал(а):
Вопрос возник (fmon.asm#371):

В смысле, стек разбалансируется? Угу, ошибся, нужно дописать, к примеру, "pop ecx" после con_printf. (Правда, на практике это не сказывается - во-первых, на практике эта ситуация может возникнуть в совершенно исключительных случаях, во-вторых, небольшая разбалансированность стека в данной конкретной программе не мешает.)

Автор:  Galkov [ Вт ноя 25, 2008 3:14 pm ]
Заголовок сообщения:  Re: Как писать драйвера

Да без проблем :)

Это я так: копаюсь, разбираюсь потихоньку, пытаюсь понять происходящее, уловить идеологию....
Не все пока понятно, конечно :(

В общем, в большей степени-то, я свое понимание пытаюсь контролировать

Страница 2 из 3 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/