Предмет:
Тип роботи:
Лабораторна робота
К-сть сторінок:
24
Мова:
Українська
style="text-align: justify;">* У разі успішного завершення операції пошуку
* параметри контроллера зберігаються в глобальних
* змінних BusNumber. DeviceNumber, VendorlD
* DevicelD і IDEContrRegsBaseAddr
****************************************************************
PROC SearchBusMasterlDEContr near
PushALL
: Перевірити наявність PCI BIOS
movAX.0B101h
int1Ah
jc@@PCIBIOSNotFound
cmpEDX.20494350h
jne@@PCIBIOSNotFOund
: Знайти контроллер Bus Masyer IDE за кодом класу
movAX.0b103h
movECX.0101180h :перший варіант коду
movSI .0
int1Ah
jnc@@ReadPCIRegisters :пристрій знайдено
movAX.0B103h
movECX.010185h :другий варіант коду
movSI,0
int1Ah
jnc@@ReadPCIRegisters :пристрій знайдено
movAX,0B103h
movECX.01018Ah :третій варіант коду
movSI,0
int1Ah
jnc@@ReadPCIRegisters :пристрій знайдено
:Контроллер IDE не знайдений
movSI,offset NoIDEC
callFatalError
:Пристрій знайдено. Його координати на шині PCI знаходяться в регістрі BX
@@ReadPCIRegisters:
: Запам'ятати координати контроллера
mov[BusNumber],BH
mov[DeviceNumber],BL
: Отримати ідентифікатор виробника
movAX.0B109h :читати слово
movDI,0 :зміщення слова
intlAh
jc@@BadRegisterNumber
mov[VendorID],CX
: Отримати ідентифікатор пристрою
movАХ.0В109h :читати слово
movDI,2 :зміщення слова
intlAh
jc@@BadRegisterNumber
mov[Device[D],CX
: Отримати базову адресу блоку регістрів контроллера IDE
movАХ,0Bl0Ah :читати подвійне слово
movDI,20h :зміщення слова
intlAh
jc@@BadRegisterNumber
andCX,0FFF0h :скинути молодші 4 розряди
mov [IDEContrRegsBaseAddr],CX
роpall
ret
: Обробка помилок
@@PCIBIOSNotFound:
: He підтримується PCI BIOS
mov SI,offset NoPCI
call Fatal Error
@@BadRegi sterNumber:
: Невірний номер регістра
mov SI,offset BadReg
call Fatal Error
ENDP SearchBusMasterlDEContr
ENDS
В лістингу 2 наведений приклад програми, яка викликає процедуру SearchBusMasterlDEContr, а потім відображає на екран інформацію про контроллер, отриману за допомогою цієї процедури.
Лістинг 2. Пошук контроллера PCI IDE і зчитування його параметрів
: Пошук контроллера PCI IDE і прочитування його параметрів
IDEAL
Р386
LOCALS
MODEL MEDIUM
: Підключити файл мнемонічних позначень кодів управляючих клавіш і колірних кодів
include "lst03_01.inc"
: Підключити файл макросів include "lst03_04.inc"
DATASEG
: Текстові повідомлення
Txt0 DB LIGHTCYAN.0.10. "ВИЗНАЧЕННЯ ПАРАМЕТРІВ"
DB "КОНТРОЛЛЕРА IDE За допомогою PCI BIOS".0
Txtl DB 2,27."Параметры контроллера IDE".0
DB 4,28."Номер шини:".О
DB 5,22."Номер пристрою:".0
DB 6,25."Номер функції:".0
DB 7,12."Ідентификатор виробника:".0
DB 8,14."Ідентификатор пристрою:".0
DB 9,8."Базова адреса набору регістрів:".0
AnyK DB YELLOW,24,29."Натисніть будь-кого клавішу",0
ENDS
SEGMENT sseg para stack 'STACK'
DB 400h DUP(?)
ENDS
CODESEG
:*****************************
;* Основний модуль програми *
:*****************************
PROC TestlDEContr
mov AX,DGROUP
mov DS,AX
: Встановити текстовий режим і очистити екран
mov АХ,3
int 10h
: Приховати курсор - прибрати за нижню межу екрану
mov[ScreenString].25
mov[ScreenColumn].0
callSetCursorPosition
: Вивести заголовок
MShowColorText Txt0
: Встановити зелений колір символів і чорний фон
mov [TextColorAndBackground].LIGHTGREEN
: Знайти контроллер PCI IDE
call SearchBusMasterlDEContr
: Вивести заголовки полів
MShowText 7,Txtl
: Встановити жовтий колір символів і чорний фон
mov [TextColorAndBackground].YELLOW
: Вивести отримані дані на екран
MShowHexByte 4,40.[BusNumber]
movBL,[Devi сеNumber]
shrBL,3
MShowHexByte 5.40.BL
movBL,[DeviceNumber]
andBL,lllb
MShowHexByte 6,40.BL
MShowHexWord 7,40.[VendorID]
MShowHexWord 8,40.[DevicelD]
MShowHexWord 9,40.[IDEContrRegsBaseAddr]
: Вивести вказівку оператору
MShowColorText l.AnyK
: Чекати натиснення клавіші
callGetChar
: Переустановити текстовий режим і очистити екран
movАХ,3
int10h
: Вихід в DOS
movАН,4Ch
int21h
: Обробка помилок
@@BadRegisterNumber:
: Невірний номер регістра
movSI.offset BadReg
callFatal Error
ENDP TestlDEContr
ENDS
: Підключити процедури вводу-виводу
include "lst03_02.inc"
: Підключити процедуру пошуку контроллера PCI IDE
include "lst04_01.inc"
END
Додаток 2
Адаптер інтерфейсу PCI для периферійних пристроїв
Рис. 7. Схема адаптера.
Схема адаптера показана на рис. 7. Для спрощення схеми, номери провідників в співпадають з номерами виведень мікросхеми PCI2040PGE в 144-вивідному корпусі LQFR У приведеному адаптері застосована мікросхема PCI2040 [9]. Вона працює в режимі "target" при тактовій частоті шини PCI до 33 МГц і напрузі живлення ядра 3,3 В, а вузлів інтерфейсу - 3,3 або 5 В. Основне призначення даної мікросхеми - з’єднання цифрових сигнальних процесорів TMS320C54X і TMS320C6X з шиною PCI. Проте, крім спеціалізованого інтерфейсу HPI, мікросхема забезпечена шинним інтерфейсом загального призначення GPB (General Purpose Bus), що складається з немультіплексированних шин адреси (GPA0 - GPA5) і даних (GPD0 - GPD15) із звичним набором сигналів управління: чотирма вихідними - "вибір кристала" GP_CS, запис GP_WR, читання GP_RD, установка в початкове положення