Форум: "Потрепаться";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];
ВнизОтлаживаю 186 - проблемка :( Найти похожие ветки
← →
HolyGlory (2003-06-24 11:53) [0]Вообще, по спецификации, после reset регистры ax,bx,cx,dx,si,di,bp,sp,ip сбрасываются в ноль. Также в ноль сбрасываются ds,es,ss. cs сбрасывается в 0xffff. Т.Е. ентри поинт - $ffff:$0000. Теперь вставляю туда retf (0xCB) - по идее должен произойти вызов int 0. (Т.е из стэка выталкиваются четыре байта с $0000:$0000 по $0004 - один cs, другой ip) - а там уже лежит значение 0x00001000 - т.е. переходим по адресу $0000:$1000. Только вот этого перехода не случается :( После того, как проц получает эти четыре байта, sp как и надо устанавливается в 0x0004, но проц после этого зачем-то запрашивает по шине слово по адресу 0xFFFFC (там тоже лежит 0xCBCB). После этого несколько тактов происходит что-то непонятное, после чего cs устанавливается в эти самые 0xCBCB (????), на а дальше начинается расколбас. Где я облажался?
← →
Anatoly Podgoretsky (2003-06-24 12:13) [1]Там ничего еще не лежит
← →
HolyGlory (2003-06-24 12:17) [2]НЕ понял?
Первые четыре байта памяти 0x00001000
Послендие 16 байт - 0xCBCBCBCB....CB
по адресу $0000:$1000 лежит какая-то программа - только управления она не получает :(
При подаче reset сброса памяти не происходит (flash).
← →
Anatoly Podgoretsky (2003-06-24 12:28) [3]Откуда там возьмется 0x00001000 после сброса и так по адресу $0000:$1000, у тебя что там ПЗУ?
INT 0 и retf это абсолютно разные вещи и работают по разному.
← →
HolyGlory (2003-06-24 13:08) [4]Первые 64кб - флэш память (ПЗУ, если так хочется... - вообще у меня reset проца отдельно от mem-ctrl). Я вот хочу понять ошибка у меня в ДНК или я что-то с процом не так сделал? После reset все регистры устанавливаются в ноль, кроме cs - тот уст. в 0xffff. При выполнении retf действительно должен происходить переход по адресу $0000:$1000, если в первых четырех байтах находится 0x00001000???? (а последние 16 байт - 0xCBCB... - на уровне контроллера памяти). Я понимаю, что int 0 (0xCD00) и retf(0xCB) - разные вещи. Но в данном случае должно ли передаватся управление на обработчик нулевого интеррапта или нет?
← →
Anatoly Podgoretsky (2003-06-24 13:20) [5]А как насчет программы по адресу 0000:$1000 она не ожидает, что к ней будут обращаться через вектор прерывания, с соответсвующим состоянием стека и его фрейма, а они разные для этих случаев, кроме того она не собирается писать в стек, который у тебя в ПЗУ?
← →
HolyGlory (2003-06-24 13:31) [6]Fuck! Фишка в том, что там находится именно загрузчик! Она как раз ожидает, что к ней перейдет управление, при ss=0, sp=4, и что в сэк писать нельзя. Надо сперва sp поменять. Она не ожидает, что ее вызовут как Int 0 - и хрен с ним. У нас никогда не будет division by zero!
Только ПРОБЛЕМА НЕ В ЭТОМ!!! Программа управления не получает вообще!!!!!!!!!!!!!!!!!!! Симптомы я описал.
← →
HolyGlory (2003-06-24 13:31) [7]ЗЫ
ПЗУ и Flash - все же разные вещи.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c