User Tag List

Страница 13 из 40 ПерваяПервая ... 91011121314151617 ... ПоследняяПоследняя
Показано с 121 по 130 из 399

Тема: Контроллер псевдо КМД+дисковод для УКНЦ (на SD карте)

  1. #121

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,472
    Поблагодарили
    524 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В эмуляции дисковода есть ещё одна небольшая проблема, на которую я лично просто забил.
    После записи на дорожку, в любой из секторов, я только меняю данные в памяти и отмечаю себе что была запись.
    Реальная запись всей дорожки происходит только при следующей смене стороны/дорожки, либо при отключении образа диска. Делается это для того чтобы не насиловать диск, записывая мелкими блоками по 512 байт. Это означает, что при неудачной записи изменений в образе на винчестер хоста, если вдруг произойдут ошибки - то внутри эмулятора мы этого не узнаем.
    Т.е. обработка ошибок в этом месте не на высоте, к сожалению. И я тут как бы не понимаю как можно было бы в принципе сделать лучше.
    Конечно, надёжность современных носителей такова что подобные проблемы это очень редкий случай.

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

  3. #122

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

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    В эмуляции дисковода есть ещё одна небольшая проблема, на которую я лично просто забил.
    После записи на дорожку, в любой из секторов, я только меняю данные в памяти и отмечаю себе что была запись.
    Реальная запись всей дорожки происходит только при следующей смене стороны/дорожки, либо при отключении образа диска.
    Я предлагаю держать в памяти не дорожку, а цилиндр. Это на писюке запись быстрая. Писать, когда процессор - МК с ограниченными ресурсами, а носитель - микро-SD, это миллисекунды. УКНЦовина же будет ожидать (почти) мгновенного переключения стороны диска (головки).

    И еще я бы в "железном" эмуляторе добавил сброс записанного материала после тайм-аута секунды в три - мы же не в состоянии отловить макрокоманду .CLOSE, отрабатываемую на ЦП. Закрыла программа выходной файл и успокоилась, а машинку возьмут, да и выключат. Да и светодиод красный приделать: мол, запись идет, пока не погаснет, не выключай! Ну в самом деле, не цеплять же туда еще и батарейку...

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Т.е. обработка ошибок в этом месте не на высоте, к сожалению. И я тут как бы не понимаю как можно было бы в принципе сделать лучше.
    Конечно, надёжность современных носителей такова что подобные проблемы это очень редкий случай.
    Ну да, тут, фактически, кэширование с отложенной записью. Причем для программы и ОС ничего об этом кэшировании не знающими. И ОС, и программа, давно получили уведомления, что все ОК и так же давно забыли, что вообще что-то писали, а тут, вдруг, вылезает такая радость. ИМХО, если что-то делать, то это надо делать на надсистемном уровне, т.е ругаться должна не эмулируемая программа или ОСь, а сам эмулятор. Неважно, программный он на писюке, или программно-аппаратный на МК.
    Последний раз редактировалось AFZ; 15.06.2020 в 16:42.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

    Эти 2 пользователя(ей) поблагодарили AFZ за это полезное сообщение:

    hobot(15.06.2020), nzeemin(15.06.2020)

  4. #123

    Регистрация
    10.04.2019
    Адрес
    г. Фокино, Брянская обл.
    Сообщений
    401
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    65 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Alex_K,
    Вот до чего я докатился:

    Скрытый текст


    Случайное чтение секторов:

    Последовательное чтение:

    Данные дорожки:

    Результат теста случайного чтения секторов:

    Карта теста:

    Видео работы:
    https://cloud.mail.ru/public/C7Vn/KhbSw46xk
    [свернуть]

    Но радости от это полный швах! Почему? а вот почему:

    Скрытый текст


    При загрузке с любого образа:

    При загрузки с минимального образа который сделал уважаемый nzeemin:

    При загрузке с чистого образа:

    [свернуть]

    Может кто подскажет почему и что происходит?

    Пока ждал ответов понял в чем проблема, а проблема эта в том, что.. Ох,проще показать чем написать:

    Скрытый текст


    if(*UPDATE && *POS>0x2E ) //91
    {
    GPIOC->BSRR|=LED_Pin<<16;
    readfromsd();
    //readfrommemdsk();
    copytrk();
    *UPDATE=0;
    GPIOC->BSRR|=LED_Pin;
    }
    [свернуть]

    Это единственная функция, которая выполняется не в прерываниях. Те ее прерывают прерывания, извините за тавтологию, а там проиходит чтение из СД-карты, ну и из-за того, что ее прерывают чтение происходит с ошибками, когда заменил функцию readfromsd() на readfrommemdsk() которая читает из внутренней памяти STMки, все загрузилось.

    Скрытый текст



    [свернуть]
    Последний раз редактировалось ZPilot; 15.07.2020 в 10:24.

    Этот пользователь поблагодарил ZPilot за это полезное сообщение:

    Alex_K(15.07.2020)

  5. #124

    Регистрация
    09.01.2006
    Адрес
    Bryansk
    Сообщений
    1,339
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    107 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Это единственная функция, которая выполняется не в прерываниях. Те ее прерывают прерывания, извините за тавтологию, а там проиходит чтение из СД-карты, ну и из-за того, что ее прерывают чтение происходит с ошибками, когда заменил функцию readfromsd() на readfrommemdsk() которая читает из внутренней памяти STMки, все загрузилось.
    А как идет синхронизация внутренней памяти STMки и образа? Не потеряется ли информация при случайном глюке?
    УКНЦ, ДВК-3, Ленинград-1 (48 кб)

  6. #125

    Регистрация
    10.04.2019
    Адрес
    г. Фокино, Брянская обл.
    Сообщений
    401
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    65 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Arseny Посмотреть сообщение
    А как идет синхронизация внутренней памяти STMки и образа? Не потеряется ли информация при случайном глюке?
    А ни как не идет, информация во внутренней памяти это DSK-файл записанный во внутреннюю память СТМки, те я не читаю из СД-карты в этот момент, а читаю только из ПЗУ СТМ. В общем это говорит о том, что все работает кроме правильного чтения из СД.
    Печально, что ДМА не помог..

  7. #126

    Регистрация
    09.01.2006
    Адрес
    Bryansk
    Сообщений
    1,339
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    107 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZPilot Посмотреть сообщение
    А ни как не идет, информация во внутренней памяти это DSK-файл записанный во внутреннюю память СТМки, те я не читаю из СД-карты в этот момент, а читаю только из ПЗУ СТМ. В общем это говорит о том, что все работает кроме правильного чтения из СД.
    Печально, что ДМА не помог..
    Тут есть как минимум 2 решения - разобраться чтением с SD (если это возможно) или работать дальше с образом в ОЗУ STM. Только добавить возможность скидывать образ из ОЗУ на SD при отключении питания (тот же ионистор прикрутить).
    УКНЦ, ДВК-3, Ленинград-1 (48 кб)

  8. #127

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

    По умолчанию

    Так читать SD надо во время "шагов" "головки" Поступила команда "Шаг вперед" (или назад), читаем в ОЗУ все 20 секторов этого цилиндра с файл-образа на SD-шке, а далее в цикле проигрываем их через регистры эмулируемой ВП1-128. Попросили записать, изменяем информацию в соответствующих местах буфера и ставим метку "была запись". Пришел новый "шаг", смотрим метку "была запись", если была, сбрасываем нужные места на файл-образ, затем читаем следующий цилиндр. Один шаг минимально составляет 3 мс, если за это время выйдет записать старый цилиндр и прочитать следующий, то все ОК. То есть, разделить во времени обмен с SD и обмен с УКНЦ. Тем более, что программа обслуживания дисков, считая, что она через 128-й работает с обычным дисководом, все равно будет тупо ждать 3хN мс, пока дисковод переместит головку на следу.щую дорожку. (N здесь - set-параметр STEP драйвера MZ, 1-6. Или 3-18, если у этого драйвера шаги задаются в мс, а не в условных единицах, есть и такие драйверы).

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

    Да, и еще, поставив метку "была запись", следует взвести таймер секунды на три, если за это время не поступит сигнал "шаг", надо будет сбросить на SD-шку измененное состояние дорожек эмулируемого диска.
    Последний раз редактировалось AFZ; 15.07.2020 в 17:17.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

    Этот пользователь поблагодарил AFZ за это полезное сообщение:

    hobot(15.07.2020)

  9. #128

    Регистрация
    10.04.2019
    Адрес
    г. Фокино, Брянская обл.
    Сообщений
    401
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    65 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Так читать SD надо во время "шагов" "головки" Поступила команда "Шаг вперед" (или назад), читаем в ОЗУ все 20 секторов этого цилиндра с файл-образа на SD-шке, а далее в цикле проигрываем их через регистры эмулируемой ВП1-128.
    Я почти так и делаю, только читаю 10 секторов одной стороны. Правда я не сразу при перемещении дороги читаю, тк иногда драйвер ФДД УКНЦ просто пробегает по дорожкам не читая их, по этому жду когда чтение на дороге перевалит 1й маркер и начинаю читать, корости СДшки вполне хватает прочитать 512 байт до начала чтения участка данных. Номера секторов всегда стандартны, я при перемещении головы в буфере только № дорожки меняю.

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

    Цитата Сообщение от Arseny Посмотреть сообщение
    Тут есть как минимум 2 решения - разобраться чтением с SD (если это возможно) или работать дальше с образом в ОЗУ STM. Только добавить возможность скидывать образ из ОЗУ на SD при отключении питания (тот же ионистор прикрутить).
    Увы, памяти (ОЗУ) всего 128кБ.

    Этот пользователь поблагодарил ZPilot за это полезное сообщение:

    hobot(15.07.2020)

  10. #129

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

    По умолчанию

    Цитата Сообщение от ZPilot Посмотреть сообщение
    читаю 10 секторов одной стороны.
    Так переключение стороны диска в оригинале, практически, мгновенное. В отличие от перемещения головки. Поэтому, если за время шага прочитать обе стороны дорожки, то потом, пока идет их передача в УКНЦ, ничего читать с СД-шки не надо. То есть, пока ПП ждет, когда дисковод сделает шаг, он не смотрит, что там поступает с головки - оттуда же, при ее (головки) перемещении, ничего внятного поступить не может. Потом же, когда ПП приступит к анализу читаемой дорожки, она уже целиком будет в ОЗУ МК, и, пока все эти 20 секторов не будут обработаны, информация с СД-шки понадобиться не может и все прерывания и прочие дела, связанные с СД-шкой можно просто отключить. А на время шага отключить всё, связанное с передачей данных в УКНЦ. То есть, пока читаем СД-шку, нам не будет мешать всё, связанное с эмуляцией ВП1-128, а когда эмулируем эту 128-ю, нам не будет мешать обмен с SD, и можно будет полностью исключить влияние этих процессов друг на друга.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

    Эти 3 пользователя(ей) поблагодарили AFZ за это полезное сообщение:

    hobot(15.07.2020), nzeemin(15.07.2020), Titus(15.07.2020)

  11. #130

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Alex_K,
    Вот до чего я докатился:
    Молодец!!!
    Так "диск" теперь вращается или так же передаются данные?

Страница 13 из 40 ПерваяПервая ... 91011121314151617 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 713
    Последнее: 13.05.2025, 11:42
  2. Ответов: 327
    Последнее: 03.12.2019, 22:49
  3. Куплю КМД для УКНЦ
    от Feral в разделе Барахолка (архив)
    Ответов: 32
    Последнее: 07.06.2012, 13:31
  4. Продам МС5310 блок дисководов к УКНЦ+КМД УКНЦ
    от Mad Killer/PG в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 19.03.2012, 11:27
  5. Контроллер КМД-УКНЦ, АУКЦИОН
    от tntpro в разделе Барахолка (архив)
    Ответов: 9
    Последнее: 23.06.2011, 16:32

Ваши права

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