Помощь - Поиск - Пользователи - Календарь
Полная версия: Контроллер AZ BK: Документирование процесса разработки
MAXIOL > Техника > DEC hardware / software > БК 0010 / 11 / 11M
SuperMax
Палитры V2
управление палитрами будет через 2 регистра палитры первый - адрес ячейки палитры
второй - значение палитры 15bit

адреса ячеек палитры будут начинаться с большей
Код

нумерация кодов цветов
палитра коды цветов (адреса ячеек палитры)
256     0-255
4x16    320-335
16       256-319
2         336-337


так получается полностью независимые палитры без пересечений
+ явный дубль стандартного функционала палитр, те можно переключать палитры как и ранее, но теперь доступна опция настройки каждой штатной палитры!

и как следствие палитры не надо будет перегружать при переключении видеорежима

для удобства формирования палитр сделал эксельку
Нажмите для просмотра прикрепленного файла

основная задача этой эксельки - сформировать файл mif для загрузки дефолтной палитры при старте ПЛИС

также она пригодится разработчикам для пересчета цветов в 15bit

пояснения к блоку 4x16 320-335
это 16 наборов палитры, изначально туда грузятся штатные значения, но их можно менять на любые!
нумерация прямая - те нулевая палитра это 320-321-322-323 ячейки
следующие 4 ячейки это 1ая палитра и так далее

управление палитрами осуществляется через 2 регистра
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]

формулу формирования цвета
цвет на выходе = VideoModeOffset + PaletteOffset + ColorIndex ;

VideoModeOffset - смещение видеорежима
cмещение - кол-во цветов
0 - 256
256- 16
320- 4
336- 2

PaletteOffset существует только для штаного видеорежима 4 цвета
во всех остальных случаях =0
номер палитры - смещение
0 - 0
1 - 4
2 - 8
итд

ColorIndex - непосредственно номер цвета в видеорежиме, начиная с 0


SuperMax
Для Legacy видеорежимов реализовано циклическое переключение по сочетанию AR2 + KT
В зависимости от запущенной программы, поведение может отличаться от стандартного, но в большинстве перехват данного сочетания работает корректно

Всего 4 видеорежима - точнее интерпретации 16кБ видеопамяти

0 - ч/б режим, по умолчанию палитра с белыми точками и темно-синим фоном
разрешение 512х256

1 - цветной режим, 4 цвета, палитра управляется как и стандартным 177716 как и через 177234/177236
разрешение 256х256

2 - цветной режим, 16 цветов, 4 бита на пиксель, соответственно
разрешение 128х256
палитра управляется только через 177234/177236

3 - цветной режим, 256 цветов, 8 бит на пиксель, соответственно
разрешение 64х256
палитра управляется только через 177234/177236

SuperMax
Модель управления памятью в AZ

Концепция:
адресное пространство разбито на 3 сегмента:

0-256кБ это write-only память для организации "теневой" памяти БК11М
первые 128кБ являются полной копией оперативки БК11М
из этой памяти идет отображение legacy видео режимов
а также получается есть техническая возможность отобразить на экран любую страницу памяти БК11М
Нажмите для просмотра прикрепленного файла
обращаю внимание на то, что физический адрес - словный

256-512кБ это read-only память, она не доступна на запись со стороны БКшки
эта память для эмуляции различных ПЗУ, содержимое которых может быть загружено только средствами AZ

512-1024кБ для эмуляции SMK-512

Начиная с 1МБ вся оперативная память - полноценная память без ограничений, а именно ее подключение всегда дает RPLY на чтение и запись

маппер памяти AZ
технически адрес в системе 24bit-а (адрес слова 16bit)
для маппера памяти используется старшая часть адреса, и получается дискретность привязки памяти к окну - 4кБ

есть 16 регистров (177300-177336) куда пишется 13bit адрес начала (10 бит добавляется от адреса с шины)
старшие 3 бита в резеве и маппер предусматривает расширение до 256МБ.

для управления маппером предусмотрен регистр маски окон - 177340
младший бит соответствует младшему окну (те с 0 до 7777) но тк первые 32кБ в БК приколочены жестко то пока это задел на вырост и младший байт использовать нельзя (он работает но очевидно будет конфликт на шине при его активации)

пример: для подключения оперативки в окно 160000-167777 надо сделать следующее:
177334 <- 400 (это указатель на первый мегабайт)
177340 <- 40000 (это разрешение этого окна)

разбивка на окна соответствует размеру в SMK - те 4кБ начиная со 100000(8)
обращаю внимание на адресацию, те свойства r/o w/o привязаны к 24bit адресу слова (!)
также есть регистр управления который осуществляет включение/выключение окон по маске + для общего управления и совместимостью с SMK

При этом любая память, может быть использована для отображения изображения на экране
Расширенный режим видеоконтроллера представляет набор строк от 0 до 767
и привязанный к ним
- адрес 24bit начала строки, длина строки от 32 до 256 слов (16bit), важно, это адрес слова 16bit а не байта как это будет на МПИ
- видеорежим строки: те количество цветов 2bit (2/4/16/256), масштабирование 2bita (1/2/4/8)
те растягивание данных на заданное число пикселей
Нажмите для просмотра прикрепленного файла


технически 768 строк, которые мы можем дублировать как нам удобно просто указывая одинаковый адрес начала строки


Соответственно технически получается можно создавать любые видеорежимы в пределах 1024х768
комбинируя допустимые варианты


SuperMax
Генератор псевдослучайных чисел

технически это LFSR длиной 128bit, младшие 16bit доступны по адресу 177550
данный регистр отвечает и на чтение и на запись. запись игнорируется.

питается генератор частой 130MHz и как следствие каждое обращение с МПИ даст совершенно новое слово


SuperMax
Консоль контроллера
основное назначение - отладка + информационные сообщения для расширенной диагностики

Настройка консоли
baud rate: 115200
data:8 bit
parity: none
stop: 1bit


К примеру в случае отсутствия карточки в консоли будет:

Код
AZBK build May  5 2021 23:12:19
Start lan init
ERROR: Card NOT installed
Lan init ok
IO11 init begin
ERROR open AZ.INI  errorcode=12
IO11 Error: 4
System Halted



Нормальный старт выводит в консоль следующий лог
Код

AZBK build May 17 2021 22:27:48
Start lan init
Card installed OK
Card mounted OK
Lan init ok
IO11 init begin
LOAD 0 ROM: file 0:/ROM/AZBOOT.ROM at 400000 (100)
LOAD 8 ROM: file 0:/ROM/BZ326.ROM at 440000 (110)
LOAD 11 ROM: file 0:/ROM/HDD326.ROM at 454000 (113)
LOAD 16 ROM: file 0:/ROM/11M_324.ROM at 500000 (120)
LOAD 18 ROM: file 0:/ROM/11M_325.ROM at 510000 (122)
LOAD 20 ROM: file 0:/ROM/11M_327.ROM at 520000 (124)
LOAD 22 ROM: file 0:/ROM/11M_328.ROM at 530000 (126)
LOAD 24 ROM: file 0:/ROM/11M_329.ROM at 540000 (130)
MOUNT image 0:/DISKS/AG.IMG
MOUNT image 0:/DISKS/ANSYS.IMG
MOUNT image 0:/DISKS/CSI_321B.IMG
MOUNT image 0:/DISKS/CSI_321R.IMG
MOUNT image 0:/DISKS/FORTRA.DSK
MOUNT image 0:/DISKS/51SYS_DS.DSK
MOUNT image 0:/DISKS/51DS_BK.DSK
MOUNT image 0:/DISKS/BK326.IPL
Card installed OK
Card mounted OK

-----------------------------
Network setting:
DHCPNAME=AZNET-BK.home.maxiol.com
MAC=00.0e.35.22.0b.01
DHCP=ON
IP=0.0.0.0
MASK=0.0.0.0
GW=0.0.0.0
NTP=0.0.0.0
DNS1=0.0.0.0
DNS2=0.0.0.0
NTP_BROADCAST=OFF
SNMP_COMMUNITY=maxiol
SNMP_TRAP=0.0.0.0
SNMP_TRAP_CHECK_PERIOD=0
SNMP_OK1=0.0.0.0
SNMP_OK2=0.0.0.0
SNMP_OK3=0.0.0.0
SNMP_OK4=0.0.0.0
SNMP_OK5=0.0.0.0
TIMEZONE=0
IO11 init ok
Begin main work




SuperMax
Загрузка ПЗУ

Пример az.ini
Код

[ROM]
R00=0:/rom/AZBOOT.ROM
R08=0:/rom/bz326.rom
R11=0:/rom/HDD326.ROM
R16=0:/rom/11m_324.rom
R18=0:/rom/11m_325.rom
R20=0:/rom/11m_327.rom
R22=0:/rom/11m_328.rom
R24=0:/rom/11m_329.rom
[disks]
D0=0:/disks/AG.IMG
D1=0:/disks/ANSYS.IMG
D2=0:/disks/CSI_321B.IMG
D3=0:/disks/CSI_321R.IMG
D4=0:/disks/fortra.dsk
D5=0:/disks/51SYS_DS.DSK
D6=0:/disks/51DS_BK.DSK
D7=0:/disks/BK326.IPL
[boot]
D7


Секция ROM обязательна и всегда должна быть первой
привязка основных ROMов будет статична тк является ключевой для эмуляции стандартного набора ПЗУ разных БК

разберем строчку:
Код
R00=0:/rom/AZBOOT.ROM


R00 - номер слота куда будет загружено ПЗУ
нумерация от R00 до R63
(весь сегмент ПЗУ - 256кБ - соответственно всего 64слота)
соответственно если ПЗУ 8кБ то она займет 2 слота

Код
0:/rom/AZBOOT.ROM

тут очевидно путь к файлу

Распределение адресного пространства ПЗУ
Нажмите для просмотра прикрепленного файла
обращаю внимание на то, что физический адрес - словный

столбец окно маппера как раз показывает номер для мапирования
те для подключения ПЗУ AZ326.ROM которое загружено с адреса 440'000(8)
мы должны занести в регистр слота - в нашем случае 177334 (тк мы подключаем в окно 160'000(8)), значение 110(8)

Если мы хотим подключить длинное ПЗУ которое занимает два слота маппера то надо указать оба
Код

            mov        #120,@#177330         ; окно 140000-147777
            mov        #121,@#177332         ; окно 150000-157777
            bis        #30000,@#177340       ; включаем страницы


SuperMax
Стартовая последовательность

1. После нажатия RESET на БК (или включения) питания процессор в БК остановлен
2. Запускается STM32 и начинает загрузку конфига AZ.INI и его исполнение
3. Загружаются образа ПЗУ в оперативку для эмуляции ПЗУ
4. После завершения инициализации инфраструктры, STM32 отпускает RESET и БК может стартовать
5. Старт БКшки с AZ осуществляется с адреса 177000 по которому отвечает стартовое однорегистровое ПЗУ.
6. Программа в нем подключает ПЗУ AZBOOT c адрес 170000 и передает управление ему.





Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2021 Invision Power Services, Inc.