NEC V40

Другие микроконтроллеры и микропроцессоры, не попавшие в предыдущие разделы

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16687
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Ну и в содержимом ROM BIOS видны следующие текстовые сообщения:

Code: Select all

PCE Firmware Version 1.01.00:
Copyright 1987 NORMEREL Systemes .
Illegal NMI Trap!!
Wild Hardware Interrupt No:
UnLocatable Parity Error!
Parity Error
(c) Copyright 1987
NORMEREL Systemes
...Can't load - [ENTER] to retry:
ROMBIOS  Ver:1.08
Equipment:
System Devices ok
Video Cards
CMOS RTC/RAM
RAM Memory Kb
Serial Ports
Printer Ports
Diskette Adaptor
Diskette Drives
Hard Drives
Numeric Processor
Option ROMS

Press "y" to begin formatting drive $
IDE Superbios Rev. 1.0 (C) Copyright Western Digital Corp.

Current Drive is $:, Select new Drive or RETURN for curre
$
Current Interleave is $, Select new Interleave or RETURN f
$
Are you dynamically configuring the drive - answer Y/N $
Key in disk characteristics as follows:ccc h rrr ppp ee o
where
ccc = total number of cylinders (1-4 digits)
h = number of heads (1-2 digits)
rrr = starting reduced write cylinder (1-4 digits)
ppp = write precomp cylinder (1-4 digits)
ee = max correctable error burst length (1-2 digits)
     range = 5 to 11 bits, default = 11 bits
 o = CCB option byte, step rate select (1 hex digit)
     range = 0 to 7, default = 5
     refer to controller and drive specification for step
$
Are you virtually configuring the drive - answer Y/N $
Key in cylinder number for virtual drive split as vvvv ...
where vvvv = number of cylinders for drive C: (1-4 digits)
$
Formatting . . .
$+¦Х¦p¦4¦_¦н¦J¦З¦¦J¦
§CORRECTABLE ECC ERROR
§FLAGGED AS BAD SECTOR
¶FLAGGED AS BAD TRACK
MISSING ID FIELD
MISSING DATA ADDR MARK
PROGRAM ERROR
UNCORRECTABLE ECC ERROR
UNREADABLE TRACK
USER-SUPPLIED
$: Aggregate virtual size exceeds disk cylinder size
$: Invalid drive
$: Too many virtual drives
$: Interleave factor must be 1 - 16
$: Interleave factor must be 1 - 25
$: Invalid CCB option value
$: Illegal character
$: Error burst length must be 5 or 11
$: Sector number must be 1-17
$: Cylinder size exceeds maximum
$: Number of heads exceeds maximum
$ : pool size exceeds maximum
$
Do you want to format bad tracks - answer Y/N $
Key in bad track list as follows: ccc h ...
where
ccc = bad track cylinder no (1-4 digits)
h = bad track head number (1-2 digits)
$
                               BAD TRACK MAP
TRACK ADDR          PROBLEM          TRACK ADDR          PROBLEM
$
The surface analysis processor detected no disk errors
$
Dynamic memory space exhausted - cannot complete surface analysis
$
Too many disk errors - cannot complete alt track/sector assignments
$
 Screen full - hit any key to continue
$
More ? Y/N $ with interleave $
Format Successful$

System will now restart

Insert DOS diskette in drive A:
Press any key when ready.  $
Error---completion code $
Nothing Done Exit$
iLavr
User avatar
Lavr
Supreme God
Posts: 16687
Joined: 21 Oct 2009 08:08
Location: Россия

Peripheral settings V40

Post by Lavr »

А вот с портами V40 ошибочка у меня вышла, и смутило меня то, что как-то сразу,
без настройки собственных Портов Ввода/Вывода в ROM BIOS обращаются
почему-то к регистру контроллера прерываний 2, хотя ещё и КП 1 не настроен.

Code: Select all

0000FFF0: EA5BE000F0                   jmp       0F000:0E05B
...
0000E05B: FA                           cli
0000E05C: EA0C8000F0                   jmp       0F000:0800C
...
0000800C: FA                           cli
0000800D: EB4D                         jmps      00000805C
...
0000805C: 2AC0                         sub       al,al; = 0
0000805E: E6A0                         out       0A0,al
Но, видимо, идея здесь такая, что КП 2 - внешний, а КП 1 -
внутренний, и пока внутренний не настроен и не подключен в
пространство УВВ, то КП 2 надо "попросить" не мешать.

А теперь немного о том, как настраиваются УВВ, интегрированные
на кристалле процессора V40. А на нём имеются:

Timer/counter unit (TCU) таймер типа ВИ54
Serial control unit (SCU) последовательный порт типа ВВ51
Interrupt control unit (ICU) контроллер прерываний типа PD71059
DMA control unit (DMAU) контроллер ПДП типа PD71071/71037


И после старта процессора V40 им надо программно указать их адреса
в пространстве УВВ, подключить к ним некоторые мультиплексированные
внешние выводы, и только потом уже настраивать их по заданным адресам,
как это обычно и делает процедура POST.

В пространстве УВВ у процессора V40 есть зарезервированная область
по адресам: 0FF00H - 0FFFFH, называемая System I/O Area (Системная
область Ввода/Вывода
).

Вот так она расположена на карте портов Ввода/Вывода.



И в этой области есть 12 регистров, расположенных по адресам 0FFF0H -
0FFFFH
, которые определяют, где в пространстве УВВ процессора V40
будут расположены его встроенные УВВ, и как они будут подключены к
внешним выводам процессора.

-------------Image

Эти устройства (все 4) всегда располагаются в блоке 256 байт, а где этот
блок расположен в 65536 доступных адресах I/O процессора V40, определяет
регистр OPHA. Фактически, если к портам обращаться командой OUT DX,AL ,
то OPHA = DH.

А вот значение DL для каждого порта I/O задают следующие регистры:
0FFFBH DULA - контроллер ПДП
0FFFAH IULA - контроллер прерываний 1
0FFF9H TULA - таймер
0FFF8H SULA - последовательный адаптер.


Image

То есть, если размещать эти порты там, где они находятся у IBM PC, c
адреса 0000H, то последовательный адаптер никогда не попадет на нужное
для карты портов I/O IBM PC место. Впрочем, это, возможно, и правильно,
поскольку встроенный в процессор V40 последовательный адаптер - аналог
8251, а в IBM PC испльзуются 8250, так что программной совместимости на
низком уровне всё-равно не будет.

Ну а теперь, как происходят эти настройки встроенных УВВ процессора V40
в программе ROM BIOS.
Сделано это довольно оригинально, почему я с первого разу и прошляпил
эти настройки, а смысл понял уже под отладчиком.

Со смещения 835FН в сегменте ROM BIOS расположены значения для всех 12
регистров настройки портов I/O процессора V40
:

Code: Select all

8350  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 1C
8360  FF 86 FF 55 55 05 FF F0-40 20 10 00 0F 03 .. ..
Поскольку есть регистры неиспользуемые (reserved), им соответствуют байты
FF - их не пишут в порты, а просто пропускают:

Code: Select all

;----------------- Peripheral settings in System I/O Area FFF0H to FFFFH
0000806B: FC                           cld
0000806C: BE5F83                       mov       si,0835F; offset code
0000806F: BAF0FF                       mov       dx,0FFF0; begin of system area
00008072: B90F00                       mov       cx,0000F; counter of bytes

00008075: AC                           lodsb
00008076: 3CFF                         cmp       al,0FF ;
00008078: 7403                         je        00000807D   -------- (1)
0000807A: EE                           out       dx,al

0000807B: EB00                         jmps      00000807D   -------- (2)

0000807D: 42                           inc       dx; next port of system area
0000807E: E2F5                         loop      000008075   -------- (3)
00008080: E9F804                       jmp       00000857B   -------- (4)
В результате получаются следующие настройки портов I/O процессора V40:

Code: Select all

0FFFDH OPCN   03h; xxxx0011b
                         11 DMARQ3/RxD = RxD; DMAAK3/TxD = TxD; INTAK/SRDY/TOUT1 = SRDY
                       00 INT1 = INTP1 Pin; INT2 = INTP2 Pin
0FFFDH OPSEL  0Fh; xxxx1111b - all peripherals Enabled
0FFFCH OPHA = 00h; Ports at zero seg.area 00xxh
0FFFBH DULA = 10h; DMA control unit       0010h
0FFFAH IULA = 20h; Interrupt control unit 0020h
0FFF9H TULA = 40h; Timer/counter unit     0040h
0FFF8H SULA =0F0h; Serial control unit    00F0h non standart (Math Coprocessor)
0FFF7H reserve FF
0FFF6H WCY2 = 05h;
0FFF5H WCY1 = 55h;
0FFF4H WMB  = 55h;
0FFF3H reserve FF
0FFF2H RFC  = 86h;
0FFF1H reserve FF
0FFF0H TCKS = 1Ch;
Видно, что Serial control unit - последовательный адаптер перекрыл адреса,
характерные для Math Coprocessor-а, которого на плате, впрочем, и нет...

Ну а что делают остальные настройки в этих системных регистрах, можно подробно
посмотреть в мануале на процессор NEC V40 uD70208L-8, который доступен в сети.


PS. Кстати, сама плата в данный момент имеет вот такой вид (ПЗУ снимал для чтения):


Увеличить
iLavr