Аварийная запись на microSD. Как реализовать лучше?

Обсуждаем цифровые устройства...
Ответить
abc
Друг Кота
Аватара пользователя
Сообщения: 3687
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Сообщение abc »

Сейчас внезапно окажется, что "разработка на SD" - это просто спёртый откуда-то кусок кода.
А вот для того, чтобы (по-человечески) начать работать с FRAM, код для этого надо снова откуда-то спереть.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Реклама
Друг Кота
Сообщения: 9180
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

VNS ясно... значит автоматизацию ты никогда не делал...
:sleep:
оно и понятно... потому что сидеть и ждать когда кто-то что-то предложит бесполезно...
это так не работает.
надо самому брать проект и работать. тогда получится.
:tea:

abc я с флешками уже наигрался...
они действительно капризные и ненадёжные.

скажем так...
-если данные действительно важные то сбрасываем на сервер и делаем резервное копирование как положено.
-если данные не важные то и не стоит тогда заморачиваться))
:tea:
Реклама
Мудрый кот
Сообщения: 1734
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="abc",url="/forum/viewtopic.php?p=4746657#p4746657"]Сейчас внезапно окажется, что "разработка на SD" - это просто спёртый откуда-то кусок кода.[/uquote]Не "окажется", а так оно и есть. Вы что-ж думали - автор сам файловую систему писал? 8)
[uquote="abc",url="/forum/viewtopic.php?p=4746657#p4746657"]чтобы (по-человечески) начать работать с FRAM, код для этого надо снова откуда-то спереть.[/uquote]Или - спёрнуть! :)))
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1102
Зарегистрирован: Пт апр 09, 2010 16:06:38
Откуда: Тула

Сообщение Andrey_B »

foton6, отформатируйте на компе свою карту и создайте там большой пустой файл. Определите с какого физического адреса в пространстве карты он начинается. В своей программе по мере появления событий, пишите их на карту поблочно сразу, начиная с этого адреса. Даже если питание пропадёт в неподходящий момент, не запишется или запишется с ошибкой всего один блок. Файловая система не пострадает. Конец журнала событий можно легко найти при последующем появлении питания. Если файл будет очень большой, то не придётся организовывать кольцевой буфер и соответственно не надо будет хранить его индекс, который может "протереть" память карты. Хотя есть хитроумные способы хранения индекса непосредственно в блоке данных. Ну или для индекса применить мелкую FRAM.
И не надо ни каких мутных танцев с ионисторами.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 6672
Зарегистрирован: Пт сен 10, 2021 15:19:36
Откуда: Протвино

Сообщение AlexS4 »

... а если мощности контроллера позволяют вкрячить нормальное ядро os, linux скажем, то можно взять какуюто журналирующую транзакции fs
напр ext3/ext4 или xfs и fs не будет повреждаться !, после аварии максимум будут недописаны открытые на запись файлы. :music:
Реклама
Друг Кота
Сообщения: 9180
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

[uquote="Andrey_B",url="/forum/viewtopic.php?p=4746703#p4746703"]foton6, отформатируйте на компе свою карту и создайте там большой пустой файл. Определите с какого физического адреса в пространстве карты он начинается. В своей программе по мере появления событий, пишите их на карту поблочно сразу, начиная с этого адреса.[/uquote]
и так тоже делали...
и по всякому делали))

https://cxem.net/mc/mc435.php

а потом решили что нафиг не нужны эти заморочки.
проще писать блоками по 512 байт.
эффект тот же.
[uquote="Andrey_B",url="/forum/viewtopic.php?p=4746703#p4746703"]foton6Даже если питание пропадёт в неподходящий момент, не запишется или запишется с ошибкой всего один блок. Файловая система не пострадает.[/uquote]
а если и пострадает то мы можем её восстановить.))

только в самой Файловой системе нет никакого смысла.
эффект тот же.
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1102
Зарегистрирован: Пт апр 09, 2010 16:06:38
Откуда: Тула

Сообщение Andrey_B »

[uquote="roman.com",url="/forum/viewtopic.php?p=4746717#p4746717"]и так тоже делали...
и по всякому делали))[/uquote]
А чегож вы тогда строем не ходите не посоветовали это топикстартеру? :)

[uquote="roman.com",url="/forum/viewtopic.php?p=4746717#p4746717"]только в самой Файловой системе нет никакого смысла.[/uquote]
Смысл огромный: вставил карточку в ноутбук и легко, штатными средствами операционной системы скопировал весь журнал в виде файла, например .txt или .csv, который в любом текстовом редакторе или экселе можно открыть и проанализировать события. Или вы предлагаете этот гигабайтный журнал в виде простого дампа, накопленый за весь срок службы девайса, анализировать специально написанным приложением на компе? Или долго и печально тащить через узкий канал на любимый сервер? Или реализовать в коде гору функционала в самом МК, для анализа журнала на месте?
Друг Кота
Сообщения: 9180
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

[uquote="foton6",url="/forum/viewtopic.php?p=4746379#p4746379"]Разрабатываю устройство у которого имеется microSD на борту для ведения архива измерений и в целом жизни устройства.[/uquote]
не знаю какое устройство у ТС... а у меня все устройства в труднодоступных местах))

Изображение

поэтому мне проще скачать по сети на сервер чем каждый раз лезть за microSD.
:tea:

а сама microSD используется только когда сервер "не в сети".
а как только сервер появляется "в сети" то устройство само передаёт на сервер данные. без моего участия))
в остальных случаях microSD не нужна. от слова совсем ))
такая была у меня идея.
:tea:

а впрочем... сейчас мне microSD вообще не нужна. если один сервер "не в сети" то другой сервер "в сети".
Вложения
)).jpg
(59.28 КБ) 398 скачиваний
Встал на лапы
Сообщения: 146
Зарегистрирован: Вс сен 16, 2012 22:00:40

Сообщение foton6 »

[uquote="Andrey_B",url="/forum/viewtopic.php?p=4746703#p4746703"]foton6, отформатируйте на компе свою карту и создайте там большой пустой файл. Определите с какого физического адреса в пространстве карты он начинается. В своей программе по мере появления событий, пишите их на карту поблочно сразу, начиная с этого адреса. Даже если питание пропадёт в неподходящий момент, не запишется или запишется с ошибкой всего один блок. Файловая система не пострадает. Конец журнала событий можно легко найти при последующем появлении питания. Если файл будет очень большой, то не придётся организовывать кольцевой буфер и соответственно не надо будет хранить его индекс, который может "протереть" память карты. Хотя есть хитроумные способы хранения индекса непосредственно в блоке данных. Ну или для индекса применить мелкую FRAM.
И не надо ни каких мутных танцев с ионисторами.[/uquote]
О! Спапсибо, великолепная идея!
Да я номера блоков (кол-во записей) храню в блоке + CRC обязательно - так легко идентифицировать последнюю актуальную запись.

Добавлено after 6 minutes 4 seconds:
[uquote="Andrey_B",url="/forum/viewtopic.php?p=4746745#p4746745"]Смысл огромный: вставил карточку в ноутбук и легко, штатными средствами операционной системы скопировал весь журнал в виде файла, например .txt или .csv, который в любом текстовом редакторе или экселе можно открыть и проанализировать события. Или вы предлагаете этот гигабайтный журнал в виде простого дампа, накопленый за весь срок службы девайса, анализировать специально написанным приложением на компе? Или долго и печально тащить через узкий канал на любимый сервер? Или реализовать в коде гору функционала в самом МК, для анализа журнала на месте?[/uquote]
Верно! Я хочу ФС исключительно ради возможности открывать на ПК без спец ПО.

Добавлено after 8 minutes 27 seconds:
По поводу живучести карточек я не переживаю, у меня более десятка устройств на Orange PI, работают уже не первый год в разных условиях - пока все ОК, как минимум отрабатывают стандартную рабочую неделю постоянно. Я тоже переживал, думал будут отлетать каждые полгода или т.п. Хотел делать даже режим только для чтения или SLC флешки искать, но оно не потребовалось.

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

Добавлено after 3 minutes 39 seconds:
[uquote="abc",url="/forum/viewtopic.php?p=4746657#p4746657"]Сейчас внезапно окажется, что "разработка на SD" - это просто спёртый откуда-то кусок кода.
А вот для того, чтобы (по-человечески) начать работать с FRAM, код для этого надо снова откуда-то спереть.[/uquote]
Мимо, FRAM имеет малые объемы в сравнении с карточками, а я хочу "пожизненный архив", как написал выше :)
У меня вообще обратная проблема, я всегда стремлюсь написать свой код в ущерб времени, редко использую библиотеки - никак не усвоится мысль что использование библиотек - это хорошо и быстро :)
Вымогатель припоя
Аватара пользователя
Сообщения: 678
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди шариатской республики

Сообщение linux_rulezz »

Не нужна тебе там ФС! Просто последовательно данные пиши в текстовом виде. На компе при помощи less /dev/sdX посмотришь содержимое.
Никакого доп софта не нужно!
Windows must die!
Контактная информация:
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

С FRAM тоже можно наловить проблем почти на ровном месте. Кому интересно почитать. В одном из устройств (логгер), пишу на microsd каждые 50ms. Поскольку устройство вспомогательное, сделал по началу просто, никаких мониторов питания, fatFS от Чена. Пишем по схеме - новое включение - новый файл, через заданный интервал (50ms) файл открывается на запись, добавляется строка лога, файл закрывается. Питание пропало да и хрен с ним. Так и оставил, как показала практика, все пишется нормально, лог разрастался до тысячи файлов общим размером сотни мегабайт. Ничего не терялось при отключении, даже при такой частой записи.
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Ср мар 02, 2016 09:07:19

Сообщение esisl »

А устройство стационарное?
Друг Кота
Сообщения: 9180
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

выше есть подсказка))
[uquote="foton6",url="/forum/viewtopic.php?p=4746379#p4746379"]Устройство отключается просто выниманием штепселя или отключением автомата[/uquote]
скорее всего стационарное...
вряд ли ТС будет таскать за собой штепсель или автомат))
хотя... всё может быть.))
Встал на лапы
Сообщения: 146
Зарегистрирован: Вс сен 16, 2012 22:00:40

Сообщение foton6 »

[uquote="esisl",url="/forum/viewtopic.php?p=4746832#p4746832"]А устройство стационарное?[/uquote]
Стационарное. А какое это имеет значение?
Друг Кота
Аватара пользователя
Сообщения: 6672
Зарегистрирован: Пт сен 10, 2021 15:19:36
Откуда: Протвино

Сообщение AlexS4 »

foton6 писал(а):Верно! Я хочу ФС исключительно ради возможности открывать на ПК без спец ПО.
навсякий случай повторю:
если компьютер с линуксом и контроллер с линуксом то на флэшке можно держать ext3 (ext4) fs , которые по дизайну оочень устойчивы к аварийным прерываниям процессов записи.
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Ср мар 02, 2016 09:07:19

Сообщение esisl »

[uquote="foton6",url="/forum/viewtopic.php?p=4746852#p4746852"][uquote="esisl",url="/forum/viewtopic.php?p=4746832#p4746832"]А устройство стационарное?[/uquote]
Стационарное. А какое это имеет значение?[/uquote]
Тогда, почему не поставить аккумулятор?
Я обычно ставлю, что-то в этом роде:
https://www.ozon.ru/product/akkumulyato ... 172396185/

Его ресурса года на три хватает
Мудрый кот
Сообщения: 1734
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="foton6",url="/forum/viewtopic.php?p=4746789#p4746789"]Мимо, FRAM имеет малые объемы в сравнении с карточками, а я хочу "пожизненный архив", как написал выше :)[/uquote]Вы похоже ничего не поняли что вам советовали... :dont_know:

FRAM советовали не для хранения вашего архива, а для сохранения критических данных при сбоях питания. "Критические данные": это накопленные, но ещё не записанные в архив данные (вы же в архив не каждую миллисекунду пишете, а наверное - какое-то время накапливаете, а потом записываете сразу блок?). А также - для сохранения индексов (позиций) записи в ту же SD-карту (чтобы при каждом запуске на сканировать её всю, что долго и приведёт к потерям данных во время такого сканирования). И большие объёмы FRAM для этого не нужны.
Применение FRAM обнуляет необходимость в сложных костылях с мониторингом питания, ионисторами и прочей такой громоздкой и ненадёжной тряхомудрией. Просто один дешёвый копеечный чип и все проблемы решены.

Добавлено after 12 minutes 59 seconds:
[uquote="Goodefine",url="/forum/viewtopic.php?p=4746814#p4746814"]С FRAM тоже можно наловить проблем почти на ровном месте. Кому интересно почитать.[/uquote]Как говорится: "Сдуру можно и х... сломать"
Если так, то с монитором питания пространство для ловления проблем ещё больше.
С FRAM/MRAM сделал уже кучу проектов. Серийных. Никаких проблем.

[uquote="Goodefine",url="/forum/viewtopic.php?p=4746814#p4746814"]В одном из устройств (логгер), пишу на microsd каждые 50ms.[/uquote]Интересно - как это вы умудряетесь делать, если SD-карта штатно может производить запись до нескольких сотен мсек??? Сказки не надо рассказывать. Скажите, правду - что не контролировали это время никогда. 8)

[uquote="Goodefine",url="/forum/viewtopic.php?p=4746814#p4746814"]Поскольку устройство вспомогательное, сделал по началу просто, никаких мониторов питания, fatFS от Чена. Пишем по схеме - новое включение - новый файл[/uquote]Достаточно случиться не чистому включению или выключению, а с дребезгом: вкл. - выкл. - вкл. - ... и файловая система на вашей карте накроется медным тазом. А такие дребезговые включения/выключения питания - обычное дело.

Добавлено after 3 minutes 15 seconds:
[uquote="esisl",url="/forum/viewtopic.php?p=4746870#p4746870"]Его ресурса года на три хватает[/uquote]А ресурса FRAM хватит на всё время жизни устройства ТС. :dont_know:
Встал на лапы
Сообщения: 146
Зарегистрирован: Вс сен 16, 2012 22:00:40

Сообщение foton6 »

jcxz,
Да, действительно почему то в голове застряла мысль что FRAM предлагаете как замену SD :D
Так то дельная мысль буфер накапливать в FRAM. У меня на МК есть блок питаемый батарейкой, в нем часы и памяти 2kb, тут и планировал складировать до записи на SD.
Друг Кота
Сообщения: 9180
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

да подключите уже своё устройство к ПК и не мучайтесь))
на ПК сотни гигов свободной памяти... и ниче не глючит.
СпойлерИзображение
:tea:
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

[uquote="jcxz",url="/forum/viewtopic.php?p=4746874#p4746874"]Интересно - как это вы умудряетесь делать, если SD-карта штатно может производить запись до нескольких сотен мсек??? Сказки не надо рассказывать. Скажите, правду - что не контролировали это время никогда.[/uquote]
Объясняю - устройство аналогово цифровой логгер для авто, сделал чтоб найти полтергейста в системе управления авто, записывало кучу параметров. Измерения проводились с определенным интервалом и писались на карту, при интервале 20мс я не успевал записывать, 35-40мс уже получалось, выбрал 50мс с запасом. При разборе лога количество измерений соответствовало времени поездки. Дальше было как-то фиолетово.
[uquote="jcxz",url="/forum/viewtopic.php?p=4746874#p4746874"]Достаточно случиться не чистому включению или выключению, а с дребезгом: вкл. - выкл. - вкл. - ... и файловая система на вашей карте накроется медным тазом. А такие дребезговые включения/выключения питания - обычное дело.[/uquote]
Бортовая сеть авто и включение/выключение девайса ключем вместе с зажиганием - достаточно стрессовые условия?
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Ответить

Вернуться в «Цифровая техника»