User Tag List

Показано с 1 по 10 из 2727

Тема: Цифровая археология: 1801 и все-все-все

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,514
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    715
    Поблагодарили
    597 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    потому что реверс 1806ВМ2 никто не делал
    Vslav, в планах нет?

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

  3. #2

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Vslav, в планах нет?
    Нету. Реверс штука дорогая, все подряд реверсить не будешь
    1801ВМ2 есть - и то хорошо.

    - - - Добавлено - - -

    Цитата Сообщение от forth32 Посмотреть сообщение
    Теперь цепочка тестов все равно завершается сообщением "ДЕФЕКТ НЕЗАПЛАНИРОВАННОЕ ПРЕРЫВАНИЕ"
    Это не может быть прерывание от таймера? Отключено?

    Цитата Сообщение от forth32 Посмотреть сообщение
    на это незапланированное прерывание можно было бы плюнуть. Но тут уже дело принципа.
    Конечно, надо добить, такой путь уже прошли, было бы обидно бросить.

    Цитата Сообщение от forth32 Посмотреть сообщение
    Тогда уж заодно внесите и исправление в контроллер прерываний, о чем я тут уже писал
    Да, я помню. Но там не мгновенно - надо всю структуру проектов переделывать. Сейчас 3 процессора и 7 плат - и в итоге 21 проект, и еще процессор и три платы на подходе (С5, династия Тан и IGLOO) - будет 4x10 - 40. Перебор, и оно будет квадратично продолжаться с ростом матрицы, вот думаю как это все в линейный рост перевести.

  4. #3

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Это не может быть прерывание от таймера? Отключено?
    Конечно отключено. Я пробовал включить - сообщений о незапланированном прерывании становится меньше, и при каждом запуске их количество начинает меняться. Что-то странное происходит с прерываниями.
    Я уж думаю - может быть, это я неправильно управление памятью настроил? В документации на МС1201 информации об карте памяти практически нет, а схемотехнически все это спрятано в микросхеме D39 по имени 1801ВП1-013.
    Из всхех кусочов информции, что удалось собрать, я предопложил, что

    в юзерском режиме:
    000000 - 157776 - RAM
    160000 - 177776 - страница ввода-вывода с портами устройств

    В режиме пульта:
    000000 - 137776 - ничего нет
    140000 - 157776 - ПЗУ 055
    160000 - 177776 - RAM
    Портов в этой конфигурации вообще нет, поэтому монитор с портами общается только через спецкоманды чтения-записи userspace.
    И, судя по дизассемблированной части монитора, я если и ошибся, то не очень сильно. Буду в выходные искать дальше, откуда лезут эти незапланированные прерывания.
    Да, я помню. Но там не мгновенно - надо всю структуру проектов переделывать
    Насколько я понял, этот контроллер прерываний специфичен именно для ВМ2, поскольку через него реализовано безадресное чтение. У ВМ1 такого нет, а про LSI я не в курсе. И именно в реализации безадресного чтения и допущена ошибка.
    По-моему, достаточно исправить 1 файл vm2/hdl/wbc/lib/wbc_vic.v, он общий для всех плат, поддерживаемых этим проектом.

  5. #4

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от forth32 Посмотреть сообщение
    в юзерском режиме:
    000000 - 157776 - RAM
    160000 - 177776 - страница ввода-вывода с портами устройств

    В режиме пульта:
    000000 - 137776 - ничего нет
    140000 - 157776 - ПЗУ 055
    160000 - 177776 - RAM
    Вроде бы правильно.

    Цитата Сообщение от forth32 Посмотреть сообщение
    По-моему, достаточно исправить 1 файл vm2/hdl/wbc/lib/wbc_vic.v, он общий для всех плат, поддерживаемых этим проектом.
    А должен быть вообще один для всех плат и процессоров, с параметризацией. LSI тоже его использует (но не использует безадресное чтение).

    Надо ковырять 055 чтобы понять когда выводится сообщение о незапланированном прерывании и пытаться поймать это место.

    Эти 2 пользователя(ей) поблагодарили Vslav за это полезное сообщение:

    forth32(02.07.2020), hobot(02.07.2020)

  6. #5

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Надо ковырять 055 чтобы понять когда выводится сообщение о незапланированном прерывании и пытаться поймать это место.
    Да место-то как раз более-менее понятно...
    Если опираться только на результат дизассемблирования, то пока видна единственная ситуация, в которой это может произойти. Получается, что при выходе из прерывания по RTI не восстанавливается бит 8 PSW, управляющий режимом user/halt. В результате управление уходит не в монитор а хрен знает куда - по адресу 170004 в юзерском пространстве ничего нет, возникает таймаут шины и незапланированный вылет по вектору 4. Обработчик вектора 4 выводит сообщение о незапланированном прерывании и делает RTI, и далее все по кругу несколько раз, пока стек не затрет какие-то куски кода в памяти.
    Как вариант, бит 8 может быть и восстанавливается, но при этом не поднимается бит wb_adr[16] (который бывший SEL) - тогда не переключается карта памяти с теми же самыми последствиями.
    В выходные постараюсь написать тестовую программку, моделирующую эту ситуацию, тогда станет понятнее. Может быть, я и не прав. Тут надо тщательно разбираться.

    Эти 2 пользователя(ей) поблагодарили forth32 за это полезное сообщение:

    Vslav(02.07.2020), yu.zxpk(02.07.2020)

  7. #6

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от forth32 Посмотреть сообщение
    Да место-то как раз более-менее понятно...
    Если опираться только на результат дизассемблирования, то пока видна единственная ситуация, в которой это может произойти. Получается, что при выходе из прерывания по RTI не восстанавливается
    В тестовой SoC есть прерывания от таймера, я проверю восстановление PSW8 и адрес wb_adr_o[16].

  8. #7

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    В тестовой SoC есть прерывания от таймера, я проверю восстановление PSW8 и адрес wb_adr_o[16].
    Да тут аппаратные прерывания как таковые для проверки не нужны.
    Тут такая ситуация. Монитор по команде Т переписывает весь тестовый код из ПЗУ в младший банк ОЗУ и передает туда управление командой START. Далее отрабатывается тест, и затем происходит возврат в монитор вот таким способом:
    Код:
    ROM:002306                      loc_2306:                                                   ; CODE XREF: sub_1570+104↑J
    ROM:002306                                                                                  ; default_int_handler+20↑J ...
    ROM:002306 012746 000740                        mov     #740, -(SP)
    ROM:002312 012746 170004                        mov     #loc_170004, -(SP)
    ROM:002316 000002                               rti
    По адресу 170004, а это теневой банк ОЗУ, лежит команда JMP на бесконечный цикл обработки пультовых команд. И вот в этот момент, после RTI, и происходит незапланированное прерывание. Понятно, что если сигнал SEL не поднимется, то так и будет - после RTI управление уйдет на несуществующие адреса.

    Надо это дело проверить. Я написал простенькую тестовую программку:
    Код:
                    .WORD   START
                    .WORD   0 
                    .=      100
    START:                
                    MOV     #410,SP        
                    MOV     #740,-(SP)
                    MOV     #RMON,-(SP)
                    RTI
    RMON:
                    MOV     #MSG2,R3
                    CALL    printstr
                    MFPS    R3
                    CALL    PNUM          
    STOP:                
                    BR      STOP
    MSG2:          .ASCIZ  <15><12>"* PSW = "
    Эта программка моделирует вышеописанный возврат в монитор - заталкивает в стек PSW с поднятым 8 битом. Запускаю. В терминале:
    Код:
    * PSW = 177744
    Вроде все правильно, бит 8 PSW установился.
    Дальше чисто программными способами, без изменения схемы, не проверить. У меня на моей плате есть 4 светодиода. Я подвесил на один из них бит 16 адреса:
    Код:
    reg [16:0] indaddr;
    always @ (posedge wb_stb) indaddr [16:0] <= wb_adr [16:0];
    assign led0=indaddr[16];
    Запускаю схему - светодиод не светится. То есть adr[16]==0. А поскольку программа в конце зацикливается и начинает топтаться по одним и тем же адресам, то все транзакции на шине должны быть с wb_adr[16]==1, и светодиод должен ярко светиться.
    Вот она, проблема.
    Остается промоделировать все это в моделсиме. Осциллограмму сюда я вставлять не буду, бесполезно это, прикладываю ее в архив. На ней хорошо видно:
    1. Процессор читает слово 740 с адреса 000406. Это он из стека достал новый PSW.
    2. По адресу 000116 читается 12703. Это уже выбирается первая команда после возврата по RTI. Адрес - именно 000116, ,бит 16==0, то есть перехода в режим пульта не было. Хотя в PSW бит 8 поднялся.

    Вот и все мои на данный момент изыскания. Прикладываю архив с тестовой программкой. Конечно, запускать ее имеет больше смысла в симуляторе.
    Вложения Вложения
    • Тип файла: 7z adr16.7z (31.4 Кб, Просмотров: 63)

    Эти 4 пользователя(ей) поблагодарили forth32 за это полезное сообщение:

    anasana(03.07.2020), hobot(03.07.2020), Vslav(03.07.2020), yu.zxpk(03.07.2020)

  9. #8

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,514
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    715
    Поблагодарили
    597 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Нету. Реверс штука дорогая, все подряд реверсить не будешь
    Жаааль Но понять можно У самого времени на всё не хватает...

  10. #9

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    У самого времени на всё не хватает...
    Отож. Но если желающие реверсить будут - то сфотаем кристалл 1806ВМ2, это можно себе позволить

  11. #10

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,514
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    715
    Поблагодарили
    597 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    если желающие реверсить будут
    У меня то желание есть, но вот времени, увы... И даже не предвидится... И до пенсии ещё далеко

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

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

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

Похожие темы

  1. Ответов: 7
    Последнее: 28.06.2014, 17:50
  2. Микросхемы МПК 580,1801,1810 и другие...
    от Alex_Vac в разделе Барахолка (архив)
    Ответов: 44
    Последнее: 07.04.2012, 08:03
  3. ЦИФРОВАЯ МУЗЫКА НА ZX
    от AAA в разделе Музыка
    Ответов: 98
    Последнее: 18.09.2011, 22:33
  4. Учебный стенд УМПК-1801
    от dk_spb в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 12.05.2010, 16:52
  5. Цифровая музыка от Вадима Ермеева
    от zxmike в разделе Музыка
    Ответов: 2
    Последнее: 06.08.2007, 23:13

Метки этой темы

Ваши права

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