Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » Другие архитектуры » Использование НМД2 в ДВК |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 ... 10 11 12 13 14 * 15 16 17 | Печать |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
AndyTh написал: Не надо ничего вытаскивать, контакт 9 разъема Х6 позволяет перенстроить адрес КЦГД на 017776560, порт наплатный 1201.03 перенастройте на 017776570, а свой эмулируемый на stm тогда будет на адресах консоли 017777560. а для этого надо вытаскивать КЦГД. |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 8 июля 2014 10:06 Сообщение отредактировано: 8 июля 2014 10:10
AndyTh написал: Если сделать ещё один шаг и сэмулировать DMA, напрямую отдавая данные в область ОЗУ - можно без всяких переделок использовать дайте мне номер блока и заберрите данные из буфера или регистра. Остальное я сделаю.драйвер псевдо-диска HD ( по-умолчанию драйвер HD взаимодействует с псевдо-контроллером через адреса 177720 и 177722 ). А если эмулировать DMA лень - надо просто добавить в код драйвера ( после подачи в контроллер команды чтения блока ) цикл пересылки блока данных между контроллером и памятью. |
andyTh |
NEW! Сообщение отправлено: 8 июля 2014 10:43
_Patron_ написал: Я ведь изначально так и предлагал. Отображать на память блок сразу. Мне это проще, в протокол обмена по QBus не нужно вписывать счётчик слов и работу с неполными блоками. Если сделать ещё один шаг и сэмулировать DMA, напрямую отдавая данные в область ОЗУ Вопрос в другом, изначально нужно как то загрузиться с диска. Т.е. либо писать свой загрузчик, либо использовать готовый. Готовый есть только начиная с 1201.03 и только для ДВК, если не ошибаюсь. |
Сейчас на форуме |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 8 июля 2014 21:39 Сообщение отредактировано: 8 июля 2014 21:51
AndyTh написал: ДМА - это копирование данных изнутри контроллера в находящиеся на шине снаружи контроллера ячейки ОЗУ без участия процессора. При этом процессор блокируется, а на шине выполняется специальный цикл передачи данных изнутри контроллера в ОЗУ ( или наоборот ). Я ведь изначально так и предлагал. Отображать на память блок сразу. Здесь всё просто - загрузчик записан в нулевом блоке системного диска, а в области регистров контроллера нужно иметь небольшой код из нескольких команд, который читает 0-й блок загружаемого привода по адресу 0 и передаёт управление на адрес 0. Сам же этот начальный загрузчик надо запускать вручную из пульта по команде xxxxxx G, где хххххх - адрес кода начального загрузчика в области регистров контроллера. Вопрос в другом, изначально нужно как то загрузиться с диска. Если контроллер использует ДМА - можно сделать как в MY - иметь специальную команду "прочитать загрузчик", по которой контроллер сам помещает данные из нулевого блока диска по адресу 0. Тогда надо сначала записать в регистр данных номер загружаемого привода, потом записать в регистр команд код команды "прочитать загрузчик", а потом просто нажать "G" и управление будет передано на адрес 0, где уже находится прочитанный с привода загрузчик. |
andyTh |
NEW! Сообщение отправлено: 8 июля 2014 22:51
_Patron_ написал: А если ячейки памяти будут находиться внутри контроллера, то это уже не ДМА? ДМА это обмен данными в памяти без участия процессора. При этом блокировка процессора не обязательна. Он может работать с другими страницами или участками памяти. Ну если контроллер самой памяти это позволяет. Я предлагаю область памяти под буфер диска разместить внутри контроллера. Какая разница где будет расположена память, с которой работать драйверу. ДМА - это копирование данных изнутри контроллера в находящиеся на шине снаружи контроллера ячейки ОЗУ без участия процессора. При этом процессор блокируется, а на шине выполняется специальный цикл передачи данных изнутри контроллера в ОЗУ ( или наоборот ). Но можно остановится и на варианте не с буфером, а регистром. Т.е. программа минимум: Контроллер должен принимать следующие команды от драйвера: 1. Установить номер привода для последующей операции. 2. Установить номер блока для последующей операции. 3. Установить счётчик слов для последующей операции. 4. Выполнить операцию "ЧТЕНИЕ". 5. Выполнить операцию "ЗАПИСЬ". 6. Выполнить операцию "СООБЩИТЬ РАЗМЕР НОСИТЕЛЯ" ( в блоках ). |
Сейчас на форуме |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
AndyTh написал: Если контроллер эмулирует всю доступную процессору память - проблем нет. Но если на шине есть внешняя ( по отношению к контроллеру ) память - передавать туда данные контроллер должен по ДМА. А если ячейки памяти будут находиться внутри контроллера, то это уже не ДМА? |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 8 июля 2014 23:18 Сообщение отредактировано: 8 июля 2014 23:22
AndyTh написал: Просто, если контроллер работает по ДМА и блокирует процессор - уже при выполнении процессором следующей команды драйвера после активации контроллера - прочитанные данные уже находятся в ОЗУ по тому адресу, который операционка сообщила драйверу, а драйвер сообщил контроллеру. Если же контроллер только "выставляет" данные в своём буфере, но сам не переправляет их в буфер пользователя в ОЗУ по тому адресу, который операционка сообщила драйверу - копировать туда данные из буфера контроллера должен сам драйвер ( после подачи в контроллер команды чтения ). Какая разница где будет расположена память, с которой работать драйверу. В текущем варианте драйвер HD сам ничего не копирует - только сообщает в контроллер адрес буфера пользователя в ОЗУ. |
andyTh |
NEW! Сообщение отправлено: 9 июля 2014 11:08
Воооот! Достаточно драйверу разместить буфер в самом контроллере, и процессору ничего делать не нужно. Данные "волшебным" образом будут меняться сами. Это очень хорошо иллюстрируется двумя видеоконтроллерами. Это 580ВГ75 и ЕМНИП 1809ВГ6. Первая перебиралки адресов не имеет и без аппаратного ДМА контроллера не работает. Не, сделать то можно, но... Второй чип счётчик адресов имеет и прекрасно работает на системах без ДМА контроллера. Более того, видел в сети проект, где процессор и видеоконтроллер питались от одного тактового генератора, но инвертированными относительно друг друга клоками. Остальные сигналы управления тоже были подогнаны по времени. В результате проц и видеоконтроллер обращались к памяти по очереди не замечая друг друга. Но это пока на том этапе, на котором я остановился, не так важно. Мне бы "стандартную" раскладку адресов командных и управляющих регистров для начала найти. В общем буду потихоньку курить паспорт от RQDX, до просветления мож толк и выйдет. |
Сейчас на форуме |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 9 июля 2014 11:17 Сообщение отредактировано: 9 июля 2014 11:21
AndyTh написал: Драйвер к буферу пользователя не имеет никакого отношения. Пользователь, желающий прочитать произвольное количество слов с диска ( вплоть до 32К слов за одну операцию чтения ) передаёт операционке номер начального блока, адрес СВОЕГО буфера и счётчик слов, операционка передаёт их в драйвер, а драйвер выполняет столько запросов чтения, сколько нужно для получения от контроллера всех запрошенных пользователем слов и аккуратно укладывает результаты всех этих запросов в буфер пользователя. Достаточно драйверу разместить буфер в самом контроллере, и процессору ничего делать не нужно. Данные "волшебным" образом будут меняться сами. Некоторые контроллеры считывают за один раз не больше 64 слов, некоторые - не больше 256 слов, псевдо-контроллер HD передаёт любое количество слов, но благодаря наличию драйверов - пользователь может по единому алгоритму получить в СВОЙ буфер любое количество слов от любого контроллера. Если контроллер поддерживает ДМА - он сам копирует данные из своего буфера в буфер пользователя, а если нет - это делает драйвер. |
andyTh |
NEW! Сообщение отправлено: 9 июля 2014 13:28
_Patron_ написал: Это понятно. Просто я сейчас физически не смогу этого сделать. Аппаратно у меня ДМА не разведен и честное ДМА я не сделаю в пределах этой макетки. Но сделать прозрачным в доступе процессору сегмент адресов на своей плате я могу. Для процессора это будет просто кусок памяти не на основной плате, но доступный точно так же как и основное ОЗУ. Эдакий аналог двухпортовой памяти. Если контроллер поддерживает ДМА - он сам копирует данные из своего буфера в буфер пользователя, а если нет - это делает драйвер. |
Сейчас на форуме |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 ... 10 11 12 13 14 * 15 16 17 | Печать |
Полигон-2 » Другие архитектуры » Использование НМД2 в ДВК |
1 посетитель просмотрел эту тему за последние 15 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |