Перейти к содержанию
    

Контроллер Am186 (из серии 80186)

Привет,

 

Значит попала ко мне плата от какого-то старого принт-сервера с тремя LPT-портами. Выглядит так:

 

5435223b307e4aa199a4299f021e6da4.JPG

 

Большая фотка без рекламы без СМС

 

Железка сама по себе мертвая, не интересная в текущих реалиях, со следами ковыряния в районе стаба питания. На железке срама 611024 две штуки, под срамой две флехи 29F002. В этом же районе две защелки 74HC373 и самое интересное - камень Am186em-40, то есть 40MHz. Он в левом верхнем углу. Дальше там по середине неведомый чип EK10A002 SC001/58200001 и в правом верхнем углу PHY-ethernet DM9102F. И рассыпуха везде по мелочи.

 

Сначала хотел просто сраму и флехи повыдирать, остальное в утиль. Но так как с 8086 у меня дружеские отношения (кодил давно в детстве на ассемблере) захотелось чего-то запустить железяку. Ностальгия что-ли давит, не знаю. Ну починил конечно питание, 5V там везде на плате, просто все. Адски грелась DM9102F, снял ее. Запаял панельки под EEPROM, чтоб удобнее шить было. Считал оригинальную прошивку, по ней выходит, что принт-сервер вроде как от фирмы SerComm. Выложил на всякий случай сюда: https://dl.dropboxusercontent.com/u/3318932...rint_server.rar

 

И дальше стал искать, чего бы собственно прошить. Набрел на некий E86MON от самой AMD, еле нашел. Гуглится по названию архива ck000901.zip , скачивается с сайта datasheetsarchive (я удивился, что у них не только PDF хранятся, но и ZIP). Ну скачал, поднял виртуалку с досом и win3.11, поставил Microsoft C какой-то древний, MASM. Скомпилял, разделил на две половины чет/нечет, прошился. К процу подпаялся на ноги RX/TX. Включил - ничего не выводит в терминал.

 

Ладно, беру китай-клон Saleae восьмиканальный, паяюсь на шину AD0-AD7:

 

cf69fe6944544433b2a567fc3e6fdd24.JPG

 

Смотрю - движуха какая-то есть:

 

53a2eb428d3641698b99119a4b45d954.png

 

Причем похоже вроде на старт - там в прошивке идет первая команда перехода jpm far (0xEA), потом F8 - начало адреса сегмента. Между ними проскакивает сами адреса. Шина 16-ти битная, каналов всего 8 у анализатора - не могу всю картину увидеть. Но вроде движется что-то куда-то. Значит проц живой по идее.

 

Ладно, лезу в исходники того самого E86MON, хочу практически сразу после старта начать валить в UART какой-нибудь символ, пускай "2". Оставляю настройку UMCS и LMCS:

    mov     ax, CS_UMCS_512K+CS_WAIT3+CS_IGXRDY+CS_UMCS_RESERVED  ;ПЗУ-хи
    out     dx,al
; setup LMCS register to cover entire RAM area at 0 wait states
;
    mov     dx, CS_LMCS ;срама
    mov     ax, CS_LMCS_512K+CS_WAIT0+CS_IGXRDY
    out     dx,al

 

Дальше там прыжок на определение размера срамы, оставил его, и сразу после этого вставляю свой говнокодес:

serial_init: 
        
        mov ax,64   ; 19200 @40MHz
    mov dx,0FF88h
    out dx,al 
    mov ax,12    ; mode 1 asynchronous 8 N 1
    mov dx,0FF80h
    out dx,ax


forever:
    mov al,'2'
    call cout
    jmp forever
; send 8-bit character in al to terminal
; entry: al

cout:    push ax
    mov dx,0FF82h
    
cout1:    in  al,dx
    test al,40h; test TXE
    jz cout1; wait until TXE = 1
    
    pop ax
        mov dx,0FF84h
    out dx,al
    ret

 

Включаю - в терминале молчек. Смотрю в лог анализатор - на шине что-то молотит, но если сначала визуально идут разные команды, то спустя какое-то время визуально начинается повторяющийся паттерн - возможно крутит какой-то цикл, возможно мой цикл. Но в терминале - не але.

 

Руководствуюсь в основном вот этим документом: http://support.amd.com/TechDocs/19713.pdf

 

Вдруг кто работал с этими камнями: Достаточно ли для того, чтобы заработал UART сконфигурировать его так, как это сделал я, или нужно еще что-то где-то предварительно настроить? Мож ноги ему явно указать как-то надо, или не знаю, прерывания явно запретить? Можно ли как-то "пошагово" выполнять опкоды? Чтоб я хоть полностью шину данных мог посмотреть.

 

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сначала хотел просто сраму и флехи повыдирать, остальное в утиль. Но так как с 8086 у меня дружеские отношения (кодил давно в детстве на ассемблере) захотелось чего-то запустить железяку. Ностальгия что-ли давит, не знаю. Ну починил конечно питание, 5V там везде на плате, просто все. Адски грелась DM9102F, снял ее. Запаял панельки под EEPROM, чтоб удобнее шить было.

 

Такую бы энергию да в мирное русло :biggrin: Я понимаю, это для вас как хобби, но все-таки наверно былоб интереснее занятся чем-то более современным...

 

"Дальше там по середине неведомый чип EK10A002 SC001/58200001" - скорее всего логическая матрица, контроллер шины и портов принтера, доку не найдете - это ASIC.

 

Может сначала следовало портом подрыгать, а не сразу в уарт залезать??

 

 

"Можно ли как-то "пошагово" выполнять опкоды? Чтоб я хоть полностью шину данных мог посмотреть." - данный проц работает со статической памятью, подавайте свои клоки с любой частотой и отлаживайте :laughing:

Удачи!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такую бы энергию да в мирное русло :biggrin: Я понимаю, это для вас как хобби, но все-таки наверно былоб интереснее занятся чем-то более современным...

 

А мы занимаемся :biggrin: По работе плотно сижу на NXP и STM32. Но, честно говоря, нет какого-то ментального единения с железом. Вроде те же микроконтроллеры, но без души они. Все эти тонны прослоек, библиотеки, можно писать задней левой ногой, не думая о размере памяти или флеша. Короче, как будто на бейсике под винду пишешь, разницы мало. А душа просит брейнфака, чтоб 8 бит, 10-15 команд на все про все и тд. Чем хуже, тем лучше :biggrin: Чтоб думать надо было, когда пишешь.

 

"Дальше там по середине неведомый чип EK10A002 SC001/58200001" - скорее всего логическая матрица, контроллер шины и портов принтера, доку не найдете - это ASIC.

 

Может сначала следовало портом подрыгать, а не сразу в уарт залезать??

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

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

 

"Можно ли как-то "пошагово" выполнять опкоды? Чтоб я хоть полностью шину данных мог посмотреть." - данный проц работает со статической памятью, подавайте свои клоки с любой частотой и отлаживайте :laughing:

Удачи!

 

 

Ну не знаю, сомневаюсь что если я ему 1Гц буду подавать, он вообще стартанет. У него же свои внутренние регистры есть, кто знает как они тактуются внутри.. Я больше склоняюсь к тому, что можно какими-то сигналами типа HOLD удерживать шину на некоторое время, но не разобрался..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лет 20 назад ковырял принт-сервер dlink с похожей схемотехникой - все что нужно, включая шевеление ножками портов висящими за ASICом, было почерпнуто/скопировано из дизассемблированной прошивки и бумажного даташита. Деталей конечно, не помню, но вроде никаких неожиданностей там нет. Писалось на голом АСМе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А мы занимаемся По работе плотно сижу на NXP и STM32. Но, честно говоря, нет какого-то ментального единения с железом.

 

А вы попробуйте, как я, например imx6 с "нуля" запустить! :biggrin: "Развлечений" на год точно хватит...

 

 

 

 

С портами там не все так просто. Плата - многослойка, поэтому срисовывается плохо.

 

 

А причем тут многослойка?? Проц-то обычный QFP-100, там все ноги на виду. Не помню, в 186 есть-ли встроенный контроллер портов ВВ, или стояло что-то вроде 8255А, подключеного к шине. В вашем случае порты как раз могли быть заведены через ASIC. Хотя там есть какие-то 32 линии gpio.

 

Ну не знаю, сомневаюсь что если я ему 1Гц буду подавать, он вообще стартанет.

 

Стартанет, еще как. Там по логике ничего особо выдающегося, после 8080 и Z80 не сделали. Судя по даташиту, при старте проц запускается в режиме PLL bypass, если подать тактировку на вход кварца Х1, частота проца будет в 2 раза ниже.

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...