Старт esxdos и ошибка поиска карты памяти
Официальной информации по API esxDOS в принципе не существует, а русскоязычной информации и неофициальной я не нашел.
Система же уже достаточно активно заняла свои позиции(как в виде фирмвари для divMMC/divIDE), так и как часть многих компьютеров(Карабас, ZXUno, Reverse, Spectrum Next и многие другие).
API хорошо работает и с IM2(можно подгружать файлы под музыку), работает почти на всем, что можно и достаточно легко в освоении.
В этой статье я опишу минимальное необходимое для жизни API, которое позволит создавать вам приложения под эту систему.
Что ж начнем!
Вся работа с esxDOS на уровне API очень похожа на работу с POSIX API и идет через RST 8.
Вызов выглядит примерное так:
Если же при выполнении нашей операции произошла ошибка — будет установлен флаг C(а код ошибки будет записан в системные переменные бейсика, но в 90% случаем нам достаточно просто знать, что случилась ошибка).
Попробуем считать файл
Для этого нам нужны будут следующие методы API: fopen, fread, fclose и getsetdrv(получение либо установка текущего устройства).
Пока что выглядит знакомо для любого человека, что писал под современные компьютеры.
Константы для вызова этих методов будут следующие:
А так же для метода fopen необходимо будет указать режим работы с файлом(режимы могут объединяться через ИЛИ):
- A — текущее устройство
- B — Режим(чтение/запись/создание)
- IX — указатель на строчку именем файла(заканчивается 0), можно указывать как просто имя файла, так и с путем(в т.ч. относительным)
Для получения текущего устройства необходимо вызвать метод getsetdrv, указав ему в качестве параметра в регистре А — нуль.
Я не люблю передавать параметры функциям через IX, поэтому в своей обертке я принимаю имя файла в HL.
И так файл мы можем открыть следующим кодом:
После открытия нам необходимо высвободить ресурсы(у divMMC и divIDE своя память и если бросить файл открытым — то он будет жрать внутренний дескриптор, поможет только выключение/включение компьютера).
Закрыть файл еще проще — нужно просто передать в регистр A его номер и вызвать ESX_FCLOSE:
Отлично, файл открыли, файл закрыли, но хотелось бы его все таки считать :-) или хотя бы его часть.
Указываем сколько мы хотим считать в байтах и передаем это значение в регистр BC, в IX указатель на память, а в А — файловый дескриптор, но в моем случае это будет выглядеть вот так:
В BC мы получаем реальное количество байт, считанных с диска — т.е. если файл кончился раньше — то мы можем узнать это по BC.
И что ж? Небольшой практикум — считаем образ экрана с флэшки:
Если файла нет — вывалимся в onError, если есть — получим картинку на экране.
Что ж, сохраним на диск что-нибудь
Для этого нам понадобятся следующие методы API:
fsync нужен для того, чтобы «уж точно записать на диск»(он принудительно сливает буфер на диск).
У fsync есть только один параметр — номер файла(регистр А).
А интерфейс fwrite — аналогичен fread, только работает наоборот.
Я использую такие обертки:
Для примера сделаем дампалку нижних 16к(там будет esxDOS, возможно, со страницами ОЗУ).
Что ж самый минимум описан, если будут желающие — продолжу статьи по esxDOS(например, получение каталога или атрибутов файлов, работа со смещениями в файлах)
Есть несколько мелочей, которые стоит прояснить.
Читать и писать можно много много раз — поточная работа — это основа работы с esxDOS(т.е. можно читать в область экрана из файла каждый раз по целому экрану, могу к следующей статье написать проигрывалку видео для спектрума).
Номер файла — это номер записи во внутренней таблице файловых дескрипторах esxDOS. Точное количество одновременно открытых файлов я не знаю — но оно достаточное, чтобы не особо париться по этому поводу, однако, если постоянно файлы открывать и не закрывать, то они кончатся(таблица хранится во внутренней памяти divMMC/divIDE), поможет выключение/включение компьютера(или полный перезапуск divIDE/divMMC).
И еще раз напомню — чтение и запись считаются побайтово(т.е. если вам нужно записать 3 байта — вы пишите 3 байта, если 100 — то 100).
И да, раз эта тема интересна — то будет еще одна статья. В коментариях предложите — получение каталога или работа со смещениями в файле.
Инструкция может быть разной длины и выполняться за разное количество тактов. В железе такого умного контродя точно не реализовано (заглядывая в прошивку cpld), так что вряд ли речь про одну инструкцию. Если б речь была про однотактовую инструкцию или обязательный nop в начале обработчика, об этом бы написали отдельно.
то получается, что есть разница в логике автомаппера при обработке областей 0000h, 0008h, 0038h, 0066h, 04c6h and 0562h и 3d00..3dffh. Для первой группы выполнится опкод основной ROM, и только после произойдет переключение на DivROM, а для второй группы (это наш TrDos) подмена произойдет сразу же. Отключение же произойдет с задержкой.
Залез я в исходники эмулятора spediv, который поддерживает DivIDE, и вот что увидел в функции обработчика шага опкода:переключение карт памяти может быть как перед извлечением опкода, так и после извлечения опкода.
Соответственно вот так выглядят обработчики попадания в адреса:
void divide_premap(int addr) <
// "fetch state"
// mapper logic, see divIDE documentation for more info
// check for divide memory connecting betadisk entry points
if ((addr & 0xff00) == 0x3d00)
divide_automap = 1;
divide_mapper();
>
void divide_postmap(int addr) // "M1 state"
// mapper logic, see divIDE documentation for more info
// check for divide memory connecting entry points
if ((addr == 0x0000) ||
(addr == 0x0008) ||
(addr == 0x0038) ||
(addr == 0x0066) ||
(addr == 0x04C6) ||
(addr == 0x0562)) divide_automap = 1;
// check for original memory connecting entry points
if ((addr & 0xfff8) == 0x1ff8) divide_automap = 0;
>
divide_mapper();
>
а это уже остальная обработка распределения памяти, в соответствии с битами CONMEM и MAPRAM (текста много):
Скрытый текст
void divide_mapper() <
// if CONMEM is set, connect EEPROM (read only if JP2 is closed) and selected RAM bank (read/write)
if (DIVIDE_CONMEM(divide_int_port)) < // map eeprom+ram
if ((divide_memstate != 1) || divide_bank_changed) <
memcpy(PRNM(proc).mem, divide_eeprom, 0x2000);
memcpy(PRNM(proc).mem + 0x2000, divide_ram[DIVIDE_BANK(divide_int_port)], 0x2000);
>
divide_memstate = 1;
divide_bank_changed = 0;
return;
>
// check for mb02 layout
if (!divide_jp2 && (DIVIDE_BANK(divide_int_port) > 1 || divide_memstate == 3))
if ((divide_memstate != 3) || divide_bank_changed) memcpy(PRNM(proc).mem, divide_ram[DIVIDE_MB02_BANK(divide_int_port)*2], 0x2000);
memcpy(PRNM(proc).mem + 0x2000, divide_ram[DIVIDE_MB02_BANK(divide_int_port)*2+1], 0x2000);
>
divide_memstate = 3;
divide_bank_changed = 0;
return;
>
if (divide_automap) < // map ram3+ram
if ((divide_memstate != 2) || divide_bank_changed) memcpy(PRNM(proc).mem, divide_ram[3], 0x2000);
memcpy(PRNM(proc).mem + 0x2000, divide_ram[DIVIDE_BANK(divide_int_port)], 0x2000);
>
divide_memstate = 2;
divide_bank_changed = 0;
> else < // map original_rom
if (divide_memstate) memcpy(PRNM(proc).mem, orig_rom, 0x4000);
>
divide_memstate = 0;
divide_bank_changed = 0;
>
return;
>
// if JP2 is closed and:
// 1) if we reached "connecting" entry point, connect EEPROM (read only) and selected RAM bank (read/write)
// 2) if we reached "disconnecting" entry point, connect original ZX Speccy ROM
if (divide_jp2) if (divide_automap) < // map eeprom+ram
if ((divide_memstate != 1) || divide_bank_changed) memcpy(PRNM(proc).mem, divide_eeprom, 0x2000);
memcpy(PRNM(proc).mem + 0x2000, divide_ram[DIVIDE_BANK(divide_int_port)], 0x2000);
>
divide_memstate = 1;
divide_bank_changed = 0;
> else < // map original_rom
if (divide_memstate) memcpy(PRNM(proc).mem, orig_rom, 0x4000);
>
divide_memstate = 0;
divide_bank_changed = 0;
>
return;
>
// else connect original ZX Speccy ROM
if (divide_memstate) < // map original_rom
memcpy(PRNM(proc).mem, orig_rom, 0x4000);
>
divide_memstate = 0;
divide_bank_changed = 0;
>
Ну и наконец-то мы дошли до того самого, ради чего это устройство и создавалось - для использования его в качестве полноценного ZX Spectrum да ещё и с наворотами. Как уже упоминалось в первой части , у данного устройства есть всё необходимое, чтобы нормально функционировать как полноценный Спектрум, только у него вместо оригинальной схемы есть FPGA, в которую можно заливать нужную прошивку (и ядро оригинального Спектрума там уже есть и причём загружается по умолчанию), и есть отдельные входы для PS/2-клавиатуры и PS/2-мыши (причём можно использовать и переходники с USB, лишь бы сам протокол был реализован в этих устройствах ввода), есть VGA-выход, корректно выдающий картинку на устройства, которые поддерживают вертикальную частоту развёртки 50-60 Hz, есть два гнезда для джойстика (причём их тип можно выбрать в BIOS), есть стандартный отдельный аудиовыход, есть даже аудиовход для загрузки программ с магнитофона и спектрумовский слот расширения. Полный фарш. Но есть и ещё одна приятная особенность - это наличие слота для MicroSD-карты и возможностью загружать программы с карты туда вставленной.
Т.е. то, для чего в случае с оригинальным ZX Spectrum необходимо было покупать отдельное устройство (например, divMMC от Byte Delight), которое втыкалось в оригинальный разъём расширения Спектрума, тут доступно, как говорится, из коробки.
Но просто воткнуть карточку в слот будет недостаточно. На этой карте должно быть установлено соответствующее ПО, которое сможет задействовать данный потенциал устройства. А конкретно - esxDOS . С их официального сайта надо скачать последнюю версию (на момент написания статьи это 0.8.8) и распаковать содержимое в корень карточки. Однако, поскольку устройство идёт по умолчанию с esxDOS 0.8.6 , то сначала надо будет обновить esxDOS в BIOS ZXDOS+ . Как это делается, я писал в предыдущей части .
esxDOS
Во-первых, появляется возможность нажав кнопку F5 на клавиатуре оказаться в меню NMI ("немаскируемое прерывание"), что позволяет запустить файловую оболочку esxDOS и "бегать" по содержимому SD-карты, просматривать и запускать находящиеся на нём файлы.
Благодаря реализованной эмуляции ленты - поддерживается чтение/запись TAP -файлов (а вот файлы TZX не поддерживаются), а благодаря эмуляции TR-DOS - можно монтировать до 4 дисководов образами дисков в формате TRD ( SCL , FDI и прочая экзотика типа UDI и Teledisk тоже не поддерживается) с помощью клавиш A, B, C и D. Ну и можно напрямую запускать снэпшоты в форматах Z80 и SNA , а также просматривать снэпшоты экранов в формате SCR (клавиша V). Кроме этого, можно самому создавать снэпшоты памяти в формате SNA (клавиша S).
В итоге, благодаря esxDOS мы получаем расширенные возможности по хранению и использованию файлов разных форматов для ZX Spectrum , до этого присущих эмуляторам. И сначала эмуляторы "заэмулировали" использование реальных дисководов (у меня был первый PC с 5-ти и 3-дюймовыми дисководами, которые вполне сносно работали в эмуляторах Спектрума типа UKV и Z80 с добавленной поддержкой TR-DOS) и полностью перешли на свои специальные форматы файлов. А теперь эти форматы (изначально созданные для разных эмуляторов Спектрума) пришли и в реальные и даже оригинальные ZX Spectrum . И, хотя "лента" ещё более-менее востребована, но и она сейчас скорее уже в виде звуковых файлов, проигрывающихся на смартфонах.
А, во-вторых, кроме файлового менеджера (которого обычным пользователям будет достаточно в 99% случаев), есть в esxDOS ещё одна специфическая возможность, а именно дополнительные команды, которые можно вводить в режиме BASIC48 и расширенные команды самого языка BASIC. Первые необходимо вводить с точкой в начале, поэтому они так и называются ( "DOT" commands ) и по сути они вызывают специальные бинарные программы в папке BIN на SD-карте. Т.е. если там файла соответствующего команде не будет - то и команда не сработает. Перечислять я все команды не буду, с ними можно ознакомится либо в мануале самого esxDOS , либо в мануале к ZXDOS+ (тут описания короткие и простые). А вторые - расширенные команды BASIC: GOTO, CAT, LOAD, SAVE, ERASE (тоже описаны в мануале), которые позволяют использовать как параметр конкретное дисковое устройство.
Вот пример применения dot-команды перехода по каталогу ( .cd ) и показа его содержимого ( .ls ):
- Операции связанные с сохранением (получением дампа) энергонезависимой памяти устройства ( .back16m, .back32m, .romsback ), а также с прошивкой устройства ( .upgr16m, .upgr32m, .romsupgr, .corebios ). Например, список ROM в памяти устройства нельзя обновить через BIOS, но можно обновить с помощью dot-команды (описано в предыдущей части ).
- Настройка самого устройства ( .zxuc, .zxunocfg ).
- Мультимедиа: более качественное проигрывание (8 бит, 15625 Hz) WAV-файлов ( .dmaplayw ), проигрывание MIDI-файлов ( .playmid ) и даже проигрывание видео в специальном формате RaDastan Movie - RDM ( .playrmov ). Тут как раз имеет значение мощность самого устройства ZXDOS+ , которая физически это позволяет.
- Сеть: программы для настройки ( .iwconfig ) и сброса Wi-Fi модуля ( .esprst ). Это необходимо, потому что в ZXDOS+ с чипом LX25 добавлен и Wi-Fi модуль для подключения к сети.
Т.е. фактически esxDOS - это на самом деле полноценная дисковая операционная система для ZX Spectrum и она хорошо работает на ZXDOS+ . Но у неё есть и определённые минусы. Один из самых заметных - это отображение и работа только с короткими именами файлов (8 символов имя, 3 - расширение). Это не сильно напрягает, если у вас небольшое количество игр, собственноручно названных, которые вы с лёгкостью можете искать. Совсем другое, это использование целой библиотеки игр (например, с сайта World Of Spectrum) - тут иногда приходится действовать перебором и проще сначала найти нужную программу в более удобной ОС и отдельно её разместить с понятным названием. Далее - отсутствует поддержка формата дисков SCL, а именно в этом формате выложены образы программ на сайте Virtual TR-DOS . Да, от программиста Nihirashi есть проект специально для конвертации из SCL в TRD ( scl2trd ), с dot-командой .scl2trd и GUI в формате TAP-файла:
SCL отличается от TRD в основном тем, что изначально образы TRD были размером с целую дискету, а файл SCL занимал ровно столько места, сколько было необходимо, чтобы уместить всю информацию на дискете. Но "обрезанные" TRD практически не отличаются по размеру от SCL и вполне поддерживаются всеми программами. SCL отличается от TRD в основном тем, что изначально образы TRD были размером с целую дискету, а файл SCL занимал ровно столько места, сколько было необходимо, чтобы уместить всю информацию на дискете. Но "обрезанные" TRD практически не отличаются по размеру от SCL и вполне поддерживаются всеми программами.Но это опять же "костыли" и конвертировать по одному файлу очень неудобно, не говоря уже о том, что и скорость конвертации невелика. Поэтому готовить коллекцию игр придётся заранее. Мне, например, пришлось написать скрипт, который сконвертировал все файлы в скачанном архиве Virtual TR-DOS из формата SCL в TRD.
Та же самая засада нас ждёт и при наличии файлов TZX, только тут я не нашёл ни dot-команды для esxDOS ( есть для ZX Next ), ни какой-либо другой программы, работающей на Спектруме. Я нашёл только один вариант с GUI для Windows ( ссылка ), а ещё один (консольный) для скачивания требует логин и пароля на FTP World of Spectrum, которого у меня нет. И опять же - либо обходимся версиями в формате TAP, либо конвертируем по одному файлу.
Ещё мне не понравилось, что при выбранном ускорении ZX Spectrum в BIOS ZXDOS+ ускоренно двигается курсор в браузере файлов esxDOS . И если при удвоенной частоте ещё как-то можно попадать по нужным каталогам и файлам, то при дальнейшем увеличении это уже просто издевательство. Мне кажется, такие вещи надо всё-таки продумывать.
Что же касается эмуляции ленты и дисков, то, с одной стороны, вроде всё хорошо. То есть программы загружаются, выполняется сохранение на диск (на ленту не проверял). С другой стороны, у меня возникли проблемы с загрузкой дисков журналов Spectrofon и ZX Format : начинается загрузка, иногда даже до заставки доходит, но потом идёт сброс. Возможно, это связано с защитой этих дисков, но в эмуляторах они загружаются нормально. Зависит ли это от эмуляции образов TRD в esxDOS или на это влияет само ядро ZX Spectrum в ZXDOS+ - я не понял. Ещё один баг словил при сохранении на диск TRD после загрузки снэпшота снятого самим esxDOS - игра просто вылетела. То есть и тут могут быть нюансы.
Ядро ZX Spectrum
А теперь немного про само ядро ZX Spectrum в ZXDOS+ и мои впечатления по его использованию. Начну с того, что поддержка esxDOS - это очень хорошо. Про её минусы я уже написал выше, но без этого устройство теряет 90% смысла.
Ядро точно воспроизводит работу ZX Spectrum (и "мультиколор" тоже работает), хотя не совсем удобно, что иногда надо лезть в BIOS и устанавливать те же тайминги для Pentagon . Можно увеличивать частоту процессора вплоть до 27 МГц, но это, опять же, только через BIOS, и не всеми играми нормально поддерживается. Зато при длительных операциях можно временно зажимать кнопку F12 и на это время устройство максимально ускоряется.
Вполне комфортно работать на стандартной PC-клавиатуре, хотя если вы программируете на BASIC48 вам отчаянно будет не хватать наклеек на клавиши (их, наверное, можно где-то купить или сделать самому). Т.е. для меня наличие настоящей спектрумовской клавиатуры не особо важно, особенно если это помогает уменьшить устройство и не остаться без него в случае поломки клавиатуры. Как раз мой Pentagon 128 мне пришлось забросить, потому что начала глючить клавиатура, а поменять её плёнку в то время было не так-то легко. Но для ZXDOS+ нужна PS/2-клавиатура, либо у USB-клавиатуры должна быть поддержка протокола PS/2. И ещё нюанс: в устройстве есть порт USB для клавиатуры с поддержкой протокола PS/2 (чтобы не использовать переходник), но у меня в таком случае не работала мышь.
Есть поддержка Kempston-мыши и есть отдельный порт для неё. Но сначала надо найти либо PS/2-мышь, либо пробовать с переходником USB-2-PS/2 (но не все мыши поддерживают сам протокол PS/2, а без этого переходник бесполезен). Минус - нет возможности поменять клавиши для мыши местами, а это иногда полезно (я не могу играть в UFO2 в режиме боя - постоянно путаю, что "идти" правой кнопкой и "стрелять" левой). Ну и нельзя использовать беспроводные мыши и клавиатуры - вот это реально печалит. А вот если бы была полноценная поддержка USB-протокола (я уж молчу про Bluetooth), то тут могли бы быть варианты.
С джойстиками всё отлично. В BIOS можно выбрать как будут представляться джойстики Спектруму и, соответственно, вполне можно играть сразу на двух джойстиках. Кстати, джойстиком-то обычно называется палка торчащая вверх с кнопкой (например, вот такой вариант ). Я в своё время переломал в порыве страсти во время игр кучу дешевых джойстиков следующего вида (а потому что они были сделаны из говна из плохого пластика):
Но гораздо удобнее использовать обычный геймпад, тем более что сюда подходят те же джойстики для Sega Mega Drive 2, которые стоят достаточно дешево. Правда, покупать совсем дешевые варианты я бы вам не советовал, поскольку качество у них ниже плинтуса - хватит на месяц, а потом кнопки перестанут нажиматься. Я себе заказал беспроводной(!) геймпад , поскольку видел на видео, что он работает в ZX Spectrum Next , но жду пока он до меня доедет (доехал - работает отлично!). Геймпада-то мне в 90-х не хватало, а мысль перепаять какой-нибудь от Денди или Сеги мне тогда и в голову не приходила.
Хорошо, что в качестве питания используется USB-кабель, можно запитаться хоть от монитора с USB-хабом, хоть от телевизора. И подключиться VGA-кабелем тоже пока возможно почти ко всем мониторам и телевизорам (подключить к телевизору через RCA можно с помощью копеечного переходника ). К сожалению, используется низкое разрешение и низкая вертикальная частота развертки - могут быть проблемы с некоторыми телевизорами и мониторами. У меня один телевизор включался только при выставленной частоте в 60 Hz, а один из мониторов работал только с частотами выше 50 Hz. Ну и разрешение - не фонтан, чисто для мониторов 15-летней давности. Почему нельзя самому выбрать нормальное разрешение лично мне непонятно.
Итого
Ну а в целом ZXDOS+ с ядром ZX Spectrum полностью удовлетворил мои потребности в качестве современного Спектрума. Всё работает, как и обещано, а на SD-карте можно держать хоть весь архив программ для ZX Spectrum , созданных за всё время его существования. Есть незначительные нарекания к esxDOS , но они, возможно, будут устранятся по мере выхода новых версий. Например, одно из замечаний, которое у меня было: использование в файловом браузере коротких имён файлов - устраняется с помощью сторонних доработок, например File Browser с поддержкой длинных имён файлов и плюс к этому ещё и дополнительных расширений файлов и функций.
К самому же устройству можно только придраться за использование устаревших портов типа PS/2 (похоже, не так-то просто реализовать полноценную поддержку USB), да за низкое разрешение картинки на современных дисплеях. Всё остальное - на твёрдую пятёрку.
В следующей части разберём использование ядра ZX Spectrum Next и имеет ли оно преимущества перед ядром чистого ZX Spectrum.
Порт проекта u16_speccy на отладочную плату Zr-Tech WXEDA
Плата достаточно бедно укомплектована, для полноценной работы проекта необходимо провести ряд модификаций с паяльником для того, чтобы сделать поддержку SD-карты и задействовать освободившиеся пины (под SD-карту и вывод звука, в частности).
Данная модификация также подходит для таких проектов:
Фото девборды после модификаций:
Фото девборды с SD-адаптером:
В оригинальном проекте файл образов ПЗУ хранится в конфигурационной флеш-памяти и заливается через JTAG вместе с основной прошивкой в отдельные страницы этой флешки (с помощью jic). Ввиду того, что на плате WXEDA стоит достаточно мелкая конфигурационная флеш (EPSC4), на нее не помещается весь образ. Поэтому в данном проекте решено было использовать встроенную на плату SPI Flash ПЗУ Winbond W25Q32 объемом 4МБ.
Запись ROM на W25Q32
Необходимо записать на встроенную SPI Flash Winbond W25Q32 образ roms/output.rom. Так как у автора не было специаольного программатора, но была под рукой Raspberry Pi, было найдено решение, как практически безболезненно прошить впаянную на девборку SPI флешку:
фото этапа программирования с помощью flashrom:
Заливка jic в конфигурационную флеш девборды:
- Открыть проект в Quartus 13
- Открыть Programmer
- Выбрать подготовленный файл speccy_wxeda.jic
- Выбрать подключенный USB Blaster
- Запустить программирование
- После успешной заливки выключить и включить девборду
- Profit :)
Использование Speccy на WXEDA и особенности реализации интерфейса к SD карте
Итак, после подачи питания на плату происходит следующее:
- FPGA заливает в себя конфигурацию с конфигурационной флешки EPCS4 и стартует ее
- Далее запускается конфигурация и управление передается loader'у;
- Loader автоматически загружает содержимое флешки W25Q32 в специальную область ОЗУ (SDRAM), отведенную под хранение ПЗУ
- Управление передается GLUK-у, у нас запускается GLUK-меню
Теперь есть несколько возможностей (с помощью Z-Controller или divMMC контроллера) для монтирования и запуска приложений / образов дисков.
Накопитель увеличился по мере нашего перехода к безбумажной эре. Особенно хранилище личных данных, где люди склонны полагаться на расширенную емкость портативного хранилища, такого как карта памяти.
Ошибка карты памяти
На этой странице мы перечислим наиболее распространенную ошибку карты памяти и предоставим 7 решений для их эффективного устранения.
Часть 1. Ошибки памяти, от которых вы можете страдать
Вы можете проверить следующие ошибки карты памяти:
• «SD-карта недоступна. Файл или каталог повреждены и нечитаемы»
• «Ошибка чтения / записи на SD-карту»
• «Ошибка карты памяти» или «Поврежденная карта памяти»
Пока вы пытаетесь получить доступ к вашим драгоценным фотографиям или видео, хранящимся на карте.
Вы можете видеть содержимое вашей SD-карты в вашей камере, а также в вашей системе, но не можете скопировать это содержимое.
• «SD-карта не отформатирована. Вы хотите отформатировать ее сейчас?»
Ваша SD-карта распознается вашим компьютером, но вы не можете видеть сохраненные фото или видео.
• Вы не можете ничего добавлять, удалять, копировать или сохранять на SD-карте.
• Большинство фотографий на ваших SD-картах отсутствуют, о чем вы не сообщаете.
Часть 2. 7 Решения для исправления ошибок памяти
Следующие решения могут помочь вам удалить ошибки памяти и получить нормальное использование.
1. Карта памяти не обнаружена
Если ваша медиа-карта не может быть распознана компьютером или телефоном, даже камерой, вы можете попробовать подключить карту памяти к другому устройству.
Или проверить эту статью (SD-карта не читает?) чтобы получить полные решения.
2. Карта памяти заблокирована или защищена от записи
Для удаления ошибки защиты от записи на карту памяти необходимо проверить маленькую вкладку по краю и отключить ее.
Или, вы можете обратиться сюда, чтобы получить подробное руководство по разблокировать SD-карту.
3. Карта памяти просит отформатировать
1 Опция команды запуска
Windows 8 и выше: Щелкните правой кнопкой мыши кнопку «Пуск» и выберите «Командная строка (администратор)».
2 Введите "diskpart" и нажмите Enter> введите "list disk" и нажмите Enter.
Появится список всех доступных дисков на вашем компьютере. Запишите номер диска, который по размеру соответствует формату SD-карты, которую вы форматируете.
3 Введите «выберите диск n» (где n - номер диска для SD-карты) и введите> введите «атрибуты диска очищаются только для чтения» и введите> введите «очистить» и введите> введите «выход» и введите для выхода из diskpart.
4. Карта памяти пуста или файловая система не поддерживается
Когда вы пытаетесь получить доступ к тем фотографиям или видео, хранящимся на карте камеры, вы подключаете карту к компьютеру, но обнаруживаете, что все изображения и папки теперь отсутствуют или стали ярлыками (с размером в несколько КБ реального размера может быть МБ или ГБ).
Если вы столкнулись с этой проблемой, ваши файлы могут быть скрыты на карте памяти, попробуйте выполнить следующие действия:
1 Откройте карту micro SD с отсутствующим файлом> нажмите «Сервис» меню> выберите «Параметры папки».
5. Пароль памяти забыли
Пользователям Android разрешено создавать пароль для SD-карты. Если вы забыли пароль, выполните следующие действия:
1 Зайдите в Диспетчер файлов на вашем мобильном телефоне> Перейдите в Настройки> Системные папки. Найдите файл с именем «mmcstore» и отправьте его на свой компьютер через Bluetooth.
2 Используйте Блокнот, чтобы открыть ваш файл. Пароль для вашей карты памяти находится в этом файле.
6. Ошибки карты памяти в камере
Карта памяти не читает
Карта памяти заблокирована
Пожалуйста, убедитесь, что вы случайно не поместили крошечный блокировочный ползунковый переключатель сбоку вашей SD-карты в «заблокированное» нижнее положение. Правильное положение «разблокировано» следует сдвинуть вверх в направлении разъемов.
Ошибка Canon 99
1. Проверьте объектив на другой камере.
2. Очистите контакты объектива камеры. На задней части объектива, а также на основании крепления объектива, вы найдете серию металлических контактов золотистого цвета. Это то, как объектив и камера взаимодействуют. Если контакт объектива или камеры загрязнен, связь будет заблокирована.
3. Перезагрузите камеру.
4. Выполните цикл питания.
Выключите камеру> Снимите объектив и наденьте крышку корпуса> Извлеките карту памяти, основной аккумулятор и небольшую резервную батарею> Подождите 5 минут.
7. Потерять данные на карте памяти
Если вы потеряли данные по случайному удалению или по неизвестным причинам, вам следует восстановить удаленные данные прямо сейчас.
- Восстановите данные с пустой, отформатированной, поврежденной и т. Д. Карты памяти на компьютер.
- Получить удаленные или потерянные медиа-файлы (фотографии, видео и аудио файлы) на карте памяти.
- Верните утраченные файлы документов, такие как электронные письма Excel, Word, RTF, TXT, HTML, PowerPoint и т. Д. И другие данные.
- Восстановление потерянных или удаленных файлов с флешки, съемных носителей, жесткого диска, диска с разделами и т. Д.
- Восстановите данные, выбрав тип или файл свободно на ваш компьютер.
1 Запустить восстановление данных
Загрузите, установите и запустите на компьютере программное обеспечение для восстановления данных с карты памяти. Вставьте карту памяти в слот для карты, который находится на левой стороне вашего компьютера.
2 Выберите тип данных на карте памяти
В основном интерфейсе этого инструмента вы можете увидеть множество типов данных и жестких дисков, которые вы можете выбрать.
Отметьте тип данных, который вы хотите восстановить. Для местоположения, здесь вам нужно выбрать SD-карту под Съемные устройства часть.
3 Сканирование данных на карте памяти
Нажмите на Scan Кнопка для быстрого сканирования всех выбранных файлов с SD-карты. Он разработан с двумя способами сканирования данных. Кроме Быстрое сканированиеВы также можете использовать Глубокий анализ на поиск ваших потерянных данных.
4 Восстановить данные
Когда процесс сканирования завершен, вы можете начать управлять различными файлами на вашей карте памяти. Выберите данные, которые вы хотите восстановить, затем нажмите на Recover кнопка для подтверждения операции. Через некоторое время все выбранные данные SD будут скопированы на ваш компьютер.
Заключение
Если у вас есть какие-либо вопросы, оставьте свои комментарии ниже.
Что вы думаете об этом посте.
Рейтинг: 4.8 / 5 (на основе голосов 111)
27 января 2021 11:50 / Автор: Аманда Браун в File Recovery
Вы можете столкнуться с ошибкой iTunes 7/3194/17/9 или другими кодами ошибок iTunes при использовании iTunes и iPhone / iPad / iPod, здесь мы показываем эффективные способы исправления ошибок iTunes.
Когда вам нужно управлять файлами и папками на Android SD-карте, вы можете узнать больше о лучших 5 менеджерах SD-карт.
Как восстановить файлы с SD-карты? Бесплатное Android SD Card Recovery может легко восстановить фотографии, музыку и другие файлы с SD Card и мобильных телефонов и планшетов Android.
Читайте также: