Альтернативная система на 68000 :)

Motorola 6800, 6809, 68HC05, 68HC08, 68HC11 и m68k, а также компьютеры на них (Amiga, Macintosh, Palm etc.)

Moderator: Shaos

Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

Еще схемы:

Еще осталось - узел системной ПЛИСы, и узел периферийного контроллера с интерфейсами... но их еще нужно привести в нормальное состояние
You do not have the required permissions to view the files attached to this post.
Last edited by Annett on 19 Apr 2017 08:18, edited 1 time in total.
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Альтернативная система на 68000 :)

Post by angry_troll »

Альтеры можно кстати в жтаг-цепочку соединять, и шить любую через один общий разъём
привет засранцу лавру :)
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

Да :) Просто когда дошло дело до разводки прошивалок, оказалось что уже негде протащить сигналы... И вторая (основная) причина - я так еще никогда не делала, и решила сделать ранее проверенный вариант - каждой ПЛИСе свой разъем, чтобы не наделать чего-нибудь неправильного и не резать дорожки:)

А еще лучше конечно вместо трех штук max2 просто поставить один Циклон. И сделать еще самопрошивку с SDкарточки.

Ничего, всё еще будет.
я же только-только учусь работать с ПЛИСками... но уже понимаю, что это очень крутая и прикольная штука...
Last edited by Annett on 19 Apr 2017 08:19, edited 1 time in total.
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

заработало (радость!):
+разделение кода на супервизорский и пользовательский
+разделение привилегий доступа к памяти (к аппаратным регистрам доступ пока не разделяется). юзерский код ничего не может сделать с ядерным ОЗУ. И даже не может его читать и сделать туда переход :)
(в системной ПЛИСе идет разбор - кому принадлежит текущий цикл шины, и если он юзерский, то ядерная часть ОЗУ закрывается на доступ и генерируется исключение по линии /BERR - юзерский код безжалостно прибивается).
+снятие выполнения юзерского кода через Ctrl-Alt-Del с выпадением в менюшку ядра супервизора
+при выпадении исключения под юзерским кодом приделала возврат в супервизор по нажатию ESC, где можно пустить юзерский код на исполнение заново без перезагрузки :) Или можно перезагрузиться, если хочется.
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

Появилась такая идейка.
Для простой и удобной отрисовки всяких сложных графических интерфейсов сделать макро-функцию, которая будет исполнять некий "шитый код" из ссылок на дескрипторы графических примитивов.
Например,
есть прим "рисование линии", который описан табличкой:
$0B - опкод "рисование линии"
$10 -цвет
X1,Y1,X2,Y2 - координаты начала-конца
FFFFFFFF - битовая маска

Следующий прим - "рисование закрашенного полигона" - и снова описанный опкодом с его параметрами.
и таких примитивов есть например штук 20, и они лежат в памяти в разных местах и могут быть разной длины.

Дальше: сделать табличку, в которой подряд записаны ссылки на эти дескрипторы примов. И в ее конце - маркер 00, означающий конец таблицы.

Можно сделать системный вызов через ЕМТ, например emt SYSTEM_graphics_macro, который будет за одну команду сразу отрисовывать сколько угодно всего, рисовать окошки, писать всякие там тексты и всё такое, вплоть до картинок, графиков и сглаживаний.

lea GR_descriptor_table1, a0
emt SYSTEM_graphics_macro

Под этим ЕМТ уже будет выполняться много кода, который по очереди будет запускать графические функции, загружать работой ПЛИСу и всё такое.

Будет удобнее, чем кодить множество команд чтобы нарисовать какое-то окошко.
И еще тогда можно будет рисовать интерфейсы вообще как некоторую отдельную сущность, сохраняя всё просто в файл с такими табличками и опкодами графических функций.
Так вот и получится почти Си :)

Как-нибудь попробую сделать.. Сейчас что-то снова нет ни времени ни душевных сил...
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

Общий концепт расширения системы (если когда-нибудь до этого дойдет) - горизонтальный стек - "этажерка" плат друг над другом, со сквозными разъемами в стиле PC/104.

Мне не очень нравятся краевые коннекторы в стиле PCI/ISA/и т.д. - с ними часто возникают проблемы с надежностью контакта, слотовые разъемы дорогие, золочение плат дорогое, и всё такое :( А еще это дает слишком большой объем корпуса и проблемы с механическим креплением (основная причина).
You do not have the required permissions to view the files attached to this post.
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Альтернативная система на 68000 :)

Post by angry_troll »

А на карту памяти девайса можно полюбоваться? :)
привет засранцу лавру :)
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

Конечно же можно :)
Пока вот так:
(есть мысль перенести VRAM "наверх", куда-нибудь на $D00000)
(добавила еще файл описания регистров - но он еще очень сырой, и еще будут его доработки. И там не описаны графические регистры - их пока держу только в голове и в исходниках на верилоге :)))

000000..00FFFF SYSTEM RAM (PRIVILEGED ACCESS) 64Kbytes
010000..07FFFF USER RAM-0 448Kbytes
080000..0FFFFF USER RAM-1 512Kbytes [optional]
100000..1FFFFF -- reserved
200000..27FFFF VRAM 512Kbytes
280000..2FFFFF graphics subsystem registers
300000..3FFFFF -- reserved
400000..4FFFFF FLASH MEMORY #0 [optional]
500000
600000
700000
800000
900000
A00000
B00000
C00000
D00000
E00000
F00000..FFFFEF reserved, system registers area

и сразу - карта IRQ:

IRQ0 rhytm generator
IRQ1 timer-1
IRQ2 timer-2
IRQ3 timer-3
IRQ4 peripheral controller event (ATMEGA128)
IRQ5 GPIO chip (external IRQ)
IRQ6 external IRQ_A (system bus)
IRQ7 Video vertical retrace
IRQ8 DMX512 TX
IRQ9 RS232 RX
IRQ10 MIDI-1 RX
IRQ11 MIDI-2 RX
IRQ12
IRQ13 RS232 TX
IRQ14 MIDI-1 TX
IRQ15 MIDI-2 TX
IRQ16
IRQ17 external IRQ_B (system bus)
IRQ18 external IRQ_C (system bus)
IRQ19 SD card
You do not have the required permissions to view the files attached to this post.
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Альтернативная система на 68000 :)

Post by angry_troll »

О, гуд, спасибо!
Мои 5 копеек: прямая адресация областей FF8000...FFFFFF и 000000...007FFF у мотороллера идёт через адрес в одно слово, в отличие от остальной памяти. Не было бы удобно запихать все HW-регистры скажем в FF8000..FFFFFF (если влезут), раз уж в 000000..007FFF память полюбому живёт...
Но это так, мысли вслух, ни разу не критика.
привет засранцу лавру :)
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

Сейчас у меня там регистры расположены так (вот def- файлик):

;Hardware CPLD registers and memory mapping
;-------- System registers

_INTERRUPT_POLL_CLEAR_REGISTER equ $FFFF00
_INTERRUPT_POLL_CLEAR_REGISTER_H equ $FFFF00
_INTERRUPT_POLL_CLEAR_REGISTER_L equ $FFFF02
_INTERRUPT_MASK_REGISTER equ $FFFF04
_INTERRUPT_MASK_REGISTER_H equ $FFFF04
_INTERRUPT_MASK_REGISTER_L equ $FFFF06
_INTERRUPT_CONTROL_REGISTER equ $FFFF08

; reserved equ $FFFF0A

_RANDOM_NUMBER_GENERATOR_REGISTER equ $FFFF0C
_REAL_TIME_CLOCK_I2C_REGISTER equ $FFFF0E

; reserved equ $FFFF10

_TIMER1_CONTROL_REGISTER equ $FFFF12
_TIMER2_CONTROL_REGISTER equ $FFFF14
_TIMER3_CONTROL_REGISTER equ $FFFF16
_PERIPHERAL_CTRL_SPI_DATA_REG equ $FFFF18
_PERIPHERAL_CTRL_SPI_DATA_REG_H equ $FFFF18
_PERIPHERAL_CTRL_SPI_DATA_REG_L equ $FFFF1A
_PERIPHERAL_CTRL_SPI_CONTROL_REG equ $FFFF1E
_SD_CARD_1_DATA_REGISTER equ $FFFF20
_SD_CARD_1_CONTROL_REGISTER equ $FFFF22
_SD_CARD_0_DATA_REGISTER equ $FFFF24
_SD_CARD_0_CONTROL_REGISTER equ $FFFF26
_RHYTM_GENERATOR_K_REGISTER equ $FFFF28
_RHYTM_GENERATOR_K_REGISTER_H equ $FFFF28
_RHYTM_GENERATOR_K_REGISTER_L equ $FFFF2A
_RHYTM_GENERATOR_CONTROL_REGISTER equ $FFFF2C

; reserved equ $FFFF2E

_RS232_RX_CONTROL_REGISTER equ $FFFF30
_RS232_RX_DATA_REGISTER equ $FFFF31
_RS232_TX_CONTROL_REGISTER equ $FFFF32
_RS232_TX_DATA_REGISTER equ $FFFF33
_MIDI1_RX_CONTROL_REGISTER equ $FFFF34
_MIDI1_RX_DATA_REGISTER equ $FFFF35
_MIDI2_RX_CONTROL_REGISTER equ $FFFF36
_MIDI2_RX_DATA_REGISTER equ $FFFF37
_MIDI1_TX_CONTROL_REGISTER equ $FFFF38
_MIDI1_TX_DATA_REGISTER equ $FFFF39
_MIDI2_TX_CONTROL_REGISTER equ $FFFF3A
_MIDI2_TX_DATA_REGISTER equ $FFFF3B
_DMX512_TX_CONTROL_REGISTER equ $FFFF3C
_DMX512_TX_DATA_REGISTER equ $FFFF3D

; reserved equ $FFFF3E


;-------- Graphics subsystem

_VRAM_START_ADDRESS equ $200000
_TEST_LED_REGISTER equ $2FFF00
_RAMDAC_PALETTE_INDEX_REGISTER equ $2FFF06
_RAMDAC_PALETTE_RAM_REGISTER equ $2FFF04
_RAMDAC_PIXEL_MASK_REGISTER equ $2FFF02

_GFX_SOURCE_X_REGISTER equ $2FFF08
_GFX_X1_REGISTER equ $2FFF08
_GFX_SOURCE_Y_REGISTER equ $2FFF0A
_GFX_Y1_REGISTER equ $2FFF0A
_GFX_DESTINATION_X_REGISTER equ $2FFF0C
_GFX_X2_REGISTER equ $2FFF0C
_GFX_DESTINATION_Y_REGISTER equ $2FFF0E
_GFX_Y2_REGISTER equ $2FFF0E
_GFX_LENGTH_REGISTER equ $2FFF10
_GFX_COLOR_REGISTER equ $2FFF12
_GFX_BIT_MASK_REGISTER equ $2FFF14 ;$2FFF14 and $2FFF16

_GFX_COMMAND_STATUS_REGISTER equ $2FFF28

_OVERLAY_CROSS_POINTER_X_REG equ $2FFF30
_OVERLAY_CROSS_POINTER_Y_REG equ $2FFF32
_OVERLAY_CROSS_POINTER_CTRL_REG equ $2FFF34


Они уже и так частично там наверху (кроме графических регистров).
Можно и графические отправить например на $FFF0xx, и всё :)

А внизу с 00000 - да, память уже живет, и ее лучше там и оставить.

Спасибо за рекомендацию:)
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

Закодила отрисовку по списку дескрипторов примитивов.
И еще приделала ЕМТ-функцию завершения пользовательского кода с выходом в систему. Не знаю зачем, но пусть будет.
You do not have the required permissions to view the files attached to this post.
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

Неприятные новости. Изредка (раз в несколько часов) падаем в исключение:
Image
Уже давно не было ничего такого...А тут - раз и привет, вот такая радость и счастье(((
Как же я нелюблю такие спонтанные редкие глюки. Самое мерзкое, что бывает в электронике...

Сделала дамп всего-всего. Для этого у меня есть специальная отладочная самодельная программка, которая через SPI, который эмулируется через LPT, может грузить отладочные микрокоманды в системную ПЛИСу, залезать в адресное пространство 68К через DMA и скачивать/записывать любые регистры и адреса памяти.
Image
Ничего плохого там не обнаружилось, всё замечательно.

При повторном запуске кода из-под супервизора без перезагрузки - всё работает снова, как и ни в чем ни бывало.
Ситуация очень подозрительна.
Вектор $53 -это IRQ19 (прерывание по смене пользовательской SD карточки). Которое вообще-то в настоящее время замаскировано (и это подтверждается содержимым регистра маски прерываний, задампленным вместе со всем остальным... )
И еще -это последнее по счету аппаратное прерывание (их всего 20), после которого производится завершение микроцикла перебора прерываний в ПЛИСе, и возврат к проверке IRQ0. Очень похоже, что есть какой-то противный глючок в этом месте контроллера прерываний...
Уффф. Дальше прямой путь в сторону проверки верилога контроллера прерываний, а также к написанию тестов и включению осциллографа... :|
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

angry_troll, по вашей рекомендации разместила графические регистры "наверху", теперь они будут с $FFFDxx.
;-------- Graphics subsystem
_VRAM_START_ADDRESS equ $D00000
_TEST_LED_REGISTER equ $FFFD00
_RAMDAC_PALETTE_INDEX_REGISTER equ $FFFD06
_RAMDAC_PALETTE_RAM_REGISTER equ $FFFD04
_RAMDAC_PIXEL_MASK_REGISTER equ $FFFD02

и т.д.

И заодно - видеопамять теперь тоже наверху, начиная с $D00000.
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Альтернативная система на 68000 :)

Post by angry_troll »

:roll:

А редкие проблемы с прерываниями случайно не пересинхронизацией (точнее отсутствием) асинхронных сигналов вызываются?
привет засранцу лавру :)
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: Альтернативная система на 68000 :)

Post by Annett »

Пересинхронизация самих прерываний под системный такт 16МГц там есть...

Единственное место, где нет пересинхронизации - это дешифрация шинного цикла запроса вектора прерывания и соответствующий внутренний сигнал, который асинхронно выдает на шину вектор и снимает флаг запроса. Можно сделать пересинхронизацию и туда. Еще есть примерно 100 свободных ячеек, как раз на всякие такие исправления :)

Но этот сигнал проходит уже после факта прохождения прерывания к 68-му... Значит первопричина неприятности не в этом сигнале. Скорее все-таки есть какой-то глючок в автомате сканирования флагов запросов. Или в генерации вектора... Пока я запомнила себе эту проблему, и хочу еще посмотреть - будет ли такое повторяться. Пока вот два дня работает и больше не собирается глючить... :( Очень хочется чтобы упало, но нехочет...