Перейти к содержанию
    

Логер большого потока.

Доброго дня! Стоит задача логировать данные с кан шины 500кбс устройство должно быть автономным без своего источника питания, запитка только от самого опрашиваемого устройства. т.е. отслеживать момент отключения не особо можем. Записи могут быть недолгими, буквально 10 пакетов, а могут быть на десятки миллионов. В большинстве своем короткие, длинных ожидается штук 5-6. Сессий записи будет около 200 000. Пока ожидается, что должно хватить 256 мегабайт. Появилось питание, пишем все подряд до выключения питания. Из очевидных реализаций это запись на SD карту, но тут вопрос в том чтоб организовать достаточный буфер, так как у SD карт бывают затыки от 250 до 500 миллисекунд при записи блока. Можно поставить несколько логеров (или несколько карт)для исключения пропуска записи пакетов, но как потом это всё синхронизировать. Еще смущает как будет работать файловая система если не успевать закрывать файл и отмонтировать флешу? Флешки типа winbond 25q.. смущает размер, боюсь не влезем. Какие мысли, советы будут?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

36 minutes ago, andron_h said:

Какие мысли, советы будут?

Использовать SD-карту как "флешку 25q". Взять SiP с SDRAM на борту для буферизации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 часов назад, andron_h сказал:

Какие мысли, советы будут?

1) Никто не заставляет на SD-карту писать в файловую систему. Тогда и закрывать ничего не придётся.

2) Даже если писать на SD нужно именно в ФС, то никто не заставляет создавать/наращивать файлы; можно писать внутрь одного существующего файла, поверх.

3) "Флешки типа winbond 25q" - не единственные в мире. Тыкаем первого попавшегося производителя и видим целый табун чипов ёмкостью 256МБ:

https://www.infineon.com/cms/en/product/memories/nor-flash

А если ещё и по другим вендорам побродить, то может и более ёмкие найдутся. Например мы у себя уже много лет как используем S70FL01GS на 128МБ. У этих флешек 2 чипселекта на чип, а значит и конский буфер (для компенсации задержек стирания) не нужен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, мысли будут озаботиться в первую очередь механизмом безопасной работы с ФС при внезапном отключении питания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) рассчитать/померить токи потребления системы при записи.

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

3) добавить в схему ионисторы из рассчёта п.2 и контроль пропажи первичного электропитания.

4) при пропадании первички уходим в экстренную запись последнего кадра с блокировкой и завершением остальных процессов.

С таким подходом можно реализовывать хоть в baremetal, хоть в Linux+FS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 часов назад, Aaron сказал:

1) рассчитать/померить токи потребления системы при записи.

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

1) + 2) исключают применение sd карты. Оно может непредсказуемо задумываться до 500мс при этом кушает как не в себя.
Запись в предварительно стертую spi nor - единицы миллисекунд, в эту сторону и копайте. Предварительно стертая nand тоже быстро пишется только надо ecc дописывать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Изнасиловал сд карту вдоль и поперек, нехватает внтуренней памяти контроллера под кольцевой буфер при полной загрузке кан шины. пару десятков записей проходят успешно, а потом начинаются пропуски в виду тормозов сд. хоть и не 500 мс, но за 250 которые она тормозит буфер переполняется. Был соблазн подключить нанд по fsmc, так как нандов в донорах валяется много и с нормальным не бга подключением (да даже из сд карт больших можно дернуть, но пугает контроль ecc. Боюсь с ecc не выгребу. Nor флешей в закормах не обнаружил. Заказывать с Китая долго. Может из каких телефонов, планшетов или других устройств можно дернуть? Знакомых много в сервисах в городе, знать бы точно в чем есть. Наверное это самый быстрый способ будет, работать со стертой NOR по FSMC. А по окончании всей записи скинуть на комп по уарту или опять же на sd. Единственный момент это держать где-то данные между включениями о последнем адресе, чтоб не перебирать всю флеш ища адрес с которого будем писать.

Изменено пользователем andron_h

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 минут назад, andron_h сказал:

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

Зачем было "насиловать" если это и заранее было известно? Вам поэтому сразу говорили, что "для работы с SD нужен будет большой буфер".

17 минут назад, andron_h сказал:

Наверное это самый быстрый способ будет, работать со стертой NOR по FSMC.

Зачем FSMC? Вы же не программу из неё исполнять собираетесь.

У нас в устройстве работает S70FL01GS по dual-SPI. Она имеет 2 CS. Соответственно можно организовать область хранения так, чтобы чередовать записи по этим CS: пока по одному CS идёт стирание сектора; по другому - запись данных; затем они меняются местами.

PS: Советую всё же почитать даташит на неё.

7 минут назад, Arlleex сказал:

Пишите большими блоками в SD. Я помню блок в 16 кБ уже не занимал много времени.

Если у карты в CSD заявлено "250мс на стирание блока", то рано или поздно она на эти 250мс затупит. При очередном стирании. Какими бы блоками вы не писали.

 

PS: И вообще - количество чипов SPI-флешь можно поставить >1. И размазать задержку стирания по всем чипам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

56 минут назад, andron_h сказал:

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

ECC неприятно но решаемо. Выдирается из исходников u-boot / linux или другой ОС. У некоторых производителей были аппноуты с реализацией ECC. Сложнее делать автодетект памяти и автоматическую работу с разными размерами ECC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 19.01.2023 в 15:37, andron_h сказал:

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

Это Вы о чём?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...