Usb flash. введение и часть 1 – работа с at45db161d

SOFTWARE

Данное описание может быть полезно владельцам ADSL модемов D-link 300/500G, а также другого оборудования, в котором применяется флеш память Atmel серии AT45.

Упор сделан на программирование AT45DB161B в составе  перечисленных модемов, но вероятно применение методики и ПО (возможно с некоторой доработкой) для отдельного программирования микросхем серии AT45 и других со сходным алгоритмом чтения записи.

Исходники ПО, написанного на LabVIEW 7.1 прилагаются. Repair_ADSL_D-link_programmator_for_Atmel_AT45[Chupakabra].rar

Зеркало: repair_dlink, Repair_ADSL_D-link_programmator_for_Atmel_AT45_Chupakabra_.rar

HARDWARE

Информация по алгоритмам записи и чтения взята из «AT45DB161B.pdf»

Для чтения всего флеша используется Opcode 0xE8, для блочной записи Opcode 0x85, для блочного чтения 0xD2.

Распиновка 6-pin разъема для DSL-300G/500G взята из

emergency direct flash.zip

Other_InfoAT45DB161B.pdf

Pins info LPT 6-pin interface AT45DB161B
+3.3 V 4 3 NOT connected to AT45DB161* (But connected to 4th-pin of LPT with invariable 3.3v voltage)
SI 5 1 13
SCK 6 5 12
^CS (инвертированный) 7 4 11
SO 11 2(WITH 100¦¸Resist 0.25w) (я брал 150 Ом) 14
GND 18 6 7

Фотография модема Huawey, но расположение разъема и флеша похоже на D-link.

Кабель, который я использовал для программирования можно посмотреть в my_programmator.jpg  J

Распиновка 5-pin разъема для DSL-300G/500G. Разъем представляет, по сути, консольный порт с уровнями напряжения LVTTL (+3.3V).

1 Tx
2 GND
3 +3
4 GND
5 Rx

Где, конкретно, pin1 я не помню, но можно померить тестером, на нем должно быть

+(3-5)V относительно GND. Я использовал переделанный кабель от телефона Motorola (на базе MAX232-аналог микросхемы) для подключения консольного порта к компьютеру.

Некоторая информация об использовании этого (5-pin) разъема, а также параметры соединения можно найти в файлах:

Other_Infofailedug.php.html

Other_Info hyperterminal.php.html

Все ПО в целях сокращения временных затрат J написано на  National Instruments LabVIEW 7.1. Для запуска EXE файлов необходимы Run-Time библиотеки поддержки:

lvruntimeeng.msi (из lv71runtimeeng.rar) !!!

ПО состоит из двух программ:

  1. Chupa_flash_reader_AT45.exe – флеш-ридер, делает полный dump флеша.

Программа начинает работать после нажатия на кнопку со стрелкой (подчеркнута на первом рис. синий линией, второй рис. во время работы).

Если все правильно подключено, указан правильный адрес LPT порта (default: 0x378), то данные должны считываться и отображаться на индикаторе SO и в нижнем текстовом поле. Настройки ^CS, SCK … mask отвечают за используемые при чтении и записи контакты LPT (соответствующие биты регистра данных и статуса LPT). По умолчанию все соответствует распиновке из раздела HARDWARE.

  1. Chupa_flasher_AT45.exe – прошивальщик флеша.

Принцип работы: прошивальщик считывает (проверяет) блоки данных размером 528 байт (см. спецификацию по флешу AT45), сверяет их с соответствующими блоками из файла прошивки, если блоки не равны, то соответствующий блок переписывается до тех пор, пока не станут идентичными.

Решение возможных (предполагаемых) проблем сводятся к заданию временным интервалов в алгоритмах записи и чтения. Решаются или увеличением параметров “Задержка чтения”, “Задержка записи” или правкой кода J.

Firmware. Для восстановления своего D-link 300G, я использовал следующую прошивку для 500G (они аппаратно идентичны J):

Firmware
2.01.b15.rar

В общем, главное здесь то, что TEimage.bin  заливается напрямую во флеш !!!

Кроме этого я прилагаю исходники всего ПО:

Chupa_flasher_AT45.llb – библиотечный файл LabVIEW.

Chupakabra

pi_meson@front.ru

Источник: http://bluelab.narod.ru/dlink/repair_dlink.htm

Бесплатные программы для ремонта флешек

19.03.2018  программы | ремонт компьютеров

Разнообразные проблемы с USB-накопителями или флешками — это то, с чем сталкивается, наверное, каждый их владелец. Компьютер не видит флешку, не удаляются и не записываются файлы, Windows пишет, что диск защищен от записи, неправильно показывается объем памяти — это не полный перечень таких проблем.

Возможно, если компьютер просто не определяет накопитель, вам поможет еще и это руководство: Компьютер не видит флешку (3 способа решения проблемы).

Если же флешка определяется и работает, но необходимо восстановить файлы с нее, для начала рекомендую ознакомиться с материалом Программы для восстановления данных.

Если различные способы исправить ошибки USB накопителя путем манипуляций с драйверами, действий в «Управлении дисками» Windows или с помощью командной строки (diskpart, format и пр.

) не привели к положительному результату, можно попробовать утилиты и программы для ремонта флешек, предоставляемые как производителями, например, Kingston, Silicon Power и Transcend, так и сторонними разработчиками.

Отмечу, что использование программ, описанных ниже, может не исправить, а усугубить проблему, а проверка их работоспособности на исправной флешке может привести к выходу ее из строя.

Все риски вы берете на себя.

Также полезными могут оказаться руководства: Флешка пишет Вставьте диск в устройство, Windows не удается завершить форматирование флешки,  Сбой запроса дескриптора USB устройства код 43.

В этой статье сначала будут описаны фирменные утилиты популярных производителей — Kingston, Adata, Silicon Power, Apacer и Transcend, а также универсальная утилита для SD карт памяти. А после этого — подробное описание, как узнать контроллер памяти своего накопителя и найти бесплатную программу для ремонта именно этой флешки.

Transcend JetFlash Online Recovery

Для восстановления работоспособности USB накопителей Transcend производитель предлагает собственную утилиту — Transcend JetFlash Online Recovery, которая, теоретически, совместима с большинством современных флешек производства этой компании.

На официальном сайте доступны две версии программы для ремонта флешек Transcend — одна для JetFlash 620, другая — для всех остальных накопителей.

Для работы утилиты необходимо наличие подключения к Интернету (для автоматического определения конкретного метода восстановления). Утилита позволяет восстановить флешку как с форматированием (Repair drive and erase all data) так и, при возможности, с сохранением данных (Repair drive and keep existing data).

Скачать утилиту Transcend JetFlash Online Recovery можно с официального сайта https://ru.transcend-info.com/supports/special.aspx?no=3

Silicon Power Flash Drive Recovery Software

На официальном сайте Silicon Power в разделе «Поддержка» представлена программа для ремонта флешек этого производителя — USB Flash Drive Recovery.

Для загрузки потребуется ввести адрес электронной почты (не проверяется), затем загружается ZIP-архив UFD_Recover_Tool, в котором находится SP Recovery Utility (требует для работы компоненты .

NET Framework 3.5, загрузятся автоматически при необходимости).

Аналогично предыдущей программе, для работы SP Flash Drive Recovery требуется подключение к Интернету и восстановление работы происходит в несколько этапов — определение параметров USB накопителя, загрузка и распаковка подходящей утилиты для него, затем — автоматическое выполнение необходимых действий.

Скачать программу для ремонта флешек Silicon Power SP Flash Drive Recovery Software можно бесплатно с официального сайта http://www.silicon-power.com/web/download-USBrecovery

Kingston Format Utility

Если вы являетесь владельцем накопителя Kingston DataTraveler HyperX 3.0, то на официальном сайте Kingston вы можете найти утилиту для ремонта этой линейки флешек, которая поможет отформатировать накопитель и привести его в состояние, которое он имел при покупке.

Скачать бесплатно Kingston Format Utility можно со страницы https://www.kingston.com/ru/support/technical/downloads/111247

ADATA USB Flash Drive Online Recovery

У производителя Adata также имеется своя утилита, которая поможет исправить ошибки флешки, если не удается прочитать содержимое флешки, Windows сообщает, что диск не отформатирован или вы видите другие ошибки, связанные с накопителем. Для загрузки программы потребуется ввести серийный номер флешки (чтобы загрузилось именно то, что требуется) как на скриншоте ниже.

После загрузки — запустить скачанную утилиту и выполнить несколько простых шагов по восстановлению работы USB устройства.

Официальная страница, где можно скачать ADATA USB Flash Drive Online Recovery и прочитать об использовании программы — http://www.adata.com/ru/ss/usbdiy/

Apacer Repair Utility, Apacer Flash Drive Repair Tool

Для флешек Apacer доступно сразу несколько программ — разные версии Apacer Repair Utility (которые, правда, не удается найти на официальном сайте), а также Apacer Flash Drive Repair Tool, доступная для скачивания на официальных страницах некоторых из флешек Apacer (поищите на официальном сайте конкретно вашу модель USB накопителя и загляните в раздел загрузок внизу страницы).

Судя по всему, программа выполняет одно из двух действий — простое форматирование накопителя (пункт Format) или низкоуровневое форматирование (пункт Restore).

Formatter Silicon Power

Formatter Silicon Power — бесплатная утилита низкоуровневого форматирования флешек, которая, по отзывам (в том числе в комментариях к текущей статье), работает и для многих других накопителей (но используйте её на свой страх и риск), позволяя восстановить их работоспособность, когда никакие другие методы не помогают.

На официальном сайте SP утилита больше не доступна, так что придется воспользоваться гуглом, чтобы её скачать (на неофициальные расположения я ссылок в рамках этого сайта не даю) и не забудьте проверить скачанный файл, например, на VirusTotal перед его запуском.

SD Memory Card Formatter для ремонта и форматирования карт памяти SD, SDHC и SDXC (в том числе Micro SD)

Ассоциация компаний-производителей карт памяти SD предлагает собственную универсальную утилиту для форматирования соответствующих карт памяти при возникновении проблем с ними. При этом, судя по доступной информации, она совместима почти со всеми такими накопителями.

Сама программа доступна в версиях для Windows (есть поддержка и Windows 10) и MacOS и довольно-таки проста в использовании (но потребуется наличие кард-ридера).

Скачать SD Memory Card Formatter можно с официального сайта https://www.sdcard.org/downloads/formatter_4/

Программа D-Soft Flash Doctor

Бесплатная программа D-Soft Flash Doctor не привязана к какому-либо определенному производителю и, судя по отзывам, может помочь исправить проблемы с флешкой посредством низкоуровневого форматирования.

Кроме этого, программа позволяет создать образ флешки для последующей работы уже не над физическим накопителем (во избежание дальнейших неисправностей) — это может пригодиться, если вам требуется получить данные с Flash диска. К сожалению, официальный сайт утилиты найти не удалось, но она доступна на многих ресурсах с бесплатными программами.

Как найти программу для ремонта флешки

На самом деле такого рода бесплатных утилит для ремонта флешек куда больше, чем здесь перечислено: я постарался учесть лишь относительно «универсальные» инструменты для USB накопителей разных производителей.

Вполне возможно, что ни одна из вышеперечисленных утилит не подходит для того, чтобы восстановить работоспособность вашего USB накопителя. В этом случае, вы можете воспользоваться следующими шагами, чтобы найти нужную программу.

  1. Загрузите утилиту Chip Genius или Flash Drive Information Extractor, с помощью нее вы можете узнать, какой контроллер памяти используется в вашем накопителе, а также получить данные VID и PID, которые пригодятся на следующем шаге. Загрузить утилиты можно со страниц: http://www.usbdev.ru/files/chipgenius/ и http://www.usbdev.ru/files/usbflashinfo/ соответственно.
  2. После того, как эти данные вам известны, зайдите на сайт iFlash http://flashboot.ru/iflash/ и введите в поле поиска VID и PID, полученные в предыдущей программе. 
  3. В результатах поиска, в столбце Chip Model обратите внимание на те накопители, в которых используется тот же контроллер, что и у вас и посмотрите на предлагаемые утилиты для ремонта флешки в столбце Utils. Остается только найти и скачать соответствующую программу, после чего посмотреть, подходит ли она для ваших задач.

Дополнительно: если все описанные способы отремонтировать USB накопитель не помогли, попробуйте Низкоуровневое форматирование флешки.

А вдруг и это будет интересно:

Источник: https://remontka.pro/usb-repair-software/

Реанимация флэшек

Вопрос: Флэшка Canyon 1 Гб (CN-USB20AFD1024A) “разбита” на две части: Public и Security. Фирменная утилита не позволяет удалить раздел Security.
Ответ: Вам нужно обнулить первичную загрузочную область MBR при помощи утилиты Flashnull. Может также помочь утилита U-Storage Tool 2.9.

Вопрос: Флэшка Kingston DataTraveler 512 (контроллер AU6981 E42-GDL-NP). Копирование данных невозможно, при этом возникает сообщение о защите записи.

Ответ: Вам нужно загрузить драйвер с сайта производителя и воспользоваться утилитой AU6980, чтобы провести низкоуровневое форматирование.

Читайте также:  Светодиодная матрица 24x6

Затем любой DOS-утилитой вроде PartitionMagic из-под DOS создать раздел и отформатировать его. Впрочем, возможно, что доступным станет не весь объём флэшки.

Полезные утилиты

HDD Low Level Format Tool – утилита для низкоуровневого форматирования жесткого диска, а также внешних устройств, подключенных через интерфейс USB (например, флеш-карт). Кроме этого, HDD Low Level Format Tool умеет выдавать информацию S.M.A.R.T.

Работает с SATA, IDE и SCSI HDD размером до 281 474 976 710 655 бит производства Maxtor, Hitachi, Seagate, Samsung, Toshiba, Fujitsu, IBM, Quantum, Western Digital. Программа полностью уничтожает данные, проводит низкоуровневое форматирование и позволяет изменять размер накопителя в пределах до 281 474 976 710 655 байт.

Работает с внешними устройствами через интерфейсы USB и Firewire.

Присутствует возможность использования Ultra-DMA режима
Низкоуровневое форматирование проводится как правило в следующих случаях: • если вы получили совершенно новый накопитель отдельно от компьютера и он оказался неподготовленным к работе; • если появился сбой в нулевой дорожке, вызывающий проблемы при загрузке с жесткого диска, но сам диск при загрузке с дискеты доступен; • если появляются сообщения об ошибке при записи информации на диск (другой причиной этой неполадки могут быть неисправный разъем или кабель); • если вы возвращаете в рабочее состояние старый диск, например, переставленный со сломавшегося компьютера. В этом случае для обеспечения надежной работы нужно протестировать диск, чтобы найти и отметить все сектора, недопустимые для записи; • если диск оказался сформатированным для работы с другой операционной системой; • если диск перестал нормально работать и все методы восстановления не дали положительных результатов;

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

JetFlash 120 Recovery Tool – фирменная утилита от Transcend для восстановления Jetflash.

Flash Recovery Tool 1.0 – программа восстановления работоспособности флэшек.

FLASH DOCTOR RUSSIAN v1.0.2 – программа для работы с носителями (флэш, жёсткие диски). Использует низкоуровневый метод форматирования дисков, может создавать образы дисков и записывать их на носители.

Flash Memory Toolkit 1.1 – утилита для тестирования Flash-накопителей. Компания EFD Software известна как создатель приятного бесплатного теста жестких дисков HD Tune. Новейшая же ее разработка Flash Memory Toolkit является целым комплексом для обслуживания накопителей на основе флэш-памяти

EzRecover – Утилита восстановления USB Flash, помогает, когда флэш определяется как Security Deviсe, вообще не определяется или показывает 0Mb объем. Для того чтобы EzRecovery увидел флэшку надо после запуска программы и выдачи сообщение об ошибке вынуть флешку и снова вставить ее и тогда все путем. Внимание! После использования программы все данные на флэш не сохранятся.

HP USB Disk Storage Format Tool – компактная утилита доя форматирования различных флэшек.

F-Recovery – восстанавливает фото и видео данные после форматирования или ошибок записи. Для каждого типа карт есть своя версия утилиты.
HDD Low Level Format Tool – программа позволяет проводить низкоуровневое форматирование накопителей и Flash карт.

Основные возможности: поддерживает работу с интерфейсами S-ATA (SATA), IDE (E-IDE), SCSI, USB, Firewire поддерживает накопители следующих фирм-производителей: Maxtor, Hitachi, Seagate, Samsung, Toshiba, Fujitsu, IBM, Quantum, Western Digital поддерживает форматирование Flash карт при использовании кардридера HDD Low Level Format Tool полностью уничтожает данные, проводит низкоуровневое форматирование и позволяетт изменять размер накопителя в пределах до 281 474 976 710 655 байт. Работает с внешними устройствами через интерфейсы USB и Firewire.

Присутствует возможность использования Ultra-DMA режима. При форматировании очищается таблица разделов, MBR и каждый байт данных. Программа полностью уничтожает любую информацию, после чего о восстановлении данных не может быть и речи.

LLFsetup – Эта утилита позволяет конвертировать файловую систему флэшки без потери данных. F-Recovery for CompactFlash – Утилита позволяет восстанавливает удалённые фотографии и видеосюжеты с карточек CompactFlash после форматирования или ошибок записи.

UsbIDCheck (USB Bench – Faraday USB Test Utility)– Программа для получения информации о всех подключенных USB устройств. Показывает значения idVendor и idProduct для определения типа контроллера устройства. Список, по которому можно определить производителя устройства находится в архиве с программой.

GetDataBack – программа для восстановления информации, случайно или в результате умышленных действий удаленной с жесткого диска – в большинстве случаев восстанавливает данные, в том числе даже после низкоуровневого форматирования.

GetDataBack допускает восстановление данных как на том компьютере, на котором установлена программа, так и на удаленном, например, на любом из компьютеров локальной сети; кроме этого можно восстанавливать данные на любом сменном носителе информации.

Еще одно хорошее свойство этой программы – быстрая работа

RecoverMyFiles – это мощный инструмент для восстановления удаленных файлов. Работает с FAT12, FAT16, FAT32 и NTFS файловыми системами, ведёт поиск удалённых документов на диске исходя из особенностей строения того или иного формата (ZIP, DOC, JPG и т.д.) Может восстанавливать документы, графические файлы, музыкальные и видеофайлы, электронную почту.

RecoverMyFiles может восстанавливать файлы, которые были удалены из корзины, а также те, которые были утрачены в результате форматирования жесткого диска, переустановки Windows, из-за воздействия вируса или действия червя, неожиданного выключения компьютера, “зависания” программы.

Восстановление файлов с жесткого диска, flash-карт фото-видеокамер, USB, Zip, флоппи-дисков и т.д. У программы много опций для поиска во временных папках, и она может даже обнаруживать и восстанавливать файлы, которые никогда не были сохранены. Может востанавливать информацию даже после форматирования.

Особенность: простота использования за счет “мастера”, делающего процесс восстановления очень легким. File-systems: FAT 12, FAT 16, FAT 32, NTFS и NTFS5

F-Recovery for SD – Если вы случайно удалили или отформатировали фотографии, видеоклипы или звуковые файлы на носителе данных или pulled он в ходе операции записи, не волнуйтесь – F-Recovery for SD может легко, быстро и абсолютно надежно восстановить потерянные данные.

F-Recovery for CompactFlash 2.1 – позволяет восстанавливает удалённые фотографии и видеосюжеты с карточек CompactFlash после форматирования или ошибок записи

SIV (System Information Viewer) 3.35 – утилита, показывающая самую разнообразную и очень подробную информацию о системе, локальной сети и аппаратном обеспечении.

Выдает информацию о широком наборе характеристик локального компьютера и рабочих станций: установленное оборудование и программное обеспечение, данные с датчиков температуры и напряжений, сведения о процессоре, памяти, жестких дисках и очень многое другое.

Дополнпительная информация

Похожие публикации

Источник: https://www.windxp.com.ru/flashr.htm

Восстановление флешки и прошивка контроллера

Наверное, мало кого найдешь из пользователей персонального компьютера без флешки в кармане, потому что это устройство очень удобное, портативное, быстро можно записать файлы и на сегодняшний день недорого стоит.

Но флешкам свойственно ломаться, как и всем электронным устройствам. Часто флешка ломается через месяц и конечно такая ситуация бывает не очень приятной.

Также свойственно восстановление флешки, если прочитать внимательно данную статью.

Основными причинами выхода из строя флешки являются: небезопасное извлечение ее из usb – порта, если не дождались полного копирования файлов с жесткого диска компьютера на флешку или наоборот, вирусы и прочее. Причин может быть много, но думаю это для Вас не важно, самый главный вопрос это восстановление флешки.

Восстановление флешки путем ее форматирования

Если есть возможность отформатировать флешку и система не выдает отказ на это действие, то лучше начать именно с форматирования. В операционной системе Windows есть встроенная утилита для форматирования. Также есть отдельные утилиты для форматирования флешек, например, .

Если не помогло, то можно воспользоваться утилитой для низкоуровневого форматирования . Только при выборе флешки не спутайте жесткий диск, а то можете отформатировать его. Так что будьте внимательны!!!

Есть еще одна программа для восстановления жестких дисков, но так же подходит и для флешек. Программа устраняет физические повреждения (сбойные сектора) с поверхности жесткого диска и флешек. Также поддерживает низкоуровневое форматирование. После форматирование можно восстановить данные с флешки.

Если форматирование флешки не удается, то не отчаивайтесь. Возможно, слетел контроллер и его можно перепрошить.

Определение, поиск и прошивка контроллера флешки

Для того чтобы прошить контроллер необходимо узнать его модель и производителя, а точнее VID, PID и VendorID.

Просто так это не узнаешь, поэтому понадобиться утилита , если эта утилита не помогла можно также воспользоваться утилитами Usbdeview или ChipGenius.

Но вроде, сколько не пользовался, утилита CheckUDisk работает безотказно и выдает необходимую информацию.

Даже если флешка не определяется как накопитель, но операционная система видит его как устройство, то утилита определяет VID и PID.

Поэтому вставляем флешку в USB-порт и запускаем утилиту CheckUDisk.

Нам нужно только VID, PID и VendorID, в моем случае VID = 0951 и PID = 1613, а VendorID: Kingston.

Далее надо искать по этим атрибутам утилиту для прошивки контроллера флешки. Для этого проходим по ссылке iFlash и вводим модель в нужные поля сайта и нажимаем на кнопку Найти.

После чего отобразиться список моделей флешек с утилитами для прошивки контроллера. И тут нам надо найти подходящий вариант.

Советую Вам не закрывать, а если закрыли запустить утилиту CheckUDisk, чтобы при поиске можно было поглядывать и на другие атрибуты флешки, чтобы облегчить свой поиск.

В моем случае в списке предложено не мало вариантов, так что выбор большой. Тут надо выбрать более подходящий. Работаем в два окна, где один сайт flashboot.ru, а другое окно утилита CheckUDisk. Некоторые утилиты для прошивки совпадают по названию с разными моделями флешек, просто они совместимы.

Копируем название утилиты для прошивки контроллера, которая нам подходит (в моем случае MPTool MP2232 v1.06.00) и вставляем поисковую строку раздела Файлы и нажимаем на кнопку Найти.

Вот что-то нашли, в принципе подходит, а значит можно скачать и восстановить флешку.

Конечно может сразу не получиться, но не надо сразу расстраиваться. Возвращаемся в список утилит для прошивки контроллера флешки и ищем аналогичную.

Часто в базе бывает не одна утилита, которая подходит именно для нашей флешки. Например, у меня тоже не с первого разу получалось,  приходилось экспериментировать.

Восстановление флешки как я писал требует усидчивости и умение экспериментировать.

Я надеюсь Вам поможет эта информация и ваша флешка вновь наполниться файлами. А с Вами был блог об онлайн сервисах и приложениях.

Источник: http://lifevinet.ru/soft/osstanovlenie-fleshki.html

Чинить нельзя выбросить, или Кое-что о ремонте флешек. Часть 2: Программные проблемы

Программные неисправности флешек встречаются нередко. В этих случаях накопитель внешне цел, при подключении в порт USB подаёт признаки жизни — моргает индикатором и даже определяется в ОС, но доступа к данным не даёт.

Опознавшийся логический диск имеет некорректную ёмкость (нулевую, 512 байт, 1 Мбайт или пару терабайт), а при каждом обращении к нему выдаются сообщения «Вставьте диск», «Произведите форматирование», «Нет доступа к диску» и прочее в таком же роде.

Основная причина — сбой микропрограммы, в обиходе часто называемой прошивкой. Прошивка состоит из микрокода контроллера и служебных данных на микросхемах флеш-памяти.

Микрокод закладывается в контроллер ещё на этапе изготовления (обычно это небольшое масочное ПЗУ), при эксплуатации не меняется и портится редко — если только вместе с чипом (но тогда это уже аппаратная проблема).

Зато «служебка» (это в первую очередь транслятор, а также параметры памяти и различные идентификаторы и флаги) переписывается довольно часто, отчего она подвержена всяческим искажениям. 

Чаще всего к проблемам приводят сбои питания в тот момент, когда контроллер занят какой-либо внутренней операцией с флеш-памятью. К примеру, записывает туда обновлённые служебные поля или перестраивает транслятор (рутинная процедура для выравнивания износа).

Отметим, что индикатор активности при этом не горит, то есть, с точки зрения пользователя, флешка ничего не делает и церемониться с ней необязательно.

И вот происходит неожиданное извлечение её из USB-порта, либо случается провал напряжения 5 В (причина — слабый блок питания ПК, а чаще плохой контакт в разболтанном разъёме), или же статика пробивает на корпус, отчего контроллер зависает.

Во всех этих случаях операция записи остаётся незавершённой, а данные во флеш-памяти — несогласованными, что и приводит к неприятным последствиям.

Прежде всего, страдает целостность транслятора — в нём образуются дыры, и единообразная адресация нарушается. При следующем включении контроллер обнаружит проблему и заблокирует память.

«Сто раз вытаскивал флешку просто так, и никаких проблем, и вот на тебе — такой облом!» — типичная реакция незадачливого владельца.

Есть и другая причина отказа флешек, связанная с нарастанием числа сбойных ячеек. Современная флеш-память типа MLC/TLC NAND довольно ненадёжна, и в чипы закладывается значительный резерв по ёмкости.

Имеется в виду, что по мере выхода из строя дефектные блоки оперативно (через транслятор) заменяются резервными, причём для ОС такие переназначения незаметны.

Дефект-менеджмент — одна из главных функций прошивки, и если интенсивность «ремапа» превышает определённый порог, то микропрограмма сама ставит блокировку, чтобы предотвратить дальнейшие разрушения.

Иногда флешка блокируется более мягко — только на запись. Данные видны и читаются, но при попытках создания файла, стирания или форматирования выдаётся сообщение «Диск защищён от записи».

Подобный ход со стороны контроллера вполне разумен — память NAND повреждается в основном при записи, а чтение в легких случаях можно и оставить. К тому же ущерб для пользователя минимизируется.

Нередко так ведут себя и карты памяти: скажем, для деградирующей microSD самопроизвольное переключение в режим read-only — почти что обычное дело.

Бывает, что сбойная область на флешке (часто небольшого размера, порядка 0,2-4 Мбайт) не только не приводит к блокировке, но и не даёт ошибки при записи и последующем считывании данных. Вот только читается совсем не то, что было записано.

Для пользователя это выглядит как необъяснимая порча одного или нескольких файлов, попавших на дефект. Проверить накопитель можно так: создать на жёстком диске непустой файл размером с флешку, скопировать на неё целиком и сравнить оба файла в бинарном режиме (команда fc /b в Windows).

Если найдётся хотя бы одно несовпадение — флешка ненадёжна.

Подобные «полевые испытания», однако, не дают полной уверенности в исправности девайса. Для всестороннего тестирования флеш-накопителей (не только USB-драйвов, но и любых карт памяти) создан целый ряд специальных утилит, таких как Flashnul 1.0rc1, Flash Drive Tester 1.14, MyDiskTest 2.50, H2testw 1.

4 и Flash Memory Toolkit 2.01. Они компактны, удобны в работе, обладают широкими диагностическими, но одновременно и деструктивными возможностями.

По небрежности можно напортачить (например, затереть жёсткий диск), так что от пользователя требуется внимательность и знакомство с документацией, особенно для Flashnul, работающей в консольном режиме.

Зато утилиты легко определяют дефектные и нестабильные сектора (в просторечии — бэд-блоки), сбои трансляции, реальную производительность, а также, что немаловажно, подделки. Ведь флешки и карты с контроллером, прошитым на бОльшую ёмкость, — постоянный ассортимент китайских базаров и интернет-барахолок.

Во всех описанных случаях проблемная флешка нуждается в ремонте. Программный ремонт включает очистку, а затем тестирование всей доступной флеш-памяти, составление новой таблицы трансляции и запись её в служебную область (обычно по фиксированным адресам). Данные действия часто обозначаются как «низкоуровневое форматирование». Обновляется и вся прочая служебная информация на чипах.

Ровно такие же действия предпринимаются при инициализации новой, только что собранной флешки на заводе, поэтому для ремонта, как правило, используются производственные утилиты класса MPTool.

MP здесь означает Mass Production, и префикс дан не зря: «тул» может работать одновременно с 8 или даже 16 накопителями.

Другое дело, что вне заводского конвейера такие возможности ни к чему и только усложняют жизнь.

Утилиты строго, даже излишне строго специализированы по моделям и модификациям контроллеров, поэтому надо искать подходящую для данного экземпляра версию, да ещё — чтобы она понимала имеющуюся флеш-память (это порой даже важнее). К сожалению, универсальных рецептов здесь нет.

На флешках одной и той же модели версии контроллеров и варианты микросхем памяти меняются чуть ли не от партии к партии, так что готовые решения с форумов часто не срабатывают и приходится искать своё.

Порой всё, что остаётся ремонтнику, — терпеливый перебор десятка-другого утилит той или иной категории плюс игры с настройками (отдельное удовольствие при размере ini-файла в полсотни строк, где смысл многих параметров туманен).

Настройки одной из производственных утилит. Таких вкладок с параметрами — пять

Данный класс технологического софта, конечно, не предназначался для широкого распространения, и ещё лет 5-6 назад добыть нужные программы было нелегко. А при их не слишком дружественном интерфейсе и отсутствии вменяемой документации — задача усложнялась дополнительно.

Но спрос рождает предложение: с тех пор китайцы стянули и обнародовали почти всё, что ремонтнику надо, а наши энтузиасты создали некоммерческий ресурс flashboot.

ru, на котором выложены в свободном доступе практически все имеющиеся ремонтные утилиты (за исключением, пожалуй, самых старых версий, восходящих к временам 64-мегабайтных флешек).

В Сети можно найти и другие полезные каталоги, например usb-disk.ru/prog.php и rdm.kiev.ua/pages/utils/flash. В них собран «флешечный» софт различного происхождения, в том числе фирменный, давно уже исчезнувший с официальных сайтов.

Часть утилит неактуальна (относится к вышедшим из употребления моделям либо решает узкие задачи типа создания на флешке запароленного раздела), но остальное вполне может пригодиться при ремонте или восстановлении данных.

Краткие пояснения облегчают выбор.

Следует отметить ресурс usbdev.ru/files — это фактически альтернатива flashboot.ru, содержащая множество технологических утилит с разбивкой по 35 маркам контроллеров.

К часто используемым утилитам приводятся рекомендации, включая принципы подбора версии, порядок работы, основные параметры и коды ошибок.

Определить модель контроллера и памяти без вскрытия флешки не всегда легко, и на сайте описаны различные способы, как это сделать. Подборка спецификаций на контроллеры и микросхемы памяти пригодится для справок.

Особую ценность сайту flashboot.ru придают методические материалы: инструкции по программному ремонту флешек тех или иных моделей, документация ко многим утилитам, а главное — обширный форум, на котором начинающие и продвинутые ремонтники делятся своим опытом. В постах описаны многочисленные трудности и способы их преодоления. Всех советов не перечислить, приведем три более-менее общих.

Первый совет

Источник: https://3dnews.ru/645336

Восстановление флешки: определение контроллера, прошивка флешки

Доброго дня!

Если ваша флешка стала постоянно сбоить: не форматируется, при подключении к компьютеру – тот часто подвисает, при копировании файлов на нее – вылетают ошибки, но она не подвергалась механическому воздействию – ШАНСЫ на восстановление ее работоспособности есть!

Хорошо бы, если при подключении флешки – она хоть как-то определялась, например: издается звук подключения, флешка отображается в “моем компьютере”, на ней моргает светодиод и пр. Если компьютер совсем не видит флешку, то сначала рекомендую ознакомиться вот с этой статьей: https://ocomp.info/kompyuter-ne-vidit-fleshku.html

Вообще, дать универсальную инструкцию, как и какой программой что делать, чтобы восстановить флешку – невозможно! Но я в этой небольшой статье попытаюсь дать алгоритм, который поможет, даже начинающим пользователям, разобраться с проблемой и решить ее.

Восстановление работоспособности флешки // по шагам

Оказалась по воле судьбы у меня одна флешка, которую Windows отказывалась форматировать – вылетала ошибка “Windows не удается завершить форматирование”. Флешка, по заверениям владельца, не падала, на нее не попадала вода, и вообще, с ней довольно бережно обращались…

Все что было ясно, осмотрев ее, это то, что она на 16 GB, и ее марка – SmartBuy. При подключении к ПК – загорался светодиод, флешка определялась и была видна в проводнике, но работала со сбоями.

SmartBuy 16 GB – “подопытная” не работающая флешка

Чтобы восстановить нормальную работу флешки, необходимо перепрошить микросхему контроллера. Делается это специальными утилитами, и для каждого типа контроллера – своя утилита! Если утилита будет выбрана неверно, то с высокой долей вероятности, вы испортите флешку на совсем… Скажу даже больше, у одного модельного ряда флешек – могут быть разные контроллеры!

У каждого устройства есть свои уникальные идентификационные номера – VID и PID, и флешка здесь не исключение. Чтобы выбрать правильно утилиту для перепрошивки – необходимо определить эти идентификационные номера (а по ним модель контроллера).

Один из самых простых способов узнать VID, PID, и модель контроллера флешки – это использовать специальные утилиты. Одна из лучших в своем роде – это Flash Drive Information Extractor.

Работа с Flash Drive Information Extractor

  1. Отключаем от Usb-портов все, что подключено (по крайней мере все накопители: плееры, внешние жесткие диски и т.д.).
  2. Вставляем ремонтируемую флешку в Usb-порт;
  3. Запускаем программу;
  4. Жмем кнопку “Получить информацию о флешке”;
  5. Через некоторое время получаем максимум информации о накопителе (см. скриншот ниже).
  6. Если программа зависла – ничего не делайте и не закрывайте ее. Выньте флешку через пару минут из USB-порта, программа должна “отвиснуть”, и вы увидите всю информацию, что она успела вытащить с флешки…

Flash Drive Information – VID и PID флешки

Теперь мы знаем информацию о флешке и можем приступить к поиску утилиты.

Дополнение

Определить достоверно модель контроллера можно, если разобрать флешку. Правда, не каждый корпус у флешки разборный, и не каждую потом соберешь обратно.

Обычно, чтобы вскрыть корпус флешки, нужен нож и отвертка. При вскрытии корпуса будьте аккуратны, чтобы не повредить внутренности флешки. Пример контроллера показан на скрине ниже.

Разобранная флешка. Модель контроллера: VLI VL751-Q8

Дополнение 2

Узнать VID и PID флешки можно с помощью диспетчера устройств (в этом случае – ничего и устанавливать не нужно). Правда в этом случае мы не узнаем модель контроллера, и есть некоторый риск, что по VID и PID не получится точно идентифицировать контроллер. И тем не менее, вдруг вышеприведенная утилита зависнет и не даст вообще никакой информации…

  1. Сначала вставляем флешку в USB-порт;
  2. Далее запускаем диспетчер устройств: нажмите сочетание кнопок WIN+R, в строку “Открыть” введите команду devmgmt.msc, нажмите OK (скрин ниже в качестве примера).

    Как запустить диспетчер устройств

  3. В диспетчере устройств откройте вкладку “Контроллеры USB”, а в ней найдите строку “Запоминающее устройство USB” – перейдите в его свойства.
  4. Далее нужно открыть вкладку “Сведения”, выбрать свойство “ИД оборудования”, и вы увидите VID и PID флешки (стрелка 5 на скриншоте ниже).

    Определение VID и PID флешки через диспетчер устройств

Вот, собственно, и все – будем считать, что модель контроллера мы все таки определили…

Как найти утилиту для прошивки флешки

Важно! После прошивки флешки – вся информация на ней будет удалена!

Источник: https://ocomp.info/vosstanovlenie-rabotyi-fleshki.html

Популярно о USB. Часть 1

Немоляев А. В, г. Екатеринбург

Введение

У меня возникла необходимость разобраться с USB и, к своему удивлению, я обнаружил, что материалов по USB на русском языке не так уж много. Решил обобщить свой опыт изучения USB и передать всем желающим с ним познакомиться.

Публикация адресована начинающим разработчикам, тем, кто не знаком с USB, но хотел бы узнать больше. Статья носит учебный характер, и не является исчерпывающим справочным пособием. Для более простого вхождения в тему примеры основаны на стандарте USB 1.1. Если не сказано отдельно, то подразумевается режим FS (Full speed).

В статье нет широко освещенных в других источниках сведений об общей топологии USB, о кабелях, хабах и разъемах. Здесь больше информации о том, что нужно знать разработчику устройств с микроконтроллерами о протоколе USB для своих разработок.

Для устройств USB подключаемых к PC, таких, как мышь, клавиатура, микроконтроллер с поддержкой шины USB, использую термин USB-устройство. Персональный компьютер, к которому подключается USB-устройство, называю хостом.

Доступное изложение теории, будет сопровождаться примерами программ на языке С для микроконтроллера AT90USB162 из популярной линейки megaAVR фирмы Atmel. В качестве источника справочной информации по USB рекомендую книгу Гук М. Ю. «Шины PCI, USB и FireWire. Энциклопедия», издательство «Питер».

Обзор темы

Программное обеспечение хоста делится на два отдельных типа: программное обеспечение инициализации канала связи и программное обеспечение поддержки рабочего режима обмена данными. Программное обеспечение инициализации начинает работать при подключении к хосту нового USB-устройства. Происходит обмен служебной информацией между хостом и USB-устройством.

В результате обменов служебной информацией, хост определяет: тип устройства, его требования к энергопотреблению, возможность поддержки «спящего режима», тип драйверов для правильной работы USB-устройства, и, даже, возможна ли загрузка необходимых прикладных программ для работы с USB-устройством. Это новые веяния в духе спецификации PNP (plug and play).

Устройства могут подключаться и отключаться в горячем режиме. При подключении и отключении происходит автоматическое переконфигурирование программного обеспечения хоста. Процесс настройки хоста на обмен данными, напоминает процесс раскрутки.

Первоначально обмениваются простейшими сигналами по шине, затем процесс усложняется и, наконец, выход на рабочий режим.

Программное обеспечение рабочего режима поддерживает обмен данными, когда хост соответственно сконфигурирован, и USB-устройство вышло на рабочий режим обмена. В спецификации USB этот начальный процесс называется энумерацией.

В последнее время имеется тенденция к унификации не только протоколов обмена, но и устройств, взаимодействующих с персональным компьютером. Точнее, унификация требований к каналу связи. Идея такая. Придумывается универсальная шина для всего, что только можно подключить.

Конечно, эта шина устроена сложно, она многоуровневая, гибкая и адаптируемая для разных конфигураций устройств. Унифицируются и драйверы операционной системы персонального компьютера, который взаимодействует с подключаемым устройством. Преимущество – отпадает необходимость в написании драйвера для ОС разработчиками USB-устройства.

Это должно повышать надежность ОС, так как созданием драйверов могут заняться разработчики ОС, а не разработчики устройств. В общем, все плюсы унификации и стандартизации. Но есть и минусы. Очевидная сложность и связанная с ней избыточность, громоздкость технических решений.

Тот же подход, что и в протоколах коммуникаций на большие расстояния. Академический стек протоколов OSI и знаменитый TCP/IP.

В связи с вышесказанным, в спецификации USB вводится понятие класса устройств. Все электронные устройства, подключаемые к персональному компьютеру, по своим функциональным качествам очень схожи. Например, звуковые платы предоставляют сервис приблизительно одного уровня. Поэтому устройства стали делить на унифицированные классы.

Класс – это группа устройств, объединенных общими характеристиками и способных управляться общим для них программным драйвером операционной системы. Отдельное устройство может объединять функциональность сразу нескольких устройств, принадлежащих к разным классам.

Если функциональность вашего устройства подходит к некоторому классу, и оно поддерживает спецификацию USB для устройств класса, то не нужно писать драйвер для ОС. Вероятнее всего, драйвер уже имеется в ОС. Функциональность устройства, подпадающего под определенный класс, может быть расширена разработчиком устройства добавлением отдельных команд.

Точнее говоря, в стандарте USB предусмотрена возможность некоторого расширения функциональности. В стандарте предусмотрено множество возможностей, которые разработчик устройства может использовать для своих целей, добавляя к базовой функциональности функциональность расширенную.

В спецификации USB есть две большие области, это собственно USB базового уровня и протоколы устройств классов. Протоколы устройств классов – это некоторая надстройка над протоколами нижнего уровня. Логично сначала разобраться с базовыми принципами, а уж потом со всем остальным.

Виртуальные каналы и конечные точки

Все примеры в статье даются в среде операционной системы Linux. По моему субъективному мнению, для новичка разобраться в реализации USB для Windows труднее, чем для Linux.

Приходится много перерабатывать информации, специфичной для Windows, и ни как не относящейся к стандарту USB. В Linux к пониманию существа дела можно добраться более коротким путем.

Разобравшись с Linux, можно легко перейти и к Windows.

В режиме передачи данных, когда процесс конфигурирования (энумерации) уже закончился, между USB-устройством и хостом должны быть налажены мосты. Это некий набор виртуальных каналов, по которым идет обмен данными и служебной информацией. Англоязычный термин pipe – труба.

Каналы разделяют единственную среду передачи, а потому они являются мультиплексированными и, соответственно, виртуальными. Можно провести аналогию с локальной сетью. Шина Ethernet одна, но соединений TCP может быть несколько. Но в TCP/IP соединения TCP могут возникать и завершаться много раз в процессе работы.

В USB типы каналов и их количество фиксируются на стадии процесса энумерации.

В стандарте определяются четыре типа каналов: управляющие, по прерыванию, массивов данных и изохронные. Только управляющий канал является двунаправленным, остальные каналы могут быть только однонаправленными.

Для двустороннего обмена требуется организация хотя бы трех каналов. Обязательный управляющий канал и по одному для каждого направления. В USB принято, что канал называется каналом ввода, если данные передаются в хост, и канал вывода, если из хоста.

Применяя специальные приемы, можно использовать канал управления для передачи небольших объемов данных. Но это нестандартное использование канала, и применяется редко.

Напоминаем, что все информационные обмены на шине, для всех видов каналов происходят под управлением хоста. Первым делом хост посылает запрос, а затем USB-устройство отвечает.

Управляющий канал используется для передачи команд протокола USB; передача данных с использованием канала управления не является стандартным использованием канала. Хотя можно приспособить канал управления для передачи данных прикладной программы. В каждом USB-устройстве должен быть хотя бы один управляющий канал.

Канал передачи по прерыванию используется для небольших объемов данных, но с гарантированными задержками. Хост опрашивает USB-устройство на предмет готовности порции данных, и если USB-устройство готово для обмена, то обмен происходит.

Время реакции USB-устройства задается при конфигурировании и лежит в диапазоне от 1 до 255 мс. Так что, это не связано напрямую с прерываниями в общепринятом понимании. Один канал по прерыванию типа ввода, используется мышью USB (Рисунок 1). По каналу передаются клики и координаты указателя.

В моей клавиатуре USB используются два канала по прерыванию и один канал управления.

Рисунок 1.

Изохронные каналы – применяются для передачи потока данных, например аудио и видео. Характерной особенностью является отсутствие повторной передачи данных в случае ошибок.

Поврежденные пакеты просто отбрасываются без запроса повторной передачи. Такая политика позволяет воспроизводить поток данных в реальном времени без временных задержек.

С периодом в 1 миллисекунду хост запрашивает данные, и буфер USB-устройства передается на хост. В веб-камерах используются изохронные каналы.

Канал передачи массивов данных используется в типах устройств, не требующих временной привязки при передаче данных и оперативной реакции на внешние события.

Принципиальное отличие от двух предыдущих типов каналов заключается в том, что временной интервал, по истечении которого данные будут доставлены, не гарантирован. В изохронном канале хост опрашивает устройство с периодичностью 1 мс.

В канале передачи по прерыванию хост может опрашивать USB-устройство с периодом от 1 до 255 миллисекунд. В канале передачи массивов хост начинает запрашивать данные для приема в свободное от всех остальных передач время.

В случае искажения данных при передаче происходит повторная передача искаженных данных. В моей флэшке используются два канала передачи массивов данных: один на передачу и один на прием, не считая канала управления.

У USB-устройства приемником и передатчиком данных служит буфер, который называется конечной точкой. Тип конечной точки определяет тип канала, который связывает ее с хостом.

Например, контроллер USB микроконтроллера AT90USB162 фирмы Atmel имеет в общей сложности 4 конечных точки, не считая конечной точки управления (из 4 возможных буферов обмена). Программа микроконтроллера должна, соответственно, сконфигурировать необходимое количество конечных точек для своих нужд.

Все конечные точки контроллера USB перенумерованы. Нулевая конечная точка всегда используется для нужд канала управления и не может быть переконфигурирована для других целей.

Если не создается драйвер ОС, то на стороне хоста расположение буфера знать необязательно, так как взаимодействие программы на стороне хоста с USB-устройством происходит через системные вызовы операционной системы и скрыто от пользовательской программы.

Хабы, адреса, хост контроллеры

Кратко опишем аппаратуру хоста. На стороне хоста обязательно должен присутствовать хотя бы один контроллер хоста и связанный с этим контроллером корневой хаб.

В современных PC имеется несколько контроллеров хоста и, соответственно, несколько корневых хабов. Основателем каждой шины USB является корневой хаб, поэтому, если на PC несколько корневых хабов, то и несколько шин.

В Linux имеющиеся шины USB можно посмотреть с помощью команды lsusb. Ниже приведен дамп вывода на моем компьютере:

alex@big:~$ sudo lsusbBus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 004 Device 002: ID 1a2c:0021Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 003 Device 002: ID 0458:003a KYE Systems Corp. (Mouse Systems)Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 001 Device 003: ID 13fe:4100 Kingston Technology Company Inc.

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

В колонке слева перенумерованы имеющиеся в компьютере шины USB, а, значит, и контроллеры хабов и корневые хабы. Каждое USB-устройство на шине имеет уникальный адрес в диапазоне от 1 до 127. Нулевой адрес выполняет служебные функции, и не может быть назначен USB-устройству постоянно.

Адреса распределяются по USB-устройствам хостом в процессе энумерации и сохраняются на все время работы устройства на шине. Из работы программы lsusb видно, что мышь USB подключена к шине 03, и на этой шине ей назначен адрес 02. Устройство хранения данных подключено к шине 01 с адресом 03.

Можно поиграть, поменять последовательность включения и посмотреть, как это отразится на выводе lsusb. В следующей колонке указан идентификационный код устройства ID. Этот код состоит из 2 частей: идентификатора изготовителя (vendor ID) и идентификатора изделия (product ID).

Они представляют собой два уникальных числа, используемых для идентификации конкретного устройства. Операционная система по этим кодам может определять, какой драйвер требуется загрузить для работы. Значение кода изготовителя назначается форумом разработчиков USB по заказу фирмы. Код устройства устанавливает сам производитель.

Программист микроконтроллеров может задать эти числа произвольно. Другое дело, что такие устройства, поступившие в широкую продажу, могут вызвать возражения фирмы собственника кода. Кроме этих чисел, для идентификации можно использовать номер версии устройства (ID Device).

Часть 2

Источник: https://www.rlocman.ru/review/article.html?di=152278

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}