Pull to refresh

Comments 68

UFO just landed and posted this here
на моём рабочем компе есть PS2 порты с обратной стороны. Комп 2019го года c 32Гб оперативки и 16 (вроде) ядрами
Не включено.

Что не так с "«Микроконтроллеры и микросхемы» шедевр."?
Да, вижу что прошляпил с этой секцией. Сейчас поправлю.
ru.wikipedia.org/wiki/Интегральная_схема микросхема, все перечисленное далее цифровые микросхемы.
ru.wikipedia.org/wiki/Микроконтроллер маленький компьютер с периферией, всегда программируется, иногда 1 раз при изготовлении или пользователем, после включения выполняет программу.
ru.wikipedia.org/wiki/ПЛИС всегда программируется, иногда 1 раз пользователем, после включения выстраивает логику согласно программе.
ru.wikipedia.org/wiki/Базовый_матричный_кристалл программируется на заводе маской, содержит стандартные элементы соединенные по схеме заказчика.
Можно смело подключить в них клавиатуру, если вы геймер и вам важны задержки
Люди занимающиеся электроникой навряд ли найдут для себя что-то полезное.
Вы знаете, проблема в том, что вся часть статьи, касающаяся микросхем, написана очень плохо, изобилует фактическими ошибками и вводит аудиторию в заблуждение. Так писать просто нельзя, и никакие дисклеймеры в предисловии этого не изменят.

Ваша терминология «микросхем и микроконтроллеров» — это просто анекдот. Только от него хочется не смеяться, а плакать. Вы бы хоть в Википедии определения посмотрели. В ней, к слову, определение микроконтроллера начинается так: «микроконтроллер — это микросхема, которая...»
Про вход и выход у транзистора — тоже очень хорошо. И про «своего рода затвор». Точнее, про затвор вдвойне хорошо, потому что дальше идёт рассказ про биполярный транзистор, у которого никакого затвора, разумеется, нет. И в принципе от рассказа про биполярный транзистор тоже хочется плакать. Ау, 2020 год на дворе, какие к черту биполярные транзисторы в микросхемах?

А самое страшное — то, что видя такой катастрофический уровень изложения материала, в котором я разбираюсь хорошо, я имею все основания предполагать, что уровень изложения материала, в котором я разбираюсь плохо, ничуть не лучше. И тогда, прочитав эту статью, я получу не полезные знания, а набор заблуждений и кашу в голове.
Я про микросхемы знаю только приблизительно как работают поэтому неудивительно что в этой части есть неточности. Какие конкретно ошибки вы нашли? И какие заблуждения?

Я пока не понимаю что не так с «Микросхемами и микроконтроллерами», какие принципиальные ошибки там есть?

В статье сказано про то что транзисторы делают микроскопическими, думаете есть нужда добавить предложение о том что в микросхеме нет биполярных транзисторов как на картинке?

то, что видя такой катастрофический уровень изложения материала, в котором я разбираюсь хорошо, я имею все основания предполагать, что уровень изложения материала, в котором я разбираюсь плохо, ничуть не лучше.
— либо вы так пишете сгоряча, либо не понимаете что нельзя быть специалистом во всех областях сразу.

Если моё описание плохое и вы хорошо разбираетесь, то объясните пожалуйста сами доступно и не углубляясь в детали, чтобы человек который пишет драйвера под ОС, модифицирует ОС, пишет код в режиме пользователя понял не более чем за 40 минут чтения, что происходит на уровне ниже.
UFO just landed and posted this here
С чего вы взяли что я пишу код драйверов?
UFO just landed and posted this here
Теперь понятно, почему МелкоМягкие с такой помпой иконки презентовали…
Если моё описание плохое и вы хорошо разбираетесь, то объясните пожалуйста сами доступно и не углубляясь в детали, чтобы человек который пишет драйвера под ОС, модифицирует ОС, пишет код в режиме пользователя понял не более чем за 40 минут чтения, что происходит на уровне ниже.
О, «сперва добейся», все как я люблю.
Так вот:
Почему кремний и почему КМОП
Проектные нормы и где 7 нм в нормах 7 нм
Система-в-корпусе
Кто есть кто в мировой микроэлектронике
Первая из четырех ссылок — то, что вы просили.

Какие конкретно ошибки вы нашли? И какие заблуждения?
Поехали:
Логическая единица — это напряжение 3.3В и выше, логический ноль — напряжение около 0В.
Логические уровни при питании 3.3 В специфицируются примерно вот так, потому что, как вы сами пишете дальше, на линии могут быть помехи. Итого в разных частях текста вы сами себе противоречите.


. Это высокоуровневый язык программирования который транслируется в план электрической схемы, она прогоняется через программу находящую оптимальное расположение радиоэлементов на плате и в конечном счёте производится в физическом виде.
0) Вы описываете маршрут разработки цифровых микросхем. Микроконтроллеры разрабатываются принесу же.
1) Языков несколько, хоть это и не так важно. Но Verilog популярнее.
2) В этом предложении подлежащее — слово «язык». И дальше в микросхему преобразуется именно он. То есть весь язык VHDL, а не написанный на нем код.
3) Не «план электрической схемы», а в саму электрическую схему. Бдок-схема — это другое.
4) Программы, синтезирующие топологию микросхем и печатных плат — это очень разные программы. Примерно как Skype и Photoshop.

Не могу процитировать пассаж про то, что микроконтроллеры цифровые, а микросхемы — аналоговые, потому что вы его удалили. Но видимо, вы сами поняли, а чем была ошибка. «Микросхема» и «микроконтроллер» — это вообще не антонимы. Любой чип, содержащий более одного элемента — это микросхема, вне зависимости от назначения и реализуемой функции.

Рисунок ниже иллюстрирует работу транзистора, вода иллюстрирует ток.
Так вот, биполярный транзистор управляется током, а не напряжением. И вся аналогия с затвором для воды никак не объясняет принципы работы биполярного транзистора, зато прекрасно подходит для JFET или MOSFET, у которых даже управляющий вход называется«затвор».
Резисторно-транзисторная логика с ваших картинок-примеров устарела примерно пятьдесят лет назад. Это как устройство электропривода в «Тесле» объяснять на примере ВАЗ-2101.
Это даже безотносительно того, что биполярные транзисторы намного менее интуитивны для понимания, чем МОП. Пока они были популярны, смысл в примерах на них был, а сейчас его не осталось ровно никакого.

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

Микросхемы могут содержать на той же плате и в том же корпусе и микроконтроллер
Тут вы или микросхему с материнской платой путаете, или микроконтроллер с микропроцессорным ядром.

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


Не совсем. Тут больше вопрос, что первично. Вот есть модель Эберса-Молла. По этой модели как раз токи биполярного транзистора определяются напряжениями (что логично — без напряжений токи не потекут). Именно поэтому в Искусстве схемотехники написано:
Следует запомнить, что в транзисторе коллекторный ток зависит от напряжения между базой и эмиттером, а не от тока базы (ток базы в грубом приближении определяется коэффициентом h21э)·


Логические уровни при питании 3.3 В


Тут бы ещё надо бы автору напомнить про ЭСЛ-логику. :)
Если идти так глубоко, то биполярный транзистор управляется наличием электрического заряда в базе. И его изменением по времени, то есть током.

Статика биполярных схем прекрасно считается в приближении, что напряжение база-эмиттер всех транзисторов одинаково и равно напряжению открытого диода.
Опять же, давайте посмотрим, что будет, если на базу биполярного транзистора включить идеальный источник напряжения и идеальный источник тока.

«Искусство схемотехники» — отличный источник, но, как вы сами заметили, тесть разные модели и разные интерпретации.
Если идти так глубоко, то биполярный транзистор управляется наличием электрического заряда в базе.


Так нет же. Ему заряд на базе не нужен, ему нужна разность потенциалов между базой и эмиттером.
В активном режиме работы транзистор включён так, что его эмиттерный переход смещён в прямом направлении (открыт), а коллекторный переход смещён в обратном направлении (закрыт). Для определённости рассмотрим npn транзистор, все рассуждения повторяются абсолютно аналогично для случая pnp транзистора, с заменой слова «электроны» на «дырки», и наоборот, а также с заменой всех напряжений на противоположные по знаку. В npn транзисторе электроны, основные носители тока в эмиттере, проходят через открытый переход эмиттер-база (инжектируются) в область базы. Часть этих электронов рекомбинирует с основными носителями заряда в базе (дырками). Однако, из-за того что базу делают очень тонкой и сравнительно слабо легированной, большая часть электронов, инжектированных из эмиттера, диффундирует в область коллектора[1]. Сильное электрическое поле обратно смещённого коллекторного перехода захватывает электроны, и проносит их в коллектор. Ток коллектора, таким образом, практически равен току эмиттера, за исключением небольшой потери на рекомбинацию в базе, которая и образует ток базы (Iэ=Iб + Iк). Коэффициент α, связывающий ток эмиттера и ток коллектора (Iк = α Iэ) называется коэффициентом передачи тока эмиттера. Численное значение коэффициента α 0.9 — 0.999. Чем больше коэффициент, тем эффективней транзистор передаёт ток. Этот коэффициент мало зависит от напряжения коллектор-база и база-эмиттер. Поэтому в широком диапазоне рабочих напряжений ток коллектора пропорционален току базы, коэффициент пропорциональности равен β = α / (1 − α) =(10..1000). Таким образом, изменяя малый ток базы, можно управлять значительно большим током коллектора.

(из Википедии)


И его изменением по времени, то есть током.


А это изменение тока зависит от напряжения Uбэ (и, например, температуры). :)

Статика биполярных схем прекрасно считается в приближении, что напряжение база-эмиттер всех транзисторов одинаково и равно напряжению открытого диода.


А вот Хоровиц считает иначе:
Мы рассматривали транзистор как усилитель тока, вход которого работает как диод. Это приближение является грубым, но для некоторых практических случаев большей точности и не требуется. Однако для того чтобы понять, как работают дифференциальные усилители, логарифмические преобразователи, схемы температурной компенсации и некоторые другие практически полезные схемы, следует рассматривать транзистор как элемент с передаточной проводимостью ‑ коллекторный ток в нем определяется напряжением между базой и эмиттером.
Ему заряд на базе не нужен, ему нужна разность потенциалов между базой и эмиттером
… создаваемая попадающим в базу зарядом)

А вот Хоровиц считает иначе
Моя фраза про статику никак не противоречит Хоровицу, потому что она только про статику.

Но мы с вами окончательно скатываемся в дискуссию про курицу и яйцо, которая по определению бесплодна.
… создаваемая попадающим в базу зарядом)


Ну, строго говоря, внешним источником (заряд на базе быстро рекомбинирует без него — отсюда и ток базы). Биполярный транзистор требует инжекции электронов из эмиттера в базу, которая происходит под действием напряжения Uбэ. Ток же базы в биполярном транзисторе вредный и является побочным эффектом работы транзистора.

Моя фраза про статику никак не противоречит Хоровицу, потому что она только про статику.


Тогда у вас это не статика, а режим насыщения.
В зависимости от напряжения на выводах транзистор может находиться в следующих основных режимах:
1) Режим отсечки;
2) Активный режим;
3) Режим насыщения.

Но аналоговая электроника довольно редко в нём работает (разве что ключи и мультивибраторы и, может, ещё что-то).

Но мы с вами окончательно скатываемся в дискуссию про курицу и яйцо, которая по определению бесплодна.


Дело в том, что тут автор статьи угадал. :) Но, согласитесь, теперь общепринятое мнение, что биполярный транзистор управляется током воспринимается как «всё не так просто...». :)
Дело в том, что тут автор статьи угадал.
Так это плохо, когда человек, что-то объясняющий другим, сам «угадал» то, что объясняет.
И, собственно, весь наш спор, в котором все не так просто, как кажется даже профессионалам — это отличное подтверждение моего тезиса о том, что неподготовленной аудитории давать примеры на биполярных транзисторах не стоит.

Тогда у вас это не статика, а режим насыщения.
Почему режим насыщения?
imageВот тут задайте входное/выходное напряжение и питание, а дальше статическая рабочая точка прекрасно считается в приближении с V* на базах всех транзисторов. Грубое приближение, но довольно удобное для этой цели.
Почему режим насыщения?


Так вы сами написали:
что напряжение база-эмиттер всех транзисторов одинаково и равно напряжению открытого диода.
Я так понимаю что вы занимаетесь исключительно хардверной разработкой и потому хочу пояснить некоторые моменты относительно того что происходит выше по технологическому стеку. Статьи Ваши почитаю, но потом.

В хорошо спроектированной системе различного рода нюансы скрыты за абстракцией. Если я меняю код уведомляющий читалку экрана о нажатии клавиши, мне не надо думать на какой материнке и с каким CPU работает код. В Windows есть HAL.dll и ACPI.sys которые скрывают все нюансы материнских плат и тем самым облегчают разработку драйверов и ОС, поэтому Windows будет работать одинаково хоть на новом хоть на старом поддерживаемом железе. Для человека который пишет код в режиме пользователя — таких очень много на этом ресурсе — абсолютно ничего не меняется. Если удалось установить и запустить Win10, то на ней будет работать всё что было написано под Win10. Возможно будут ошибки из-за недостатка памяти, медленная работа, но это уже отдельный вопрос. К слову, Windows идёт к тому чтобы UWP apps работали везде — Desktop, IoT, XBox и другие платформы которые будут в будущем.

Для разработчиков железа подобные неточности важны, но для человека который железом не занимается — нет. Я хочу доступно рассказать и студенту первого курса и сеньёру .Net как работает ПК. Такого уровня деталей для этого на мой взгляд достаточно. Студент за годы учёбы выяснит какие напряжения и какие транзисторы на самом деле используются. Сеньёр .Net никогда не будет заниматься железом и будет знать что есть пороговое напряжение, почему 0 и 1. Такого уровня деталей достаточно чтобы понять как определяется нажатие клавиши, как оно потом достигает CPU, как задаётся логика работы микросхемы. Микросхемы, микроконтроллеры и радиоэлементы не цель этой статьи.

Ещё раз говорю, что для владения авто вам не надо знать теорию ДВС, сопромат, гидродинамику и пр. Достаточно примерно знать как все узлы работают вместе, чтобы решать вопросы с СТО. Если вы захотите построить свой авто, то придётся штудировать много предметов. Универ предлагает долго и мучительно изучать математику, сопромат, физику, чтобы к пятому курсу вы сложили в своей голове авто. В дополнение к подходу снизу вверх, я предлагаю рассмотреть как оно работает в движении.

Тут вы или микросхему с материнской платой путаете, или микроконтроллер с микропроцессорным ядром.
— тут я пытаюсь объяснить, что в микросхеме может быть элемент который может быть «прошит», но это не значит что вся микро-система контролируется кодом.
Микросхемы, микроконтроллеры и радиоэлементы не цель этой статьи.
Поэтому самым разумным с вашей стороны было бы не писать о них вовсе. Тут работает тот же принцип, что в клятве Гиппократа: самое главное — не навредить. Ваша статья, к сожалению, в части, касающейся устройства железа, вредит аудитории и ее пониманию.
И именно поэтому мне важны все эти неточности. Не из вредности, а потому, что мне потом работать с людьми, их усвоившими.
Пишите о том, у чем хорошо разобрались, или разбирайтесь в том, о чем пишете. Второй вариант, кстати, довольно крутой, советую.

тут я пытаюсь объяснить, что в микросхеме может быть элемент который может быть «прошит», но это не значит что вся микро-система контролируется кодом.
То есть путаете микроконтроллер с ядром.

Ваши статьи — они на хорошую тему и они могли бы быть действительно крутыми и полезными. Но пока это не так, и в большой мере потому, что вы спустя рукава делаете содержательно важную, но не близкую лично вам часть, надеясь, что так сойдёт. К сожалению, не сойдёт.

вы совершенно правильно все делаете… но как сказал Козьма Прутков, специалист это чел с большим флюсом… особенно если специалист специалист… бить будут все… не обращайте внимания… я по образованию радиоэлектронщик, но последние 30 лет занимаюсь софтом, проблемы IT отрасли очень понятны… дремучесть среди программеров многих чудовищна… надо все таки это менять…
Вы частично сами себе противоречите.
Операционный усилитель есть в формате микросхемы, и в 2020 году в ОУ есть биполярные транзисторы. Да и логика TTL наверняка выпускается.
ps
промахнулся, этот коммент для amartology
Биполярные транзисторы используются в некоторых микросхемах, это так. Но это не повод на из примере что-то объяснять в 2020 году.
Также большая часть современных (=недавно разработанных) ОУ — не биполярные, а КМОП. Или БиКМОП по крайней мере. ОУ в составе микросхем — поголовно КМОП.
И про «своего рода затвор». Точнее, про затвор вдвойне хорошо, потому что дальше идёт рассказ про биполярный транзистор, у которого никакого затвора

На иллюстрации ниже изображён затвор для воды. Если вы слышали про сток, исток, затвор то такое упоминание может ввести в заблуждение.
Да ну, бред. Так много деталей нужно не столько для того, чтобы все это запомнилось, сколько для того, чтобы научить учиться и дать фундаментальные основы. И то это не помогает, потому что нынче, на высокоуровневых харчах, никто не задумывается над тем, что заставляет работать Go или js, и в результате получаем 8 гигов на десяти вкладках, Atom, который медленнее моей бабушки, и хелло ворлд на 150 мегабайт оперативы.

Статью не читал.
Современный порт PS2 напрямую подключается к чипу Super I/O своими контактами. Зелёное — клавиатура, фиолетовый — мышка.

С таким уровнем фактических ошибок остаётся только надеяться автор действительно понимает предмет. А так то конечно, выглядит это как «поток сознания в режиме кони-люди — часть #2»
В начале механическая кнопка, потом вскрытие мебранной клавиатуры.
Последовательно и непротиворечиво.

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


Всё, дальше меня уже вытащили из-под стола, успокоили валерьянкой. Для очистки совести заглянул в первую часть. И тут меня осенило: да это же "Книга Элая", руководство по сборке Windows 10 на гидравлике!


Прости, парень, за такой жесткий сарказм в комментарии, но не надо таких статей! Пожалуйста!




Можете швырять в меня камни, но, как минимум: теги "C#" и "разработка под виндовс" тут вообще никаким боком. За ними сюда и зашел, иначе этот бред не нашел бы даже.


Куда смотрит смотритель песочницы?

Пожалуй самый важный из них тот что имеет встроенную программу (прошивку, BIOS, UEFI) которая начинает выполняться как только появляется электричество. Она находит жёсткий диск с загрузчиком Windows и передаёт тому управление который в свою очередь запускает исполняемый файл ОС, который можно назвать Windows10.exe, на самом деле NtOsKrnl.exe.

Это из первой части публикации.
Давно занимает вопрос, почему столь непопулярны варианты загрузки, не зависящие от локально подключённого блочного носителя.
Понятно, что «исторически так сложилось», понятны и причины этого..

Но ведь причины те ушли в историю?
Вы имеете в виду PXE или что-то ещё подобное? Для бездисковых станций оно таки активно используется, хоть их, конечно, и не так много.

Да, это интересная тема. Такие варианты загрузки очень даже популярны — про линукс с флешки ведь знаете? Я проверял на убитом ноутбуке (принесли починить, тыжпрограммист), система грузится с флешки и работает, но установить нельзя: не обнаружен жесткий диск.


Правда интересно, почему не популярен виндовс того (Windows ToGo), тоже с флешки грузится.

Мое мнение — отлично. Вот теперь статья получилась очень фундаментальной, а все, что пишут в комментариях накрывается первыми ее абзацами. Действительно очень серьезный экскурс в архитектуру x86 (и отчасти x64). Конечно, местами можно много дополнить, местами много Legacy, но любой кто пойдет этим путем просто вынужден будет нарваться на все это. И если первая статья была просто сборищем фактов, то эта действительно «от кнопки и дальше».

Дописывайте дальше. От порта до окна. А все недостающиее, типа UEFI с сотоварищами допишите в послесловии. И да, подробнее схемотехника — это уже для тех, кто с ней работает. Во всяком случае в этой статье изжоги по поводу терминологии у меня не возникло. А уточнять детали можно до скончания веков.

Спасибо. Удачи. Жду следующей части.
>Стесняюсь даже спросить: зачем? Зачем эта статья на хабре?

Собрались одни специалисты железа. Всё не то и всё не так, и статья вообще зря.
Конечно есть ошибки, которые стоит поправить. Но вот больше деталей точно не надо.
Как по мне пример рисунка как рабоатет тот же транзистор в виде каналов и затворов очень даже хорош. Лучшее что я видел для _не_шарящего_ человека.

Главное то, что статья отражает общий принцип работы IBM PC совместимого компьютера. Кучу современных программистов самоучки, и понятия не имеют как оно там вообще крутится, куда им там еще вникать в ttl vs cmos и то что управляется оно не током а напряжением, и какими уровнями, не важно это всё для общего понимания :)

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

Друзья! Спасибо за добросовестный труд! Кто бы ты ни был, Дорогой Друг, почистивший мне карму, огромное тебе спасибо! Теперь я буду спать спокойно, с чистой совестью и отрицательной кармой.
Я нелестно высказался о статье (и первой её части), получил за это минус в карму, но всё равно не пожалел о высказанном своём про статью мнении.
Ляпов в статье множество, многие были отмечены комментаторами, и это оказалось бесполезным (и даже вредным для кармы в моём случае) занятием. Все глупости перечислять тут замучаешься.


Порт это по сути шина с разъёмом по середине. Протокол — это порядок взаимодействия через контакты.

Смешно? Мне уже нет…
За справедливую критику наказали, человек "на том конце наказания", скорее всего, сам не представляет сколько нужно изучить и понять материала, технической документации, чтобы уверенно разбираться в устройстве и принципе работы компьютерного железа. Не говорю уже про время и опыт.
Тут автор хочет объяснить всё на пальцах с картинками, делает это неправильно, множество раз ошибается (чуть-ли не в каждом абзаце статьи), я не могу пройти мимо, и повторяю: не нужны такие статьи на хабре. Люди сюда приходят узнать что-то новое для себя, научиться, когда не хватает информации по вопросу. По этой теме: "Как работает компьютер" материалов более чем достаточно, материалов качественных, от авторитетных авторов.
Полезность этой статьи не просто нулевая, утверждаю с уверенностью — статья вредна, вводит ищущего знаний человека в заблуждения и сомнения.


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

Конструктивная критика это когда указывая на недостатки вы учите другого человека, а он учит вас. Т.е. идёт взаимный обмен и наносится непоправимая польза всем участникам дискуссии. Необоснованная деструктивная критика пользы не приносит. Сказать что статья какашка много усилий не надо, технического опыта тоже. Никаких обоснований своей критике Вы не приводите.

Вся статья бесполезным бредом быть не может. Потому что:
  1. Я сравнивал материал из разных источников, освежал знания
  2. Час консультировался со спецами работающими над железом для MS Azure
  3. Консультировался по поводу микроконтроллеров со своим коллегой получавшим образование по теме
  4. Компетентные люди уже отозвались о ней положительно в коментариях.

Неточности в статье вовсе не значат мои коллеги из MS некомпететны. Потому как я мог неправильно понять или воспроизвести их информацию. Эта статья исключительно волонтёрская работа за которую я не получаю денег и делаю из собственного интереса. Поэтому я не стал заморачиваться с наймом за деньги фрилансера-специалиста в этой области, чтобы он прочитал текст и выдал рецензию и редактора чтобы он проверил текст на читабельность. Или вы думаете кто-то будет такой большой текст за спасибо обрабатывать?

Всё равно, непонятно, почему вам за слово Спасибо минус поставили.


Я статью поругал, потому что нового ничего не написано, всё что тут есть — довольно хорошо описано в других источниках, и гораздо лучше. Вот ничего не вижу плохого в стремлении показать людям "Работу ПК на примере ...", но статья-то совсем не так выглядит, как озаглавлена. Читал внимательно, Windows 10 не встретил нигде, ни в тексте, ни на картинках. Это как? Может логичнее было бы показать диспетчер устройств, с выделенной клавиатурой, описанием её свойств, шину и т.д.
Без обид, картинки в одном стиле (а не сборная солянка), скриншоты с десятки были бы уместнее.


image


А зачем картинка в статье "просто покажу, но описывать не буду", да ещё отвлечённая от темы?
Стек вызовов от клавиатуры можно показать на примере, показать как выглядят 8 бит:


image


Честно, если бы меня попросили поставить оценку (5 баллов макс.), поставил бы тройку с минусом. Не 2 — за старания.
Лишнего много, хорошего мало. Такое впечатление, что человеку задали в институте курсовую тему и одним из условий — выложить на хабре.

Эта статья исключительно волонтёрская работа за которую я не получаю денег и делаю из собственного интереса.
Это не только не оправдание того, что сделано плохо, а отягчающее обстоятельство, потому что у вас не было KPI и дедлайнов, заставляющих сдать недоделанный текст к определенному сроку.

Или вы думаете кто-то будет такой большой текст за спасибо обрабатывать?
Публичная оферта всем авторам хабра-статей, касающихся микроэлектроники: я готов вычитывать и консультировать за спасибо тексты любого объема.
Вы не убедили меня что статья сделана плохо. Я знаю много людей которым хочется знать о том как работает ПК именно в таком объёме. У меня есть основания считать что она сделана хорошо, хотя можно было и лучше. Поскольку статья волонтёрская то я рассчитываю что читатель увидив ошибку сообщит о ней, а не будет говорить что вся статья кака, т.е. отнесётся к моему труду с уважением. Если бы я делал это за деньги, то тут другой вопрос.

Ваш аргумент о том что приходится работать с людьми которые заблуждаются и в этом отчасти моя вина я не понимаю и не принимаю. Если человек работает с электроникой он должен полагаться не на бесплатные любительские статьи в Интернете, а на платное образование — учебники, видеокурсы, тренинги, учёбу в университете. Даже если бы Вы были преподавателем и работали со студентами. Они будут лучше понимать материал если будут рассматривать его с разных перспектив и тем более если найдёт неточности и ошибки, можете не соглашаться со мной. Если Ваши клиенты не шарят в электротехнике, то опять же претензии не ко мне.
не убедили меня что статья сделана плохо.
Давайте, я напишу статью на ту же тему, что и вы, но с точки зрения хардварного инженера? И описание высокого уровня будет выглядеть примерно так: «а потом сигнал попадает в операционную систему MS Office, которая с его помощью выполняет такие программы, как „калькулятор“ и „расчет_зарплаты.xlsx. Другие популярные операционные системы — это BIOS и Total Commander“. Понравится вам такое читать? Полезно ли аудитории такое читать?
Напишите, я вас поправлю если найду неточности.

Если статья для «железячников», то про Total Commander, BIOS, MS Office лучше написать что это графическая оболочка через которую пользователь взаимодействует с железом. (Это в моей первой статье я называл микросхемы микроконтроллером Total Commander операционной системой, по-вашему) Сигнал приходит в CPU, где его подбирает ОС через механизм прерываний, обрабатывает, возможно передаёт информацию о клавише активному приложению, которое может его так же обработать выполнив привязанную команду или отобразив на экран букву используя графические библиотеки ОС, которые в конечном счёте вызывают драйвер видеокарты. Я бы примерно такого подхода придерживался и придерживаюсь в своей статье.

Мне будет интересно почитать если вы доступным языком напишите. В глупости и поверхностности меня обвинять за это не надо. Время — это самое ценное что есть у человека. Можно потратить год на изучение электротехники и электроприборов, но только ради чего? Удовлетворить свой интерес это не та причина, потому как есть много других дел имеющих большее влияние на мою жизнь и которые требуют времени и внимания. К трате времени надо подходить ещё щепетильней чем к трате денег.

Мир Алисы Селезнёвой в котором маленькая девочка знает квантовую физику гораздо ближе чем кажется. Лет 300 назад только монахи имели доступ к научным знаниям, потом аристократы, потом университетские профессора. Т.е. раньше чтобы удовлетворить тягу к знаниям надо было преодолеть огромные барьеры и мириться с неудобствами: высокомерным и хамоватым преподом, чистить парашу за монахами. Сейчас благодаря YouTube, блогам можно получить информацию доступным для себя языком и в нужном объёме. Что делать с этой инфой — личное дело каждого, Интернет сделал информацию доступной всем. Английский можно учить у носителей через Ютуб, а не через псевдоразговорники. Алиса была такой умной потому что у них в будущем квантовая физика была расжёвана блогерами и любителями с разных сторон, доступным для своей целевой аудитории языком. Потому что лучшие преподаватели настоящего и прошлого оставляли записи своих лекций доступные всем и всё что непонятно можно было понять в 5-ти 10ти минутном видео. Обсуждения на форумах людей из разных дисциплин позволяют понять информацию ещё глубже, даже если это было лет 50 назад. Это не делает людей тупее, большее количество людей получает возможность найти себя в разных областях и не за 7-10-20 лет, а за 3-5 года. Мы ещё в самом начале этого нового Мира.

Разве это плохо, что человек загорится железом или низкоуровневым программирование после моей статьи, потому что она была написана понятным для него языком? Или потому что сложила все паззлы мозаики знаний хаотично разбросанной древней и неэффективной системой образования? Человек изучит более глубокие статьи по теме и не будет говорить глупости как я. А мне не обязательно знать на отлично электротехнику, потому как я с ней не работаю и своим невежеством нанести ущерб не могу. Мною движит интерес как эта коробка на столе работает, я не собираюсь их проектировать или ремонтировать. И таких как я много.
Разве это плохо, что человек загорится железом или низкоуровневым программирование после моей статьи, потому что она была написана понятным для него языком?
Плохо то, что у него с самого старта будет каша в голове, которую потом придется разгребать.

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

Сейчас благодаря YouTube, блогам можно получить информацию доступным для себя языком и в нужном объёме.
Например, информацию о том, что Земля плоская, гомеопатия работает, а микросхема и микроконтроллер — антонимы.

Каша в голове от обилия новой информации происходит всегда. И с ней всегда приходится разбираться через практику.
В чём будет измеряться будет ущерб? В рублях? Сожжённых ПК?
YouTube в рекомендациях выдаёт видео и с противоположной точкой зрения. Если человек верит в плоскую землю, то возможно ему это выгодно.
Порт это по сути шина с разъёмом по середине. Протокол — это порядок взаимодействия через контакты.


а что не так с этим выражением? Если спуститься на землю прочитать в контексте, то выражение становится логичным, Это как шина, но посередине, те между концами шины, добавили разъем.
Да и протокол охарактеризован правильно, вроде бы автор не тянется к академическому повествованию

Порт, это порт, но не шина. Представьте себе аналогию: морской порт — тоже порт. Шина — это дорога, шоссе, железная дорога, не зря на монтажных платах шины называют дорожками. Так вот порт — это конец дорожки. Понятненько?

Видимо мое понимание аналогий совпадает в какой-то мере с авторским.

Так вот порт — это конец дорожки. Понятненько?

Я считаю что автор так и написал, шина с разьемом по середине, те по вашей аналогии, по середине дороги выкопали море и поставили два порта (то бишь разъем)

Почти.
Нужно было написать, что мама-центр имеет множество шин, как внутренних (не имеющих портов), так и переферийных с портами на концах шин, к этим портам и присоединяются внешние участники с помощью разъёмов.
Простите, мне уже не очень хочется обсуждать эту статью. Можем продолжить, если хотите, но не обещаю, что быстро отвечу, занят работой.
Всего доброго, с уважением, Юра.

За протокол, смотрите определение — что такое протокол. Опять куча аналогий: полицейский протокол, протокол заседания, так же и в электронике — протокол не теряет своего смысла никогда, нигде. Причём тут контакты?

Простите, я уже устранился от разбора статьи. Мне уже за работу над ошибками закинули минус в карму.
Все дело в том, что автор действительно не тянется к академическому повествованию.
Всё идёт к тому, что хабр такими статьями компрометирует себя и превратится в пикабу.
Скоро мы тут не найдём трушных знаний, опытов, описаний.
Статью вполне обоснованно критикуют, не должно быть здесь таких статей.

Вон, человеку (artmv32) тут, вообще, за слово "Спасибо" кто-то минус поставил…
Бред? Неее… Просто властью одарённые.
Маразм крепчает...

Открывая статью я подумал было, что здесь будет что-то о процессах, характерных именно для Windows 10 или хотя бы просто windows — драйвера там, всё такое. Я за этим не следил уже лет двадцать, но по случаю — почему бы не почитать? Тогда я ещё интересовался аппаратурой и уровнем аппаратной абстракции (сейчас чистый программист).
Сначала меня насторожил разрез кнопки "с кликом" — которые были в моде лет двадцать пять тому назад, и тогда же проиграли кратно более дешёвым плёнкам.
Картинку с микрухой в DIP-корпусе я привычно проигнорировал — ладно, "изображение носит справочный характер".
Дойдя до порта PS/2, я голосом Кроша из "Двигателя прогресса" признёс: "Странно… но допустим."
Начал потихоньку проматывать, вырывая отдельные картинки и фразы, и пытаясь понять, что это было. Понимание не приходило, скорее даже таяло. Использование нулей и единиц позволили, следуя логике повествования, прекратить уже эксплуатировать законы физики. Читать хотелось всё меньше и меньше, пошёл по картинкам.
Вижу процессор 8086. Кажется, Windows 10 уже совсем не здесь.


Возникла мысль о том, что фразу "не читал, но осуждаю" зря записал в личный чёрный список.


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


Каким бы я хотел увидеть рассказ для программистов по этой теме?


Я не считаю правильным пытаться впихнуть целый курс "устройства программного управления" (в моём техникуме это так называлось, я на наладчика ЧПУ учился) в одну статью. Тем более, не будучи глубоко в теме.


И я бы начал с конца. Даже программист может получить два уровня событий — ввод символа или нажатие/отпускание кнопки. Откуда вообще в программе берутся эти события? Здесь уместно короткое описание взаимодействия приложения и соответствующей части WinAPI, коли мы про Windows тут говорим. Можно сравнить с Линуксом и показать тем самым ценность данного уровня абстракции (вообще, спускаясь по этому пути до замыкания контактов кнопки, "показывать ценность абстракции" можно на каждом уровне). Откуда берутся события WinAPI? Что делает драйвер клавиатуры под Windows? Что там дальше — BIOS, UEFI (заранее извиняюсь, если не точен — за темой не слежу давно). Можно (программистам) рассказать о том, что прерывания — это аппаратная реализация таблицы виртуальных функций, и это очень похоже на то, что творится в объектах (для тех, кто знает, что в этих объектах творится под капотом). Можно обратить внимание на то, почему нам без разницы, воткнута ли клавиатура в USB, или в PS/2, или обе. И на каком уровне отрабатывается дребезг контактов, так, что нам про него и знать не надо. Можно откатиться назад во времена 8086 или 8088 и рассмотреть более простые и более ранние последовательности прохождения "от контакта до события в программе".


И не надо углубляться в физику контроллеров, пусть останутся чёрными ящиками — это слишком глубокая тема, чтобы лезть в неё неспециалистам даже с просветительскими целями.

«О работе ПК на примере Windows» — это название серии статей. В первой части были основы, в этой рассказал как сигнал о нажатой клавише передаётся, в следующей будет немного про драйвера и что Windows 10 делает с полученной информацией, как нажатая клавиша приходит в окно и что происходит дальше.

Windows изначально делался максимально переносимым на все существующие платформы и платформы которые появятся в будущем. Ему всё равно на каком железе работать, поэтому угулябляться в эту тему и приводить современные материнки, клавиатуры и USB-порты на мой взгляд не обязательно, это добавит сложности понимания и деталей которые скроют основной посыл и породят споры уводящие дискуссию в сторону. Windows 10 поддерживает PS2 и теоритически может работать с тем железом что я придумал, надо просто добавить поддержку в ACPI.sys.

Без описания процессов которые происходят на материнке для передачи сигнала о нажатой клавише статья не достигнет цели — снять ореол мистики с ПК и дать представление как машина работает в целом. Какие минусы того что человек который не проектирует железо и даже не пишет драйвера будет примерно представлять как ПК работает на уровне железа?
Порт PS/2 называется серийным портом

Последовательным по-русски. Серийные производства и маньяки бывают.
Ещё желателен переход от кнопок не сразу к микросхеме, а плавнее — от транзистора к двухтранзисторному триггеру и затем из нескольких триггеров собирается регистр состояния кнопок с битами. 2-3 картинки хватит объяснить принцип работы контроллера клавиатуры.
Иначе каша в голове юных программистов не разложится по полочкам.

от транзистора к двухтранзисторному триггеру
В КМОП триггере минимум четыре транзистора. А практически — штук двенадцать-шестнадцать.
Поэтому используют такой подход как “клавиатурная матрица” — все клавиши распределяют по столбцам и строкам
Много раз слышал про этот подход, но все равно не могу понять как это работает, предположим, по вашей схеме я нажму две клавиши S и С, тогда как мне определить, что не была нажата клавиша F?
Есть тачпады с одним касанием, есть 10-тачевые. Сколько событий одновременно может обработать контроллер, столько и будет «нажато клавиш».
Простите за столь примитивное объяснение, следую тону, заданному ТС.
Я не задавал вопрос сколько клавишь может определить контроллер, а задал вопрос как можно отличить, при зажатых клавишах S и С, была ли зажата клавиша F, так как если посмотреть на схему матрици, то сразу будет видно что именно клавиши S и С имеют одинаковые линии с клавишой F, из-за чего, при их замыкании, будет замыкаться и клавиша F, как я понимаю.

А Вы и не узнаете. Есть кнопки, которые читаются одновременно, и есть те, которые перебивают друг друга. Вы никогда не обращали внимания, что многоклавишные сочетания никогда не содержат нескольких нажатых одновременно буквенных клавиш? Клавиатуры не поддерживают, и привет.
Да и с управляющими не всегда хорошо. У меня была клавиатура, на которой не работало сочетание Ctrl + Alt + m (выделить метод в Идее).
Несовершенный мир. Мир компромиссов. Всё нормально

предположим, по вашей схеме я нажму две клавиши S и С, тогда как мне определить, что не была нажата клавиша F?

Контроллер сканирует клавиатуру, подавая в конкретный момент напряжение только на одну линию матрицы из группы (пусть в данном примере — горизонтальную). Подал на row10, считал отклики col2 (S) и col3 (F). Подал на row5, получил col3 — C. Если у каждой клавиши есть диод, этого достаточно, чтобы распознать каждую клавишу отдельно. Но это на дорогих клавиатурах, обычно игровых — про такие пишут "N-key rollover".


Но большинство простых клавиатур диодов не держат, и что нажато — до определённого уровня определяется по уровню полученного тока (не просто есть/нет), но всё равно там только 2-3 уровня опознаются. Возьмите обычную клавиатуру для офисного десктопа, или простого лаптопа, и нажимайте по очереди A, S, D, F, ..., не отпуская предыдущие. Обнаружите, что начиная с какого-то момента нажатие перестаёт замечаться. Разводка на картинке из статьи поэтому не подтверждается для большинства клавиатур: они различают все модификаторы, сколько бы ни было нажато, но не более 3-4 клавиш из центрального поля.

Вы писали в этой или предыдущей статье об LowLevelKeyboard Hook который позволяет программно нажимать клавиши. Но данный хук не работает с играми DirectX, нажатия не происходят, есть ли альтернативы какие-нибудь, чтобы подружиться с DirectX?
LowLevelKeyboardHook — позволяет перехватывать нажатые клавиши до того как они попадут в приложение. Чтобы нажимать клавиши смотрите функцию SendInput или InjectKeyboardInput. DirectX может вызывать свой API для чтения данных с клавы. Раньше он назывался DirectInput, сейчас не знаю.
Sign up to leave a comment.

Articles