- •Введение
- •Лабораторная работа № 1. Создание программы определения характеристик центрального процессора.
- •Определение параметров процессора на аппаратном уровне.
- •Лабораторная работа № 2.
- •Конфигурация персонального компьютера
- •Cmos-память и конфигурация компьютера
- •32H Текущее столетие
- •Использование bios для определения конфигурации
- •Лабораторная работа 3. Тестирование оптических накопителей.
- •Использование I/o Control Codes.
- •Использование Windows Management Instrumentation (wmi).
- •Порты контроллера накопителей на гибких дисках
- •Порт 3f2h.
- •Порт 3f4h.
- •Команды управления накопителями
- •Перечень команд контpоллеpа нгмд
- •Структура байтов состояния
- •Формат дорожки
- •Отличия контроллера для ат-подобных пэвм
- •Порт 3f7h.
- •Лабораторная работа № 5. Диагностика контроллера накопителей на жестких дисках.
- •Контроллер жестких дисков для хт-подобных пэвм
- •Порты ввода-вывода
- •Порт 320h.
- •Порт 321h.
- •Порт 322h.
- •Порт 323h.
- •Общий формат команды и терминология
- •Описание команд Проверка готовности накопителя (класс 0, опкод 0).
- •Рекалибровать (класс 0, опкод 1).
- •Запрос состояния (класс 0, опкод 3).
- •Форматирование накопителя (класс 0, опкод 4).
- •Проверка секторов (класс 0, опкод 5).
- •Форматирование дорожки (класс 0, опкод 6).
- •Форматирование дефектной дорожки (класс 0, опкод 7).
- •Чтение секторов (класс 0, опкод 8).
- •Запись секторов (класс 0, опкод 0Ah).(*)
- •Поиск цилиндра по номеру (класс 0, опкод 0Ch).(*)
- •Чтение внутреннего озу контроллера (класс 0, опкод 0Eh).(*)
- •Запись внутреннего озу контроллера (класс 0, опкод 0Fh).(*)
- •Диагностика внутреннего озу контроллера (класс 7,опкод 0).(*)
- •Тест устройства (класс 7, опкод 3).
- •Расширенный тест контроллера (класс 0, опкод 4).
- •Считывание без контроля (класс 7, опкод 5).
- •Запись без контроля (класс 7, опкод 6).
- •Разметка диска
- •Контроллер жестких дисков для ат-подобных пэвм
- •Описание портов ввода-вывода Порт 1f0h
- •Порт 1f1h.
- •Система команд
- •Лабораторная работа №6. Программное тестирование портов для работы с клавиатурой
- •Аппаратное прерывание клавиатуры
- •Средства bios для работы с клавиатурой
- •Чтение символа с ожиданием
- •Проверка буфера на наличие в нем символов
- •Получение состояния переключающих клавиш
- •Установка временных характеристик клавиатуры
- •Запись символов в буфер клавиатуры
- •Чтение символа с ожиданием для 101-клавишной клавиатуры
- •Проверка буфера на наличие в нем символов для 101-клавишной клавиатуры
- •Получение состояния переключающих клавиш для 101-клавишной клавиатуры
- •Лабораторная работа № 7. Тестирование и контроль оперативной памяти.
- •Алгоритм определения объёма оперативной памяти.
- •Сущность тестирования памяти.
- •Алгоритм диагностирования памяти в тесте Memtest86.
- •Лабораторная работа № 8. Программирование принтера. Цель работы: изучение методов программирования принтера.
- •Средства ms-dos для работы с принтером
- •Программирование режимов принтера
- •Установка атрибутов/цветов символов.
- •Сдвиг экрана и страницы.
- •Вертикальный сдвиг текстового экрана.
- •Сдвиг текстового экрана горизонтально.
- •Переключение между текстовыми страницами.
- •Сдвиг между страницами текста.
- •Использование wmi.
- •Аналогичным образом могут использоваться свойства и других классов.
Сущность тестирования памяти.
Для написания теста оперативной памяти компьютера необходимо обладать хорошими знаниями архитектуры и методов адресации памяти персонального компьютера. Это связано с тем, что помимо банальных ошибок записи необходимо выявлять те ошибки проявление которых носит спонтанный характер.
Микросхема памяти состоит из огромного массива упакованных ячеек памяти, на каждый бит данных. Огромное количество спонтанных ошибок проявляются при взаимодействии между несколькими ячейками. Часто запись в ячейку памяти вызывает запись этих же данных и в соседние ячейки. Следовательно, при написании теста должно учитываться и это условие. Теоретически, идеальный тест памяти должен придерживаться следующего плана действия при тестировании:
Записать некоторое значение в ячейку памяти.
Записать в соседние ячейки один либо более раз некоторое значение.
Проверить не изменилось ли значение хранимое в первой ячейке.
Однако этот метод требует знания того как расположены ячейки на микросхеме памяти. Ситуацию усугубляет огромная вероятность того, что это расположение будет различным для памяти различных типов и от различных производителей. Однако, алгоритм тестирования должен придерживаться этого плана.
Алгоритм диагностирования памяти в тесте Memtest86.
Memtest86 использует два алгоритма тестирования, которые обеспечивают в разумном степени приближение к вышеописанному плану. Первый из них называется инверсионное перемещение:
Заполнить память согласно шаблону.
Начать с наименьшего адреса.
Проверить на совпадение с шаблоном.
Записать изменение шаблона.
Увеличить значение адреса.
Повторить 2a - 2c
Начать с наибольшего адреса.
Проверить на совпадение шаблон.
Записать изменение шаблона.
Увеличить значение адреса.
Повторить 3a - 3c
Этот алгоритм достигает хорошего приближения к идеалу, но обладает некоторыми ограничениями. Все существующие микросхемы памяти имеют большую плотность и хранят в блоках по 4 –16 бит. Таким образом невозможно записать либо прочитать из памяти только один бит данных. Таким образом не гарантированно что все ячейки памяти будут протестированы. Выходом из этой ситуации является использования нескольких шаблонов, с различными комбинациями нулей и единиц.
Так же можно увидеть, что кэширование, буферизация другие оптимизации делают алгоритм тестирования менее эффективными. И если кэширование памяти можно отключить, то буферизацию в современных высокопроизводительных чипах отключить нельзя.
Описание возможных тестов памяти(на основе программы MemTest86).
Для поиска ошибок в этом пакете используется несколько тестов. В каждом из которых используется комбинация алгоритма тестирования, шаблона данных и кэширования. Опишем подробнее каждый из тестов:
Test 0 [Тест адресов, один проход, без кэширования]
Тестирование всех адресных битов во всех банках памяти с использованием одного прохода и одним набором шаблона данных.
Test 1 [Тест адресов, проверка собственных адресов]
В каждую ячейку адресной памяти записывается её собственный адрес и затем проверяется на совпадение. Теоретически предыдущий тест должен был выявить любые адресные ошибки. Однако этот тест выявляет все те адресные ошибки, которые не были выявлены в предыдущем тесте.
Test 2 [Инверсионное перемещение, один проход и запись нулями]
Этот тест использует алгоритм инверсионного перемещения с шаблоном состоящим из нулей. Кэш включен хотя он ухудшает работу алгоритма. С включенным тестом работа этого теста занимает мало времени и позволяет выявить все грубые ошибки.
Test 3 [Инверсионное перемещение, 8 bit шаблон]
Работа этого теста схожа с работой теста 1, но используется 8-и битовый шаблон для одиночного прохода (Шаблон состоит из нулей). Этот тест лучше выявляет слабо уловимые ошибки в “больших” чипах памяти.
Test 4 [Инверсионное перемещение, случайный шаблон]
Этот тест так же использует алгоритм схожий с алгоритмом теста 1, но данные из шаблона – случайные числи и их дополнения. Этот тест позволяет определить трудные в выявлении и обнаружении ошибки. Всего используется 60 шаблонов. Случайные числа из шаблона различаются от прохода к проходу, что улучшает эффективность теста.
Test 5 [Перемещение блока, 64 перемещения]
Это стрессовый тест памяти использующий перемещение блока данных с использованием команды movsl и основан на алгоритме Роберта Редельмейера (Robert Redelmeier's burnBX test). Память инициализируется сдвигаемым шаблоном, который инвертируется каждые 8 байт. Затем 4MB блок памяти перемещается используя инструкцию movsl. Псле перемещение данные проверяются. Ввиду того, что данные проверяются только после перемещения невозможно определить где произошла ошибка. И выдается адрес, где было обнаружено несовпадение шаблона.
Test 6 [Инверсионное перемещение, 32 bit шаблона]
Это вариант инверсионного перемещения, который сдвигает данные в лево на один бит на каждый значимый адрес. Начальное расположение битов сдвигается влево при каждом проходе. Таким образом для использования всех возможных шаблонов необходимо сделать 32 прохода. Тесть эффективен для полного выявления ошибок, но время его выполнения весьма высоко.
Test 7 [Modulo 20, один проход с нулями]
Используется алгоритм Modulo-X , который должен обнаружить ошибки не выявленный при прохождении инверсионного перемещения.
Test 8 [Тест исчезновения битов, 90 min, 2 шаблона]
Этот тест инициализирует всю память через шаблон и затем засыпает на 90 минут. Затем, когда память будет вновь исследована, не должно произойти изменения ни в одном бите. Таким образом для завершения этого теста необходимо прядка 3 часов.
Test 8 [Тест случайной записью]
При использовании этого теста, происходит запись случайных данных по случайным адресам. Этот стрессовый тест позволяет вывить ошибки при переходе со страницы на страницу. Соответственно в этом случае значение адресов должно изменятся на столько, чтобы следующее обращение происходило к следующей странице памяти.
Варианты лабораторных работ (по номеру в журнале):
№ Варианта |
Задание |
1,6,11 |
Тест адресов, проверка собственных адресов |
2,7,12 |
Инверсионное перемещение, один проход и запись нулями |
3,8,13 |
Тест адресов, один проход, без кэширования |
4,9,14 |
Тест адресов, один проход, без кэширования |
5,10,15 |
Тест случайной записью |
