Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Лекция №5
Тестирование внутренних контроллеров ПК
К внутренним контроллерам ПК относятся: таймер, ПДП (DMA), контроллер прерываний (аппаратных), COM и LPT порты и др. (адаптеры видео, звука, сканирования, компакт дисков).
Таймер
Системный таймер 8253/8254 – это 3-х канальные программируемые счетчики, которые предназначены для:
· 0-й канал – генерация прерывания от системных часов;
· 1-й канал – генерация запросов на регенерацию памяти;
· 2-й канал – генерация звуковых сигналов.
Внутренние счетчики каналов 16-ти разрядные (режим -1), но общение с ними возможно только по 8 бит. Первым передается младший байт, а вторым – старший. Входная частота всех каналов – 1,19 МГц.
Порт 43Н является управляющим регистром для всех каналов. Через него задаются режимы работы всех 3-х каналов.
Обращение к каналам:
0-й канал: через 40h порт;
1-й канал: через 41h порт;
2-й канал: через 42h порт.
Рекомендуется 0-й и 1-й каналы не останавливать на длительное время. Для тестирования это обязательная рекомендация.
Исчерпывающее тестирование 16-ти разрядного счетчика требует больших временных затрат. Кроме того, чтение содержимого счетчика за 2 такта является моментом, когда время обнаружения тркбуемого кода (все "0", все "1", чередование "0" и "1") может быть весьма длительным.
Основной алгоритм программы POST – это чтение "на лету" 5-ти младших бит счетчика.
Для установки режима "на лету" для 0-го канала в 43h порт пишется 0, для первого канала – 40h, для второго – 80h.
Алгоритм тестирования таймера
1. Сохранить содержимое всех портов таймера.
2. Установить номер канала и режим чтения "на лету" (запись в порт 43h).
3. В цикле выполняется опрос 40h/41h/42h портов на состояние К0, К1, К2.
4. И так для всех портов и всех констант.
5. При выполнении каждого цикла фиксировать номер канала, тип константы и время выполнения.
6. Зафиксировать окончание теста.
7. Восстановить содержимое требуемых портов.
Контроллер прямого доступа к памяти – ПДП(DMA)
В ПК стоят 2 контроллера 8237А.
В ПДП есть три группы регистров:
1. страниц;
2. адреса;
3. счетчика.
Каналов обычно 8: 4 однобайтных и 4 двухбайтных.
Обмен с регистрами выполняется только побайтно. Для работы с 16-ю разрядами используется триггер младший/старший байт. По сбросу 8237А или записью любого байта по адресу 0СН/0DH (первый/второй контроллеры) триггер устанавливается для работы с младшими байтами, а после этого со старшими (после обращения).
Пример алгоритма тестирования регистров ПДП:
1. сохранение содержимого регистра;
2. запись в регистр константы тестирования (К0, К1, К2);
3. чтение содержимого регистра со сравнением и вывод результата (адрес регистра, тип константы);
4. восстановление содержимого регистра.
И так для всех выбранных регистров.
2-й метод тестирования ПДП – это проверка выполнения пересылки заготовленного файла по одному из каналов между ОЗУ и внешним устройством (FD).
Контроллер прерываний 8259А
Два контроллера 8259А предназначены для обслуживания аппаратных прерываний от устройств ПК (IRQ0 - IRQ15). Каждое устройство подключается к своему входу порта 21Н/А1Н (первый и второй контроллеры, соединены каскадом). Разрешенный уровень прерываний – это “0”. Сброс или инициализация контроллера – это запись числа 20Н в порт 20Н или А0Н.
Пример алгоритма тестирования:
1. Определение состояния порта 21Н (А1Н), запоминание этого состояния;
2. Установка в 0/1 соответствующего разряда порта 21Н (А1Н);
3. Чтение со сравнением;
4. Восстановление и инициализация.
COM-порты
Асинхронный универсальный приемопередатчик (UART) 8250, 16450, 16550 предназначен для асинхронного двунаправленного обмена информацией с использованием протокола RS-232C. Протокол определяет назначение регистров, таблиц, 9- и 25-контактных разъемов (DB9, DB25), форму сигналов и назначение бит в регистрах и сигнале.
Длина – 15 м, скорость – 20 Кбит/с
Длина – 12 м, скорость – 10 Мбит/с; длина – 1000 м, скорость – 100 Кбит/с
UART имеет 10 программируемых однобайтных регистров, которые задают:
1. скорость передачи (от 2-х до 115500 бод);
2. длину передаваемого слова (от 5-ти до 8-ми бит);
3. вид контроля по паритету (четность, нечетность, без контроля);
4. количество стоп-битов (1-2);
5. работа с прерываниями (включена/отключена);
6. режим для самотестирования (программа соединяет выход COM-порта со входом);
7. работа с модемом;
8. состояние линий связи.
Обобщенный алгоритм тестирования
1. Определяется наличие COM портов в ПК. По адресам 40h:0 с шагом 2 по смещению читается слово (для СОМ1 – 03F8h, для СОМ - 02F8h) из памяти. Если в памяти 0, СОМ порт отсутствует.
2. Выполняется перебор различных скоростей обмена.
3. Устанавливаются различные типы контроля.
4. Устанавливаются различные длины слов.
5. Аппаратно или программно соединяется выход COM-порта со входом .
6. Заготавливается тестовая строка (тестовый файл)
7. Для различных значений пунктов 1, 2, 3 выполнить пересылку заготовленной тестовой строки (тестового файла) с помощью адаптера самому себе.
8. Выполнить сравнение, вывести результаты (время теста, типы установок пунктов 1, 2, 3).
Это выполнить с аппаратными прерываниями и без них.
LPT порт
Line Printer (LPT) – построчный принтер.
Адаптер параллельного интерфейса в основном состоит из набора регистров.
Адреса регистров:
1. Базовый порт (03F8h, 02F8h) – регистр данных. Наличие LPT порта устанавливается чтением памяти по адресам 40h:08h (LPT – 03F8h), 40h:0Ah (LPT – 02F8h).
2. База + 1 – регистр состояния.
3. База +2 – регистр управления.
Это адресация для SPP порта.
Расширение: стандарт IEEE1284 – 1994 на SPP, EPP, ECP.
Пример алгоритма тестирования
1. Определение наличия адаптеров.
2. Запись – чтение К0, К1, К2 в базовый порт.
3. Состояние драйвера для передачи на принтер.
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.