Здравствуйте, Tunga, Вы писали:
T>Здравствуйте, Tunga, Вы писали:
T>>Здравствуйте, RedChief, Вы писали:
RC>>>Может кто-нибудь занимался программированием для однокристальных микроЭВМ (конкретно Motorola MC68HC11F1)?
RC>>>Если да, то подскажите, где физически будет размещена таблица векторов прерываний в расширенном режиме, если
RC>>>настроить внутреннюю память ППЗУ (EEPROM) так, чтобы она распологалась на странице $E в адресном простанстве
RC>>>(адреса $EE00 — $EFFF). Стандартно таблица прерываний лежит в $FFC0 — $FFFF. Можно ли физически прошить
RC>>>ее на подключаемую внешнюю память команд по этим адресам, чтобы при обращении по этим адресам (при обработке
RC>>>прерывания) адреса брались из этой внешний памяти.
RC>>>Всего можно адресовать 64K памяти. На камне расположено 1024byte RAM и 512byte EEPROM (флэшка).
RC>>>З.Ы. Если кто ничего не понял — я не виноватый, такое это уж дело тяжелое — программирование микроконтроллеров.
T>>Ты сам-то понял, чего спросил?
T>>Во-первых, флеш и еепром — два разных по физическим принципам носителя информации, Так же как скажем магнитная лента и компакт-диск. Учи матчасть.
T>>А во-вторых, нафига менять положение таблицы прерываний? Её положение должно быть фиксировано, иначе получится обычное дублирование: нужно будет создать некую предварительную таблицу, которая будет указывать на таблицу, в которой лежат истинные адреса обработчиков прерываний. То есть, для того чтобы отработать ресет процу нужно будет прыгать на адрес в предварительной таблице, оттуда на адрес в истинной таблице, и уже оттуда на адрес начала обработчика.
T>ЗЫ: Хотя должен признать, что разницы между EEPROM и FLASH мало
Но её достаточно, чтобы отличать две технологии друг от друга...
Ты сам-то понял что ответил?
Я же не спрашивал про то, как мне продублировать таблицу векторов прерываний или подменить ее. И уж точно я
не спрашивал про то, чем отличается EEPROM и FLASH, тем более, что несмотря на различие этих технологий, принципиально
они похожи очень, тем более когда они зашиты на камень производителем, и нас мало вонует, какую именно технологию там
использовали.
Я спросил как можно сделать так, чтобы адреса векторов прерываний в карте памяти не менять, а физически расположить
их на другом носителе, конкретно: на внешней памяти команд. В этой однокристалке адресное пространсто единое! А вот откуда
прочитаются данные, при обращении по какому-либо адресу — вот это вопрос.
И еще. Мне просто интересно, ты программировал когда-нибудь что-нибудь для однокристалок? Судя по ответу, ты разбираешься
в программировании на ASM, даже знаешь как подменить таблицу векторов прерываний (хотя я бы просто адреса в реальной
таблице поменял, безо всяких там прыжков по исходной и измененной таблицам). Но только вот программирование персоналок,
которые в абсолютном большинстве работают, придерживаясь фон-неймановской архитектуры, и программирование однокристальных
микроЭВМ, работающих по гарвардской архитектуре, это вещи разные как небо и земля! В ассемблерах схожие (не одинаковые!)
инструкции по пальцам одной руки пересчитать можно.
Так что, если опыт действительно имеется, пиши посты! Буда рад обменяться опытом