Board.KolibriOS.org

Official KolibriOS board
It is currently Thu Nov 21, 2019 12:43 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 17 posts ]  Go to page 1 2 Next
Author Message
PostPosted: Sun Jun 12, 2011 10:38 am 
Offline

Joined: Sun Jun 12, 2011 10:34 am
Posts: 11
Как написать дров на асме понятно. Есть описание.

Но на асме писать очень долго. К томуже код на асме отлаживать на порядок сложнее.

Есть шаблон драйвера на Си/С++? И рекомендации по компиляции.


Top
   
PostPosted: Sun Jun 12, 2011 11:01 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Шаблона нет, есть исходники для примера svn://kolibrios.org/drivers/audio/a5536 svn://kolibrios.org/drivers/usb

Для компиляции требуется mingw32. Сначала надо собрать drivers/ddk или скачать отсюда http://kolibri-pe.googlecode.com/files/ ... 02_2011.7z В качестве шаблона лучше всего подойдёт a5536/geode.c Принципиальных отличий от asm-coff драйвера два:

1. точка входа драйвера объявлена как
Code:
uint32_t drvEntry int action, char *cmdline)

2. для драйвера требуется специальный загрузчик. Примерно такой
Code:
use32

db 'MENUET01'
dd 1
dd start
dd i_end
dd mem
dd mem
dd cmdline
dd 0

start:
       mov eax, 68
       mov ebx, 16
       mov ecx, sz_service
       int 0x40
       test eax, eax
       jnz .done             

       mov eax, 68
       mov ebx, 21
       mov ecx, path
       mov edx, cmdline
       int 0x40
.done:
       mov eax, -1
       int 0x40

sz_service db 'МОЙ СЕРВИС',0

path: db '/sys/drivers/МОЙ СЕРВИС.ДЛЛ

align 4
i_end:
cmdline  rb 256
        rb 16      ; stack
mem:


Top
   
PostPosted: Sun Jun 12, 2011 11:48 am 
Offline
Public Relations
User avatar

Joined: Mon Jun 07, 2010 12:01 pm
Posts: 1879
Проблема с драйвером USB на C/C++ в том, что нам его будет сложнее поддерживать после окончания Вами работы, и скорость его, наверное, будет меньше.
Хотя это только моё личное мнение - может быть, я и ошибаюсь.


Top
   
PostPosted: Sun Jun 12, 2011 11:57 am 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 796
Да и несколько не соответствует "духу" системы.


Top
   
PostPosted: Sun Jun 12, 2011 12:03 pm 
Offline
Public Relations
User avatar

Joined: Mon Jun 07, 2010 12:01 pm
Posts: 1879
XVilka wrote:
Да и несколько не соответствует "духу" системы.
Дух фтопку, у меня мышка не работает :lol:

Предлагаю в выборе языка программирования для этого драйвера руководствоваться исключительно практическими соображениями:
1) Как сложно написать?
2) Сколько времени займёт?
3) После сдачи проекта нам, как легко его будет поддерживать? (баг фиксы нашими силами)
4) Скорость работы


Top
   
PostPosted: Sun Jun 12, 2011 12:12 pm 
Если размер не большой, то можно и дизассемблировать потом.


Top
   
PostPosted: Sun Jun 12, 2011 12:15 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 796
Дизассемблировать я могу.


Top
   
PostPosted: Sun Jun 12, 2011 12:35 pm 
Offline

Joined: Sun Jun 12, 2011 10:34 am
Posts: 11
Спасибо за ответы. Буду пробывать.

Я уже один раз написал дров эмулирующий жесткий диск. Ну его нафиг на асме писать дрова.
В этом дрове через три месяца нашли ошибку. Эту ошибку я испровлял почти пять дней. Т.к. к тому времени вообще забыл исходник.

Такие вещи лучше писать на Си.


Top
   
PostPosted: Sun Jun 12, 2011 12:51 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
a9d wrote:
Такие вещи лучше писать на Си.
Родная душа :D Если чего надо, обращайся.
Там засада есть, usb клавиатура не генерирует кодов повторения, это должен делать драйвер. А в ядре нет таймеров :cry: .

А по-хорошему нужен стек драйверов, чтобы добавлять отдельные драйверы новых устройств. Я смотрел на линуксовый, но он толстоват для Колибри и никсовая модель "всё - это файл" для нас не очень.


Top
   
PostPosted: Sun Jun 12, 2011 1:03 pm 
Offline
Public Relations
User avatar

Joined: Mon Jun 07, 2010 12:01 pm
Posts: 1879
a9d wrote:
В этом дрове через три месяца нашли ошибку. Эту ошибку я испровлял почти пять дней. Т.к. к тому времени вообще забыл исходник.
В нашем случае Вам не придётся его поддерживать после сдачи проекта и получения оплаты. Мы будем поддерживать его сами.


Top
   
PostPosted: Sun Jun 12, 2011 1:04 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Serge: "никсовая модель "всё - это файл" для нас не очень." - а я предлагал, частично =)

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Sun Jun 12, 2011 2:27 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Gluk

Сама абстракция вызывает обоснованные сомнения. Очень немногие устройства укладываются в набор open() read() write() seek() close(), иначе не было бы разных вариантов ioctl().


Top
   
PostPosted: Wed Jun 15, 2011 12:04 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
yogev_ezra, за слова "Дух фтопку, у меня мышка не работает" лично я могу и послать "фтопку". Нерабочесть мышки можно починить более простыми средствами. USB - не такая уж сложная вещь, чтобы для её написания был абсолютно необходим Си. Хотя головной боли там хватает.

Например, ядро с http://ftp.kolibrios.org/users/CleverMo ... kernel.mnt определяет и инициализирует OHCI-контроллеры и ищет подключённые устройства, определяя VendorID:DeviceID и класс/подкласс/интерфейс. Для мышек это 3/1/2, список вариантов для первого числа можно посмотреть на http://www.usb.org/developers/defined_class . Информация выводится на доску отладки при загрузке, так что если включён atikms, выводящий туда же тонны мусора, то его стоит отключить. Я, собственно, не собиралась выкладывать то, что есть, поскольку пока нет динамического подключения/отключения устройств, хабов, API для драйверов и самих драйверов, но раз уж пошли такие мысли, их надо в корне пресекать.

_________________
Сделаем мир лучше!


Top
   
PostPosted: Wed Jun 15, 2011 12:49 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
А нерабочесть флешки, картридера, вебкамеры, колонок ?


Top
   
PostPosted: Wed Jun 15, 2011 12:52 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
Serge, тоже можно починить на ассемблере.

_________________
Сделаем мир лучше!


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 17 posts ]  Go to page 1 2 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited