Uart1 на материнской плате что это такое
Обновлено: 22.11.2024
Я НЕ являюсь аффилированным лицом, спонсируемым, представляющим или оплачиваемым какой-либо охранной фирмой или корпорацией. Я официально не представляю какую-либо организацию при размещении сообщений под своим номером USN в TPU.
Я обычный парень, который хочет принести на этот форум как можно больше информации о безопасности, на что у меня есть время. Я понимаю, что на самом деле это не главное на этом сайте, но чем больше глаз и самодельщиков увидят это, тем лучше. Мы живем в постоянно растущей технологической сфере, и, несмотря на то, что игры — это весело, в них осталось много движущихся частей, оставшихся со времен оригинального DOOM.
Мы будем решать эту проблему в Windows. Большая часть области безопасности сосредоточена на Linux, популярным вариантом является Kali. Я хочу показать вам, что Windows тоже можно использовать; а почему бы и нет?
Я постараюсь быть кратким.
UART расшифровывается как «Универсальный асинхронный приемник/передатчик», или, как мне нравится его называть, ВАШ КОРЕНЬ. UART — это технология связи с прямой последовательной шиной. То есть это НЕ протокол связи, а прямой интерфейс к последовательной шине.
UART или UART(ы), поскольку их может быть несколько на любом данном устройстве, позволяют нам взаимодействовать с определенной шиной на указанном устройстве. Например, мы можем общаться с микропроцессором или каким-либо контроллером. Иногда мы можем записывать данные. В других случаях мы можем видеть вещи, которые обычно не видны. В зависимости от устройства у нас есть несколько вариантов.
- Я покажу вам различные способы проверки перед покупкой устройства на наличие признаков интерфейса UART.
- Я покажу вам дешевое оборудование (менее 30 долл. США?), которое вы можете попробовать самостоятельно.
- Мы получим root-доступ к популярному устройству, которое я купил у Amazon.
- Судя по тому, что мы обнаружили, мы рассмотрим некоторые технологические и программные дилеммы, с которыми мы сталкиваемся.
Конечно, вы можете свободно искать более дешевые вещи. Это все вещи довольно приличного качества, но я знаю, что вы можете получить устройства USB> TTY всего за несколько долларов, и я знаю, что доступны более дешевые или меньшие пучки проводов. вы, вероятно, можете легко сделать это в пределах или ниже диапазона 15 долларов США.
Нам понадобится несколько инструментов, которые помогут нам. К счастью, первая часть любого аппаратного зондирования заключается в том, зачем тратить деньги, если мы можем сначала посмотреть? Хороший вопрос. Добро пожаловать в базу данных идентификаторов FCC. Если вам удалось сфотографировать коробку или просто поискать в Google идентификатор FCC продукта, и он передает сигнал, мы можем найти его с помощью приведенного ниже кода.
В первую очередь важно помнить, что приложения FCC, как правило, НЕ выполняются с конечными продуктами. В этом случае ищем признаки UART (от 3 до 4 контактов) рядом друг с другом. Теперь также важно знать, что контакты UART не обязательно расположены рядом друг с другом для хорошего % устройств.
Теперь, поскольку конечный продукт редко имеет перемычки, мы на самом деле просто смотрим, дают ли они нам варианты для UART, перемычки может уже не быть, но если они использовали UART для тестирования (поскольку UART обычно имеет информацию об отладке и запуске мы также можем использовать отверстия и контактные площадки для подключения, поскольку даже если заголовок удален, функциональность (выход) редко отключается.
Ссылки во плоти!
Поиск в базе данных FCC ID
Этот сайт великолепен, потому что вы можете выполнять поиск в других базах данных FCC, используемых/исключительно в/для других стран.
Тогда у нас старый надежный
А теперь несколько ссылок для нашего конкретного устройства.
Смарт-маршрутизатор FCC ID 2AFIW-300NV2 от GL Technologies (Hong Kong) Limited
Заявка на получение идентификатора FCC, представленная GL Technologies (Hong Kong) Limited для Smart Router для идентификатора FCC 2AFIW-300NV2. Утвержденные частоты, руководства пользователя, фотографии и отчеты о беспроводных сетях.
Веб-сайт FCC кэширует только поисковые запросы без прямых ссылок, поскольку idk FCC.
Со ссылкой на внутренние изображения (которые должны быть отправлены, если вы отправляете их в FCC) мы после!
Разборка интеллектуального маршрутизатора 300NV2 Внутренние фотографии HCT17CR084E Внутренние фотографии GL Technologies (Гонконг)
Информация о внутренних фотографиях Smart Router для FCC ID 2AFIW-300NV2, сделанная GL Technologies (Hong Kong) Limited. Документ включает внутренние фотографии HCT17CR084E Внутренние фотографии
Теперь, когда я почти уверен, что мне повезет, давайте закажем его и подождем 2 дня.
Конкретно изображение, которое меня насторожило, было не чем иным, как.
Разборка и проверка
Теперь, когда у нас есть устройство, мы собираемся показать несколько откровенных фотографий, и я объясню, что мы ищем. Для этой демонстрации важно отметить, что после покупки я прочитал об устройстве, и оказалось, что рынок для этого устройства в значительной степени является экспериментом, поддерживаемым производителем. Хотя это нормально. Другие протестированные устройства предлагают аналогичный, но непреднамеренный доступ, поэтому извлеченные уроки по-прежнему соответствуют поставленной задаче.
Сам роутер поставляется в небольшой картонной коробке. Ничего интересного. Я был приятно удивлен размером, однако, без сомнения, он меньше, чем TP-Link TL-MR3020, который я разбирал ранее.
Теперь нам нужно его разобрать. Здесь нет ничего сумасшедшего. Задняя панель устройства удерживается зажимами, с которыми мой нож быстро справился. Сама печатная плата также встает на место.
Примечание. Устройство имеет переключатель сбоку, а пластиковая кнопка, закрывающая переключатель, встроена в корпус и имеет вырезанный в пластике канал, который позволяет ниппелю скользить внутрь во время сборки/разборки. Если вы постоянно снимаете и устанавливаете плату, обратите внимание на положение переключателя как на печатной плате, так и на шасси, и выровняйте ниппель переключателя с каналом, иначе вы, вероятно, разрушите его. Для удобства на этих устройствах даже с другими брендами разъемы Ethernet наименее щадящие. Сначала попробуйте установить сторону Ethernet, а затем удалить сторону Ethernet устройства (поднимите с другого направления). Это снизит нагрузку на доску.
Задняя часть платы довольно аккуратная, мы видим несколько отверстий и точек пайки для разъемов и SPI, возможно, там, где хранится FW. Если вы собираетесь поиграть с этим материалом и чувствуете, что у вас есть больше денег, я лично использую классический flash cat (FCUSB2X) (30 долларов США), чтобы сбросить все, прежде чем пытаться его уничтожить. Так что я могу написать это обратно. Но в зависимости от устройства и его возможностей, его можно подключить через GPIO или другой разъем, если вам это нужно. Однако это не то, что мы собираемся здесь освещать.
Теперь, когда мы вытащили устройство, давайте посмотрим на другую сторону.
Мы видим, что они были очень милы и дали нам джемперы для игры. Но в устройстве также есть отверстия, если вы хотите попрактиковаться в этом. Похоже, что отверстия на этом SPI, но мы хотим UART. В данном случае к контактам подключены TX RX GND и VCC. В большинстве случаев VCC будет передаваться вашим tty на USB и будет измеряться на уровне 3,3 В. Когда я могу, я подключаю только TX RX и GND. Я использую мощность самого устройства для обеспечения своего напряжения.
Вы можете исследовать этот момент с помощью чего-то вроде логического анализатора или даже мультиметра, если хотите. Чтобы попытаться выяснить, какие выводы являются мудрыми протоколом и живы ли они. Вам также не нужно подключать и TX, и RX. Некоторые устройства даже не позволят вам взаимодействовать, но TX (передача) позволит вам увидеть, что устройство сбрасывает на шину. Я подключаю все, чтобы посмотреть, смогу ли я работать с устройством, поэтому мы и собираемся это сделать.
Вы будете удивлены, узнав, что многие устройства по-прежнему оставляют выступы или отверстия, как показано в строке ниже. Однако, как упоминалось ранее, не на всех устройствах они будут четко обозначены, и контакты могут находиться не рядом друг с другом. Вообще говоря, они будут иметь общее имя, такое как G1 G2 G3 G4, которое будет выделяться по сравнению с соглашением об именах других устройств, припаянных к печатной плате вокруг него. Этот трюк может помочь вам сузить круг устройств, в которых вы копаетесь.
Следует отметить, что МНОГИЕ устройства на самом деле оставляют соединения UART доступными и активными. Это сыграет большую роль в последующем обсуждении.
Важно отметить, как работает UART. Поэтому я нарисовал очень грубый пример того, как подключить UART. Проще говоря, TX и RX (передача и прием) подключены НАЗАД к вашему USB-устройству. В каком-то смысле это работает как современные сети или телефонные системы. Передача пойдет на приемный контакт другого устройства. Имеет смысл, верно? Это как цифровой эквивалент игры в мяч.
Разумно? Потрясающий. Теперь давайте готовиться к работе!
Теперь давайте настроим putty и выясним скорость передачи данных.
Во-первых, о чем я говорю?Что ж, с серийным номером нам нужно указать скорость передачи данных. Я не буду вдаваться в конкретные последовательные процессы, но достаточно сказать, что последовательный интерфейс не способен выполнять какие-либо автоматические согласования. Таким образом, в этом случае мы должны указать putty, как быстро передаются данные, чтобы он мог их прочитать.
Давайте начнем. Сначала нам нужно подключить наш удобный денди USB к tty. Теперь нам нужно найти COM-порт, через который разговаривает устройство. К счастью, это несложно: в Windows просто откройте диспетчер устройств.
Ниже показано изображение моего устройства. Ваш скажет другое. У вас может быть даже несколько, но просто ищите что-то с именем, которое вы ожидаете.
В моем случае вы можете видеть, что мое устройство подключено к COM3.
Давайте разберемся с некоторыми вещами. Скорость передачи может быть установлена на очень многое. Теперь мы можем попробовать логический анализатор или, может быть, какую-нибудь причудливую документацию, но знаете что? Есть только несколько, которые используются тонну. Обычно я начинаю с них и пробую вслепую.
9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600
Что произойдет, если это не так? Ну, вы либо ничего не получите, либо получите несколько зашифрованных или странно расположенных символов, например.
Хватит болтать, давайте запустим putty и посмотрим.
В данном случае методом проб и ошибок я обнаружил, что получаю ответ со скоростью 115 200 бод. Вы также можете видеть, что я выбрал «Последовательный» (поскольку это последовательное соединение) и изменил мой COM-порт на «COM3», который мы удалили из диспетчера устройств.
Если звезды сойдутся, мы получим текстовый вывод! Оставив сеанс открытым, я перезапустил устройство, и мы получили это!
Сладкий! Теперь, когда мы можем воспроизвести это в рабочем состоянии, поскольку мы знаем порт и скорость передачи данных. Давайте рассмотрим еще один полезный вариант замазки.
Слева в разделе "Сеанс" в самом верху нажмите "Ведение журнала".
Справа теперь у нас будут параметры ведения журнала сеанса. Иногда текст устройства прокручивается слишком быстро или мы можем пропустить важную информацию, которая может нам помочь. В этом случае мы можем настроить замазку (на сеанс) для записи вывода консоли в журнал.
В этом случае я выбрал "Все выходные данные сеанса". Найдите местоположение файла и просто нажмите «Сеанс» еще раз, чтобы вернуться к панели подключения.
Теперь, когда мы подключаемся к putty и перезагружаем устройство, мы получаем файл журнала, содержащий это.
Теперь, когда у нас есть подключение и считывание данных, давайте разберемся.
Если мы посмотрим на журнал, мы сможем извлечь некоторые интересные факты; В частности.
Во время загрузки мы узнаем, что на машине работает U-Boot. Мы можем не только войти в консоль U-Boot, но если мы выделим машину для загрузки ядра, нам дадут еще два варианта. Мы можем войти в отказоустойчивый режим. Что в данном случае предоставляет еще несколько команд и монтирует несколько вещей как RW. Очень важно, если предположить, что это был черный ящик, мы можем выбрать уровень операции отладки.
Наконец, если мы проигнорируем все попытки соблазнить наши пальцы до сих пор, нас приветствует корневая оболочка на устройстве.
В любом из трех режимов загрузки uboot, failsafe и normal root мы можем вносить постоянные изменения в устройство. Это означает, что при перезагрузке машины изменения остаются с ней.
Кроме того, FW включает текстовый редактор vi. Почему это важно? Это позволяет нам просматривать изменения и иным образом анализировать сценарии и конфигурации производителей. Мы также можем модифицировать различные HTML-страницы и веб-сервер.
Есть несколько замечаний, касающихся доступа к оборудованию через UART.
Во-первых, финал был довольно разочаровывающим. Я сделал это намеренно. У вас есть 3 разных корневых оболочки для 3 разных режимов работы на этом конкретном устройстве. Если у вас есть хоть какое-то представление о том, что это значит, то дальнейшее объяснение не требуется.
Давайте будем честными. Это устройство, без моего ведома, похоже, было разработано с этой целью. Вы должны гордиться своими достижениями и похлопать себя по плечу за то, что вы делаете то, на что мало кто тратит время.
Учитывая все обстоятельства, мы подошли к нашей следующей проблеме.
Во-вторых, это не редкость. От IP-камер, радионянь, других туристических роутеров.Многие из этих устройств допускают произвольный root-доступ. Это может представлять угрозу безопасности для вас и других. Теперь люди подключают микроконтроллеры с предварительно загруженными сценариями к вашему холодильнику Samsung (уже взломали, нет никакого руководства от меня, извините, а там около 3 тысяч) порта UART и взламывают вас? Вероятно, нет, и даже если бы они захотели, есть более простые инструменты.
В-третьих, эти устройства не всегда быстро обновляются. Что еще более важно, многие из этих сценариев конфигурации или даже целые версии FW с изменением только идентификатора устройства используются в нескольких моделях аналогичных устройств, что позволяет ядру улавливать аппаратные изменения.
Что это значит для вас?
Ну, у этого метода есть палка о двух концах. Вы видите, что если вы получаете загадочное устройство, такое как игровая система, или ваш ИТ-менеджер и обнаруживаете какое-то случайное устройство, подключенное к вашей сети, доступ к оболочке, предоставляемый последовательной шиной, отлично подходит для реверсирования. Вместо черного ящика и броска команд или долгих исследований устройства, у которого нет очевидной цели и еще менее очевидной функции, последовательный порт дает нам зеркало работы устройств. Даже если, как я упоминал ранее, они не разрешают ввод данных, наблюдение за тем, как система реагирует на неожиданную перезагрузку, или просмотр сканирования определенного файла встроенного ПО при загрузке со случайным подключенным USB-накопителем, помогает нам понять неизвестное.
Однако, когда эти вещи обнаруживаются, а тем более, когда предоставляется доступ для записи и root, мы получаем глубокое знание функциональности устройства и во многих случаях позволяют нам находить бреши, ошибки или векторы атак, которые можно использовать на устройства, которые могут охватывать модели и годы. Некоторые без обновлений.
Я думаю, что регулярности этого достаточно, чтобы представлять достаточный риск, производителям было бы неплохо подумать о защите шины, прежде чем выпускать устройства, по крайней мере, может быть, правильный пароль, чтобы удалить некоторые из низко висящих фруктов. В этом случае установка пароля или создание пользователя в реальном веб-интерфейсе устройства никоим образом не предотвращает какой-либо доступ root в любой из оболочек, и это довольно распространено.
Вот оно! Надеюсь, вы чему-то научились и повеселились. Затраты, связанные с подготовкой к погружению в мир сериалов, невелики, и кто знает, что вы можете найти!
UART (универсальный асинхронный приемник-передатчик) — это последовательные микросхемы на материнской плате вашего ПК (или на внутренней плате модема). Функция UART также может выполняться на микросхеме, которая выполняет и другие функции. На старых компьютерах, таких как многие 486-е, микросхемы находились на плате контроллера дискового ввода-вывода. Еще более старые компьютеры имеют выделенные последовательные платы.
Когда все ПК имели архитектуру с параллельной шиной, целью UART было преобразование байтов с параллельной шины ПК в последовательный битовый поток. Кабель, выходящий из последовательного порта, является последовательным и имеет только один провод для каждого направления потока. Последовательный порт отправляет поток битов, по одному биту за раз. И наоборот, битовый поток, поступающий на последовательный порт через внешний кабель, преобразовывался в параллельные байты, понятные компьютеру. UART обрабатывает данные фрагментами размером в байт, что удобно также размером с символы ASCII.
Допустим, у вас есть терминал, подключенный к последовательному порту вашего ПК. Когда вы вводите символ, терминал передает этот символ своему передатчику (тоже UART). Передатчик отправляет этот байт в последовательную линию по одному биту за раз с определенной скоростью. На стороне ПК принимающий UART берет все биты и реконструирует байт (параллельно на старых ПК) и помещает его в буфер. Для более новых ПК, которые могут иметь последовательный порт PCI-e, UART не нужно преобразовывать параллельный в последовательный, поскольку «шина» PCI-e уже является последовательной линией. Но линия PCI-e передает закодированный сигнал, который необходимо декодировать, а затем значительно замедлить до скорости последовательной линии RS-232.
Помимо преобразования между последовательным и параллельным, UART выполняет некоторые другие функции как побочный продукт (побочный эффект) своей основной задачи. Напряжение, используемое для представления битов, также преобразуется (изменяется). Дополнительные биты (называемые стартовым и стоповым битами) добавляются к каждому байту перед его передачей. Подробнее см. в разделе Serial-HOWTO «Формы волны напряжения». Кроме того, хотя скорость потока (в байтах/с) на параллельной шине внутри компьютера очень высока, скорость потока на выходе UART со стороны последовательного порта намного ниже. UART имеет фиксированный набор скоростей, которые он может использовать в своем интерфейсе последовательного порта.
Существует два основных типа UART: тупой UART и FIFO UART. Тупые UART — это 8250, 16450, ранний 16550 и ранний 16650. Они устарели, но если вы понимаете, как они работают, легко понять, как современные UART работают с FIFO UART (конец 16550, 16550A и более высокие номера). Обратите внимание, что драйвер для всех из них по-прежнему помечен как драйвер «8250» в Linux, где вы можете увидеть его в параметрах компиляции, если вы компилируете собственное ядро и т. д.
Существует некоторая путаница в отношении 16550.Ранние модели имели ошибку и корректно работали только на 16450-х (без FIFO). Более поздние модели с исправленной ошибкой были названы 16550A, но многие производители не приняли изменение имени и продолжали называть его 16550. Большинство используемых сегодня 16550 похожи на 16550A. Linux сообщит, что это 16550A, даже если в вашем руководстве по аппаратному обеспечению (или примечании к этикетке) указано, что это 16550. Аналогичная ситуация существует для 16650 (только хуже, поскольку производитель якобы не признал, что что-то не так). Linux сообщит о позднем 16650 как о 16650V2. Если он сообщает об этом как 16650, это плохая новость и используется только так, как если бы у него был однобайтовый буфер.
Чтобы понять разницу между режимом "тупой" и FIFO (дисциплина очереди "первым пришел - первым обслужен"), сначала давайте рассмотрим, что происходит, когда UART отправляет или получает байт. Сам UART ничего не может сделать с проходящими через него данными, он только принимает и отправляет их. Для устаревшего UARTS, ЦП получает прерывание от последовательного устройства каждый раз, когда байт был отправлен или получен. Затем ЦП перемещает полученный байт из буфера UART в какое-либо место в памяти или передает UART другой байт для отправки. Устаревшие UART 8250 и 16450 имеют только 1-байтовый буфер. Это означает, что каждый раз, когда отправляется или принимается 1 байт, процессор прерывается. При низких скоростях передачи это нормально. Но при высоких скоростях передачи ЦП настолько занят работой с UART, что не успевает адекватно заниматься другими задачами. В некоторых случаях ЦП не успевает вовремя обслужить прерывание, и байт перезаписывается, потому что они приходят слишком быстро. Это называется «переполнением» или «переполнением».
Устройства FIFO UART помогают решить эту проблему. Чип 16550A (или 16550) FIFO поставляется с 16-байтовыми буферами FIFO. Это означает, что он может получить до 14 байтов (или отправить 16 байтов), прежде чем ему придется прерывать ЦП. Мало того, что он может ждать больше байтов, но ЦП может передавать все (от 14 до 16) байтов за раз. Это значительное преимущество по сравнению с устаревшими UART, у которых был только 1-байтовый буфер. ЦП получает меньше прерываний и может заниматься другими делами. Данные редко теряются. Обратите внимание, что порог прерывания буферов FIFO (уровень срабатывания) может быть меньше 14. 1, 4 и 8 являются другими возможными вариантами. По состоянию на конец 2000 года пользователь Linux не мог установить их напрямую (setserial не может этого сделать). В то время как многие ПК имеют только 16550 с 16-байтными буферами, лучшие UARTS имеют буферы еще большего размера.
Обратите внимание, что прерывание выдается немного раньше, чем буфер заполнится (скажем, на «уровне срабатывания» 14 байтов для 16-байтового буфера). Это позволяет получить еще пару байтов, прежде чем процедура обработки прерывания сможет фактически получить все эти байты. Уровень срабатывания может быть установлен на различные допустимые значения программным обеспечением ядра. Уровень триггера 1 будет почти таким же, как у устаревшего UART (за исключением того, что он все еще имеет место для еще 15 байтов после выдачи прерывания).
Теперь рассмотрим случай, когда вы находитесь в Интернете. Он только что отправил вам короткую веб-страницу с текстом. Все это пришло через последовательный порт. Если у вас есть 16-байтовый буфер на последовательном порту, который удерживает символы до тех пор, пока их не станет 14, некоторые из последних нескольких символов на экране могут отсутствовать, поскольку буфер FIFO ожидает получения 14-го символа. Но 14-й символ не приходит, так как вам была отправлена вся страница (по телефонной линии), и больше нет символов для отправки вам. Возможно, эти последние символы являются частью форматирования HTML и т. д. и не являются символами для отображения на экране, но вы также не хотите терять формат.
Существует "тайм-аут" для предотвращения описанной выше проблемы. «Тайм-аут» работает следующим образом для приемного буфера UART: если символы приходят один за другим, то прерывание выдается только тогда, когда, скажем, 14-й символ достигает буфера. Но если прибывает символ, а следующий не появляется вскоре после этого, прерывание все равно выдается. Это приводит к извлечению всех символов из буфера FIFO, даже если присутствует только несколько (или только один). Существует также «тайм-аут» для буфера передачи.
Вы можете удивиться, почему буферы FIFO не больше. В конце концов, память дешева, и использование буферов размером в килобайт не будет стоить намного дороже. Причина в управлении потоком. Управление потоком останавливает поток данных (байтов) по последовательной линии, когда это необходимо. Если сигнал остановки отправляется на последовательный порт, то запрос на остановку обрабатывается программным обеспечением (даже если управление потоком является «аппаратным»). Аппаратное обеспечение последовательного порта ничего не знает об управлении потоком.
Если буфер последовательного порта содержит 64 байта, готовых к отправке, когда он получает сигнал управления потоком о прекращении отправки, он все равно отправит эти 64 байта в нарушение запроса на остановку. Его невозможно остановить, поскольку он не знает об управлении потоком. Если бы буфер был большим, то было бы отправлено намного больше байтов в нарушение запроса на остановку управления потоком.
Для В.90 56k модем, может быть на несколько процентов быстрее с 16650 (особенно если вы загружаете большие несжатые файлы). Основным преимуществом 16650 является больший размер буфера, поскольку дополнительная скорость не требуется, если только коэффициент сжатия модема не высок. Некоторые внутренние модемы 56k могут поставляться с 16650 ??
В интеллектуальных многопортовых платах без UART используются микросхемы DSP для дополнительной буферизации и управления, что еще больше разгружает ЦП. Например, платы Cyclades Cyclom и Stallion EasyIO используют Cirrus Logic CD1400 RISC UART, а многие платы используют ЦП 80186 или даже специальные ЦП RISC для обработки последовательного ввода-вывода.
Многие ПК 486 (старые) и все Pentium (или подобные) должны иметь как минимум 16550A (обычно называемые просто 16550) с FIFO. Некоторые лучшие материнские платы сегодня (2000 г.) имеют даже 16650. Для замены устаревших UART на более новые в оборудовании до 1990 года см. Приложение: Устаревшее .
Определение
UART (универсальный асинхронный приемник/передатчик) представляет собой крупномасштабную интегральную схему, содержащую все программное обеспечение, необходимое для полного управления последовательным портом ПК.
Чип UART – это электронная схема, которая передает и получает данные через последовательный порт. Он преобразует байты в последовательные биты для передачи и наоборот. Он также генерирует и удаляет стартовый и стоповый биты, добавленные к каждому символу.
После установления соединения UART реконструирует байт данных на основе принимающей линии. Если используется четность, UART также проверит четность на правильность и удалит бит четности из байта, передаваемого на компьютер.
Однобайтовые буферы FlFO
Скорость UART в большинстве ПК до недавнего времени использовала 8250 или 16450 UARTS. Это однобайтовые буферы FlFO (FirstIn, FirstOut). Ниже приведена таблица того, как быстро компьютер должен реагировать на разные скорости. Столбец «Персонажи» показывает, как часто персонаж прибывает на указанных скоростях.
Если компьютер не может получить данные на указанных выше скоростях, они будут перезаписаны. Если это произойдет, то этот персонаж будет потерян. UART не только обрабатывает последовательную связь, но и выполняет другие задачи, такие как прерывания диска, прерывания клавиатуры, циклы обновления экрана и многие другие элементы, связанные с синхронизацией с вашей системой. Итак, как вы можете видеть, UART делает много других вещей, которые могут ограничить количество входящих данных, которые он может обрабатывать. Если система не справляется, это когда вы видите блочные ошибки и ошибки переполнения UART. Если вы получаете эти ошибки, пришло время начать искать буферизованный UART, такой как 16550.
16-байтовый FIFO
Буферизованный UART, используемый сегодня в большинстве новых систем, таких как UART 16550, может выполнять больше задач благодаря своим возможностям буферизации. Преимущество UART 16550 заключается в том, что он имеет 16-байтовый буфер FlFO (First in, First Out). Это означает, что системный процессор должен реагировать на входящие данные только через каждые шестнадцать байтов. Это намного лучше, чем система, которая должна иметь дело с каждым символом, когда он входит в систему.
Возможно, вам интересно, зачем вам нужен UART 16550. Вы когда-нибудь были на доске объявлений и обнаруживали, что символы выпадают из отображаемого текста? Или были переполнения UART, или SubPacket к долгим ошибкам при скачивании файлов? Если это так, скорее всего, вам нужен лучший UART. DOS менее требовательна к графике, чем Windows или OS/2, поэтому UART 16550 не так важен, но все же может понадобиться, в зависимости от скорости вашего модема. Если вы работаете в Windows или OS/2 и у вас есть фоновые задачи, выполняющиеся при передаче данных или отправке факсов, скорее всего, вам понадобится UART 16550. В общем, если у вас есть модем на 28,8 Кбит/с или быстрее, вам понадобится UART 16550. Кроме того, чем медленнее машина, тем больше нужен UART 16550; как было сказано ранее, UART освобождает компьютер для выполнения других задач.
В какой-то момент вы спросите: "Какой тип UART установлен в моей системе?". При использовании внутренних модемов USRobotics все UART на модемных платах имеют тип 16550. На внешних модемах нет UART. При использовании внешнего модема в системе должен быть последовательный контроллер с соответствующим UART. В наши дни материнские платы поставляются с UART на основной плате. Если вы не уверены, какой тип UART используется в вашей системе, вы можете запустить Microsoft Diagnostics (MSD), и это скажет вам, какой тип UART используется в вашей системе. Чтобы запустить эту программу, если у вас DOS 6.0 или выше, просто введите MSD<enter> и должно подойти. Если нет, то зайдите в каталог DOS и запустите его оттуда. Если у вас нет DOS, обратитесь к руководству по операционной системе, чтобы узнать, как это проверить.
Известно, что ранние микросхемы UART 16550 без буквы «A» (UART без буквы «A» после 16550) содержали ошибки, поэтому старайтесь избегать их использования. Были проблемы с некорректной работой FIFO. В настоящее время 16550AFN принято называть 16550 (без букв модификации).
История UART
Первоначальным UART был 8250. По сегодняшним меркам это очень медленный чип. В версии 8250A добавлен дополнительный регистр, который позволяет программному обеспечению определять, что это действительно UART 8250. Затем был представлен UART 16450. Он был быстрее своих предшественников, но ненамного. Одна вещь, на которую вам нужно обратить внимание, это то, что программное обеспечение не может обнаружить 16450. Он выглядит как 8250, поэтому вам, возможно, придется посмотреть на чип, чтобы убедиться, какой он тип. Далее последовал прямой 16550 UART. У этого чипа есть некоторые проблемы с ним, и если у вас все еще есть один из них, вам не следует включать UART. В этом состоянии он должен работать без проблем. Следующей группой будут 16550A (серия A), 16550AF (Fast) и 16550AFN (новый керамический чип). За исключением более новых UART 16650 и 16750, которые обычно не используются, это лучшие микросхемы. Их возможности буферизации намного выше, чем у 8250 и 16450.
Изменения в Windows 3.x
После того, как вы установили 16550 UART, вам необходимо изменить настройки Windows, чтобы использовать новый чип. По сути, то, что вы будете делать, это включить возможности буферизации UART 16550. Для этого вам нужно либо добавить, либо изменить строку COMxFIFO в разделе [386enh] вашего Windows SYSTEM.INI, чтобы она читалась как COMxFIFO=1 или COMxFIFO=2. Разница в том, что когда COMxFIFO равен 1, он автоматически предполагает, что у вас есть UART 16550, и включает буферизацию. Если UART отсутствует, он просто игнорирует линию. Когда COMxFIFO равен 2, он определяет, есть ли у вас UART 16550, и действует соответствующим образом. Если вы знаете, что у вас UART 16550, просто установите его равным единице. Помните, что вы заменяете «x» в COMxFIFO на COM-порт, на котором работает модем.
Существует несколько доступных коммуникационных драйверов, которые помогут полностью использовать UART 16550 в среде Windows 3.x. Одним из них является WFXCOMM.
На задней панели вашего настольного ПК нет последовательного порта? Не будь так в этом уверен. Если вы этого не видите, это не значит, что этого нет!
Все, что вам нужно сделать, это хорошо выглядеть.
Если вы постоянно пользуетесь ноутбуком, остановитесь! Эта статья вам не поможет. Пользователи старых добрых настольных компьютеров могут попробовать собственный COM-порт на своем компьютере! Просто читайте вместе.
Что это за UART вообще?
UART — одна из наиболее предпочтительных форм отладки во встраиваемых платформах. Будь то 8-битная система, выполняющая скудные задачи, или массивная 64-битная система под управлением Linux. Все они поддерживают протокол UART. UART, как протокол, примитивен (чтобы все узнать, вам понадобится примерно 15 минут). По этой причине его очень легко внедрить в кремний чипа, что позволяет нам очень легко настроить и запустить его практически сразу.
Поскольку материнские платы работают при напряжении 3,3 В, им пришлось вывести эти линии UART через уровни RS232, чтобы увеличить длину кабеля. Это также решает проблему совместимости логического уровня между аппаратными средствами интерфейса. Отправитель поднимает свой уровень до RS232 и ожидает, что получатель каким-то образом доведёт его до своего уровня.
По этой причине для улучшения стабильности контакта был выбран массивный разъем D-Sub 9 или разъем DE-9 (часто ошибочно называемый разъемом DB-9). Позже выяснилось, что разъем слишком толстый, чтобы его можно было использовать в ноутбуках. Постепенно эта тенденция проникла и на рынок ПК, и производители материнских плат перестали ставить эти разъемы. Большинство (если не все) современных ноутбуков и настольных компьютеров не поставляются с разъемом последовательного порта.
Другие альтернативы?
Подождите, еще не все потеряно!
Некоторыми популярными альтернативами являются преобразователи USB в последовательные, такие как FTDI FT232A или CP10x Silicon lab для эмуляции последовательного порта через USB на наших новых компьютерах. Я упомянул эти два чипа, потому что они самые популярные.
Есть и другие не очень популярные альтернативы, такие как карта PCI/PCIExpress для достижения той же функциональности. Кроме того, стандарт USB рекламирует класс коммуникационных устройств (CDC), который по многим причинам не очень хорошо зарекомендовал себя.
Можем ли мы что-нибудь с этим сделать?
Как я уже сказал, большинство процессоров и контроллеров поставляются с UART. Инженеры (разработчики BSP), работающие над материнской платой, до ее выпуска на рынок используют ее для устранения неполадок и отладки периферийных устройств. Просто производители не ставят внешний порт для доступа к нему. Это означает, что существует небольшая вероятность того, что на наших материнских платах все еще есть порт UART.
Однажды я открыл свой компьютер для очистки и заметил, что на моей материнской плате (Asus P7H55 MLX) много не распаянных разъемов. По привычке я просматривал шелкографию в поисках названий, когда наткнулся на контактные площадки для 10-контактного разъема под названием aEURoeCOM 2aEUR.
Предупреждение. Использование этого метода может привести к повреждению материнской платы и/или аннулированию гарантии. Делайте это на свой страх и риск.Кроме того, разъемы на материнских платах не являются уровнями RS232. Они представляют собой необработанные логические сигналы 3,3 В.
Моя рука автоматически потянулась к паяльнику, и в мгновение ока я установил разъем на место и подключил к нему 10-контактный провод FRC.
Подбор распиновки
Затем я посмотрел 10-контактный разъем последовательного порта. Я знал, что если бы они установили его на такую же сложную систему, как материнская плата, они бы наверняка следовали стандартной распиновке. Но я не собирался оставлять камня на камне. Я проверил линии электропередач, а затем запустил приложение последовательного порта на своей машине и отправил 0xAA, чтобы увидеть прямоугольную волну на осциллографе, а затем замкнул TX на то, что, как я думал, было RX, и провел успешный тест обратной связи.
Изначально моя идея заключалась в том, чтобы сделать из него длинный провод, а затем сделать плату с разъемом DE9. Но когда-то давно я купил карту PCI Serial. Как назло, в разъеме был преобразователь UART в RS232.
Теперь все, что мне нужно было сделать, это подключить другой конец разъема FRC к разъему DE9, который идет в комплекте с картой PCI, и вставить его в один из разъемов корпуса моего компьютера.
Вот полная версия провода, идущего от материнской платы к задней панели моего компьютера,
Но наличие встроенного последовательного порта, безусловно, является большим облегчением. Было рискованно возиться с моей материнской платой, но я должен признать, что оно того стоило!
Сиддхарт Чандрасекаран
Сиддхарт — инженер по программному обеспечению, технарь и любитель кино. Его интересы включают программирование, встроенные системы, Linux, робототехнику, резюме, столярное дело и многое другое. Вы познакомитесь с ним в следующих социальных сетях.
Читайте также: