Важная информация

User Tag List

Страница 2 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 11 по 20 из 49

Тема: Идеология стандартизации развития принципов Z80 в HDL

  1. #11
    ZEK
    Гость

    По умолчанию

    Я тож думал над таким вариантом. (и не только я, Conan к примеру тож излогал подобные мысли) Так что идея популярна

    Но это имеет смысл только если проц железный, в случае если он в виде корки то необходимости особо нет городить огород. Да и этот метод всеравно не позволит востановить полостью контекст процессора. Прикол с скрытыми регистрами влияющими на флаги.

    Но из плюсов что можно привентить к жлезному процу в реальном спектруме, но раз приходится юзать FPGA то можно и весь проц туда засунуть

    Регистры отладки при обвешивании проца снаружи тож создает проблеммы, некоторые решаемы и только посфактум, а некоторые - тока скальпелем по TV80.

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

  2. #12
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Засовывать весь проц в FPGA имеет смысл в случае, если в FPGA места вагон, и засунуть туда проц компактнее, чем ставить его отдельно. Ну или если он на FPGA быстрее будет работать, чем оригинал.

    Почему ты считаешь, что не удастся восстановить полностью контекст процессора после NMI? Ты имеешь в виду флаги "IFF1" и "IFF2"? Это будет критично только для той программы, которая пользуется NMI для своей нормальной работы, а в стандартных схемах спека NMI не используется, следовательно никакая программа и не заметит ничего.

    Я когда-то делал сам монитор-отладчик на "Орель БК-08", который пользовался NMI. Без внешней аппаратуры мне удалось добиться полного восстановления контекста, за исключением 4 байт на вершине стека. И огромная практика пользования этим монитором показала, что очень-очень редко не удавалось восстановить контекст. Ну то есть сбоя легко добиться, разместив стек на адресах ПЗУ например, но очень редко какая программа так работала. Потому что без стека скучно

    Когда видно адрес выборки, то можно вместо той команды, которая должна была быть выбранной, подставить другую ("RST" - для непосредственного вызова отладчика, или NOP, а потом NMI). Потом скомпенсировать побочные эффекты программно (откатить на 1 PC и регистр R).

    Какие еще существуют нерешаемые проблемы?

    Я, конечно, не собираюсь все это реализовывать (надо, главным образом, много софта писать) - просто принципиальная возможность это сделать меня интересует

  3. #13
    ZEK
    Гость

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Ты имеешь в виду флаги "IFF1" и "IFF2"? Это будет критично только для той программы, которая пользуется NMI для своей нормальной работы, а в стандартных схемах спека NMI не используется
    Ну NMI используется где то больше геде то меньше. Есть 2 неиспользуемых бита в регистре флагов в которые попадает огрызки из внутренних буферных регистов. Целесообразность настолько сохранять контекст для меня в приципе тож загадка, но скажем потеря совместимости присуствовать будет.

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Засовывать весь проц в FPGA имеет смысл в случае, если в FPGA места вагон, и засунуть туда проц компактнее, чем ставить его отдельно. Ну или если он на FPGA быстрее будет работать, чем оригинал.
    Ну я изночально за проц в FPGA веду речь. Тоесть в какую сторону расширять его возможности, из тех которые могут быть полезными.

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Когда видно адрес выборки, то можно вместо той команды, которая должна была быть выбранной, подставить другую ("RST" - для непосредственного вызова отладчика, или NOP, а потом NMI).
    Согласен. Если заниматься отключение проца от шины принципе можно стопать и обращения к памяти). Но например останов по значению регистра уже будет некоторую проблемму составлять.

    Но это все огород необходимый для железного проца, для HDL корки можно боле простыми путями пойти. Я пытаюсь расматривать сабж именно со стороны что оно изначально будет жить в FPGA достаточной емкости. И я в принципе вижу основное требование - сохранение совместимости на том уровне на котором она щас.

    Возможно даже увеличение совместимости корки с железным подключением их паралельно и сравнивая состояние шины.

  4. #14
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от heroy Посмотреть сообщение
    Ну NMI используется где то больше геде то меньше. Есть 2 неиспользуемых бита в регистре флагов в которые попадает огрызки из внутренних буферных регистов. Целесообразность настолько сохранять контекст для меня в приципе тож загадка, но скажем потеря совместимости присуствовать будет.
    По-моему эти два бита проблемы для NMI не представляют. Первые команды обработчика:
    LD (save_sp),SP
    LD SP,isr_sp
    PUSH AF
    ...
    Насколько я знаю, такое сохранение контекста не портит никаких флагов, в том числе двух "огрызков". Или я ошибаюсь?

    Цитата Сообщение от heroy Посмотреть сообщение
    Согласен. Если заниматься отключение проца от шины принципе можно стопать и обращения к памяти). Но например останов по значению регистра уже будет некоторую проблемму составлять.
    Это да. Однако останов по обращению к памяти, по записи в память определенного числа по определ. адресу; по выборке определенной команды и тому подобные вещи делаются легко. На этом фоне мне кажется, что останов по регистру не может радикально улучшить положение.

    Повторяю: даже на простом NMI без аппаратных наворотов, вроде тех, что мы обсуждаем, я виртуозно ломал чужие проги и налаживал свои. Загвоздка сегодня именно в желании писать проги на Z80 (включая чудо-отладчик), а не в чем-либо другом.

    Цитата Сообщение от heroy Посмотреть сообщение
    Но это все огород необходимый для железного проца, для HDL корки можно боле простыми путями пойти. Я пытаюсь расматривать сабж именно со стороны что оно изначально будет жить в FPGA достаточной емкости. И я в принципе вижу основное требование - сохранение совместимости на том уровне на котором она щас.

    Возможно даже увеличение совместимости корки с железным подключением их паралельно и сравнивая состояние шины.
    Ну, как самодостаточный тренировочный проект - вполне неплохо. Я думаю, лучше сразу забыть про возможности какой-либо стандартизации. Ты и я - слишком мелкие фигуры, чтобы именно по нашим рекомендациям кто-то принял стандарт. Если кто-то еще захочет сделать нечто подобное - он вряд ли будет стремиться достичь совместимости с нашей поделкой. Потому что от этого не будет большой выгоды.

    А вообще - почему бы не назвать твой проект "внутрисхемный эмулятор Z80"?

    Скромно и со вкусом

  5. #15
    ZEK
    Гость

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Насколько я знаю, такое сохранение контекста не портит никаких флагов, в том числе двух "огрызков". Или я ошибаюсь?
    Интересный вопрос, учитывая что туда попадают огрызки внутреннего регистра адреса параметов. Вот и будет что потестить.

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Повторяю: даже на простом NMI без аппаратных наворотов, вроде тех, что мы обсуждаем, я виртуозно ломал чужие проги и налаживал свои.
    Я понял и идея мне предельно ясна.

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Я думаю, лучше сразу забыть про возможности какой-либо стандартизации. Ты и я - слишком мелкие фигуры, чтобы именно по нашим рекомендациям кто-то принял стандарт.
    Да название по сути своей слегка шуточное.

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

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

    В принципе все пункты реализовать по предложеной тобой варианту с NMI. На так как изначально HDL то можно писать "внутрисхемный эмулятор Z80". Но с обязательным условием не теряя совместимость ниже имеющейся.

  6. #16
    Banned Аватар для Black_Cat
    Регистрация
    15.06.2006
    Адрес
    S.Pb
    Сообщений
    5,791
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Я думаю, лучше сразу забыть про возможности какой-либо стандартизации. Ты и я - слишком мелкие фигуры, чтобы именно по нашим рекомендациям кто-то принял стандарт. Если кто-то еще захочет сделать нечто подобное - он вряд ли будет стремиться достичь совместимости с нашей поделкой. Потому что от этого не будет большой выгоды.
    Насамделе стандарт - эт не обязательно верх оптимальности, скорее уж верх компромиссности решений , к тому-же есть сугубо исторически сложившиеся стандарты, которые вообще говоря отбалдывозникшие . Дык что не боги горшки лепят, как слепите - так и будет стандарт .
    ..конечно лепить нужно с умом и по возможности по науке , тоды мож и насамделе "стандарт" в высоком понимании получится
    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    А вообще - почему бы не назвать твой проект "внутрисхемный эмулятор Z80"?

    Скромно и со вкусом
    насчёт "Идеологии стандартизации бла-бла-бла" эт heroy простебался, типо спародировал меня . Хотя насамделе ни про идеологию, ни про стандартизацию у него ничего сказано небыло. Но вот по этому поводу было-бы тож очень интересно услышать ваши мысли . То использование, что изначально предложил heroy - это разумное, но весьма частное решение на уровне концепции, в котором собсно идеология как направление развития z80 просматривается весьма туманно.
    Цитата Сообщение от heroy Посмотреть сообщение
    Цели приследуемая при модификации корки следующие:
    - возможность ставить трапы в области прошивок (к прмеру чтене сектора в TR-DOS)
    - возможность выгружать спековскую програму остановленную в любой момент на карту с возможностью потом востанавливать (снапшоты фактически)
    - отзываться на jtag, сюда входит ответная часть отладчика, загрузка чтение снапов.
    - должно быть что то в духе бивиса управляющие конфигурацие девайса (к примеру выводить на экран спековской раскладки клавы по нажатию на F1
    Тут уже более чётко видно какие есть идеи по направлению развития, хотя и фрагментарно. heroy, мож ты бы поделился в более-менее формализованном виде идеями, как по твоему должен развиваться z80, чтоб можно было в комплексе представить себе задачу?

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

  8. #17
    ZEK
    Гость

    По умолчанию

    Цитата Сообщение от Black_Cat Посмотреть сообщение
    насчёт "Идеологии стандартизации бла-бла-бла" эт heroy простебался, типо спародировал меня
    Над Клон.

    Цитата Сообщение от Black_Cat Посмотреть сообщение
    heroy, мож ты бы поделился в более-менее формализованном виде идеями, как по твоему должен развиваться z80
    Z80 это тока часть головоломки (но чуть ли не самая главная). Это просто результат декомпозиции задачи (возможно неверный).

    Я хачю так - запустил CodeBlocks нажал откомпилить Сишный код (sdcc), сделал джобик маленький что бы после компиляции консольная тулса залила результат в плату где типа вертится спектрум, на стороне спека ответная часть умеет пережевывать запросы и команды со стороны песюка. Понаставил бряк и они срабатывают, поколупался в переменных (которые могут в момент бряка быть как в регистре так и в памяти, это уже головная боль gdb), понял где я протормозил и т.д.

    Или как альтернатива сижу в программулине, нажал на клаве ESC и попал в дебагер как в анриле. Что проще будет это уже когда конкретно дойду до моментов реализации видно будет, или может кто то посоветует.

    Скромненько со вкусом, сомневаюсь что даже половину осилю Поэтому пытаюсь заюзать по максимуму готовое (sdcc, gdb, CodeBlocks, корки).

    Хорошо что есть в природе люди которым тож такой экстрим подуше и они помогают.
    Последний раз редактировалось ZEK; 11.10.2008 в 01:43.

  9. #18
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Все ясно, дорогие товарищи.

    Говоря о "внутрисхемном эмуляторе Z80", я имел в виду не столько название, сколько назначение, функциональность данного прибора. То есть по техническим требованиям, высказанных Heroy (аппаратные точки останова, JTAG и т.п.) виден классический набор требований к внутрисхемному эмулятору (ICE - In-circuit emulator - http://en.wikipedia.org/wiki/In-circuit_emulator)

    Внутрисхемные эмуляторы не преследуют цели "развить" архитектуру процессора, который эмулируют. Вместо этого они всего лишь предоставляют РАЗРАБОТЧИКУ (не пользователю) ПО для данной архитектуры возможности отладки.

    И если сформулировать главную задачу таким образом - не РАЗВИВАТЬ Z80, а сделать для Z80 внутрисхемный эмулятор (который представляет собой Z80 + отладочные регистры и т.д.) - то это будет правильнее. Для внутрисхемных эмуляторов не существует конкретных стандартов. Как сделаешь - так и будет. Лишь бы была совместимость отладочного харда и софта, которая в конечном счете позволяла бы разработчику эффективно вести наладку своих программ.

  10. #19
    ZEK
    Гость

    По умолчанию

    GdbServer местами работает. Короче маленька консольная утилитка которая выполняет роль посредника между USB-JTAG и TCP стеком (удаленная отладка). Пишется не так что бы сложно

    Начала копать с отсюда http://crossplatform.ru/?q=node/129#SEC110 и до победной
    Последний раз редактировалось ZEK; 13.10.2008 в 21:10.

  11. #20
    Member
    Регистрация
    12.10.2005
    Адрес
    San Francisco
    Сообщений
    144
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию От концепции к делу.

    Меня всегда мало интересовала идеология и концепции, по крайней мере в электронике, а интересовали практические решения. Но раз уже зашел разговор в этой теме о том о чем я сейчас задумался, то надо тут и обсуждать.

    Как я написал я почти довел до ума Спек на DE1 с поддрежкой ResiDOS.
    К моему удивлению большого интереса не вызвало, но наверное у всех у кого есть DE1 есть и возможность грузить программы.
    Так или иначе загрузка 128К SNA не работает и хочется понять почему, даже если никому не надо. Поскольку нет даже нормального монитора, я задумался о добавлении ICE к своей игрушке. Прикрутил JTAG для чтения/записи памяти и отладочных регистров. А теперь надо все это соединять с (soft) Z80.
    Пока я обдумываю как лучше это сделать. Уверен что многие на этом форуме имеют намного больше опыта отладки на Спеке, поскольку у меня такого опыта нет совсем. Но зато я знаю как удобно отлаживать через (JTAG) debug interface программы на процессорах которые такой интерфейс имеют. Например AVR.

    Остановить CPU по заданному условию очень легко. Сделать один шаг тоже. Но надо уметь читать регистры. Можно конечно в лоб подключиться ко всем регистрам железными средствами, но это громоздко. Поэтому думаю так:
    при срабатывании break-point на шину выдается FF. Адрес пишется в стек и z80 прыгает на 38h. В это время нижний банк заменяется на BRAM - встроенную память в FPGA. Там код который сохраняет все регистры в тот же блок памяти (его легко читать через JTAG) и ждет команды продолжить. Соответственно выполняется RETN с одновременным возвратом банка памяти. Можно проверять что SP показывает куда надо
    до форсирования RST38, но это почти всегда будет так.
    Еще полезно последние n адресов, данных и т.д. писать в кольцевой буффер.
    Есть лучше предложения? Кто нибуть хочет поучаствовать?

Страница 2 из 5 ПерваяПервая 12345 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 21
    Последнее: 27.09.2008, 14:48
  2. Ответов: 73
    Последнее: 18.09.2008, 05:35
  3. Ответов: 33
    Последнее: 29.07.2008, 21:06

Ваши права

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