Реферат: Разработка программы диагностики и тестирования аппаратных средств ПК
Название: Разработка программы диагностики и тестирования аппаратных средств ПК Раздел: Рефераты по информатике Тип: реферат | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Разработка программы диагностики и тестирования аппаратных средств ПКСОДЕРЖАНИЕ ВВЕДЕНИЕ…………………………………………………………………..4 ОБЩИЙ РАЗДЕЛ……………………………………………………………5 Технико-математическое описание задачи……….…………………5 Требования к функциональным характеристикам………………….7 Требования к техническим и программным средствам………….…8 Обоснования выбора языка программирования…………………….9 СПЕЦИАЛЬНЫЙ РАЗДЕЛ………………………………………………..11 2.1. Постановка задачи……………………………………………………..11 2.2. Описание структуры программы…………………………………..…12 2.3. Оисание алгоритма решения задачи………………………………….14 2.4. Отладка и тестирование……………………………………………….16 2.5. Инструкция к пользователю…………………………………………..17 2.6. Заключение о результатах проектируемой задачи…………………..18 ПРИЛОЖЕНИЕ 1…………………………………………………………..19 ПРИЛОЖЕНИЕ 2…………………………………………………………..21 СПИСОК ЛИТЕРАТУРЫ………………………………………………….30 ВВЕДЕНИЕ В связи с появлением персональных компьютеров мгновенно вырос рынок аппаратных средств, как грибы росло число производителей, предлагающих свою продукцию. При этом, покупая то или иное аппаратное средство, производитель не может (а иногда и не хочет) дать 100% гарантию, что оно исправно. В связи с этим также стремительно развивался и рынок пограммных тестирующих средств. На рынке существует огромное количество отличных диагностических программ, написанных большими корпорациями: такими как Symantec inc., APS (Advanced Personal Systems), Microsoft и т.д., но все сущестующие диагностирующие программы написаны на язках высокого уровня, а значит не достаточно быстры и надёжны. Автор проекта не берётся конкурировать с огромными гигантами по количеству выполняемых этими программами тестов в силу того, что это бессмысленно. Была предпринята попытка написать более надежную, быструю диагностическую программу с использованием машино-ориентированного языка программирования – Ассемблер.
1.1. Технико-математическое описание задачи Программа делится на две части: Первая часть программы - Сбор сведений - это часть программы, собирающая справки об оборудовании, установленном на ПК, на котором программа выполняется. Справки наводятся о следующих устройствах: математическом сопроцессоре; СОМ портах; LPT портах; дисководах; CD-ROM приводах; расширенном управлении электропитанием; манипуляторе «мышь». Математический сопроцессор – это микрочип, устанавливаемый на материнскую плату, который работает совместно с основным процессором, осуществляет обработку чисел с плавающей точкой, тем самым разгружая основной процессор. Может устанавливаться опционально по желанию пользователя либо самим пользователем, т.е. может либо присутствовать, либо отсутствовать. СОМ порты – это порты с последовательным типом передачи данных, предназначенные для подключения коммуникационных, манипуляторных и других устройств, где требуется сравнительно не- большая скорость передачи данных. Количество установленных последовательных портов может варьироваться от одного до четырёх. На некоторых материнских платах существует ограничение на подключение последовательных портов, например: если это значение будет два, и если вы подключите четыре порта, то работать будут все равно два. LPT порты – это порты с параллельным типом передачи данных, предназначенные для подключения принтеров и других устройств, где требуется относительно большая скорость передачи данных, а также могут использоваться для соединения двух компьютеров между собой для обмена данными. Количество установленных LPT портов может варьироваться от одного до четырёх. Дисковод – устройство, предназначенное для чтения/записи накопителей на магнитном диске (гибкий диск). Существует четыре типа дисководов: 360 Кб.; 720 Кб.; 1.2 Мб.; 1.44 Мб. Они различаются по формату обслуживаемых дискет и максимально возможному объему данных, записываемых на дискету соотвестсвующего типа. CD-ROM привод – устройство, предназначенное только для чтения накопителей на лазерных дисках. Различаются по скорости доступа к данным и скоростью вращения лазерного диска. Обычно устанавливают не более одного привода. РУЭ (расширенное управление электропитанием) – стандарт, служащий для экономии электроэнергии. Представляет собой следующий набор функций: автоматическое отключение электропитания; «спящий» режим; автоматическое отключение питания монитора; автоматическое отключение питания жестких дисков. Может находиться в двух состояниях: включено или выключено. Вторая часть программы - диагностика памяти - проверяет на работоспособность память ПК, на котором выполняется программа. 1.2. Требования к функциональным характеристикам При запуске программы на экран должна выводиться аннотация, затем, после нажатия на любую клавишу, должен очищаться экран и появляться меню из трех пунктов: 1 – сбор сведений о системе; 2 – тест памяти; 3 – выход. Для выбора интересующего пункта необходимо нажать на клавиатуре цифры, соответствующие номерам пунктов. В случае выбора пункта «Сбор сведений о системе» выполняется последовательный вывод информации о ПК в виде списка устройств с текущим состоянием. Ниже приведена таблица со списком устройств и их возможными состояниями. Таблица 1 Таблица возможных состояний устройств
После вывода списка устройств, в программе необходимо реализовать задержку, затем возврат в меню. В случае выбора пункта «тест памяти» программа должна выполнять тестирование не менее 640Кб. памяти. В случае если память исправна, на экран выводиться сообщение «тест пройден», в противном случае «тест не пройден». Также необходимо реализовать задержку и возврат в меню. В случае выбора пункта «выход», необходимо реализовать завершение работы программы и передачу управления операционной системе DOS. 1.3. Требования техническим и программным средствам Программа выполнена на языке ассемблера 8086 процессора, соответственено ей необходим IBM PC – совместимый компьютер с процессором не ниже 8086, также программа может выполняться на компьютерах с процессорами старшего поколения (например: 80286 или 80386), т.к. особенностью архитектуры 80х86 является преемственность на уровне машинных команд: программы, написанные для младших моделей процессоров, без всяких изменений могут быть выполнены на более старших моделях. Компилированный код программы занимает всего 2 Кб – это связано с отсутствием избыточного кода, которого очень много при использовании языков высокого уровня. В связи с этим программа может легко поместиться на дискету 360 Кб. Программа работает в текстовом режиме и не использует цветовой гаммы, поэтому ей достаточно монитора CGA. Кроме того она может без всяких изменений работать на мониторах старшего поколения таких, как EGA, VGA и SVGA. Так как программа тестирует 640 Кб оперативной памяти, этот объем являеться минимумом. 1.3.1. Обоснования выбора языка программирования Для написания данной программы был выбран язык ассемблера. В связи с тем, что он наиболее подходит для реализации такого рода задач, т.е. где требуеться досуп к портам, выполнение специальных прерываний, доступ к области памяти BIOS и т.д. Язык ассемблера, представляет собой фактически символьную форму записи машинного языка: в нем вместо цифровых кодов операций вписывают привычные знаки операций или их словестные названия, вместо адресов – имена, а константы записывают в десятичное системе счисления. Программу, записанную в таком виде, вводят в ЭВМ и подают на вход специальному транслятору, называемому ассемблером, который переводит её на машинный язык, и далее полученную машинную программу выполняют. Для любой ЭВМ можно придумать разные языки ассемблера, хотя бы потому, что можно по-разному обозначать машинные операции. В частости, и для ПК разработано несколько таких языков(ASM-86, MASM, TASM). Для реализации данной задачи был выбран язык, который создан фирмой Borland и полное название которого – турбоассемблер, сокращенно TASM. Надо отметить, что этот язык наиболее часто используется на ПК. СПЕЦИАЛЬНЫЙ РАЗДЕЛ 2.1. Постановка задачи Разработать программу тестирования оперативной памяти и сбора сведений о ПК. Реализовать меню, в котором пользователю предлагается выбор из трёх пунктов: 1 – сбор сведений о системе; 2 – тест памяти; 3 – выход. Сбор сведений должен осуществляться в виде списка устройств с текущим состоянием. Состояние от названия устройства должно отделяться двоеточием. Список устройств и возможных их состояний см. в таблице 1. Пункт «тест памяти» должен осуществлять проверку ячеек памяти на работоспособность. Существует два типа неисправностей ячеек памяти: «постоянные нули»; «постоянные единицы». Вид неисправности «постоянные нули» заключается в следующем: предположим, что бит №4 в байте, изображенном на рис. 1 – неисправный. В данный момент в байт записано число ноль (восемь нулей в двоичной системе cчисления), если считать содержимое этого байта, то на выходе получиться ноль – вроде бы он исправен. 7 6 5 4 3 2 1 0
рис. 1 Но это лишь только видимость, если в этот байт записать число FFh (восемь единиц в шестнадцатиричной системе счисления), что в двоичной системе счисления эквивалентно восьми единицам, то получится картина, представленная на рис. 2. В этом случае, если считать содержимое этого байта, на выходе получиться EFh, то есть, записывая в бит №4 единицу, мы при считывании все равно получаем ноль. Следовательно бит № 4, а значит и байт, неисправен. 7 6 5 4 3 2 1 0
рис. 2 Вид неисправности «постоянные единицы» схож с видом «постоянные нули». Разница состоит лишь в том, что в виде «постоянные нули» неисправные биты находятся всегда в нулевом состоянии, а в виде «постоянные единицы» в единичном. В связи с этим необходимо реализовать проверку ячеек памяти на два вида неисправностей: «постоянные нули» и «постоянные единицы». 2.2. Описание структуры программы Программа была реализована с помощью нескольких пользовательских процедур и макросов (см. таблицу 2). Довольно часто в программах, особенно больших, приходится несколько раз решать одну и ту же подзадачу и поэтому приходится выписывать одинаковую группу команд, решающих эту подзадачу. Чтобы избежать повторного выписывания такой группы команд, ее обычно выписывают один раз и оформляют соответствующим образом, а затем в нужных местах программы просто передают управление на эти команды, которые, проработав, возвращают управление обратно. Такая группа команд, которая решает некоторую подзадачу и которая организована таким образом, называется процедурой. Нередко бывает полезным предварительное(до начала трансляции) преобразование текста программы. Например, может потребоваться, чтобы какой-то фрагмент программы был продублирован несколько раз или чтобы в зависимости от некоторых условий в тексте программы были сохранены одни фрагменты и удалены другие. Подобную возможность предоставляют так называемые макросредства. Расширение языка ассемблера за счет этих средств обычно называют макроязыком. Программа, написанная на макроязыке, транслируется в два этапа. Сначала она переводится на, так сказать, чистый язык ассемблера, т.е. преобразуется к виду, где нет никаких макросредств. Этот этап называется макрогенерация, его осуществляет специальный транслятор – макрогенератор. На втором этапе полученная программа переводится на машинный язык. Это этап ассемблирования, его осуществляет ассемблер. Таблица 2 Таблица процедур и макросов
При выполнении программы на экран выводится аннотация, пользователь, ознакомившись с программой, нажимает на любую клавишу, и на экран выводится меню (с помощью процедуры ShowQuestion), в котором пользователь может выбрать интересующий его пункт меню: сбор сведений о ПК; тест памяти; выход. Если выбран первый пункт, выполняется процедура ShowSved. Внутри данной процедуры реализована очистка экрана, с помощью макроса ClrScr, а также диагностика оборудования и задержка, реализованные с помощью макроса press. После выполнения данной процедуры программа переходит в начало, т.е. в меню. В случае выбора второго пункта, выполняется процедура TestMem, тестирующая оперативную память ПК. Также внутри данной процедуры реализованы очистка экрана и задержка перед выходом в меню. Если выбран третий пункт, программа, не очищая экран, передает управление операционной системе DOS . 2.3. Описание алгоритма решения задачи Если в оперативной памяти ПК имеется 2 в 20 степени ячеек, то для ссылок на эти ячейки нужны 20-разрядные адреса; их принято называть физическими адресами. Ясно, что при большом объеме памяти большим будет и размер физических адресов, а это ведет к увеличению длины команд и к увеличению размера программ в целом. Это плохо. Чтобы сократить размеры команд, поступают следующим образом. Память условно делят на участки, которые принято называть сегментами. Начальные адреса сегментов могут быть любыми, но на длину сегментов накладывается ограничение: размер любого сегмента не должен превышать 64Кб. В этих условиях физический адрес А любой ячейки памяти можно представить в виде суммы A=B+ofs, где В – адрес сегмента, а ofs – смещение относительно адреса В. Таким образом ,если в команде надо указать физический адрес А, то адрес сегмента B – “прячем” в так называемый сегментный регистр, а в команде указываем лишь этот регистр и слагаемое ofs. Это даёт экономию размера команд. В связи с этим максимальный объем сегмента равен 64Кб, а минимальный равен 16 байтам. Процедура теста памяти реализована с помощью вложенного цикла. Первый цикл увличивает на еденицу модификационный регистр BP до тех пор, пока BP меньше 0A000h (это последний сегмент 640 Кб). Внутри этого цикла реализован еще один цикл - он увеличивает на единицу модификационный регистр SI до тех пор, пока он меньше 16. Внутри вложенного цикла осуществляется непосредственно проверка памяти на неисправные биты: сначала происходит проверка на «постоянные единицы» - в сегмент по адресу BP со смещением SI записываеться ноль (что в двоичной системе счисления означает восемь нулей), затем осуществляется проверка этого значения, т.е. нуля. Если это значение равно нулю, значит память исправна, в противном случае - не исправна. Затем происходит проверка на «постоянные нули»: по тому же адресу записывается число FFh (что в двоичной системе счисления означает восемь едениц), затем осущесвляется проверка этого значения. Если значение равно FFh, значит память исправна, в противном случае - неисправна. 2.4. Отладка и тестирование Тестирование производилось с помощью отладчика Turbo Debugger корпорации Borland. Была выполнена трассировка всей программы. Трассировка – это процесс пошагового выполнения команд с листингом состояний всех регистров, флагов, сегмента данных на момент выполнения каждой команды. В ходе трассировки были обнаружены следующие ошибки: неправильное определение состояния математического сопроцессора - неправильно указанная маска очистки, так называемого слова «equpment list», получаемого с помощью прерывания 11h; “зависание” при вызове процедуры TestMem - ошибка в реализации алгоритма теста памяти – неправильно указанная метка перехода во вложенном цикле. Кроме того, было обнаружено множество ошибок в синтаксисе команд. Так как программа писалась на одном компьютере, проверить её на правильность определения конфигурации ПК не представлялось возможным, поэтому, после завершения программы, она выполнялась на разных ПК с разными конфигурациями: в ходе этого теста ошибок обнаруженно не было – все аппаратные средства определялись правильно. Также невозможно было проверить программу на правильность теста памяти на практике, потому что она выполнялась на всех ПК с исправной памятью, а попытки найти ПК с заведомо неисправной оперативной памятью не увенчались успехом. Тем не менее теоретически тест должен работать правильно. 2.5. Инструкция к пользователю Для запуска программы выполните файл с именем «kurs.com». Вашему вниманию предоставиться аннотация – внимательно прочитайте её, а затем нажмите любую клавишу на клавиатуре (например, enter). Затем на экране высветится меню, изображенное на рис. 3.
рис. 3 Для того, чтобы получить краткие сведения о вашем ПК - нажмите клавишу «1», затем «Enter» на вашей клавиатуре, и на экран высветится список устройств с текущем состоянием. Для возврата в меню нажмите любую клавишу. Для того, чтобы протестировать оперативную память вашего ПК – нажмите клавишу, «2» затем «Enter» на вашей клавиатуре, и на экране высветится сообщение о состоянии памяти вашего ПК. Для возврата в меню нажмите любую клавишу. Для того, чтобы выйти из программы - нажмите клавишу «3», затем «Enter» на вашей клавиатуре. 2.6. Заключение о результатах проектируемой задачи В ходе выполнения поставленной в курсовом проекте задачи были приобретены навыки реализации сложных ассемблерных программ с использованием макросов и процедур. Кроме того, был получен огромный опыт и умение работы с CMOS (область памяти, где хранятся сведения о конфигурации ПК) на низком уровне, т.е. с использованием прерывания BIOS 11h и 70h порта, а также опыт использования дополнительных сегментных регистров и регистров модификаторов. Реализованная программа может быть полезна при диагностике оборудования на относително старых моделях ПК, поскольку в программе используется система команд 8086 процессора, который был выпущен в 1979 г. корпорацией Intel, и сейчас эта модель процессора является устаревшей. СПИСОК ЛИТЕРАТУРЫ 1. В.Н. Пильщиков. Программирование на языке ассемблера IBM PC. – М.:Диалог-МИФИ. 1997 |