Я хочу установить Pi в моей машине и использовать его для записи данных GPS. Каким стратегиям (в моей программе) я могу следовать, чтобы минимизировать проблемы из-за прерывания питания при записи на SD-карту?
Пока я могу думать о:
- Хранение данных и только запись с перерывами
- Запись только в том случае, если скорость автомобиля не близка к нулю (т.е. при выключении зажигания)
- Запишите временный файл, который я могу себе позволить испортить, а затем сохраняйте это время от времени
Мне интересно, есть ли
- Режимы файловой системы, в которых я могу оставаться большую часть времени, чтобы пережить внезапное отключение
- Способы сделать восстановление после отключения питания при записи более надежным
Очевидно (я думаю) некоторая потеря данных неизбежна, но как я могу минимизировать ее?
источник
Все зависит от количества данных, которые вы готовы потерять. Если вы не можете позволить себе потерять что-либо, потребуется найти способ подключить PI непосредственно к аккумулятору (с предохранителем, конечно), чтобы он не выключался при выключении зажигания.
Опять же, типичный автомобильный аккумулятор будет иметь около 80 А-ч, а ПИ будет потреблять от 500 до 1200 мА (в зависимости от того, является ли это модель А или В), так что, вероятно, он разряжает автомобильный аккумулятор в течение 2-6 дней, так что я не думаю, что вы найдете это приемлемым.
Если вы по-прежнему не можете позволить себе потерять данные, вы можете разработать какое-то нестандартное оборудование, в котором вы можете управлять источником питания от PI, а также отслеживать состояние зажигания. Если зажигание выключено, вы сбрасываете свои данные на SD-карту, выключаете ОС и затем, как последний шаг, выключаете источник питания. При включении зажигания также необходимо включить источник питания, чтобы возобновить работу ПИ. Это все выполнимо, но довольно большой проект.
Однако, если вы сочтете приемлемым потерять некоторые данные при завершении работы, я бы разработал демон, который периодически сохраняет данные GPS в файл таким образом, чтобы он выполнял вызов fsync после каждой записи (чтобы сбросить данные на SD-карту). открытка). Если вы делаете это каждые несколько секунд (а также используете журналируемую файловую систему ext4 по умолчанию), это, вероятно, будет означать, что вы будете терять только последние несколько секунд при каждой потере питания.
Пожалуйста, имейте в виду, что Raspbian (по крайней мере, моя установка) не поставляется с fsck корневой файловой системы во время загрузки. Вы должны сделать следующее, чтобы включить его при каждом монтировании:
Вы также должны изменить последнюю строку для корневой файловой системы в / etc / fstab, чтобы она содержала 1, например так:
Если вы этого не сделаете, то ваша корневая файловая система может время от времени не загружаться, поэтому, если вы используете систему без наушников, в которой вы отключаете питание без контролируемого выключения, это абсолютно необходимо.
источник
Это выглядит как хорошее дополнение , которое хорошо дезинфицирует электрику автомобиля для пи, а также обрабатывает обнаружение потери зажигания автомобиля, подает пи на питание в то же время и посылает сигнал на вывод GPIO, чтобы сообщить ему о безопасном отключении пи ,
К сожалению, на данный момент нет в наличии, но вы можете сделать предварительный заказ.
источник
Если вам часто приходится сталкиваться с потерей питания, тщательный выбор файловой системы и методов загрузки (только чтение, журнал, автоматический fsck, быстрое восстановление ...) может помочь обеспечить надежную работу системы.
Со стороны приложения, использование определенных баз данных ( sqlite ?) Должно гарантировать полный статус записи или отсутствие записи данных при повторном открытии.
Лучше бы действительно быть , чтобы попытаться избежать того , чтобы закрыть кроме случаев , когда это необходимо. С меньшим контроллером вы часто наблюдаете за блоком питания, и если он выходит из строя, у вас есть небольшое окно для выключения, сохранения любых энергонезависимых данных и, возможно, отключения или остановки процессора до восстановления питания. С большим процессором общего назначения, таким как PI, для этого может потребоваться довольно большой разрыв.
Таким образом, наличие оперативного резерва мощности и предупреждения о выходе из строя основного источника питания может помочь. Если это сбой, вам может потребоваться провести различие между временной потерей питания (не пишите, задержите дыхание) и вероятным отключением (сохраните и очистите).
В автомобиле у вас будет +12/24 В, а PI использует +5 В, поэтому есть потенциал (хех) для чего-то в преобразователе или перед ним. Вы можете быть в состоянии диодно-ИЛИ другой аккумулятор 9-12 В разумного размера перед преобразователем, который вступит во владение, например, при падении напряжения. Учитывая относительно сильное энергопотребление, его нужно каким-то образом держать заряженным. Вы также можете установить компаратор или специальный монитор напряжения для основной линии электропередачи и получать оповещения, когда основное питание не работает. (Я не знаю, что было бы быстрым способом подать сигнал PI.)
источник