Безопасно используйте SD-карты, когда питание сможет выйти в любое время

Это описано на практическом руководстве Новичка Emacs.

Со строкой

(setq auto-mode-alist (cons '("README" . text-mode) auto-mode-alist))

Вы говорите emacs вводить "текстовый режим" при открытии файла, который называют README.

с

(setq auto-mode-alist (cons '("\\.html$" . html-helper-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.htm$" . html-helper-mode) auto-mode-alist))

Вы говорите emacs вводить "режим помощника HTML", если файл называют *.html или *.htm

на stackoverflow существует пример, который выделяет *.emacs файлы как lisp.code:

(setq auto-mode-alist 
      (append '((".*\\.emacs\\'" . lisp-mode))
              auto-mode-alist))

10
10.12.2011, 23:59
4 ответа

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

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

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

  1. Примите тривиально маленькую карту — 3 (флэш-память) блоки. Блок 1 получил больше записей, чем 2 или 3. Я назову физические блоки числом и логические блоки A, B, C по буквам. Прямо сейчас, A=1, B=2, C=3.
  2. Вы выпускаете запись к блоку A. SD-карта похожа ага! мы должны носить выравнивание здесь, еще блок 1 собирается износиться прежде 2 и 3. Это решает подкачать блок 1 и 2.
  3. Это читает блок 1 в положение i RAM (на SD-карте, не системной RAM). Это обновляет часть, которую Вы хотели изменить.
  4. Это читает блок 2 в положение RAM ii
  5. Это стирает блок 1
  6. Это пишет положение RAM ii для блокирования 1.
  7. Это обновляет таблицу отображения для высказывания B=1
  8. Это стирает блок 2.
  9. Это пишет положение i RAM для блокирования 2.
  10. Это обновляет таблицу отображения для высказывания A=2

Конечно, "обновляет таблицу отображения", не всегда тривиально. И порядок 5–10 мог отличаться (если они все завершаются, он не имеет значения, хорошо стирание должно произойти перед записями, конечно). Но сбой питания происходит, Вы могли волновать с не только поврежденный (как Вы ожидаете), но и B также. Или, если сбой питания происходит во время отображающегося обновления, кто знает, какое повреждение это вызовет.

5
27.01.2020, 20:01
  • 1
    Эти единицы должны много лет жить в относительно резких средах и при установке они будут поставлены вокруг в различные страны, к которым мы не должны квалифицировать батареи. Мы, вероятно, отбросили бы MMC/SD и создали бы наше собственное решение флэш-памяти NAND перед использованием батареи. –  darron 10.12.2011, 06:53
  • 2
    Ну, в нашем случае "фиксируют 'питание, может быть сокращен в любое время'" решение, сводится, чтобы "мешать водителям грузовика заснуть за рулем и управлять в наши устройства". "Грузовик врезался, это" на самом деле о наиболее распространенном режиме отказа. –  SF. 02.08.2013, 10:47
  • 3
    минута заряда батареи не должен быть необходим. Количество энергии должно было безопасно размонтироваться, SD-карта должна быть хорошо в диапазоне, который может сохранить конденсатор. –  Ben Voigt 11.10.2013, 23:33

Что-то подобное было обсуждено в electronics.stackexchange.com: Как я защищаю SD-карту от неожиданных сбоев питания?

Поперечный ответ, который работает в тандеме с программными продуктами, должен посмотреть на аппаратные средства (был вопрос на ESE об этом также, но я не могу найти его теперь; это не было строго о SD-картах, примерно устройствах, теряющих питание и как обнаружить это и действие на нем).

Рассказ: у Вас не может быть заряда батареи, но Ваш источник питания имеет некоторые довольно большие конденсаторы для сглаживания предоставления. В основном питание не просто выходит. Напряжение сужается. Существует, вероятно, защита снижения напряжения IC/схема, который утверждает Сигнал возврата в начальное положение в Вашей встроенной системе когда падения напряжения ниже определенного момента. Материнские платы ПК имеют их также, и они отвечают на сигнал ‘POWEROK’ от PSU. То, что это означает, - то, что, когда питание выходит, компьютер будет сильно остановлен несколько миллисекунд перед падениями напряжения ниже безопасных уровней. В это время периферийные устройства как SD-карты все еще включаются, но больше нет транзакций, прибывающих из компьютера.

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

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

Так или иначе могло случиться так, что у Вас не будет так большой части проблемы. Принятие блока на Вашей карте может пережить 100 записей (консерватор — но действительно попытайтесь получить карты хорошего качества!), и использование карт на 8 ГБ, Вы запишете 800 ГБ к тому времени, когда первый блок умирает (статистически разговор, конечно).

4
27.01.2020, 20:01
  • 1
    Вопрос был запущен, потому что я уже добирался, крупное повреждение SD-карты на выключают события. Довольно часто, на самом деле. Возможно, каждые 20-е события сбоя питания были катастрофическими, и возможно 1 в 4 нанес ПО КРАЙНЕЙ МЕРЕ НЕКОТОРЫЙ ущерб. Я в конечном счете изменился на хранение ценности дня данных по внутренней флэш-памяти NAND и копирования к SD в полночь (1 приблизительно вторая операция). Я надеюсь улучшать вещи в будущем. Я уже добрался 400uF ценность ограничений на направляющей... недостаточно, по-видимому..., возможно, снижение напряжения не обрабатывается правильно. –  darron 27.06.2012, 00:38
  • 2
    Это - довольно высокий уровень заболеваемости! Время, чтобы получить датчики осциллографа и видеть это в действии, мне кажется. Хотя вероятно, что можно работать вокруг этого в программном обеспечении, лучший способ с точки зрения потребляемой мощности состоит в том, чтобы гарантировать, чтобы у Вас не было аппаратных незначительных сбоев. Возможно, Вы могли застраховать свои ставки и спросить относительно electronics.stackexchange.com также? удар –  Alexios 27.06.2012, 01:03
  • 3
    @darron, с каким решением Вы заканчивали для Вашей проблемы с устройством хранения данных SD-карты? Вы все еще пишете в NANDFlash, затем копируя один раз в день? У меня есть дизайн с SD-картой как основной RFS (не разделяют NANDFlash), и вижу проблемы повреждения данных, и с и без внезапных условий сбоя питания. –  fred basset 06.06.2014, 06:15

Для Безопасности данных в среде с возможностью отключений питания и полной безопасности данных Вы должны conider еще больше точек.

НЕ ИСПОЛЬЗУЙТЕ ячейки MLC для устройства хранения данных, только SLC имеют время хранения данных, которое достаточно. Затем те карты SLC могут иметь умное встроенное микропрограммное обеспечение, некоторые не могут ни под каким состоянием быть поврежденными потерями мощности. Они распознают отключение питания путем измерения и безопасный, что последний блок записан completly.

Те карты являются более дорогими и немного медленнее затем ячейки MLC. Посмотрите поставщиков как swissbit для карт.

3
27.01.2020, 20:01

У нас возникла проблема с нашим SD, корневой файловой системой ext2 поврежденной при неожиданном сбое питания. Прежде всего, мы заставляем систему работать с монтированием корня только на чтение. Так как нам требовалось некоторое хранилище, доступное для записи (но мы не записывали данные), мы установили второй раздел как доступный для записи. Чтобы минимизировать повреждения FS при неожиданном отключении питания, мы сделали его разделом ext3, хотя это вызовет, по крайней мере, в два раза больше физических записей на карту. Эта комбинация (но я признаю, что записи на второй раздел происходят нечасто по сравнению с регистратором данных), похоже, работает без проблем. Пока что. (Системы, установленные примерно на 30 месяцев в профессиональных помещениях)

.
4
27.01.2020, 20:01

Теги

Похожие вопросы