User Tag List

Показано с 1 по 10 из 328

Тема: Контроллер дисковода для УКНЦ, работающий с образами на micro-SD карте.

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    25.08.2015
    Адрес
    г. Ульяновск
    Сообщений
    190
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пока нет, вот и спрашиваю здесь, что нужно реализовывать?
    Пока так:
    1. ожидаем готовности на каждом шаге.
    2. в регистр данных заносим код операции
    3. номер тома
    4. номер блока в томе (мл.слово)
    5. номер блока в томе (ст.слово, 0 для RT-11)
    6. кол-во слов (16-бит хватит всем, а в случае с RT-11 - даже 15 бит)
    7. здесь можно прочитать предварительный результат операции из регистра 2.
    8. читаем/пишем данные
    9. читаем результат операции из регистра 2.

    Я пока ничего не делал, так что предложения принимаются.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Jarik65535 Посмотреть сообщение
    1. ожидаем готовности на каждом шаге.
    2. в регистр данных заносим код операции
    3. номер тома
    4. номер блока в томе (мл.слово)
    5. номер блока в томе (ст.слово, 0 для RT-11)
    6. кол-во слов (16-бит хватит всем, а в случае с RT-11 - даже 15 бит)
    7. здесь можно прочитать предварительный результат операции из регистра 2.
    8. читаем/пишем данные
    9. читаем результат операции из регистра 2.
    1. На каждом шаге проверяем бит завершения и если он установлен - контроллер завершил выполнение команды.
    2. Если код операции ошибочный - контроллер установит биты ошибки и завершения.
    3. Если к указанному номеру тома не подключен образ - контроллер установит биты ошибки и завершения.
    4,5. Если номер блока больше размера образа - контроллер установит биты ошибки и завершения.
    6. Если количество слов больше имеющегося в образе места от номера блока до конца образа - контроллер установит бит ошибки, но прочитает/запишет всё имеющееся место.


    Коды команд контроллера:

    000 - CHECK - Контроллер возвращает в старшем байте регистра данных номер тома последней операции, а в младшем - код состояния ( код ошибки последней операции ).
    001 - READ
    002 - WRITE
    004 - SIZE - Номер Тома - Контроллер возвращает два слова размера подключенного образа ( мл.слово-ст.слово ). Если образ не подключен - контроллер сразу ставит биты ошибки и завершения.


    Коды ошибок:

    IS_SUC = 0001; // нет ошибки
    IE_OFL = 0277; // устройство offline (образ не подключен)
    IE_BLK = 0354; // выход за пределы устройства
    IE_WLK = 0364; // попытка записи на защищённое устройство
    IE_VER = 0374; // неустранимая ошибка (например внутренняя ошибка контроллера)
    IE_IFC = 0376; // неверная команда
    Последний раз редактировалось Patron; 01.08.2017 в 20:21.

  4. #3

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кстати, забыли о том, что диски в наших системах имеют блочную структуру. Если отправить на запись кусок произвольной длины, то в последнем блоке, в "хвосте", может остаться мусор. Я на эти грабли уже наступал, но у меня, в качестве мусора, было последнее переданное по DMA слово, в итоге, сохраненный исходник при загрузке в EDK показывал в конце текста множество пустых строк, если последним словом было 005015 (<ВК><ПС>, длина занятой части файла четная) да, в придачу еще и как-то неадекватно себя вел, если последнее слово было 000012 (<ПС>0, длина нечетная). А здесь в RT-11 возможны вообще всяческие чудеса.

    Далее, определяемся с регистрами. Как я понял, основной, всегда доступный регистр состояния - 176560, т в нем бит Д7 (0200) - готовность к обмену через 176562, так? Еще какие-то адреса есть? Вроде бы загрузчику из сети требовались еще 176564 и 66, они дальше используются? Какие еще биты есть или планируются в 176560?
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  5. #4

    Регистрация
    25.08.2015
    Адрес
    г. Ульяновск
    Сообщений
    190
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Кстати, забыли о том, что диски в наших системах имеют блочную структуру. Если отправить на запись кусок произвольной длины, то в последнем блоке, в "хвосте", может остаться мусор. Я на эти грабли уже наступал, но у меня, в качестве мусора, было последнее переданное по DMA слово, в итоге, сохраненный исходник при загрузке в EDK показывал в конце текста множество пустых строк, если последним словом было 005015 (<ВК><ПС>, длина занятой части файла четная) да, в придачу еще и как-то неадекватно себя вел, если последнее слово было 000012 (<ПС>0, длина нечетная). А здесь в RT-11 возможны вообще всяческие чудеса.
    Это баг или фича? Нужно повторять такое поведение? Сейчас еще раз глянул исходники FatFS, там неполный сектор предварительно считывается.

    Цитата Сообщение от AFZ Посмотреть сообщение
    Далее, определяемся с регистрами. Как я понял, основной, всегда доступный регистр состояния - 176560, т в нем бит Д7 (0200) - готовность к обмену через 176562, так? Еще какие-то адреса есть? Вроде бы загрузчику из сети требовались еще 176564 и 66, они дальше используются? Какие еще биты есть или планируются в 176560?
    176564 повторяет значение 176560 при чтении. Я хотел исполбзовать 176566 для чтения кода ошибки, но patron предлагает через команду CHECK.

  6. #5

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Jarik65535 Посмотреть сообщение
    Это баг или фича? Нужно повторять такое поведение?
    Баг, вестимо. Положено недописанный остаток блока заполнить двоичными нулями.

    Цитата Сообщение от Jarik65535 Посмотреть сообщение
    176564 повторяет значение 176560 при чтении. Я хотел исполбзовать 176566 для чтения кода ошибки, но patron предлагает через команду CHECK.
    А 176562 - регистр команд/данных?

    Какие биты определены в 176560? Кто из них аппаратный, а кто эмулируется программой Кортекса?

    Когда Кортекс занят длительной операцией (прочитать или записать сектор SD-шки) и не исполняет программу эмуляции программных регистров, что видно и что можно записать в РС ? (обращение к РД, как я понимаю, вызовет TRAP TO 4)
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  7. #6

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Jarik65535 Посмотреть сообщение
    Если отправить на запись кусок произвольной длины, то в последнем блоке, в "хвосте"
    Насколько мне не изменяет память, контроллеры аналоги RK05, RK06 и 20-ти мбайтный DP (не помню, чей аналог) добивали сектор нулями до 512 байт при записи не полного сектора

  8. #7

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Jarik65535 Посмотреть сообщение
    Я хотел исполбзовать 176566 для чтения кода ошибки, но patron предлагает через команду CHECK.
    Если есть лишний регистр - лучше использовать его, а не команду CHECK.

    - - - Добавлено - - -

    Для битов ошибки и завершения можно использовать младшие биты 176560 ( 01 == DONE ; 02 == ERROR ). Тогда опрос регистра может выглядеть так:

    Код:
    1$:	MOV	@#176560, R0
    	BPL	1$
    	ASR	R0
    	BCS	DONE
    	.......
    DONE:	ASR	R0
    	BCS	ERROR
    Последний раз редактировалось Patron; 02.08.2017 в 15:52.

  9. #8

    Регистрация
    25.08.2015
    Адрес
    г. Ульяновск
    Сообщений
    190
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В 176560 определен только бит 0200, в старшем байте возвращается 1 - номер станции, но только когда контроллер не занят и только при обращении непосредственно к адресу 176561. УКНЦшный загрузчик делает именно так.
    176560 и 176564 - аппаратные, но только по чтению, причем это один регистр просто на двух адресах для эмуляции сетевого адаптера. Эти регистры видны всегда.

    Я думаю вопрос с хвостами нужно решать в драйвере, т.к. ухудшить всегда можно.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Контроллер дисковода
    от andrew76 в разделе Внешние накопители
    Ответов: 55
    Последнее: 12.04.2024, 16:33
  2. Контроллер дисковода +3 DOS
    от Tim в разделе Внешние накопители
    Ответов: 8
    Последнее: 17.04.2012, 16:32
  3. [Украина]Продам контроллер дисковода УКНЦ,аукцион.
    от Mad Killer/PG в разделе Барахолка (архив)
    Ответов: 5
    Последнее: 25.12.2011, 00:09
  4. Куплю контроллер дисковода
    от djvini в разделе Барахолка (архив)
    Ответов: 10
    Последнее: 21.04.2011, 01:19
  5. Куплю контроллер дисковода для УКНЦ
    от tnt23 в разделе Барахолка (архив)
    Ответов: 2
    Последнее: 27.02.2009, 08:51

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •