Міністерство освіти і наукиУкраїни
Національний університет “Львівська політехніка”
Інститут комп’ютерних наук та інформаційних технологій
Кафедра систем автоматизованого проектування
Курсова робота
З дисципліни
“Системне програмування та операційні системи”
На тему :
“Визначення характеристик та тестування відеокарти”
Допущено до захисту: Виконав :
Дата Студент групи:
КН-2
Прийняв :
Дата
]
Львів 2008
Анотація
Курсова робота з курсу “Системного програмування та операційні системи”.
Визначення основних характеристик і тестування відеокарти. Львів: Національний університет “Львівська політехніка”, 2008. 32 - с.
Обсяг даної курсової роботи включно із кодом програм становить 32 сторінок. Курсова робота складається з 5-ти розділів, у яких наведено основні теоретичні відомості про відеокарту та її програмування. Описано основні функції та алгоритм.
Курсова робота ставить за ціль – розробити програму для визначення основних характеристик та тестування відеокарти.
ВСТУП
Моя програма написана на мові програмування Паскаль із вставками Асемблера. Я вибрав цю мову, тому, що в ній є типи з якими буде зручно працювати. Працює вона наступним чином : ми вибираємо відповідний пункт меню і виконується відповідна команда. Програма буде містити дві частини (модуля) : перший – визначення характеристик відео карти, який буде визначати дані про виробника, версію, кількість памяті, а також про графічні SVGA режими; другий – буде тестувати відео карту, тобто буде виводитися на екран (монітор) різноманітна графіка. Докладніше про модулі та специфікацію програмування відео карти я розкрию в наступних розділах.
Зміст
Анотація 2
Вступ 5
1. Відеосистеми і їх стандартизація. 7
1.1. Відеокарти і стандарти. 7
1.2. Стандарти IBM і BIOS. 7
1.3. Акселератори. 9
1.4. Функції акселераторів. 9
1.5. Програмування акселераторів. 10
1.6. Загальна характеристика стандарту VESA. 12
1.7. Стандартизація відеорежимів. 13
1.8. Характеристики відеорежимів. 13
2.Аналіз складання алгоритму. 15
3.Текст програми. 20
4. Блок схеми. 28
5. Результат роботи програми. 29
Висновок. 31
Список використаної літератури. 32
1. Відеосистеми і їх стандартизація.
Комп'ютерний ринок динамічний за своєю природою, він постійно пропонує нове, все більш досконале відеоустаткування для ПК. Користувачі, навпаки, схильні розміряти свої потреби і реальні фінансові можливості. Тому в експлуатації знаходиться безліч відеосистем, виготовлених різними фірмами і у різний час. Вони істотно розрізняються по конструктивному виконанню, технічним характеристикам і звичайно ж по особливостям програмування. На їх прикладі можна прослідити всю історію розвитку технічних засобів персональних комп'ютерів від перших IBM PC XT до новітніх моделей на базі процесорів сімейства Pentium.
1.1. Відеокарти і стандарти.
Відеокарти сприймають цифрову інформацію, що поступає від ЦП, і виробляють сигнали, що управляють роботою монітора. Ядром відеокарти є спеціалізований мікропроцесор, що виконує всі необхідні функції. Від нього залежать такі технічні характеристики, як продуктивність (або швидкодія), гранично допустимий об'єм пам'яті, конкретні особливості програмування. Крім того, на будь-якій відеокарті розташована оперативна пам'ять (RAM), призначена для зберігання цифрового образу, зображення, що виводиться на екран. Нарешті, на відеокарті знаходиться постійна пам'ять (грудка), що містить фрагмент базової системи вводу-виводу (BIOS).
1.2. Стандарти IBM і BIOS.
Для програмування конкретної відеокарти треба знати призначення її внутрішніх регістрів, їх розмірність (байти, слова і ін.), спосіб запису або читання даних і розташування величин в розрядах регістрів. Перший стандарт IBM регламентував призначення, склад і способи роботи з внутрішніми регістрами, що виключало несумісність відеокарт. Але скоро стало очевидне, що це поганий спосіб рішення проблеми сумісності і в стандартах EGA і VGA вказані вимоги розповсюджувалися тільки на основну частину регістрів.
Для вирішення проблеми сумісності були стандартизовані функції BIOS. IBM випустила опис базового набору, що містить перелік основних функцій, спосіб їх виклику, призначення і розміщення вхідних і вихідних параметрів. Так з'явилася група функцій BIOS з назвою "video Services". Утворюючі її підпрограми і дані не входять в основну частину BIOS, вони зберігаються в спеціальній мікросхемі, розташованій на відеокарті. Тому, встановлюючи нову відеокарту, ви одночасно встановлюєте нову реалізацію функцій вказаної групи. У сучасних моделей відеокарт ця група може займати повний сегмент пам'яті, тобто 64 Кбайт. Це свідчить про складність і різноманітність виконуваних дій і про великий об'єм використовуваних при цьому даних.
Саме завдяки наявності функцій "video Services" ви можете бути упевнені у тому, що після зміни відеокарти ваш ПК збереже свою працездатність. Програмісти одержали істотне спрощення структури прикладних завдань і їх незалежність від моделей відеокарт. А розробники дістали можливість змінювати програмну реалізацію функцій BIOS для обліку конкретних особливостей відеокарти.
Перед висновком на екран монітора тексту або графічних зображень повинен бути встановлений відповідний відеорежим. Зокрема, при первинному завантаженні ПК BIOS встановлює текстовий режим роботи, при якому на екрані можна розташувати 25 рядків, кожна з яких містить не більше ніж 80 символів. DOS звичайно не змінює цей режим, а прикладні завдання можуть виконуватися в текстових або в графічних режимах.
У групу "video services" обов'язково входить функція, що виконує установку відеорежиму. При її виклику указується код відеорежиму, а дані, необхідні для його установки, зберігаються у області BIOS. IBM ввела стандартні значення кодів для 20-ти відеорежимів, значення яких змінюються від про до I3h (буква h — ознака шестнадцатерічного числа). Розробники відеокарт можуть вводити нові режими на свій розсуд, чим вони звичайно і користуються.
1.3. Акселератори.
У історії обчислювальної техніки розвиток програмних і апаратних засобів тісно переплетений один з одним. Нові технічні можливості дозволяють програмістам зробити черговий крок вперед і при цьому у них просто з'являються нові вимоги до апаратури. Основний вплив на розширення функцій відеокарт надав прагнення одержати на екрані монітора об'ємне рухоме зображення, побудоване з урахуванням перспективи і розподілу світла і тіні. Піонерами цього напряму були розробники комп'ютерних ігор.
1.4. Функції акселераторів.
Набір виконуваних функцій залежить від конкретного призначення акселератора. По особистому досвіду ви знаєте, що при малюванні і кресленні доводиться мати справу з різними об'єктами і з різними способами їх зображення. Відповідно, функції акселераторів, призначених для прискорення геометричних побудов і для роботи з художніми зображеннями, розрізняються вельми істотно. Якусь комбінацію з цих функцій можуть підтримувати акселератори, призначені для систем автоматизації проектування. Специфічний набір функцій підтримують акселератори, використовувані для ігрових застосувань. У цих випадках основними вимогами є швидкість зміни картинки і можливість створення різних спец ефектів , а точність побудови самого зображення не так істотна.
На сьогоднішній день неможливо виділити якийсь стандартний набір функцій, виконуваних акселераторами. У розробників відсутній достатній практичний досвід, тому вони просто утілюють функції, підтримувані графічними бібліотеками Direct3D і OPENGL. До них відносяться розфарбовування трикутників по заданим зразкам (накладення текстур), альфа змішення , створення ефекту туману, обчислення розподілу світла і тіні по методу Гуро (Gouraud Shading), корекція перспективи і деякі інші.
Крім того, у акселераторів з'явилася функція іншого призначення. Це перетворення телевізійного зображення в комп'ютерне і назад. У таких випадках на відеокарті є роз'єм для підключення телевізора або відеомагнітофона. Як приклад можна привести вироби фірм ATI і S3. Підкреслимо, що йдеться не про прийом телевізійних сигналів — для цього існує спеціальна плата, а про апаратне перетворення сигналів з телевізійного стандарту (NTSC, PAL і т) в послідовність кодів крапок, записуваних у відеопам'ять. Таке перетворення є двостороннім, тобто коди крапок, що зберігаються у відеопам'яті, можуть перетворюватися в один з телевізійних стандартів. Такі функції розширюють можливості комп'ютерної обробки телевізійних зображень і роблять її доступнішою для користувачів.
1.5. Програмування акселераторів.
Після включення ПК і завантаження операційної системи, неважливо який, акселератор працює як звична відеокарта. Такий режим необхідний для нормальної роботи операційних систем і багатьох прикладних задач. Прикладом можуть служити Windows і її численні застосування.
Основні (обчислювальні) функції акселераторів виконуються в 32-розрядному (захищеному) режимі роботи ПК. Йдеться про розрядність адрес, дані можуть містити меншу або більшу кількість розрядів. Виконання прикладних задач в захищеному режимі підтримують, наприклад, Windows 9X/2000/NT і OS/2. DOS є операційною системою реального (16-розрядного) режиму, але існують так звані розширювачі (DOS extenders), які підключаються до прикладного завдання і створюють на якийсь час її виконання обчислювальне середовище, необхідне для роботи в захищеному режимі. Найбільш відомими з них є DOS4GW, DOS32A, PMODE/W.
При виборі операційної системи доводиться враховувати той факт, що в даний час не існує стандарту на програмування функцій акселераторів, хоча асоціація VESA робить активні зусилля по його розробці. Перший документ VBE/AF Standard 1.0 був випущений в серпні 1996 року.
Відсутність стандартів означає, що завдання, що безпосередньо взаємодіє з акселератором. Вона виконуватиметься тільки на тих ПК, на яких встановлена відповідна модель акселератора. Існує досить багато комп'ютерних ігор, створених для певних моделей акселераторів, в решті випадків вони або взагалі не працюють, або працюють поволі, якщо обчислення виконує процесор.
Проблема взаємодії частково розв'язується за допомогою драйверів, які продаються разом з акселератором. Вони складені для певної операційної системи і розраховані на взаємодію з однією з поширених графічних бібліотек.
Середовище Windows дозволяє створювати будь-які графічні програми. Розробникам доступні графічні бібліотеки Direct3D і OPENGL, які добре документовані і загальнодоступні. Якщо встановлений відповідний драйвер, то вони використовують можливості акселератора, інакше необхідні дії виконуються програмно, що уповільнює процес виконання завдань, але вирішує проблему їх взаємодії.
Пакет Direct3D розроблений Microsoft і є однією з частин бібліотеки DIRECTX, що входить до складу Windows 9X, починаючи з версії 98, Windows NT і 2000. Він призначений для прискорення виконання ігрових програм в середовищі Windows. Перша версія пакету була випущена в 1996 році.
Бібліотека OPENGL була створена в 1993 році фірмою Silicon Graphics для комп'ютерів абсолютно іншого класу і для іншої операційної системи. У 1995 році спільно з Microsoft вона адаптувала її для IBM PC. З цією бібліотекою працює, наприклад, остання версія компілятора Фортрану для Windows.
На відміну від Direct3D, OPENGL гнучкіша і багатофункціональна бібліотека. Спочатку вона створювалася для застосування тривимірної графіки в системах автоматизованого проектування. Проте вона не містить засобів, що дозволяють працювати безпосередньо з відеопам'яттю в обхід інтерфейсу графічних пристроїв (GDI), який істотно уповільнює виконання прикладних задач. Для цього потрібна додаткова бібліотека WING або DirectDraw, яка є частиною бібліотеки DIRECTX.
Ще зовсім недавно думка про те, що можна створити хорошу тривимірну графічну програму під Windows здавалася абсолютно безглуздою будь-якому програмісту, що має справу з цією системою. З появою бібліотеки DIRECTX ситуація змінилася в кращу сторону. Але, проте, середовище Windows залишається вельми інерційним, і розробники комп'ютерних ігор продовжують і, ймовірно, ще довго продовжуватимуть використовувати для прискорення процесу гри розширювач DOS4GW і йому подібні.
1.6. Загальна характеристика стандарту VESA.
Video Electronics Standards Association (асоціація стандартизації відеоелектроніки), скорочено VESA, була заснована в 1989 році. У серпні того ж року вона опублікувала свій перший стандарт для 16-кольорового відеорежиму SVGA з дозволом 800x600 крапок. З тих пір асоціація випустила безліч різних стандартів, що охоплюють широкий спектр відеоустаткування. Одним з її відомих розробок є стандарт на системну шину VLB (VESA Local BUS) для мікропроцесора Intel 486.
Нас цікавитимуть стандарти VESA, регламентуючі способи програмування відеокарт. Перший завершений стандарт з'явився в жовтні 1991 року, він визначав повний набір відеорежимів SVGA і додаткових функцій BIOS І Називався VESA BIOS Extension (VBE) version 1.2.
Це функції тієї частини BIOS, яка розташована на відеокартах і обслуговує відеосервіс. Стандарт об'єднав попередні версії VBE 1.0 і VBE 1.1. Йому відповідають практично всі відеокарти, виготовлені починаючи з 1992 роки. Сучасніші відеокарти підтримують версію VBE 2.0, яка сумісна (зверху вниз) з версією VBE 1.2. Тому облік рекомендацій VESA при програмуванні роботи з графікою дозволяє створювати переносимі задачі, які правильно працюватимуть незалежно від моделі відеокарти, встановленої на конкретному комп'ютері.
1.7. Стандартизація відеорежимів.
Поняття "відеорежим" є узагальненою характеристикою поточного стану відеоконтроллера. Основна функція відеоконтроллера полягає у відображенні вмісту відеопам'яті на екрані монітора. Виконання цієї функції залежить від безлічі величин, що зберігаються у внутрішніх регістрах відеоконтроллера. Значення цих величин визначаються при установці відеорежиму. Нас цікавлять ті з них, які не тільки впливають на роботу відеокарти, але і повинні враховуватися в прикладних задачах.
1.8. Характеристики відеорежимів.
Перш за все, відеорежими діляться на текстові і графічні. Залежно від типу режиму прикладна задача записує у відеопам'ять або коди символів в стандарті ASCII, або коди окремих точок графічного об'єкту. При роботі в графічних режимах відеоконтроллер просто виводить на екран крапки, коди яких зберігаються у відеопам'яті. При роботі в текстових режимах він, за кодами символів, вибирає їх зображення із спеціальних таблиць, а потім виводить точки зображень на екран.
Іншою важливою характеристикою є роздільна здатність. Залежно від типу відеорежиму вона вимірюється кількістю символів або крапок, яку можна розмістити по горизонталі і вертикалі в межах робочої області екрану. Кількість крапок є основною, а кількість символів — похідною одиницею, оскільки воно залежить від першої величини і від розмірів осередку відведеного для розміщення одного символу.
Крапки, розташовані по горизонталі, утворюють рядок, а по вертикалі — стовпець. Кількість крапок в рядку і в стовпці не може бути довільним, воно завжди кратно восьми. Максимально можлива кількість крапок в рядку залежить від роздільної здатності монітора і його геометричних розмірів. У сучасних моніторів мінімальна відстань між центрами суміжних крапок складає від 0,28 до 0,26 мм. При розмірі екрану 14 дюймів по діагоналі кількість крапок в рядку не перевищує 1024. У 15-дюймових моніторів воно досягає значення 1280. Проте можливість роботи в режимах з високий розширенням залежить ще і від відеокарти.
Відстань між сусідніми крапками, розташованими по горизонталі і вертикалі, підбирається однаковим, для того, щоб зображення квадрата на екрані виглядало як квадрат, а не як прямокутник. Звичайно кількість крапок по горизонталі більше, ніж по вертикалі, але існують монітори і з вертикальною орієнтацією сторінки.
Робоча область ніколи не заповнює всю видиму частину екрану. У всіх відеорежимах її оточує простір, який в документації називається overscan або border (межа). Тому в різних режимах геометричні розміри робочої області можуть не співпадати.
Важливою характеристикою відеорежимів є кількість кольорів, яку можна одночасно відобразити на екрані. У всіх графічних режимах колір виходить в результаті поєднання в одній точці екрану трьох базових кольорів (червоного, зеленого і синього) різної інтенсивності. Залежно від відеорежиму коди базових кольорів розташовуються або в спеціальних регістрах відеокарти, або у відеопам'яті, тобто безпосередньо в коді крапки. Першу категорію режимів прийнято називати packed pixel graphics (упакована точкова графіка), а другу - direct color (безпосередній колір). Друга категорія, у свою чергу, ділиться на режими Hi-Color і True Color. У будь-якому випадку від відеорежиму залежать розмір коду крапки і розміри кодів базових кольорів.
2. Аналіз складання алгоритму.
Перший модуль.
Розробникам стандарту VESA належало, в першу чергу, обмежити різноманітність тих, що застосовувалися на практиці відеорежимів, пов'язавши з кожним з них конкретний код і набір характеристик. У двох перших версіях стандарту було описано 8 графічних режимів packed pixel graphics і 5 текстових режимів високого дозволу. Графічні відеорежими direct color були введені в третій версії стандарту. Коди режимів VESA і їх характеристики перераховані в табл. :
Int 10h; AH=4Fh; AL=00 – получити SVGA інформацію.
Буфер з інформацією про SVGA :
+00h – міститься слово VESA;
+04h – номер версії VBE;
+06h – адреса ідентифікатора виробника;
+0Ah – прапорці;
+0Eh – адреса списку номерів підтримки відеорежимів;
+12h – обєм відеопамяті в 64 – кілобайтових блоках;
+14h – версія даної реалізації VBE;
+16h до +24h – додаткова інформація;
+28h – зарезервовано VESA;
+100h – зарезервовано для внутрішніх даних VBE;
Таким чином працює перший модуль, отримавши буфер з інформацією, він аналізує стан байтів і виводить на екран інформацію про відеоадаптер.
Другий модуль.
Комп'ютерна графіка, незалежно від її складності, зрештою зводиться до роботи з окремими точками зображення. У режимах PPG кожній точці екрану відповідає байт відеобуфера. При незмінній палітрі колір крапки залежить від вмісту цього байта.
Int 10h; AH=0Ch : Вивести точку на екран.
Способи побудови геометричних фігур залежать тільки від природи самої фігури (лінія, прямокутник, еліпс і т. д.) і від використовуваного відеорежиму. Можна сказати що, це програмування комп'ютерної графіки в чистому вигляді, без численних допоміжних дій, які неминучі при виведенні наперед заготовлених малюнків.
Прямі лінії горизонтальні, вертикальні і похилі, від них залежать способи (алгоритми) їх малювання. Лінії на екрані далеко не завжди є гладкими, в більшості випадків вони ступінчасті. Гладкими можуть бути тільки лінії, кут нахилу яких рівний нулю або кратний 45 градусам. При інших кутах нахилу лінія стає ступінчастою.
Я використовував простий алгоритм побудови лінії, цикл починається з початкової точки, а закінчується кінцевою, в якому виводиться піксель параметри якого змінюються на одиницю, в залежності від того чи горизонтальна лінія чи вертикальна.
Маючи лінії легко побудувати куб, прямокутник, квадрат. Коло будується за формолами x:=x1+trunc(r*sin(h)); y:=y1-trunc(r*cos(h)); – де x,y – координати, r – радіус, h – крок.
Головна програма
Це інтерфейс, який дає зручність користування програмою, даючи підказки щодо вибору тої чи іншої дії. Вибір здійснюється за допомогою алфавітно-цифрового набору, тобто нажавши на клавіатурі відповідну клавішу, виконується задана дія. Всі дії занесені в модулях, про які було сказано вище, під процедурами або функціями.