User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: железный debugger для z80 систем

  1. #1

    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию железный debugger для z80 систем

    помогите сочинить народную схему для subj

    тема уже не новая, както пытался обсуждать ее тут http://www.nedopc.org/forum/viewtopic.php?f=68&t=19660

    суть:
    ------------------------------------ скопировал старое сообщение оттуда-----------------------------------------------
    Возник тут у меня затык с одной платой (игровой автомат на основе MSX2 для игры в zanac-ex) при сбросе шото там происходит внутрях msx2 bios и оно зацикливается вначале вывода заставки MSX, как я понимаю приходит сигнал прерывания и после него шото там ломается... если сигнал прерывания оторвать от процессора то заставка MSX таки "выезжает" до конца но потом зацикливается уже в самом конце... долго я пытался шото понять че там происходит, советовали мне сделать типо как POST карточку (порт подключенный к семисегментному индикатору) и править прошивку чтоб знать до какого места оно доходит нормально а где дело идет уже не так как надо... но все это кажется мне негодящимся для такой проблемы.

    Чего задумал, подключить на шину Z80 самодельный компаратор сигналов с заданным pattern-ом и как токо на шине появляется нужное мне состояние выставлять ~wait_n. Ну и как-то ж потом надо считывать значения с шины значит и напрямую девайс должен уметь читать значения с шины. Ну и возможно в портах и памяти тоже надо уметь лазить, потому наверно еще надо как-то ~busreq_n задействовать. В общем думаю что UI для этой штуки должен обеспечивать сторонний комп (terminal?) а сама штука ввиду сложности скорее всего должна иметь MCU (отвечающий по serial наверно, или по USB что наверно излишество), по идее тут идеально ARDUINO подходит. Ну а вводить\выводить данные нужно будет наверно через i8255 + регистры? либо влепить сходу несколько штук i8255 (хотя там многие однонаправленные регистры будут, как минимум для stop-pattern-a, i8255 для таких будет overkill)

    Может ктото решал уже подобную задачу? Ктото знает про "штуку" с кучей i/o и управлением с компа?
    ----------------------------------------------------------------------------------------------------------------------------

    вот нарисовал в меру своего понимания схему, смотрите в attachment-e

    схему сопряжения с управляющим компом не рисовал, думаю ее сочинить будет легко, по сути надо обеспечить запись\чтение регистров из 2-х i8255 (у каждой микрухи 4 регистра, т.е. всего нужно 8 адресов)

    эти две i8255 висят на шине подопытного z80 компа, U1 может читать\писать значения с\на его шинны адреса и данных (при выполнении проги все порты включенны на ввод), U2 своими портами A и B может задать адрес точки останова (останов происходит по ~wait_n сигналу z80), эти порты всегда работают на выход (в связи с этим вначале думал влепить простые ИР23 но это усложнит схему и унификация програмного интерфейса которую дает применение i8255 тоже уйдет), порт С у U2 разделен на 2 части по 4bit-a, первая часть по идее может работать и на ввод и на вывод (PC0-PC3) устанавливая или читая ~rd_n ~wait_n ~mreq_n ~iorq_n, а вторая часть (PC4-PC7) должна работать только на вывод и устанавливать режимы работы, PC4 - для вкл\откл BREAKPOINT-a, PC5 - для CONTINUE, PC6 - для захвата шины z80 (по идее в этом режиме можно вместо самого z80 лезть в память и порты подопытного), PC7 - для генерации маскируемого прерывания (возможно тут на выходе потребуется влепить одновибратор чтоб укоротить ~int_n до нужного значения).

    пишите свои замечания, я не уверен вообще что достаточно знаю для сооружения такой штуки, может чего не понял и не знаю, подскажите еще что
    Вложения Вложения
    Последний раз редактировалось bigral; 08.03.2020 в 19:28.

    Этот пользователь поблагодарил bigral за это полезное сообщение:


  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    01.09.2019
    Адрес
    г. Ижевск
    Сообщений
    105
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    18
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ИМХО, я бы сделал без 8255 — на одной DIP40 avr'ке типа ATmega16 (их много и на них можно поставить среду Arduino) + USB UART свисток, моё любимое сочетание.
    Ещё момент — если доступ к памяти осуществляется через ULA, то иногда нужно точно имитировать поведение процессора, например, про Т34ВГ1 уже обсуждали в теме https://zx-pk.ru/threads/31140-chten...ati-omevm.html
    В частности, /WAIT у Т34ВГ1 — это, мне кажется, только выход.
    Последний раз редактировалось dvarkin; 09.03.2020 в 09:15.

  4. #3

    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не хватило бы i/o у atmega16, а i8255 и есть универсальные i/o расширители которые могут менять находу направленность, эти 2шт i8255 - абстракция програмного и аппаратного интерфейса на уровне 2 пачек регистров i8255, потом сам софт для дебага будет легче перенести на разные платформы и подключать хоть к спектруму, хоть к бк-шке, хоть к ардуине.

    Т34ВГ1 это процессор, ~wait_n у него должен быть входом, а иначе теряется изначальный смысл самого сигнала.

    по поводу доступа к памяти вместе с ULA, да тут такой простой схемы никак не хватит, надо мутить автомат на рт-шках и заводить на него сигнал /CLK (ну и ~wait_n) а процессор при этом держать в режиме dma...

  5. #4

    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,726
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    91 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Союз Arduino и классического процессора:
    https://habr.com/ru/post/446048/

    Этот пользователь поблагодарил caro за это полезное сообщение:

    murgatroid_79(11.03.2020)

  6. #5

    Регистрация
    01.09.2019
    Адрес
    г. Ижевск
    Сообщений
    105
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    18
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да-да, ошибся, в последнем абзаце #2 ВГ имелся ввиду.
    И с ATmega16 тоже не угадал, вот у ATmega8515 (также у ATmega161 и ATmega162) 35 GPIO — после ША и ШД останется 11 свободных, используем для UART 2 и получится 9, вроде, хватает, и шины нагружать не будет сильно.
    Однако, если будет написан софт для спектрума, то ВВ55 ИМХО оправдан, так уж и быть.

  7. #6

    Регистрация
    01.09.2019
    Адрес
    г. Ижевск
    Сообщений
    105
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    18
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А у STC12C5A60S2 (1T 80C51) GPIO даже больше!

  8. #7

    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а ктото может нарисовать схему "эмуляции" доступа z80 к шине (с учетом ~wait_n и clk сигналов)? схема должна уметь писать и читать ячейку памяти или регистр порта

  9. #8

    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    чето я тут поэксперементировал немного подумал и сделал вывод что такой debug можно сделать только для классической схемы на z80 (ну т.е. схемы в которой не применяются те хаки с задержкой clk которые применяют в zx spectrum), потому что если этот debug будет стопорить процессор по ~wait и потом читать что там процессор выставил на шину (какой адрес) и что там ему отвелила память то может произойти конфликт с ULA который по ~wait процессора естественно не стопорится и будет считан какойто мусор

    это правильные мысли? или я чегото не понял?

    кроме того dram висит прямо на шине данных и refresh происходит за счет регистра R процессора, т.е. такая схема явно не рассчитанна на длинное удержание ~wait (так как refresh dram будет невозможен), чтоб нормально стопорить на долгое время нужно чтобы был или SRAM которому пофиг сколько держать результат на выходе, либо регистр который бы сохранял результат чтения dram на нужное время не задерживая refresh dram (ну и тогда нужно по сути как-то сэмулировать на шине поведение SRAM а сигнал refresh процессора можно не использовать).
    Последний раз редактировалось bigral; 11.05.2020 в 01:23.

  10. #9

    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    365
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    лучше использовать BUSRQ имхо

  11. #10

    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shurik-ua Посмотреть сообщение
    лучше использовать BUSRQ имхо
    я так понимаю его нужно будет использовать при желании делать peek/poke, т.е. сначала процессор тормозиться по ~wait и можно глянуть что он там выставил на шину и куда обращается, потом ему устанавливаем busreq и после получения busack можем прочитать скажем следующие несколько байт для того чтобы показать дизассемблированный текст оператору с указанием текущего положения PC, потом отпускаем шину и отпускаем ~wait, схема single step которая учитывает сигнал /m1 таки нужна для того чтобы например выставить breakpoint на обращение к данным и потом сделавши step узнать откуда ж таки это обращение было сделано

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 10
    Последнее: 15.02.2020, 12:36
  2. Debugger УКНЦ
    от S_V_B в разделе ДВК, УКНЦ
    Ответов: 52
    Последнее: 05.05.2018, 20:52
  3. Железный раздел
    от Ewgeny7 в разделе Форум
    Ответов: 106
    Последнее: 10.02.2012, 19:14
  4. NEW MONITOR + DEBUGGER for allram
    от VELESOFT в разделе Софт
    Ответов: 7
    Последнее: 02.01.2009, 17:16

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •