TN80C186BE20 ...вдруг приспичило и нужна помощь

Тема в разделе "Флудилка", создана пользователем Igor68, 22 май 2019.

  1. Igor68

    Igor68 Гуру

    Доброго времени суток!
    Случилось так, что надо дизассемблировать и отладить по шагам... точнее пошагово пройтись по коду в ПЗУ(M27C1001 2 шт в корпусе DIP32) устройства на TN80C186BE20. Это следующий от x86 в этой линейке, т.е. 80186. Устройства на их основе пока тоже есть. Правда там же ещё и XC3030A-PC84BKJ вместе с памятью XC1736PC(корпус DIP8). Устройство не работает и... шина ADxx так же идёт и на эту ПЛИС(XC3030A). Ещё имеется и ОЗУ(U62256A dip28) 2шт. И ОЗУ и ПЗУ разделены на четные и нечётные адреса - ну это и логично. Для сборки прошивки в один файл применил самоделку вот эту:
    orand.zip
    Она компилиться под Linux и там же и работает. Чисто консольная приблуда для склеивания двух файлов в 1 имея чётные и не чётные дампы в файлах. Была попытка "пошагать" с помощью emu8086 под Windows... и вроде как дизассемблировал. Что-то криво выходит. Да и этот emu8086 сразу работает по адресу 0100:0000 и при первом же JMP(а он первый) уходит на C001:0000. Конечно понимаю, что делаю что-то не так.
    Звонят, позже допишу - работа!
     

    Вложения:

    • orand.zip
      Размер файла:
      1,1 МБ
      Просмотров:
      27
  2. Igor68

    Igor68 Гуру

    ...прошу прощения!
    Так вот этот эмулятор заточен(как и многие другие) на запуск файла с диска (типа com и exe) и соответственно располагает их в нужной для них области памяти. В моём случае ПЗУ c адреса 0000:0000 потому как после сброса счётчик команд 0 и сугмент кода 0, ну и другие кроме одного регистра. Надо пересмотреть даташит - не помню уже.
    Собственно и вопрос в том, что бы подсказали эмулятор/дизассемблер. Поиск неисправности в устройстве... надо ещё где-то для старенькой XC3030A что-то откопать, а то в новых они и не значатся:(
     
  3. DetSimen

    DetSimen Гуру

    Ты уверен? У Интела, при сбросе управление передаецца на F000:0000 или куда-то в ту степь, а вовсе не в 0.
     
    Последнее редактирование: 23 май 2019
  4. parovoZZ

    parovoZZ Гуру

    у 8051 уходит в самую жопу, то бишь на конец. А так как 8051 - это тоже интел, то котяра прав.
     
  5. Igor68

    Igor68 Гуру

    Как в начале сказал, что надо подсмотреть даташит, потому как не помню:
    snapshot35.png
    А ведь точно не помню. Вот подсмотрел.
    Мне нужен симулятор, где я выставлю эти значения. Либо они будут в начале работы. Но только не те, что будут установлены будто бы их загрузила некая (может быть и msdos) система, разместив в нужном месте озу на исполнение.
    Устройство имеет пзу с прошивкой и никаких загрузчиков и ос. Аналогично построен и весовой терминал ТЕНЗО-М ТВ-009. У меня сломалось устройство. Точнее я его доломал(оно было не рабочим -надо было восстановить) - не специально, но поставил одно пзу вверх ногами... и включил. Быстро увидел что что-то не то выключил, купил программатор chipprog-481 прочитал эти пзу и вообще прочитал другие компоненты на всех платах. И на то, что грешу решил проверить. Ранее слышал ещё при спектрум-48 кто-то так же путался, перезаписывал пзу в другую и всё было нормально. Кстати прежняя пзу перестала читаться позже. Имел бы прошивку не задавал бы такие глупые вопросы. Что же я сам виноват! Куда глядели мои глаза?!
    Вот и хотел эмулятором пройтись по коду шаг за шагом. Кстати IDA дизассемблирует, но там указывается 8086 и сразу 80286 и выше и результаты различны. А emu8086
    Снимок42.PNG
    Видите сразу 0100:0000 и это точно не то, что при сбросе. Кстати тут глупый код. Почему?
    А вот:
    snapshot36.png

    Видите там в начале JMP и за ним сразу некий массив, в котором текст.
    Так какой симулятор похожий на emu8051? Там как раз старт с момента сброса.
     
  6. parovoZZ

    parovoZZ Гуру

    Я извиняюсь. 8086 конечно же. Меня это всегда удивляло - зачем с конца?
     
  7. Igor68

    Igor68 Гуру

    Кстати, а почему данные предположительно целы? а вот:
    snapshot38.png

    Это как и в начале текст. Вот только всё это склеено из двух файлов, один это ПЗУ с чётными, а другой с нечётными половинками(адресами). Тут список сообщений, которые устройство выдаёт по RS232 в режиме теста/конфигурации. Сообщения корректны. В программе в начале имеются дампы одного из ПЗУ, который читался несколько раз программатором после недельного теста, а до этого ПЗУ было прочитано сразу до теста. Склеено от прочитанного сразу. Заменены регистры-защёлки, которые формируют адресную шину.
    Кстати про устройство:
    ABP DICU-2 50Hz,6pulse,Twinpower
     
  8. parovoZZ

    parovoZZ Гуру

    А что это?
     
  9. Igor68

    Igor68 Гуру

    Digital Inverter Controller Unit - контрллер инверторной индукционной печи ABP. На тиристорах. 6-ти импульсный выпрямитель трёхфазный - ну это и понятно. На каждый из 2-х индукторов по 2 тиристорных моста. Частота питающей сети 60 Гц. Twinpowet - могут работать сразу два индуктора автономно с разной мощностью. Резонансого типа. Устройство снято с производства и заменено на DICU-3. Если бы иметь дампы прошивки:rolleyes:. Вот меня угораздило:( Первый раз в жизни не так в колодку воткнул. Эх имей я программатор до этого события не парился бы. Но видите - они (такие программаторы) сейчас не в почёте в большинстве случаев.
     
  10. parovoZZ

    parovoZZ Гуру

    Не понял - а прочитанное ПЗУ из какого устройства?
     
  11. Igor68

    Igor68 Гуру

    Что же не понятного? Ведь ранее было упоминание, что сначала криво поставлено, потом включено и выключено, потом прочитано программаторм, потом старая ПЗУ вставлена на место, потом ковыряние с подачей питания(ну там осциллограф и т.п.), потом ещё раз прочино ПЗУ но уже чтение со сбоем (и прочитано многого раз), потом записана новая ПЗУ из самого первого чтения... и вот Всё! Хочу проверить в симуляцию по шагам и по возможности достать прошивку. И ещё проверить XC3030A, который по шинам адреса/данных тоже подключен. Кстати без XC3030A вообще не запускается. В Китае эти детали в наличии. И у нас можно найти, только XC и ПЛИС и Память от 5000р, а на али 300-500р. И XC3030A не отличается новизной - изделие проработало с 2008 года и ещё где-то лежало. Сейчас заменено на новое такое же устаревшее, но старое надо восстановить. Так и хочется с нового срисовать ПЗУ - версии идентичны и элементная база. Но на плате CPU-1 где всё это вся конфигурация в ОЗУ и питается от аккумулятора 3.6в. Озу статического типа.
    Так есть симулятор? Найти не могу - все для взлома исполняемых файлов. А мне надо стартовать BIN. Просто бинарник. Да ещё и 80186. Просто пошагать по коду.
    Устроит и под Linux и под DOS и под Windows.
    ???
    Заранее благодарен!
     
    Последнее редактирование: 22 май 2019
  12. DetSimen

    DetSimen Гуру

    Так я и не понял, от нас то чо нада?
     
  13. Igor68

    Igor68 Гуру

    Я конечно дико извиняюсь, но:
    И
    Прошу прощения, но я думал это вчера спрашивал...
    А на деле-то, только завтра спрошу...
     
  14. parovoZZ

    parovoZZ Гуру

    Блиииин. У меня на старом компе был симулятор под DOS. Но не помню - 8086 или 80186. Впрочем, тот комп давно продан... Был на дискете, но и дискета выброшена...
     
  15. DetSimen

    DetSimen Гуру

    Emu8086 ищи
     
  16. ZAZ-965

    ZAZ-965 Гуру

    @Igor68, у qemu можно подменять/отлаживать bios (опция -bios file #Set the filename for the BIOS).
    Гугл говорит, что есть опенсорсный Fake86 https://sourceforge.net/p/fake86/ Судя по коду - можно загружать свой bios или rombasic.
    В качестве дизассемблера в DOS времена использовал SOURCER http://old-dos.ru/files/file_1130.html
     
  17. Igor68

    Igor68 Гуру

    Спасибо, но в начальный адрес им пока бинарник разместить не выходит и состояние регистров не как после сброса. Выше картинка указана именно emu8086
     
  18. DetSimen

    DetSimen Гуру

    мда. Ну значить, как то я стал далёк от всего этого. Забываю всё, сколиоз головного мозга от пьянки случилса.
     
  19. Igor68

    Igor68 Гуру

    Fake86 с налёту пока не собрал. Может просто код подсмотреть, хотя это работа для работы.
    Sourcer - поверхностно посмотрел, но не вник.
     
  20. Igor68

    Igor68 Гуру

    Да нет Дружище в ряде случаев Ты прав. Действительно можно указать проект bin.
    и получить подобное:
    Код (Text):
    #make_bin#

    #LOAD_SEGMENT=0000h#
    #LOAD_OFFSET=0000h#

    #CS=0000h#
    #IP=0000h#

    #DS=0000h#
    #ES=0000h#

    #SS=0000h#
    #SP=FFFEh#

    #AX=0000h#
    #BX=0000h#
    #CX=0000h#
    #DX=0000h#
    #SI=0000h#
    #DI=0000h#
    #BP=0000h#

    ; add your code here

    org 0h

    m1: mov al,0
        add al,al
        jmp m1


    HLT
    Тут я на шару указал и загрузку и начальное состояние регистров - на шару я сделал. Откомпили, запустил:
    Снимок11.PNG
    Видите - размещено с нуля, как и в файле asm, что по шаблону. Мне же надо, уже готовый бинарник разместить по нулям. Но это на первый взгляд. Тут всё заточено для компиляции и отладки. А мне придёться дизассемблировать, корректировать, ассемблировать вновь и шагать по ходу исполнения, приглядываясь куда что он пишет и откуда что читает.