Page 2 of 3

Posted: Fri May 11, 2007 5:56 pm
by k@sTIg@r
Правильно.
Внимательней читай статью. Ты должен зарегистрировать сервис (в статье stdcall RegService, my_service, service_proc)
Вот тут я не знаю, что произойдет если не регистрировать сервис....

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

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

Posted: Fri May 11, 2007 6:01 pm
by Serge
Mihail

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

Posted: Fri May 11, 2007 6:25 pm
by Serge
Драйвер должен зарегистрировать себя RegService и вернуть хэндл ядру в еах. Если еах=0 то ядро считает что усторойство не поддерживается или его не удаётся настроить и освобождает память которую драйвер занимает. Никаких дополнительных проверок хэндла не производится хотя надо их добавить.

Posted: Fri May 11, 2007 7:16 pm
by Mihail
k@sTIg@r wrote:Правильно.
Внимательней читай статью. Ты должен зарегистрировать сервис (в статье stdcall RegService, my_service, service_proc)
Я полагаю что START вообще не запускается.
version dd 0x00030003
текущая 0x00050005!!!!!
В http://fpauk.narod.ru/k_svn.605_src_f.rar
k_0.6.5.0_src\kernel\drivers
везде 00030003
и еще:
jmp $
Как я понимаю, возвав load_driver до
; START MULTITASKING
с jmp $ после START система должна зависнуть.
Но этого не происходит, работает как ни в чем не бывало.

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

Posted: Fri May 11, 2007 7:25 pm
by Mihail
Serge wrote:Mihail

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

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

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

Posted: Fri May 11, 2007 8:00 pm
by Serge
Mihail

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

Posted: Sat May 12, 2007 11:16 am
by Mihail
Serge wrote: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
работает.

Posted: Sat May 12, 2007 1:30 pm
by Serge
Mihail

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

Posted: Sat May 12, 2007 5:05 pm
by Serge
Mihail

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

Posted: Sat May 12, 2007 6:51 pm
by Mihail
Serge wrote:Mihail

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

Posted: Sat Jun 23, 2007 3:24 pm
by Mihail
Драйвер FORTH исполняет исходный форт-текст в файле /sys/drivers/AUTOEXEC.F
Теперь драйвера могут быть представлены в виде исходных текстов Форта.
Т.е. модифицироваться под Колибри.

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

Re: Как писать драйвера

Posted: Tue Nov 25, 2008 1:44 pm
by Galkov
diamond wrote:Вот, написал статью, демонстрирующую программирование драйвера.
http://diamondz.land.ru/writedrv.htm
Приведённый там пример может быть полезен и безотносительно к обучению - написан фильтр, показывающий все обращения программ к файловой системе.
Вопрос возник (fmon.asm#371):

Code: Select all

        jz      @f
        push    str_skipped
        call    [con_printf]
@@:
Это я чего-то недопонял, или просто опечатка :?:

Re: Как писать драйвера

Posted: Tue Nov 25, 2008 2:20 pm
by diamond
Galkov wrote:Вопрос возник (fmon.asm#371):
В смысле, стек разбалансируется? Угу, ошибся, нужно дописать, к примеру, "pop ecx" после con_printf. (Правда, на практике это не сказывается - во-первых, на практике эта ситуация может возникнуть в совершенно исключительных случаях, во-вторых, небольшая разбалансированность стека в данной конкретной программе не мешает.)

Re: Как писать драйвера

Posted: Tue Nov 25, 2008 3:14 pm
by Galkov
Да без проблем :)

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

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

Re: Как писать драйвера

Posted: Fri Mar 29, 2013 2:25 pm
by neyro
Diamond, сообщи пожалуйста какой прогой ты создаёшь образы дистрибутивов. Как я уже сообщал Сержу мне тут пришлось переупаковать ваш исходный ISO-шник, и он после этого перестал грузиться. Работал обычной UltraISO и Bootise для загрузки на флешку так после этого даже Grub стал ругаться, он перестал понимать инструкцию: configure Grab4dos.log || chainloader (0xff), хотя с вашим исходным образом он её прекрасно понимал. Сообщи пожалуйста свои мысли по этому поводу