Пишем лог на SD карточку

Обсуждение аппаратной части ("железо"). Discussion about hardware.

Moderator: STC

serge__5518
LQFP112 - Up with the play
Posts: 200
Joined: Sat Jun 09, 2012 11:12 am

Re: Пишем лог на SD карточку

Post by serge__5518 »

Qwertty wrote:Обмен влезет в 1К, но это неудобно. В идеале надо два буфера по 512 байт иметь. Лучше поставить М32. Не так это дорого для разового девайса.
Идеал не нужен. От файловой системы нужно создание файла, запись в файл, открытие файла и изменение размера файла.

Ты не разбирался с реализацией файловой системы SD карт?
ВАЗ 2103 , Secu-3 (m32),
ДАД GM Daewoo, ДТОЖ 23.3828,
Катушка 2111-3705010
Qwertty
LQFP144 - On Top Of The Game
Posts: 252
Joined: Thu Jul 26, 2012 12:35 pm

Re: Пишем лог на SD карточку

Post by Qwertty »

FAT на SD карте ничем не отличается от FAT на HDD. Карта пишется секторами по 512 байт. Есть область для данных и есть область самой FAT. Это таблица кластеров. Кластер - один или 2/4/8/16... сектора. Так вот когда ты создаешь файл в файловой системе то создается запись с именем и прочими атрибутами и в ней содержится ссылка на первый кластер. Ты его пишешь посекторно и когда запишешь полностью должен найти не занятый кластер и в таблице кластеров указать для уже использованного следующий - тот который нашел. Сделать цепочку. Т.е. читать и писать область самой файловой системы. Но секу в это время продолжает слать данные. Их надо где то хранить. Поэтому создается буфер для данных и буфер для фат. Накапливаешь данные в буфере данных и сливаешь их на карту. Дальше проверяешь надо ли для следующих данных использовать следующий кластер и если да - ищешь его. Этим не надо самому заниматься, это сделает библиотека FAT, если ты конечно не решишь написать ее самостоятельно. Но пока библиотека обновляет область фат буфер в 512 байт она будет использовать по своему усмотрению. Есть дурацкий способ - не искать новый кластер. А иметь всего один файл на карте и соответственно тупо писать его в последовательные кластеры. Но бывают битые кластеры например. И если в цепочке попадется такой, то потеряешь данные. Или если на карте уже есть что нибудь - затрешь. Да и вообще - одного файла лога мало. Поэтому на чтение обычно хватает и 1К памяти - данные то пока работаем с файловой системой сами с карты не считаются. И больше 1К - если предполагается запись, особенно с асинхронного источника. Такого как пакеты с секу. Ну либо ставь М8 и забей на потери пакетов во время работы с фат карты. Впрочем может и так удастся. Если пакеты редко и небольшие, то может и в своем небольшом буфере сохранятся. Попробуй petitFAT - она в принципе оптимизирована для 1К ОЗУ. И использует всего 1 буфер в 512 байт. Но придется выкручиваться с хранением приходящих пакетов или терять их.
User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Re: Пишем лог на SD карточку

Post by STC »

Пакеты могут идти с частотой до 100 раз в секунду. Кол-во байт в пакете в чистом бинарном виде (что нужно на карту писать) до 20.
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
Qwertty
LQFP144 - On Top Of The Game
Posts: 252
Joined: Thu Jul 26, 2012 12:35 pm

Re: Пишем лог на SD карточку

Post by Qwertty »

Я думал 1 пакет на 1 зажигание. И если до 12000 оборотов, то для 4ц мотора это 400 раз в секунду получается. А какая битовая скорость вывода? 115200?
User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Re: Пишем лог на SD карточку

Post by STC »

57600 максимум.
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
Qwertty
LQFP144 - On Top Of The Game
Posts: 252
Joined: Thu Jul 26, 2012 12:35 pm

Re: Пишем лог на SD карточку

Post by Qwertty »

Ну да, там же оптроны совсем не быстрые стоят.
serge__5518
LQFP112 - Up with the play
Posts: 200
Joined: Sat Jun 09, 2012 11:12 am

Re: Пишем лог на SD карточку

Post by serge__5518 »

Qwertty wrote:FAT на SD карте ничем не отличается от FAT на HDD. Карта пишется секторами по 512 байт. Есть область для данных и есть область самой FAT. Это таблица кластеров. Кластер - один или 2/4/8/16... сектора.
>>>>>
Это все общие рассуждения на тему - Что такое FAT.
Меня же интересуют конкретные варианты реализации FAT на SD. Пробовал ли ты прошивать примеры или разбирался с документацией.
Qwertty wrote:Попробуй petitFAT - она в принципе оптимизирована для 1К ОЗУ. И использует всего 1 буфер в 512 байт. Но придется выкручиваться с хранением приходящих пакетов или терять их.
petitFAT не может изменять размер файла, не может создать файл. Для чтения файлов подходит хорошо, но не для записи.
ВАЗ 2103 , Secu-3 (m32),
ДАД GM Daewoo, ДТОЖ 23.3828,
Катушка 2111-3705010
Qwertty
LQFP144 - On Top Of The Game
Posts: 252
Joined: Thu Jul 26, 2012 12:35 pm

Re: Пишем лог на SD карточку

Post by Qwertty »

Ну и? Я - пробовал и не раз. Свою не писал - использовал FatF. Все прекрасно читало и писало. Тебе стало от этого чем то проще? :)
Что petitFat пишет только в существующий файл это понятно. Именно так пытаются обойти нехватку памяти. Это костыль, но он не требует поиска пустого кластера. А этот поиск довольно много времени занимает иногда, когда карта не пуста. Вот и выбирай - поставить потолще контроллер, ужаться с М8 и урезанной библиотекой или написать свою библиотеку работы с файловой системой. И как то придумать как обойти крайне желательное наличие двух буферов по размеру сектора. Т.е. 512+512 байт.
User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Re: Пишем лог на SD карточку

Post by STC »

Если я правильно понял то микроконтроллера с 2кБ ОЗУ хватит с запасом?
Взять ATMega32 и не париться.
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
Qwertty
LQFP144 - On Top Of The Game
Posts: 252
Joined: Thu Jul 26, 2012 12:35 pm

Re: Пишем лог на SD карточку

Post by Qwertty »

Не с огромным, но на запись логов хватит точно. Если именно мегу охота - то М32. Можно всеми любимый кортекс. Это не ЭБУ, тут сбой не приведет к фатальным последствиям.
Post Reply