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

 
 
> float point в Linux драйвере, возможно?, float point в Linux драйвере, возможно?
Builder
сообщение Sep 19 2005, 08:19
Сообщение #1


iBuilder©
****

Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



Нужно портировать драйвер для платы с Win2k на Linux.
Столкнулся с тем, что не найду - а это возможно, float point в драйвере Linux?
В Win2k были макросы - сохранить контекст/загрузить контекст FPU.
А как быть в Linux?
Переосмысливать архитектуру системы или организовывать программно?
Поверхносный поиск ничего не дал - как будто нельзя FPU...

Попутно, может кто подскажет хорошие форумы по Linux драйверам?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Olej
сообщение Sep 19 2005, 08:53
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(Builder @ Sep 19 2005, 11:19)
Нужно портировать драйвер для платы с Win2k на Linux.
*


Сам термин "портировать драйвер с Win2k на Linux" и намерение - это безумие wink.gif - всё совсем по другому...

Цитата(Builder @ Sep 19 2005, 11:19)
Попутно, может кто подскажет хорошие форумы по Linux драйверам?
*


Есть такая брошюрка (112 стр.): Померанц О. "Ядро Linux. Программирование модулей": пер. с англ. - М.: "КУДИЦ-ОБРАЗ", 2000 - для общей "системы взглядов" относительно драйверов Linux - очень неплохо.
Go to the top of the page
 
+Quote Post
Dizel
сообщение Sep 21 2005, 16:45
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 30
Регистрация: 25-01-05
Пользователь №: 2 169



Вопрос в тему уважаемому QNX-гуру Olej: в QNX, если я ничего не путаю, в user-space приложение можно вставить все что душе угодно: обработчик прерывания, работу с портами ввода/вывода. Соответственно если воткнуть работу с сопроцессором прямо в прерывание что произойдет? т.е. она сохраняет контекст FPU перед входом в прерывание?
Это я к тому, что может человеку проще QNX взять....

Цитата(Olej @ Sep 19 2005, 11:53)
Сам термин "портировать драйвер с Win2k на Linux" и намерение - это безумие wink.gif - всё совсем по другому...
Go to the top of the page
 
+Quote Post
Olej
сообщение Sep 22 2005, 08:59
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(Dizel @ Sep 21 2005, 19:45)
в QNX, если я ничего не путаю, в user-space приложение можно вставить все что душе угодно: обработчик прерывания, работу с портами ввода/вывода. Соответственно если воткнуть работу с сопроцессором прямо в прерывание что произойдет? т.е. она сохраняет контекст FPU перед входом в прерывание? 
*


Можно вставить "почти всё" wink.gif, но сознательно дав приложению право такое делать: ThreadCtl() - после чего ответственность за последствия приложение берёт на себя. В QNX есть 2 разных техники работы с прерываниями:
- InterruptAttach() - это, собственно, классическкая схема ISR (подобная в других ОС: с нижней-верхней частью...), и выполняется ISR а контексте микроядра, что, понятно, опасно...
- InterruptAttachEvent() - более дружественный способ, когда по IRQ будет только возбуждено зарегистрированное событие, а оно уже может вызвать передиспетчеризацию user-space потоков. И вот тогда, естественно уже можно пользовать FPU и всё-всё-всё режима юзера...

Это по своей идее - сильно близко к тому, что предлагалось здесь уже об использовании select() ... Поэтому всё то же можно сделать и в Linux, особенно учитывая описанную позже логику устройства, и уж совсем не жёсткие требования на время реакции (5-15 mc - это весьма много wink.gif). Что-то типа:
- сделать в пользовательском приложении поток обработчика (FPU + отправка ответа), с SCHED_RR или SCHED_FIFO (т.е. сразу поставить его в приоритетный режим), который только ожидал бы для насчала своих операций ... например, сигнала SIGRTMIN...
- по IRQ ISR только опрашивал бы устройство, приводил бы всё в порядок с IRQ ... и возбуждал бы SIGRTMIN для активации потока ответа.
Что-то такое...

Цитата(Dizel @ Sep 21 2005, 19:45)
Это я к тому, что может человеку проще QNX взять....
*


Вряд ли, smile.gif ... в виду стоимости QNX для любых коммерческих проектов, да и динамика в Linux/*BSD настолько высокая, что всё меньше "ниши" где мог бы управиться "только QNX" wink.gif ...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Builder   float point в Linux драйвере, возможно?   Sep 19 2005, 08:19
- - Танцующий   FreeBSD5: /usr/src/sys/i386/i386/support.s -> i...   Sep 19 2005, 08:52
|- - Танцующий   В догонку: посмотри вот это.   Sep 19 2005, 09:03
- - Builder   Ну почу бузумие, уникальный код - тот-же, нужно то...   Sep 19 2005, 09:01
|- - Olej   Цитата(Builder @ Sep 19 2005, 12:01)Ну почу б...   Sep 19 2005, 14:45
|- - Dizel   Если уж на то пошло, то лучше сразу взять 3-ье изд...   Sep 21 2005, 16:33
- - Builder   А эта брошурка в эл. виде существует где? А то в н...   Sep 19 2005, 09:07
|- - Dizel   Эта брошурка (LKMPG) в каком виде только не сущест...   Sep 21 2005, 16:39
- - Builder   Правильно ли я понял - если хочу float-point в дра...   Sep 21 2005, 11:10
- - Dizel   Нельзя там в ядре floating point http://www.ussg.i...   Sep 21 2005, 16:26
- - Builder   Что касается драйвера - это драйве PCI платы, виси...   Sep 22 2005, 08:11
|- - Dizel   Т.е. к сожалению считать надо все таки в прерывани...   Sep 22 2005, 08:36
- - Builder   В общем вырисовывается 2 варианта: 1) софтово эмул...   Sep 22 2005, 11:25
|- - Olej   Цитата(Builder @ Sep 22 2005, 14:25)Но всё-же...   Sep 22 2005, 14:03
|- - Builder   Цитата(Olej @ Sep 22 2005, 17:03)б). вам прид...   Sep 22 2005, 14:18
- - zaratustra   Builder Надо ещё окружать операции с fp при помо...   Nov 18 2005, 16:26


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

 


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


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