Вредоносное ПО (malware) - это назойливые или опасные программы,...
CHKDSK [том:[[путь]имя_файла]] ]
Том Определяет точку подключения, имя тома или букву проверяемого диска с двоеточием.
имя_файла Файлы, проверяемые на наличие фрагментации (только FAT/FAT32).
/F Исправление ошибок на диске.
/V Подробный режим вывода. Для FAT/FAT32: вывод полного пути и имени для каждого файла на этом диске. Для NTFS: также вывод сообщений об очистке.
/R Поиск поврежденных секторов и восстановление их содержимого. (требует ключ /F ).
/L:размер Только для NTFS: изменение размера файла журнала до указанной величины (в КБ). Если размер не указан, выводится текущее значение размера.
/X При необходимости, принудительное отключение тома. Все открытые дескрипторы для этого тома будут недействительны. (требует параметр /F ).
/I Только для NTFS: менее строгая проверка индексных элементов.
/C Только для NTFS: пропуск проверки циклов внутри структуры папок.
Ключи /I или /C уменьшают время выполнения CHKDSK за счет пропуска некоторых проверок тома.
Примеры использования:
CHKDSK - проверить текущий диск (том) в режиме "только чтение"
Пример отчета:
Тип файловой системы: NTFS.
Метка тома: DISK_C.
ВНИМАНИЕ! Параметр F не указан.
CHKDSK выполняется в режиме только чтения.
Проверка файлов (этап 1 из 3)...
Проверка файлов завершена.
Проверка индексов (этап 2 из 3)...
Проверка индексов завершена.
Проверка дескрипторов безопасности (этап 3 из 3)...
Проверка дескрипторов безопасности завершена.
CHKDSK проверяет журнал USN..
Завершена проверка журнала USN
488384000 КБ всего на диске.
482155688 КБ в 332072 файлах.
108552 КБ в 14989 индексах.
0 КБ в поврежденных секторах.
1120884 КБ используется системой.
65536 КБ занято под файл журнала.
4998876 КБ свободно на диске.
Размер кластера: 4096 байт.
Всего кластеров на диске: 122096000.
1249719 кластеров на диске.
CHKDSK D: /F - проверить диск D: в режиме исправления ошибок.
Если в данном режиме проверки CHKDSK
не может получить монопольный доступ к проверяемому тому,
то программа выдаст запрос на установку режима автоматического
запуска тестирования указанного диска при следующей перезагрузке системы.
Выполнение проверки будет произведено службой менеджера сеансов Windows,
в соответствии с содержимым раздела реестра
HKLM\System\CurrentControlSet\Control\Session Manager\BootExecute
Результаты проверки можно просмотреть в журнале
событий системы -(Панель управления - Администрирование - Просмотр событий - Приложение)
уведомления службы Winlogon
. Наличие признака запуска программы
CHKDSK при следующей перезагрузке Windows можно проверить с помощью
команды CHKNTFS
, ссылку на описание которой, также можно найти
на странице со списком команд CMD Windows. Кроме того, с ее помощью можно выполнить
изменение некоторых параметров тестирования.
Работа программы CHKDSK делится на три основных прохода, в течение которых CHKDSK проверяет все метаданные на томе, и дополнительный четвертый проход. Термин "метаданные" означает "данных о данных." Метаданные являются надстройкой над файловой системой, в которой отслеживаются сведения обо всех файлах, хранящихся на томе. В метаданных содержатся сведения о кластерах, составляющих объем данных конкретного файла, о том, какие кластеры свободны, о кластерах, содержащих поврежденные сектора и т.д. С другой стороны, данные, содержащиеся в файле, обозначаются как "данные пользователя". В NTFS метаданные защищаются с помощью журнала транзакций. Процесс изменения метаданных делится на определенные логические этапы, или транзакции, которые фиксируются в журнале. Если последовательность действий по изменению метаданных логически не завершена, то выполняется откат по данным журнала транзакций на тот момент, когда это изменение еще не было начато. Другими словами, использование журнала транзакций, значительно повышает вероятность целостности метаданных.
Для защиты данных пользователей (не метаданных) в файловой системе NTFS этот способ не используется.
Этап 1. Проверка файлов
Во время первого прохода CHKDSK выводит сообщение о том, что выполняется проверка файлов, а также объем выполненной проверки, выраженный в процентах (от 0 до 100). В течение этого этапа CHKDSK проверяет сегмент записи каждого файла в основной таблице файлов ( MFT ) тома.
Этап 2. Проверка индексов
По существу, индексы - это каталоги файловой системы NTFS. CHKDSK выполняет проверку того, что нет "потерянных" файлов и что во всех списках каталогов содержатся существующие файлы. Потерянным называется файл, для которого существует правильный сегмент записи файла, но о котором нет данных ни в одном списке каталога. Потерянный файл может быть восстановлен в соответствующем ему каталоге, если этот каталог еще существует. Если соответствующий каталог более не существует, CHKDSK создаёт каталог в корневом каталоге диска и перемещает файл в него.
Этап 3. Проверка дескрипторов безопасности
В дескрипторах безопасности содержатся сведения о владельце файла или каталога, о разрешениях NTFS для данного файла или каталога, и об аудите для данного файла или каталога. CHKDSK проверяет структуру каждого дескриптора безопасности, но не выполняет проверку реального существования перечисленных пользователей или групп и правомерность предоставленных разрешений.
Этап 4. Проверка секторов
Данный этап выполнения CHKDSK определяется наличием параметра /R при запуске программы. Выполняется поиск поврежденных секторов в свободном пространстве тома . CHKDSK выполняет попытку чтения каждого сектора на томе, и, при обнаружении ошибки, кластер, в который входит данный сектор, помечается как дефектный и исключается из логической структуры тома. Даже без использования ключа /R программа всегда проверяет чтением секторы, относящиеся к таблице MFT (к метаданным). Кроме того, секторы, которые используются для области пользовательских данных, проверяются на предыдущих этапах работы CHKDSK.
Необходимо учитывать тот факт, что время выполнения CHKDSK с ключом /R может быть значительным. Кроме того, современные жесткие диски имеют встроенную систему самотестирования и контроля параметров (S.M.A.R.T) , наличие которой делает бессмысленным использование режима поиска поврежденных секторов с помощью CHKDSK , поскольку все современные накопители постоянно выполняют внутренние подпрограммы контроля технического состояния и самодиагностики, а также встроенные на микропрограммном уровне процедуры переназначения плохо читающихся секторов (нестабильных секторов) на секторы из резервной области (процедура remap или ремап). Данные процессы происходят невидимо для пользователя компьютера. Поэтому, наличие сбойных блоков (Bad Blocks) возможно только при отсутствии свободного места в резервной области для переназначения, или при возникновении сбоев в момент записи данных в сектор, например, при аварийном выключении первичного электропитания.
При обнаружении потерянных файлов, программа CHKDSK создает их в структуре файловой системы в виде файлов с расширением .CHK . На практике, информация из таких файлов может быть восстановлена вручную только в тех случаях, когда она представлена в текстовом виде. В некоторых случаях, можно воспользоваться программным обеспечением сторонних производителей, как например, утилита
Системы уравнений четырехполюсника. Основной задачей теории четырехполюсников является установление соотношений между четырьмя величинами: напряжениями на входе и выходе, а также токами, протекающими через входные и выходные зажимы. Уравнения, дающие зависимость между U 1, U 2, I 1, I 2, называются уравнениями передачи четырехполюсника. Для линейных четырехполюсников эти уравнения будут линейными. Величины, связывающие в уравнениях передачи напряжения и токи, называются параметрами четырехполюсников.
Сложная электрическая цепь (например, канал связи), имеющая входные и выходные зажимы, может рассматриваться как совокупность четырехполюсников, соединенных по определенной схеме. Зная параметры этих четырехполюсников, можно вычислить параметры сложного четырехполюсника и получить тем самым зависимость между напряжениями и токами на зажимах результирующего сложного четырехполюсника, не производя расчетов всех напряжений и токов внутри заданной схемы.
Кроме того, теория четырехполюсников позволяет решить обратную задачу: по заданным напряжениям и токам найти параметры четырехполюсника и затем построить его схему и рассчитать элементы, т. е. решить задачу синтеза.
Пусть четырехполюсник содержит п независимых контуров. Отнесем первый контур ко входу четырехполюсника (I K 1 = I 1), второй контур - к его выходу (I K 2 = I K 2). Будем считать, что во внутренних контурах четырехполюсника отсутствуют независимые источники энергии.
При рассмотрении четырехполюсника важно заранее условиться о положительных направлениях напряжений и токов. В дальнейшем будем придерживаться положительных направлений, показанных стрелками на рис. 12.1, если особо не будут оговорены другие случаи.
Составим систему уравнений для контурных токов (см. § 2.4):
Коэффициенты Y 11 , Y 12 , Y 21 , и Y 22 , в уравнениях (12.2) называются Y-.параметрами, или параметрами проводимостей четырехполюсника, так как по размерности они являются именно таковыми. Уравнения (12.2) называются уравнениями передачи четырехполюсника в Y -параметрах. Эти уравнения представляют собой одну из возможных форм уравнений передачи. Она позволяют находить любую пару из значений I 1 , I 2, U 1, и U 2, если заданы значения другой пары.
Помимо уравнений в форме (12.2) существует еще пять форм уравнений передачи. Уравнения, связывающие напряжения U 1, U 2 , и токи I 1 , I 2
содержат в качестве коэффициентов параметры сопротивлений четырехполюсника, или Z -параметры, и называются уравнениями передачи в Z-параметрах. Параметры Z 11 , Z 12 , Z 21 и Z 22 имеют размерность сопротивлений. Заметим, что они не являются обратными величинами по отношению к параметрам проводимости, таким образом, например, Не следует также путать эти параметры с собственными и взаимными сопротивлениями контуров Z 11 , Z 12 и т. д. в уравнениях (12.1) для контурных токов.
Коэффициенты, входящие в систему уравнений, связывающую входные U 1, и I 1 и выходные U 2, и I 1 напряжения и токи
называются А-параметрами, или обобщенными параметрами. Уравнения (12.4) называются уравнениями передачи в А- параметpax. Параметры А 11 и А 22 являются безразмерными, параметр А 21 имеет размерность сопротивления; параметр А%\ - размерность проводимости:
Приведем еще две формы уравнений передачи:
Коэффициенты Н 11 , Н 12 , Н 21 и Н 22 называются H -параметрами и применяются при рассмотрении схем с транзисторами. Параметры Н 12 и Н 21 являются безразмерными, а параметры Н 11 и Н 22 имеют размерности сопротивления и проводимости.
Коэффициенты F 11 , F 12 , F 21 и F 22 называются F -параметрами и применяются при рассмотрении схем с электронными лампами. Параметры F 12 и F 21 безразмерные, а параметры F 11 иF 22 имеют размерности проводимости и сопротивления. Уравнения (12.5) называются соответственно уравнениями передачи в H -параметрах и F -параметрах.
Все формы уравнений передачи принципиально равноправны. Выбор той или иной формы зависит исключительно от задачи, которая в данном случае решается.
Полная совокупность параметров любой системы уравнений передачи образует систему параметров четырехполюсника. Так, систему Y -параметров четырехполюсника образует совокупность его параметров Y 11 , Y 12 , Y 21 , Y 22.
Два четырехполюсника, имеющие одинаковые системы параметров, независимо от их внутренней структуры, числа элементов и т. д., характеризуются, очевидно, одинаковыми уравнениями передачи. Такие четырехполюсники называются эквивалентными, и при включении любого из них между одними и теми же внешними цепями на их зажимах устанавливаются одинаковые режимы.
Свойства параметров-коэффициентов. Системы Y -, Z -, А-, Н- иF - параметров образованы из коэффициентов уравнений передачи, и поэтому часто их объединяют одним названиемпараметры-коэффициенты. Рассмотрим основные свойства параметров-коэффициентов.
1. Параметры-коэффициенты определяются только схемой четырехполюсника и ее элементами и не зависят от внешних цепей, между которыми может быть включен четырехполюсник, т. е. они характеризуют собственно четырехполюсник.
Пример. На входе Г-образного четырехполюсника (см. рис. 12.2, б), подключенного к внешним цепям, действует напряжение U 1 и ток I 1 , а на выходе напряжение U 2 и ток I 2 . ОпределимА -параметры четырехполюсника.
В соответствии с ЗНК и ЗТК U 1 = U 2 + I 1 Z 1 и I 1 = U 2 / Z 2 + I 2.
Подставляя выражение для тока I 1 в первое равенство, получаем
2. Все системы параметров-коэффициентов описывают один и тот же четырехполюсник, поэтому между различными системами параметров-коэффициентов существует однозначная взаимосвязь.
Пример. Установим связь между А -параметрами и Z -параметрами. Решая систему уравнений в Z -параметрах (12.3) относительно неизвестных U 1 и I 1 находим:
Аналогичным образом можно установить связь между другими системами параметров. В табл. 12.1 приведены соотношения между различными системами параметров - коэффициентов.
3. Пассивный четырехполюсник полностью характеризуется не более чем тремя независимыми параметрами. Действительно, в многоконтурной схеме пассивного четырехполюсника взаимные сопротивления Z km и Z km k - г о и т-то контуров равны между собой. Следовательно, Y 1 2 = - Y 2 1 .Зная связь между Y -параметрами и Z -параметрами, можно установить, что Z 12 = -Z 21. . Далее можно показать, что для А -параметров справедливо соотношение
= Н 21 , Н 22 ; F 11, F 12 = F 21 и F 22 или любые три из параметров А 11 , А 12, А 21 и А 22.
4. При изменении направления передачи энергии через четырехполюсник во всех выражениях, включающих А -параметры, коэффициенты А 11 и А 22 меняются местами.
Рассмотрим передачу энергии через четырехполюсник в обратном направлении, т. е. от зажимов 2-2" к зажимам 1 -1" (рис. 12.3). Если в уравнениях передачи (12.4) заменить напряжение U 1 и ток I 1 на зажимах 1- 1" на напряжение U 2 ` и I 2 `ток - в соответствии с рис. 12.3, а напряжение U 2 и ток I 2 на зажимах 2 - 2" на величины - U 1 ` и - I 1 `, то (12.4) можно переписать в виде
Сопоставляя эти уравнения с (12.4), можно сделать интересное наблюдение: в уравнениях передачи параметры А 11 и А 22 поменялись местами. Оказывается, этот факт справедлив не только для уравнений передачи, но и для любых других выражений, в которые входят А -параметры.
5. Симметричные пассивные четырехполюсники имеют только два независимых параметра. В самом деле, в случае симметричного пассивного четырехполюсника не имеет значения направление передачи энергии: напряжения и токи на входе и выходе не изменяются при замене местами зажимов. Сравнивая уравнения передачи (12.4) и (12.6), устанавливаем, что А 11 = А 22 . Из табл. 12.1 находим также, что в симметричных четырехполюсниках Y 11 =- Y 22 ; Z 11 = - Z 22 и Δ Н = -1.
6. Параметры-коэффициенты имеют определенный физический смысл. Для выявления этого физического смысла следует четырехполюсник поставить в такой режим работы, при котором уравнения передачи содержат лишь один интересующий нас параметр. Подобное произойдет, если использовать режимы холостого хода (XX - размыкания пары зажимов) и короткого замыкания (КЗ - замыкания накоротко пары зажимов). Так, при XX на зажимах 2 - 2" (см. рис. 12.1) ток I 2 = 0. Тогда уравнения передачи, содержащие ток I 2 , например уравнения (12.3) в Z -параметрах, имеют вид:
7. Из предыдущего свойства следует, что параметры-коэффициенты являются комплексными величинами, так как они определяются отношением комплексных амплитуд (действующих значений) напряжений и токов. В случае анализа четырехполюсника в режиме негармонических колебаний используют спектральные представления электрических величин. Можно показать, что параметры-коэффициенты, рассматриваемые относительно не отдельной частоты, а определенного спектра частот, являются рациональными функциями оператора jω . При переходе от оператора jω к оператору р параметры-коэффициенты представляют собой рациональные функции оператора р.
т. е. Z 11 является дробно-рациональной функцией оператора р с положительными вещественными коэффициентами. Нули этой функции - мнимые и лежат на мнимой оси комплексной плоскости, полюс р 1 = 0. При замене оператора р оператором jω переходим к частотной характеристике
Полученные выражения Z 11 (p) и Z 11 (jω ) напоминают выражение входного сопротивления последовательного LС-контура. Это объясняется тем, что входное сопротивление Г-образной цепи (см. рис. 12.2, б) при разомкнутых зажимах определяется последовательным соединением двухполюсников Z 1 , и Z 2 (индуктивности и емкости), т. е. Z 11 является сопротивлением двухполюсника (ср. с (4.115)).
В последнее время последовательный способ передачи данных вытесняет параллельный.
За примерами далеко ходить не надо: появление шин USB и SATA говорит само за себя.
И действительно, параллельную шину трудно масштабировать (удлинить шлейф, увеличить частоту тактирования шины), неудивительно, что технологии поворачиваются к параллельным шинам задней частью.
Последовательные интерфейсы
На сегодня существует великое множество различных интерфейсов последовательной передачи данных.
Кроме уже упомянутых USB и SATA еще можно вспомнить как минимум два широко известных стандарта RS-232 и MIDI (он же и GamePort).
Объединяет их все то же - последовательная передача каждого бита информации, или Serial Interface.
Преимуществ у подобных интерфейсов великое множество, и самое главное из них - малое количество соединительных проводов, а следовательно, меньшая цена.
Передача данных
Последовательную передачу данных можно реализовать двумя способами: асинхронным и синхронным.
Синхронная передача данных предполагает синхронизацию работы приемника и передатчика посредством включения тактовой информации в передаваемый сигнал или путем использования специальной синхро-линии.
Приемник и передатчик должны быть соединены специальным синхронизационным кабелем, который обеспечивает работу устройств на одной частоте.
Асинхронная передача подразумевает использование специальных битов, маркирующих начало и конец данных – стартового (логический ноль) и стопового (логическая единица) бита.
Также возможно использование специального бита четности, который определяет четное или нечетное количество передаваемых единичных битов (в зависимости от принятого соглашения).
На принимающей стороне проводится анализ этого бита, и если бит четности не соответствует количеству единичных битов, то пакет данных пересылается снова.
Стоит отметить, что такая проверка позволяет обнаружить ошибку только в том случае, если был передан неправильно только один бит, в случае, если неправильно передались несколько битов, эта проверка уже становится некорректной.
Посылка следующего пакета данных может происходить в любой момент после посылки стопового бита, и, естественно, должна начинаться со стартового бита.
Ничего не понятно?
Ну, если бы все компьютерные технологии были просты, то любая домохозяйка давно бы уже лепила параллельно с пельменями новые протоколы …
Попробуем взглянуть на процесс по-другому.
Данные передаются пакетами, примерно как IP пакеты, вместе с данными идут и информационные биты, количество этих битов может варьироваться от 2 до 3 с половиной.
С половиной?!
Да, ты не ослышался, именно с половиной!
Стоповый бит, а вернее передаваемый сигнал соответствующий стоповому биту, может иметь длительность большую, чем сигнал соответствующий биту-единице, но меньшую чем для двух битов.
Так вот, пакет всегда начинается со стартового бита, который всегда имеет значение ноль, после чего идут биты данных, потом бит четности, а потом и стоповый бит, всегда равный единице.
Потом через некоторый произвольный промежуток времени поход битов на Москву продолжается.
Такой способ передачи подразумевает, что приемник и передатчик должны работать с одной скоростью (ну, или почти с одной), иначе пришедшие биты данных приемник будет либо не успевать обрабатывать, либо принимать старый бит за новый.
Для того чтобы этого избежать, каждый бит стробируется, то есть посылается синхронно со специальным сигналом - «стробом», формируемым внутри прибора.
Существует ряд определенных скоростей работы асинхронных устройств - 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19 200, 38 400, 57 600 и 115 200 бит в секунду.
Ты наверняка слышал, что в качестве единицы измерения скорости передачи данных используется «бод» - частота изменения состояния линии, и эта величина будет совпадать со скоростью передачи данных только в случае если сигнал может иметь одно из двух значений.
Если же в одном изменении сигнала закодировано несколько бит (а это встречается у многих модемов), скорость передачи и частота изменения линии будут совершенно различными величинами.
Теперь пару слов о загадочном термине «пакет данных».
Под пакетом в данном случае понимается набор битов, передаваемых между стартовым и стоповым битами.
Их число может изменяться от пяти до восьми.
Можно задаться вопросом, почему именно пять-восемь бит?
Почему бы не передать сразу, скажем, килобайт данных внутри пакета?
Ответ очевиден: передавая маленькие пакеты данных, мы пусть и проигрываем, отправляя с ними три служебных бита (от 50 до 30 процентов данных), зато если при передаче пакет будет испорчен, мы легко узнаем это (помнишь про бит четности?) и быстро передадим его снова.
А вот в килобайте данных ошибку обнаружить будет уже трудно, и передавать его будет гораздо сложнее.
В качестве примера асинхронного последовательного устройства передачи данных можно привести COM-порт компьютера, любимый модем с дизайном от Труссарди и мышь, подключаемую к этому же порту, которую недалекие секретарши почему-то все время стараются засунуть в PS/2.
Работают все эти устройства по интерфейсу RS-232, вернее по асинхронной его части, поскольку в стандарте описана и синхронная передача данных.
Иногда приходится решать задачу связи электронного устройства с компьютером, будь то просто обмен данными или удалённое управление. Эта статья описывает, как это можно реализовать, используя последовательный порт. Главным его преимуществом является то, что стандартный программный интерфейс Windows (API) позволяет производить непосредственное управление выходными линиями, давая прямой контроль над ними, и имеет функцию ожидания некоторого события, связанного с COM-портом. Также стандарт RS-232, по которому выполнены COM-порты, допускает подключение и отключение кабелей во время работы устройств (hot plug).
Описание
COM-порт (последовательный порт) – двунаправленный интерфейс, передающий данные в последовательном виде (бит за битом) по протоколу RS-232. Это довольно-таки распространённый протокол, применяемый для связи одного устройства (например, компьютера) с другими посредством проводов длиной до 30м. Уровни логических сигналов здесь отличаются от стандартных: уровень логической единицы – от +5 до +15В, уровень логического нуля – от -5 до -15В, что требует дополнительных преобразований схемы, но обеспечивает хорошую помехоустойчивость.
Рассмотрим 9-пинововый разъём (DB-9M). Ниже представлена его распиновка:
№ вывода | Наименование | Характер сигнала | Сигнал |
1 | DCD | Входной | Data carrier detect |
2 | RxD | Выходной | Transmit data |
3 | TxD | Входной | Receive data |
4 | DTR | Выходной | Data terminal ready |
5 | GND | - | Ground |
6 | DSR | Входной | Data set ready |
7 | RTS | Выходной | Request to send |
8 | CTS | Входной | Clear to send |
9 | RI | Входной | Ring indicator |
Больше всего нас будут интересовать пины 2 (передача данных),3 (приём данных) и 5 (земля). Это минимальный набор для возможности двухстороннего общения приборов.
Подробно останавливаться на описании протокола не буду. Для этого есть ГОСТ’ы и т.п. Поэтому мы пойдём дальше и поговорим о том, как же управлять этим зверем.
Применение
Как уже говорилось, уровни ЛС RS-232 отличаются от стандартных уровней ТТЛ. Следовательно, нам необходимо как-то преобразовывать величины напряжений. Т.е. сделать 5В из +15В и 0В из -15В (и наоборот). Один из способов (и, наверное, самый простой) – использование специальной микросхемы MAX232. Она проста в понимании и одновременно может преобразовывать два логических сигнала.
Ниже приведена схема её включения:
Думаю, трудностей быть не должно. Это один из вариантов использования этой микросхемы: передача данных с микроконтроллера на ЭВМ и наоборот. Передаваемый сигнал поступает на ножки Tx IN с одной стороны и на Rx IN с другой. Входные сигналы снимаются с Tx OUT и Rx OUT соответственно.
Программирование
Для начала поговорим о программировании портов на низком уровне. Так будет более правильно. Я очень много нервов потратил, разбираясь с этим интерфейсом, пока не начал вникать в принцип его работы на более низком уровне, нежели простая передача символов. Если будет понятно это, значит и с языками высокого уровня проблем не будет.
Ниже представлены адреса COM-портов, с которыми нам придётся работать:
Название порта | Адрес | IRQ |
COM 1 | 3F8h | 4 |
COM 2 | 2F8h | 3 |
COM 3 | 3E8h | 4 |
COM 4 | 2E8h | 3 |
Они могут различаться. Установить значения можно в настройках BIOS’а. Это базовые адреса. От них же и будут зависеть адреса регистров, отвечающие за работу портов:
Адрес | DLAB | Чтение/Запись | Аббревиатура | Название регистра |
+ 0 | =0 | Write | – | Transmitter Holding Buffer |
=0 | Read | – | Receiver Buffer | |
=1 | Read/Write | – | Divisor Latch Low Byte | |
+ 1 | =0 | Read/Write | IER | Interrupt Enable Register |
=1 | Read/Write | – | Divisor Latch High Byte | |
+ 2 | - | Read | IIR | Interrupt Identification Register |
- | Write | FCR | FIFO Control Register | |
+ 3 | - | Read/Write | LCR | Line Control Register |
+ 4 | - | Read/Write | MCR | Modem Control Register |
+ 5 | - | Read | LSR | Line Status Register |
+ 6 | - | Read | MSR | Modem Status Register |
+ 7 | - | Read/Write | – | Scratch Register |
Первая колонка – адрес регистра относительно базового. Например, для COM1: адрес регистра LCR будет 3F8h+3=3FB. Вторая колонка – DLAB (Divisor Latch Access Bit) бит, определяющий разное назначение для одного и того же регистра.. Т.е. он позволяет оперировать 12-ю регистрами, используя всего 8 адресов. Например, если DLAB=1, то, обращаясь по адресу 3F8h, мы будем устанавливать значение младшего байта делителя частоты тактового генератора. Если же DLAB=0, то, обращаясь по тому же адресу, в этот регистр будет записан передаваемый или принятый байт.
“Нулевой” регистр
Ему соответствуют регистры приёма/передачи данных и установки коэффициента делителя частоты генератора. Как уже было сказано выше, если DLAB=0, то регистр используется для записи принимаемых/передаваемых данных, если же он равен 1, то устанавливается значение младшего байта делителя частоты тактового генератора. От значения этой частоты зависит скорость передачи данных. Старший байт делителя записывается в следующую ячейку памяти (т.е. для порта COM1 это будет 3F9h). Ниже приведена зависимость скорости передачи данных от коэффициента делителя:
Interrupt Enable Register (IER)
Если DLAB=0, то он используется как регистр управления прерываниями от асинхронного адаптера, если DLAB=1, то в нём задаётся старший байт делителя частоты тактового генератора.
Interrupt Identification Register (IIR)
Прерывание – это событие, при котором останавливается выполнение основной программы и начинается выполнение процедуры прерываний. Этот регистр определяет тип произошедшего прерывания.
Line Control Register (LCR)
Это управляющий регистр.
Бит 7 | 1 | Divisor Latch Access Bit – задание скорости обмена данными | ||
0 | Обычнй режим (управление прерываниями, приём/передача данных) | |||
Бит 6 | Имитировать обрыв линии (посылает последовательность из нескольких нулей) | |||
Биты 3 – 5 | Бит 5 | Бит 4 | Бит 3 | Выбор чётности |
X | X | 0 | No Parity | |
0 | 0 | 1 | Odd Parity | |
0 | 1 | 1 | Even Parity | |
1 | 0 | 1 | High Parity (Sticky) | |
1 | 1 | 1 | Low Parity (Sticky) | |
Бит 2 | Кол-во стоп-битов | |||
0 | 1 стоп-бит | |||
1 | 2 стоп-бита при 6,7 или 8 бит данных или 1.5 стоп-бита при 5 битах данных. | |||
Биты 0 And 1 | Бит 1 | Бит 0 | Число битов данных | |
0 | 0 | 5 бит | ||
0 | 1 | 6 бит | ||
1 | 0 | 7 бит | ||
1 | 1 | 8 бит |
Проверка чётности подразумевает под собой передачу ещё одного бита – бита чётности. Его значение устанавливается таким образом, чтобы в пакете битов общее количество единиц (или нулей) было четно или нечетно, в зависимости от установки регистров порта. Этот бит служит для обнаружения ошибок, которые могут возникнуть при передаче данных из-за помех на линии. Приемное устройство заново вычисляет четность данных и сравнивает результат с принятым битом четности. Если четность не совпала, то считается, что данные переданы с ошибкой.
Стоп-бит означает окончание передачи данных.
Modem Control Register (MCR)
Регистр управления модемом.
Бит | Значение |
---|---|
0 | Линия DTR |
1 | Линия RTS. |
2 | Линия OUT1 (запасная) |
3 | Линия OUT2 (запасная) |
4 | Запуск диагностики при входе асинхронного адаптера, замкнутом на его выход. |
5-7 | Равны 0 |
Line Status Register (LSR)
Регистр, определяющий состояние линии.
Бит | Значение |
---|---|
0 | Данные получены и готовы для чтения, автоматически сбрасывается при чтении данных. |
1 | Ошибка переполнения. Был принят новый байт данных, а предыдущий ещё не был считан программой. Предыдущий байт потерен. |
2 | Ошибка чётности, сбрасывается после чтения состояния линии. |
3 | Ошибка синхронизации. |
4 | Обнаружен запрос на прерывание передачи "BREAK" – длинная строка нулей. |
5 | Регистр хранения передатчика пуст, в него можно записать новый байт для передачи. |
6 | Регистр сдвига передатчика пуст. Этот регистр получает данные из регистра хранения и преобразует их в последовательный вид для передачи. |
7 | Тайм-аут (устройство не связано с компьютером). |
Modem Status Register (MSR)
Регистр состояния модема.
Ну вот и всё. Оперируя этими регистрами, можно напрямую общаться с COM-портом, управлять передачей и приёмом данных. Если вам не хочется возиться с памятью, можно воспользоваться уже готовыми компонентами для различных сред программирования: C++, VB, Delphi, Pascal и т.д. Они интуитивно понятны, поэтому, думаю, здесь не стоит заострять на них внимание.