Какой порт выбрать? (LPT, COM вымирают, повсюду только USB)

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение Satyr »

MsDemonid писал(а):
Satyr писал(а):С чего ты решил, что с устройством или шиной проблема ?
Приведу пример из истории. середина 90х годов, PC Компьютеры тех времен с шиной IDE под диски. Но включаем диск > 512Mb и получаем х~й а не диск в системе -)))
И что у нас, теперь шина IDE гавно и не стандартизированная ? -)))
Или всетаки она непричем, а BIOS говенный ? :)))
С USB и 2Гб - абсолютно та же ситуация
Нет, ситуация не та же. Если в старый биос вставить винт большого объема, то винт будет доступен, только объем урежется. На этот случай существовали програмные решения, вполне работоспособные.

В чем проблема ? Ставь не телевизор или что там у тебя програмное решение на этот случай - все как надо заработает.
USB во флешке на 512мб и на 32Гб абсолютно такой же. :)))
MsDemonid
Открыл глаза
Сообщения: 50
Зарегистрирован: Пн май 07, 2012 12:40:25

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение MsDemonid »

ploop писал(а):
Это бизнес, а не заговор. Из современных же ОС, на память приходят различные сборки линукса, позволяющие настроить систему именно под себя. Так что на счет "ни одна" Вы безусловно поторопились

Именно настроить. Можете переписать драйвер, если хочется. А работать всё равно с API придётся, либо перестроить ядро системы, грубо говоря переписать его (если до пенсии получится отладить). Но это уже будет не линукс, а самописный костыль.
Зачем усложнять себе жизнь? Достаточно перед сборкой линукса немного подправить карту разрешения ввода/вывода, изменив несколько бит. И все, не нужно никаких дерганий с драйверами и кодом ядра системы. К тому же, я сильно сомневаюсь, что открыв доступ к портам LPT и COM мы хоть как-то понизим надежность системы.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение ploop »

Тогда вопрос - а нафига? Чтобы эмулировать нестандартный протокол? Это задача железки. Если таковой нет в периферии системы, она должна быть реализована отдельно и подключена к уже имеющемуся интерфейсу.

К примеру, если нужен SPI наружу ПК - ставим железку с нужным функционалом и подключаем её к COM, USB или что там ещё имеется. Это и есть правильный путь. А эмулировать SPI посредством ножкодрыгания того же порта - костыль.
MsDemonid
Открыл глаза
Сообщения: 50
Зарегистрирован: Пн май 07, 2012 12:40:25

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение MsDemonid »

ploop писал(а):Тогда вопрос - а нафига? Чтобы эмулировать нестандартный протокол? Это задача железки. Если таковой нет в периферии системы, она должна быть реализована отдельно и подключена к уже имеющемуся интерфейсу.
С этим как бы никто и не спорит. Только есть маленький нюанс - софтверная реализация функций "железа" совсем не редкость, поскольку позволяет экономить затраты на железки. Возьмите те же софт-модемы. Вас ведь не удивляет, что почти всю работу, что раньше выполняли на аппаратном уровне, в этих модемах выполняет софт? Или современные звуковые платы, на основе AC-97. В них тоже немалая часть функций, ранее выполняемая аппаратно, реализована програмным путем. Это конечно нагружает процессор, но зато реально удешевляет изделие.

ploop писал(а):К примеру, если нужен SPI наружу ПК - ставим железку с нужным функционалом и подключаем её к COM, USB или что там ещё имеется. Это и есть правильный путь. А эмулировать SPI посредством ножкодрыгания того же порта - костыль.
Замечательно, если брать в промышленных масштабах. А что прикажете делать, если случай единичный? Ваять "железку" на один раз? А за чей счет?
Из личной практики. Поставили на одно предприятие вот такую замечательную систему: http://www.radiy.ru/products/ats?product_id=3
Через некоторое время охрана настоятельно попросила вернуть старую "неву", наверное 60-х годов выпуска, еще на релюшках :) Все дело было в крайне неудобной индикации состояния направлений. На ПЦН "фобоса" индикации нет, а состояние направлений выводится на принтер, в закодированном виде, что для стариков и бабулек было сродни китайской грамоте, да еще мелким шрифтом. На сайте производителя узнал, что есть готовая "железка" для сопряжения ретранслятора с ПК, есть и софт. только вот запросили они за это чудо 30 штук, то есть четверть цены всей системы :shock: Ну не сволочи? Пришлось искать альтернативу. Сигнал между ретранслятором и ПЦН напоминал RS-432, но имел и отличия. В общем готовых решений не нашел. Пришлось врезаться в паралель кабеля принтера и заводить вывод на COM-порт старенького компа. Впрочем был еще вариант - использовать модем, но его под рукой не оказалось. Еще пара дней понадобилась на написание программы. Радиолюбительство? Да, в чистом виде. Зато народ остался доволен и 30 штук съэкономили. Ну и мне не пришлось тратиться на всякую комплектуху.
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение hybroid »

MsDemonid писал(а):Возьмите те же софт-модемы. Вас ведь не удивляет, что почти всю работу, что раньше выполняли на аппаратном уровне, в этих модемах выполняет софт?
Драйвер. Выполняет драйвер. Как и в примере звуковых, выполняется драйвером. А про дешевизну софтварных устройств вы загибаете.
Драйвер не равен софтине, запускаемой в userspace. Только в микроядерной архитектуре в первом приближении получается нечто похожее, но это один хрен другой уровень. А вам же хочется из пользовательской софтины, запускаемой пользователем, заниматься прямым ногодрыганьем.
MsDemonid писал(а):Я вот не знаю ни одного программиста, знающего все либы. Тем не менее у меня язык не повернется назвать профессиональных программистов недоучками. Видимо Вы Гений, раз освоили все либы.
Вы, видимо, читали плохо, т.к. я говорил о быдлокоде вообще без использования каких-либо библиотек, исключительно на своих костылях. Такого - до хренища. Читайте ещё раз.
MsDemonid писал(а):Из современных же ОС, на память приходят различные сборки линукса, позволяющие настроить систему именно под себя. Так что на счет "ни одна" Вы безусловно поторопились
О боги, чтобы опуститься до уровня доса, без какого-то вменяемого разделения всего, чего можно - вам придётся "настраивать линукс" весьма долго.
Что есть различные "сборки линукса"? Это вам не винды. Есть дистрибутивы, есть ядро, есть форки от ядра, которые можно пересчитать по пальцам. Живых форков - так вообще пальцев много лишних останется. Ни один дистрибутив не позволяет простому быдлу (аля простой пользователь с вашей софтиной) заниматься самоуправством с железом.
MsDemonid писал(а):USB и в досе сейчас поддерживается. Только какой ценой эта поддержка обошлась? Много чего устанавливалось только путем экспериментов, поскольку в доках либо вообще отсутствовало детальное описание, либо упоминалось вскользь.
Не, ну а почему в линуксе и в BSD-системах, особенно в OpenBSD, которая не включает в себя ничего, хоть как-то закрытого, не было таких проблем? Может речь о том, кому нужен был USB в досе и о качестве пейсателей, которые его туда внедрили? Программисты одних систем (а их много) молча поддерживают, других - плачут. Проблема или в количестве, или в качестве, но не в стандарте. Надеюсь сейчас не выяснится, что речь о флешках :)
MsDemonid писал(а):Я кажется не раз упоминал, что по СОМ-порту в винде есть более-менее нормальное АПИ. Но в последней фразе речь была о прямом доступе к портам. Его в винде нет, только через костыли.
Прямой доступ к порту из софта - это костыль. Поэтому и должен быть через костыль. Хотите с блекджеками и шлюхами сделать свою мигалку - пишите драйвер. Или по-человечески сделайте устройство, не требующее от протокола передачи данных передавать данные не по этому протоколу.
MsDemonid писал(а):Через СОМ и LPT легко и непринужденно присоединяются I2C, SPI и microLAN девайсы.
Вот об этом речь и идёт. Не хрен их туда толкать. Полуоткрытозакрытые стандарты почитайте и задумайтесь, почему LPT, он же IEEE 1284 должен каким-то образом вам это обеспечивать из ОС. Операционка не подумала о радиолюбителях и нестандартном применении порта? Да и правильно. И так уже на этот бедный порт за его жизнь навешали кучу костылей, хватит!
COM-порт. Двунаправленный последовательный интерфейс, связанный чуть более, чем полностью с RS-232C. Всю последнюю жизнь добавляет только проблем, благодаря своей асинхронности. В него подключались терминалы во времена динозавров. Потом в него подключались модемы/мыши. Сейчас в него подключают бесперебойники, кассовые аппараты и прочие встраиваемые устройства, которые используют его по назначению. Почему вы собрались в него толкать что-то не по назначению? В вашем списке даже USART нету :( Гордо выпрямившись требуете костыль?
И уже устали говорить, что этот порт поганой метлой не выгонишь, в основном пропала только "дырка" подключения. Гнать надо всех, кто его так и хочет использовать абы как.
Tolmi
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина
Контактная информация:

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение Tolmi »

ploop писал(а):Именно настроить. Можете переписать драйвер, если хочется. А работать всё равно с API придётся, либо перестроить ядро системы, грубо говоря переписать его (если до пенсии получится
отладить). Но это уже будет не линукс, а самописный костыль.

Я писал свой самописный драйвер под линукс ( вернее, взял драйвер COM порта за основу и переделал его) под самопальный девайс по вводу данных. Работы было на неделю с отладкой самого протокола передачи ( там была достаточно сложная логика подтверждений приёма, и я её делал на уровне драйвера, с точки зрения приложения данные просто поступают потоком, как если бы они слались по com порту)
Недели мне вполне хватило.
Хочу через неделю на пенсию :)
Работает до сих пор, причём систему я уже раза три кардинально обновлял. Если поставил новое ядро, взял rpm с исходниками, построил rpm с бинарниками, установил получившееся в систему. Всё. Никаких костылей, всё штатными средствами. Зато устройство видно как обычный файл, можно данные хоть из командной строки через cat /dev/device на экране посмотреть, хоть затолкать в какую-то свою программу, хоть в openSCADA засунуть.
Я не пойму, в чем сложность приучить себя делать всё качественно, даже если это одноразовая поделка ?
Я это к тому, что разобравшись однажды с работой с USB, и сделав всё как нужно, а не как получилось, можно потом не морочить себе голову с вопросами "ой, а на этой новой материнке уже нет LPT и COM, что мне делать!". Да, это требует некоторых дополнительных усилий, но они ведь потом окупаются.
Что же касается вопроса, почему производители железа избавляются от всех этих COM и LPT в пользу единственного интерфейса - так ведь наличие LPT на материнке давно не является для неё конкурентным преимуществом. Домашним пользователям он не нужен. Да и офисным тоже. А всё, что не нужно, но стоит дополнительных денег ( а оно что-то да стоит, пусть и копейки) будет отмирать. Зачем таскать за собой скелеты ? Флоппи интерфейс тоже умер. И IDE туда же спешит. Их почему не оплакивают и почему по ним не скорбят ?
In theory, theory and practice are the same. In practice, they're not.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение ploop »

Про драйвер я именно это и говорил. Либо возложить функционал на него, предоставив наружу API, либо перекроить подход системы к запуску пользовательских приложений, считай переделать ядро. В итоге к пенсии получим дос (точнее жалкое его подобие).

А что прикажете делать, если случай единичный? Ваять "железку" на один раз? А за чей счет?

Такая железка, в виде отладочной платы с МК, должна быть под рукой у любого любителя, разрабатывающего девайсы на МК (тем более использующем связь с ПК)
Накодить несколько строк UART<>SPI или UART<>IIC или что-то подобное - час с перекурами. Для поделок купить тиньку за 1$ или STM8 (что еще дешевле) тоже, думаю, не проблема.
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение Satyr »

Вобщем все это спор не про интерфейсы, а про подходы по жизни.
Ктото считает, что если пару раз - то можно и зубы через жопу почистить, дали б только шетку с длинной ручкой.
А ктото будет и в одном экземпляре для себя любимого делать так, чтоб не стыдно было.
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение hybroid »

Satyr: люто бешено плюсую.
Жили были люди, пока один чудотворец не обнаружил, что в некоторых не очень умных ОС прямо софтиной можно из интерфейса для одних нужд сделать совершенно другой лисапед. Хорошо ли это? Так же, как все другие костыли. Его не пугает то, что он из запускаемой софтины занимается тем, чем должен заниматься драйвер другого устройства. Но такого человека просто выводит из себя покушения на его свободу, когда запрещают использование чего-то не по назначению прослойкой в виде драйвера. Написать другой драйвер нам не позволяет религия и устои. Отговорки лишь "а можно было делать так и вроде ничо, работало же". Отличненько работало, когда переставало - быстрое движения тремя пальцами - и мы снова в работе.
MsDemonid
Открыл глаза
Сообщения: 50
Зарегистрирован: Пн май 07, 2012 12:40:25

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение MsDemonid »

hybroid писал(а):
MsDemonid писал(а):Возьмите те же софт-модемы. Вас ведь не удивляет, что почти всю работу, что раньше выполняли на аппаратном уровне, в этих модемах выполняет софт?
Драйвер. Выполняет драйвер. Как и в примере звуковых, выполняется драйвером. А про дешевизну софтварных устройств вы загибаете.
Приходилось ковырять эти самые модемы, дабы вырезать из них ММХ. Большую часть работы выполняет именно софт в юзермоде. Драйвер там только играет роль прокладки между регистрами модема и софтом.
Что касается цены, здесь много факторов и в двух словах всего не учтешь. Если брать пром. масштабы, то все зависит от объема партии. Если же брать самоделки, то софт обходится даром, в любом случае будет экономия.

hybroid писал(а):Драйвер не равен софтине, запускаемой в userspace. Только в микроядерной архитектуре в первом приближении получается нечто похожее, но это один хрен другой уровень. А вам же хочется из пользовательской софтины, запускаемой пользователем, заниматься прямым ногодрыганьем.
В чем принципиальная разница доступа к СОМ-порту из драйвера или из программы?

hybroid писал(а):Вы, видимо, читали плохо, т.к. я говорил о быдлокоде вообще без использования каких-либо библиотек, исключительно на своих костылях. Такого - до хренища. Читайте ещё раз.
Ну извиняйте, недопонял :beer:

hybroid писал(а):О боги, чтобы опуститься до уровня доса, без какого-то вменяемого разделения всего, чего можно - вам придётся "настраивать линукс" весьма долго.
Лень лезть в сорсы. Потому завязываем с линуксом, тем более "не моя" это система.

hybroid писал(а):Прямой доступ к порту из софта - это костыль. Поэтому и должен быть через костыль. Хотите с блекджеками и шлюхами сделать свою мигалку - пишите драйвер. Или по-человечески сделайте устройство, не требующее от протокола передачи данных передавать данные не по этому протоколу.
С каких это пор прямая работа с железом стала костылем? Драйвера изначально задумывались для нестандартных устройств, не более. И если откроете книги классиков программирования, то у них четко проводится эта грань - для стандартных устройств предпочтительнее работа напрямую, а не через биос или драйвера. Разумеется глупо напрямую прогать какой-нибудь сканер, раз на них вообще отсутствуют стандарты. Но СОМ и LPT стандартизированы, какие здесь могут возникнуть осложнения? Кому от этого будет вред?

hybroid писал(а):
MsDemonid писал(а):Через СОМ и LPT легко и непринужденно присоединяются I2C, SPI и microLAN девайсы.
Вот об этом речь и идёт. Не хрен их туда толкать.
Почему? Религия не позволяет?

hybroid писал(а):Полуоткрытозакрытые стандарты почитайте и задумайтесь, почему LPT, он же IEEE 1284 должен каким-то образом вам это обеспечивать из ОС. Операционка не подумала о радиолюбителях и нестандартном применении порта? Да и правильно. И так уже на этот бедный порт за его жизнь навешали кучу костылей, хватит!
COM-порт. Двунаправленный последовательный интерфейс, связанный чуть более, чем полностью с RS-232C. Всю последнюю жизнь добавляет только проблем, благодаря своей асинхронности. В него подключались терминалы во времена динозавров. Потом в него подключались модемы/мыши. Сейчас в него подключают бесперебойники, кассовые аппараты и прочие встраиваемые устройства, которые используют его по назначению. Почему вы собрались в него толкать что-то не по назначению? В вашем списке даже USART нету :( Гордо выпрямившись требуете костыль?
Согласно классикам, порты служат для расширения функционала компьютера, путем подключения различных устройств и других компьютеров. Но, во всех этих определениях нет ни слова о том, что такое "не по назначению". Надо думать это идиоты написали десятки книг, из серии "расширяем возможности ПК". Вас послушать, так и мышка подключалась не по назначению, поскольку производители, в целях экономии, нередко использовали только два проводка, заглушая остальные линии ;)
Вы не задумывались, для чего в том же СОМ оставили прямой доступ к управляющим линиям? Пральна, чтобы подключать не стандартные устройства, использующие эти линии по своему усмотрению.

Tolmi писал(а):Зачем таскать за собой скелеты ? Флоппи интерфейс тоже умер. И IDE туда же спешит. Их почему не оплакивают и почему по ним не скорбят ?
Вы будете смеяться, но у подруги на работе обнаружил коробочку дискет. Она на них отчеты в банк отвозит, грит так удобнее - оставил дискету и ушел, не нужно ждать. А дискету не жалко, копейки стоит :)
Вообще же флоппи вымерли по вполне очевидной причине - они были ненадежны. Что касается IDE, то вымирает только интерфейс подключения, а програмный интерфейс АТА никто не отменял. Потому и нет никакого "плача", программистам как-то до лампочки сколько проводов идет к винту, им главное чтобы порты на месте остались.

ploop писал(а):
А что прикажете делать, если случай единичный? Ваять "железку" на один раз? А за чей счет?

Такая железка, в виде отладочной платы с МК, должна быть под рукой у любого любителя, разрабатывающего девайсы на МК (тем более использующем связь с ПК)
Накодить несколько строк UART<>SPI или UART<>IIC или что-то подобное - час с перекурами. Для поделок купить тиньку за 1$ или STM8 (что еще дешевле) тоже, думаю, не проблема.
Опять же, лишний посредник, лишние телодвижения. А для чего? Только для того, чтобы все было "по правилам"? А кто вообще решил, что SPI или I2C через COM & LPT - это не по правилам? Кто сказал, что связь с компом авто по СОМ-порту - это не правильно? Кто-нибудь может мне это внятно объяснить?

Раз уж зашел разговор о подходах, то давайте порассуждаем. У системы есть множество средств контроля действий юзермодной программы, включая контроль за временем реакции программы и возможность прибить ее в любое время. И уж прямой доступ к СОМ-порту она переживет, все равно это на ее работу не влияет. А вот контроля за действиями драйверов у системы не так много, поскольку они имеют равные с ней привелегии. Здесь все отдано на откуп программисту, в надежде, что он будет строго и по назначению использовать предоставляемый АПИ и только АПИ. Но контроля за этим нет никакого, система беззащитна перед драйвером. И если драйвер кривовато написан, либо его создатели чего-то не предусмотрели, либо сторонний драйвер захочет пободаться, то это верный способ показать юзеру синий экран. Так что вопрос спорный, что лучше - увидеть окошко "ваша программа выполнила недопустимые действия и будет закрыта", или проклинать драйверописателей за кривые руки. Потому я считаю, что если можно безопасно обойтись без драйверов, то нужно этим пользоваться.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение YS »

Да, вот меня тоже всегда удивляло, как прямой доступ к аппаратному порту может повлиять на стабильность системы?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение hybroid »

MsDemonid писал(а):В чем принципиальная разница доступа к СОМ-порту из драйвера или из программы?
Хотя бы в том, что драйвер не позволит одновременно двум и более баранам ломиться через дыру в мир. Так же не забываем, что мы живём в век многопользовательности и ограниченных учёток. Чем плохо сидеть постоянно "богом" в системе - винда уже доказала многолетним опытом.
MsDemonid писал(а):Потому завязываем с линуксом, тем более "не моя" это система.
Система не моя, но мы про неё говорим и всё знаем. Обычный расклад дел. "Лень лезть в сорцы" - это уже вообще даже не смешно :(
MsDemonid писал(а):С каких это пор прямая работа с железом стала костылем?
Со времён, когда железа стало изрядно до хера, ОСи стали многозадачными и многопользовательскими. И вы то про порт, то про железо в целом. Прямая работа с железом для вас не костыль? Да летите с криком "фпирёд!" писать 3D приложения под парк видеокарт без дров, блекджека и шлюх. Не важно, что не получится на корню. Всё равно пробуйте.
MsDemonid писал(а):И если откроете книги классиков программирования
Спасибо, не надо. Не хочу читать мемуары динозавров в наше время.
MsDemonid писал(а):Но СОМ и LPT стандартизированы, какие здесь могут возникнуть осложнения?
MsDemonid писал(а):Согласно классикам, порты служат для расширения функционала компьютера, путем подключения различных устройств и других компьютеров. Но, во всех этих определениях нет ни слова о том, что такое "не по назначению".
Пошёл я подключу модем по SATA. И пусть каждый идёт в жопу с заявлением, что это глупо. И пусть все идут туда же, когда я буду рассказывать, что нигде нет ни слова о том, что так делать нельзя. Хотя нет, лучше подключу его в HDMI. И говно каждая ОС, которая не позволит мне общяться с моим модемом через HDMI. Вы что, сдурели? Почему я не могу? Порты же для расширения функционала. Какой дурак закрыл прямой доступ?
MsDemonid писал(а):Раз уж зашел разговор о подходах, то давайте порассуждаем. У системы есть множество средств контроля действий юзермодной программы, включая контроль за временем реакции программы и возможность прибить ее в любое время. И уж прямой доступ к СОМ-порту она переживет, все равно это на ее работу не влияет.
Два чудила полезли на один порт в обход ядра, сиди тут, контролируй. Какой ещё контроль программы может быть, если действия идут в обход ядра, а не через драйвер? Телепатический интерфейс от ядра к софту ещё не изобретён.
MsDemonid писал(а):Здесь все отдано на откуп программисту, в надежде, что он будет строго и по назначению использовать предоставляемый АПИ и только АПИ. Но контроля за этим нет никакого, система беззащитна перед драйвером.
Курим нормальное построение ядер. Самое бронированное даже со стороны задницы - микроядра, пляшите хоть на рогах в драйвере, отвалитесь - ваша проблема. Гибридные и монолитные тоже весьма устойчивы к разным косякам, за исключением чудесного гибридного ядра NT, которое лишь недавно научилось убивать драйверы, которые слишком офигели. И то пока научено через зад, вроде как по простому таймауту, но хоть не постоянно в синий экран, растём, что тут скажешь. Против криворуких программистов драйверов сложнее. Но куча лузеров сразу отсеивается при приближении к написанию драйвера, что радует больше, чем парад ламерья, общающийся с железом из паскаля в своей говно-софтине. Вы мыслите в тех же рамках, что и создатели DOSа. Каг бэ время решило, что они мыслили всё же не верно. Винды тоже мыслили до боли аналогично, уперев этот дос. Но потом во время общения с умными людьми из IBM они поняли, что делают известно что коричневого цвета. И резко, добавив пользователей и сперев сетевую подсистему BSD, выросли до уровня вменяемой ОС. Повторю - время решило. Вам плоха работа через драйвер с портом? Уверен, что вас и UAC не устраивает. Это исключительно ваша проблема и не надо что-то пытаться доказать. Всё уже доказано. Вы ничего не измените :))
Tolmi
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина
Контактная информация:

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение Tolmi »

YS писал(а):Да, вот меня тоже всегда удивляло, как прямой доступ к аппаратному порту может повлиять на стабильность системы?

Прямой доступ к портам в/в в архитектуре Intel 80386 и выше означает, всем userspace программам будет доступ ко всем портам ввода/вывода. Или ни одной программе ни к одному порту. Выбор невелик, но на мой вкус он был сделан правильно. Потому что я, к примеру, чисто случайно, из-за ошибок в программе запишу что-то на диск, в случайном месте. А кто-то что-то выведет на экран мимо системы, а кто-то запросит у устройства DMA режим чтения в область памяти 0х00000000 (типичная ошибка начинающих драйверописателей, кстати :) ) или запретит прерывания контроллере. О, да тут есть где разгуляться, если есть цель повлиять на стабильность системы.
In theory, theory and practice are the same. In practice, they're not.
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение hybroid »

Чувствую, сейчас будет вооружение более мощными говномётами и более громкие возгласы: "в драйвере можно накосячить, какая разница".. :)

Уже осторожные попытки были.

PS: я вот писал пока единственный в жизни драйвер под линукс. Или более точно сказать "портировал". Это был драйвер mmc для точки доступа. Не умер ни я, ни драйвер, ни точка доступа, ни карта памяти.
MsDemonid
Открыл глаза
Сообщения: 50
Зарегистрирован: Пн май 07, 2012 12:40:25

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение MsDemonid »

hybroid писал(а):Хотя бы в том, что драйвер не позволит одновременно двум и более баранам ломиться через дыру в мир.
Ситуация, когда приложение получает отказ доступа не многим лучше. Результат то один - приложение не работает.

hybroid писал(а):Система не моя, но мы про неё говорим и всё знаем.
Вот только не нужно заниматься приписками. Где это я утверждал, что все про нее знаю? Я неплохо знаю архитектуру 86-х, этого достаточно для понимания функционирования защиты системы. И не важно, линукс это или винда, аппаратные средства им предоставляюся одинаковые.

hybroid писал(а):Со времён, когда железа стало изрядно до хера, ОСи стали многозадачными и многопользовательскими.
Раньше железа было меньше, ага :)) Многозадачность же не накладывает жестких ограничений на закрытие доступа к железу. Интеловская архитектура дает возможность не только закрыть доступ к железу, но и организовать прозрачную для приложений эмуляцию. В винде пошли по легкому пути и закрыли все вся. Впрочем, для дос-приложений они проэмулировали "прямое" обращение к некоторым портам - таймеру, видюхе и еще по мелочам. Ну и как, часто ли дос-приложения вешают винду? Или их работа с портами видюхи как-то портит красивый рабочий стол? А может их работа с таймером вешает систему? Нет? Выходит возможно нормальное разграничение доступа к портам?
Вопросы риторические, в манах интела давно описан механизм аппаратной эмуляции, позволяющей, при грамотном написании, реализовать одновременную работу множества ДОС-приложений. Будете дальше напирать на многозадачность?

hybroid писал(а):Спасибо, не надо. Не хочу читать мемуары динозавров в наше время.
А что читать? Современное? Типа "тыкни мышой туда, перетащи форму сюда"? Охрененно полезное чтиво, а главное сразу сделает крутым электронщиком :))

hybroid писал(а):Пошёл я подключу модем по SATA.....
Если получится - свисните, я Вам нобелевку выпишу :)

hybroid писал(а):Два чудила полезли на один порт в обход ядра, сиди тут, контролируй. Какой ещё контроль программы может быть, если действия идут в обход ядра, а не через драйвер?
Возможен контроль, вполне. В архитектуре это заложено. Но мелкософт этого не пожелал делать, просто запретив все и вся. Вот и приходится напрямую, без контроля. Ну дык нас загнали в такие условия, мы не просили. Однако ничего страшного то не происходит, винда работает, приложения шуршат. Парадокс?

hybroid писал(а):Курим нормальное построение ядер. Самое бронированное даже со стороны задницы - микроядра, пляшите хоть на рогах в драйвере, отвалитесь - ваша проблема.....
Свежо предание :)

Tolmi писал(а):Прямой доступ к портам в/в в архитектуре Intel 80386 и выше означает, всем userspace программам будет доступ ко всем портам ввода/вывода. Или ни одной программе ни к одному порту.
Совсем нет. В карте ввода/вывода каждый бит отвечает за один порт, то есть не обязательно открывать доступ ко всем портам, можно только к избранным, которые гарантированно не уронят систему.

Tolmi писал(а):Потому что я, к примеру, чисто случайно, из-за ошибок в программе запишу что-то на диск, в случайном месте.
Через АПИ CreateFile("C:\",,,) юзермодная программа получает доступ к жесткому диску и посредством ReadFile и WriteFile может посекторно читать/записывать. Проверяли, XP спокойно дает портить MBR винта. Вы этого не знали?
Это безобразие конечно можно прикрыть, только наверное 9 из 10 работают с правами админа, как им в магазине поставили, и даже не знают как ограничить права.

Tolmi писал(а):А кто-то что-то выведет на экран мимо системы, а кто-то запросит у устройства DMA режим чтения в область памяти 0х00000000
Все эти страшилки не актуальны. Никто ведь не хочет открыть доступ ко всем портам. Достаточно лишь портов связи - COM и LPT. Нам много не нужно, мы не анархисты. Так что описанные Вами ужастики малость не актуальны.

hybroid писал(а):Чувствую, сейчас будет вооружение более мощными говномётами и более громкие возгласы: "в драйвере можно накосячить, какая разница"..
Накосячить можно везде. Только последствия косяка юзермодной проги и дравера будут разные.
Tolmi
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина
Контактная информация:

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение Tolmi »

Если уж так хочется прямого доступа к I/O, всегда для "правильных ОС" есть костыли типа porttalk и allowio. В "неправильных ОС" типа линуксов и бсдей есть штатные механизмы по прямому доступу от рута и суидные программы ( так и хочется написать "сиуцидные")
In theory, theory and practice are the same. In practice, they're not.
Tolmi
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина
Контактная информация:

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение Tolmi »

MsDemonid писал(а):
Tolmi писал(а):Прямой доступ к портам в/в в архитектуре Intel 80386 и выше означает, всем userspace программам будет доступ ко всем портам ввода/вывода. Или ни одной программе ни к одному порту.
Совсем нет. В карте ввода/вывода каждый бит отвечает за один порт, то есть не обязательно открывать доступ ко всем портам, можно только к избранным, которые гарантированно не уронят систему.

Я знаю про I/O Permission Bitmap, но при этом мы опять отдаём на откуп пользователю решение, кому что давать. Я уверен, что пользователи того же allowio в 90% случаев используют ключ /a и особо ничем не заморачиваются. Пользование таким костылем порождает афигенные дыры в безопасности, и не напрасно сопровождается аршинными надписями "мы вас предупредили, всё что сломается, сломается по вашей вине"
Tolmi писал(а):Потому что я, к примеру, чисто случайно, из-за ошибок в программе запишу что-то на диск, в случайном месте.
Через АПИ CreateFile("C:\",,,) юзермодная программа получает доступ к жесткому диску и посредством ReadFile и WriteFile может посекторно читать/записывать. Проверяли, XP спокойно дает портить MBR винта. Вы этого не знали?
Это безобразие конечно можно прикрыть, только наверное 9 из 10 работают с правами админа, как им в магазине поставили, и даже не знают как ограничить права.

Это что, вина разработчиков ОС ? Нет, они сделали ОС, в которой предусмотрены все механизмы, позволяющие избежать секса на лыжах, стоя в гамаке и в акваланге. Если пользователь все же хочет вышеозначенную позу, то разработчиками ОС в ней оставлены механизмы, позволяющие дать всё требуемое извращенцам. Ведь у нас толерантность, демократия и права человека.
Tolmi писал(а):А кто-то что-то выведет на экран мимо системы, а кто-то запросит у устройства DMA режим чтения в область памяти 0х00000000
Все эти страшилки не актуальны. Никто ведь не хочет открыть доступ ко всем портам. Достаточно лишь портов связи - COM и LPT. Нам много не нужно, мы не анархисты. Так что описанные Вами ужастики малость не актуальны.

Не, не. Вам достаточно COM и LPT, а я хочу SATA, IDE и прямой доступ к сетевой карте. Мне светофоры на трех светодиодах с управлением через LPT неинтересны. Если уж разрешать, то всё. Что за дискриминация ?
In theory, theory and practice are the same. In practice, they're not.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение YS »

Не хочу читать мемуары динозавров в наше время.


Браво! Как емко Вам удалось выразить манифест быдлокодеров! :)))
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Tolmi
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина
Контактная информация:

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение Tolmi »

Да, и есть ещё один нюанс по поводу
то есть не обязательно открывать доступ ко всем портам, можно только к избранным, которые гарантированно не уронят систему

У меня в моей системе нет COM порта по адресу 0x3f8, зато есть по адресу 0xAE0 ( там pci карта с com портом живет). Мне не нужен доступ к 0x3F8, мне нужен к 0xAE0. Ок, разрешаем к какой-то прикладной софтине доступ и туда тоже. А у кого-то там находится сетевая карточка. Ваша любимая софтина по управлению светодиодами лезет туда, портит регистры управления сетевой картой, и всё, приплыли, система померла.
Я знаю, сейчас будет ответ "а у меня ком-порт стандартный, поэтому дайте мне доступ именно к нему." Т.е. опять приходим к ситуации "я так привык, и буду делать так, как я хочу". Да делайте, вот только какие претензии к производителям софта и железа ? Возможность это делать они оставили, хотя могли и запретить.
Они ориентируются на массовый рынок, перед которым у них определенные обязательства.
In theory, theory and practice are the same. In practice, they're not.
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Какой порт выбрать? (LPT, COM вымирают, повсюду только U

Сообщение hybroid »

Пока мыслят одной архитектурой и одним пользователем в системе - какие-то разговоры вообще бесполезны. Многозадачность туда же припишем, только на этот раз в конце, если не доходит.

Я рад что вы крутитесь вокруг x86. Вот только мир этим не ограничен. Вы тут жалуетесь на то, что MS не спросила у вас разрешения? А в то же время сами себя ведёте в другую жопу, архитектурно-зависимую, ещё более глубокую. Не вижу какой-то большой разницы. Железку, использующую КОМ-порт по назначению, т.е. для передачи данных посредством RS-232C можно использовать везде, где есть реализация работы с этим портом по назначению. Будь то линукс на арме или винда на вашем любимом x86. А ваш удобный костыль войдёт колом в зад при какой-то переносимости и потребует создание ещё одного костыля или желание сделать по-человечески, что вряд ли, т.к. вызовет разрыв вашего шаблона.

MsDemonid писал(а):Впрочем, для дос-приложений они проэмулировали "прямое" обращение к некоторым портам - таймеру, видюхе и еще по мелочам. Ну и как, часто ли дос-приложения вешают винду? Или их работа с портами видюхи как-то портит красивый рабочий стол? А может их работа с таймером вешает систему? Нет?
Нет, тру-дос приложения уже лет пяцот просто не работают, если не заметили, дос-эмуляторы не просто так появились. Туда им и дорога.

Tolmi писал(а):( так и хочется написать "сиуцидные")
Да так и называют. Зло в наше время суидные биты, хотя и достаточно простой костыль. И всё равно никакого прямого доступа нет, лишь даются права на доступ к девайсу и вообще права пользователя, которые можно получить и другими путями. Сам "девайс" предоставляется ведром. Просто в мире никсов как-то это.. ну более наглядно и менее через жопу. Особенно /proc & /sys у линуксов радует, вот уж где можно разгуляться.

YS писал(а):Браво! Как емко Вам удалось выразить манифест быдлокодеров!
Кто бы мычал, что называется. Такая древность мне поможет так же, как и мануал по полуоси, применяемый во фрибсд. Что же там вычитать про многоядерные архитектуры с совершенно другим уровнем сложности железа? О половине вещей гуру программирования тех времён вообще не задумывались, не было у них машины времени. Один гуру-мудак, по совместительству создатель Minix, ядерностройных дел мастер, гуру преподавания, тоже орал о смерти x86 и глобальном перенаселении RISC, при этом поговария о хреновой портируемости Linux'a и микроядерности. Мудак был публично послан, x86 пока не сдохла, RISC перенаселился пока лишь в зубных щётках и смартах, linux портирован на каждый третий носок, миникс валяется трупом, вместе с его микроядерностью.
Ответить

Вернуться в «Интеграция с ПК»