Сообщение от
b2m
Можно ещё поставить статическое ОЗУ. Доступ к нему будет разрешаться битом C7 PPI2 (либо Корвет, либо Мега, наверное можно даже без мультиплексоров). Под сигнал записи в ОЗУ отдать старший бит адреса. А IRQ использовать как сигнал для обработки данных со стороны Корвета.
Так, вроде понял твою идею. Значит, после старта заливаем в ОЗУ загрузчик, ждем, когда он прочитается, запустится и дернет линию control (PPI2 C7), а потом просто ждем команды от корвета и по необходимости или заливаем ему в ОЗУ блок данных, или читаем его оттуда.
Идея, вроде бы, здравая. Если мы делаем универсальный картридж для заливки в корвет системно-независимых программ, то получается то, что надо. Правда, без мультиплексоров на шине адреса все равно не обойтись.
Дело в том, что на боковой разъем не выведен сигнал RESET. Это, конечно, типичное разгильдяйство разработчиков - всякий мусор типа -12в вывели, а такой важный сигнал забыли. В результате мы можем поймать момент перезагрузки корвета только по деганию линии control. А поскольку после сброса все каналы PPI находяится в режиме вывода данных, может возникнуть неприятный конфликт.
Ну, да ладно. Все же - что мы хотим в конечном итоге получить? Тут, вроде как, обсуждается загрузчик CP/M с эмуляцией сетевых дисков. И в таком режиме буферное ОЗУ не дает никаких реальных преимуществ. Ибо тут будет так. Программа захотела прочитать сектор диска. Сетевой драйвер BIOS отправляет запрос в наш контроллер и впадает в цикл ожидания, затем контроллер набивает байт за байтом содержимое сектора в буферное ОЗУ, и сообщает драйверу что все готово (все это время драйвер висит в цикле ожидания). Затем драйвер байт за байтом вычитывает ОЗУ в буфер DMA и отдает его пользователю.
Но тогда проще перекидать сектор байт за байтом непосредственно из контроллера в порт, без промежуточной буферизации. Времени на это уйдет не больше, а может быть и меньше. Как справедливо заметил ESL, режим 2 PPI как раз для этого и предназначен. Единственное тонкое место, в котором может потребоваться буферная память - это начальная загрузка загрузчика ОС средствами ОПТС. Там жесткие тайминги и дурацкий протокол. Но я завтра попробую средствами меги сэмулировать начальную загрузку - сразу все станет ясно.
---------- Post added at 18:01 ---------- Previous post was at 17:39 ----------
Сообщение от
esl
он в строго определённом порядке читает
Ну, тогда ладно. Правда, есть один неприятный момент - ОПТС вначале выставляет младший адрес, а затем, через некоторое время, старший. Причем во время чтения байтов заголовка старший адрес вообще не формируется. А ты получаешь строб по младшему адресу, и отловить момент смены старшего - несколько нетривиальная задача. Впрочем, если мы читаем только 256 байт, то тут ты на 100% прав - старшего адреса нет, можно стробироваться по A0. Это я завтра опробую.
зачем SPI
SD Card и всё на ней.
А, ну если делать полностью автономное устройство, без интерфейса к PC, то да - сдкарту и на нее все образы. Правда, карта все равно будет в SPI режиме использоваться. А поддерживают ли современные SDHC карты такой режим?
А старую 2-гиговую карту найти теперь проблема...
На карте будет файловая система, придется в мегу пихать еще и драйвер FAT. Потянет все это мега? Должна, по идее. Хотя, я бы предпочел какой-нибудь ARM , например STM32 или TI Stellaris
Код:
на реале эти 2 дорожки секунд наверное 5 грузяться ?
уже не помню точно,
Насчет 5" дисководов не скажу, у меня на 3.5" грузится примерно секунду, а то и меньше. 2 доржки - это же 1 цилиндр, перемещения головки нет.
То есть экономия копеечная и бессмысленная. Но посмотреть интересно. Сейчас найду этот ROM и в эмулятор его.
по идее чтение "блок" идёт при xxFF а не 00
Гы. Ты рассуждаешь как программист. С точки зрения программиста - да, в адрес вписыается FF. Только вот между шиной адреса и разъемом клавиатуры стоит блок инверторов, и к контроллеру уже приходит 00. То есть клавиатура опрашивается именно подтяжкой горизонтали матрицы к земле. А на выходе клавиатуры стоит еще один блок инверторов, так что для процессора нажатая кнопка выглядит как 1, а для контроллера клавиатуры - как 0.
Если кому когда-нибудь потребуется - могу нарисовать и выложить схему и исходники прошивки. Контроллер - мега 8515. Только над такими исходниками народ смеяться будет... Делались они по принципу - быстрее бы заработало и можно поиграть с корветом.