Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Контроллер Am186 (из серии 80186)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
Tronix286
Привет,

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



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

Железка сама по себе мертвая, не интересная в текущих реалиях, со следами ковыряния в районе стаба питания. На железке срама 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:



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



Причем похоже вроде на старт - там в прошивке идет первая команда перехода 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 сконфигурировать его так, как это сделал я, или нужно еще что-то где-то предварительно настроить? Мож ноги ему явно указать как-то надо, или не знаю, прерывания явно запретить? Можно ли как-то "пошагово" выполнять опкоды? Чтоб я хоть полностью шину данных мог посмотреть.

Спасибо.
mantech
Цитата(Tronix286 @ Mar 15 2015, 17:25) *
Сначала хотел просто сраму и флехи повыдирать, остальное в утиль. Но так как с 8086 у меня дружеские отношения (кодил давно в детстве на ассемблере) захотелось чего-то запустить железяку. Ностальгия что-ли давит, не знаю. Ну починил конечно питание, 5V там везде на плате, просто все. Адски грелась DM9102F, снял ее. Запаял панельки под EEPROM, чтоб удобнее шить было.


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

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

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


"Можно ли как-то "пошагово" выполнять опкоды? Чтоб я хоть полностью шину данных мог посмотреть." - данный проц работает со статической памятью, подавайте свои клоки с любой частотой и отлаживайте laughing.gif
Удачи!
Tronix286
Цитата(mantech @ Mar 15 2015, 18:33) *
Такую бы энергию да в мирное русло biggrin.gif Я понимаю, это для вас как хобби, но все-таки наверно былоб интереснее занятся чем-то более современным...


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

Цитата(mantech @ Mar 15 2015, 18:33) *
"Дальше там по середине неведомый чип EK10A002 SC001/58200001" - скорее всего логическая матрица, контроллер шины и портов принтера, доку не найдете - это ASIC.

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

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

Цитата(mantech @ Mar 15 2015, 18:33) *
"Можно ли как-то "пошагово" выполнять опкоды? Чтоб я хоть полностью шину данных мог посмотреть." - данный проц работает со статической памятью, подавайте свои клоки с любой частотой и отлаживайте laughing.gif
Удачи!



Ну не знаю, сомневаюсь что если я ему 1Гц буду подавать, он вообще стартанет. У него же свои внутренние регистры есть, кто знает как они тактуются внутри.. Я больше склоняюсь к тому, что можно какими-то сигналами типа HOLD удерживать шину на некоторое время, но не разобрался..
halfdoom
Лет 20 назад ковырял принт-сервер dlink с похожей схемотехникой - все что нужно, включая шевеление ножками портов висящими за ASICом, было почерпнуто/скопировано из дизассемблированной прошивки и бумажного даташита. Деталей конечно, не помню, но вроде никаких неожиданностей там нет. Писалось на голом АСМе.
mantech
Цитата(Tronix286 @ Mar 15 2015, 19:00) *
А мы занимаемся По работе плотно сижу на NXP и STM32. Но, честно говоря, нет какого-то ментального единения с железом.


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




Цитата(Tronix286 @ Mar 15 2015, 19:00) *
С портами там не все так просто. Плата - многослойка, поэтому срисовывается плохо.



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

Цитата(Tronix286 @ Mar 15 2015, 19:00) *
Ну не знаю, сомневаюсь что если я ему 1Гц буду подавать, он вообще стартанет.


Стартанет, еще как. Там по логике ничего особо выдающегося, после 8080 и Z80 не сделали. Судя по даташиту, при старте проц запускается в режиме PLL bypass, если подать тактировку на вход кварца Х1, частота проца будет в 2 раза ниже.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.