Форум программистов, компьютерный форум, киберфорум
Наши страницы

Микроконтроллеры ARM, Cortex, STM32

Войти
Регистрация
Восстановить пароль
 
Mosokro
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 50
#1

STM32+uSD serial logger (битые файлы) - ARM, Cortex, STM32 микроконтроллер

26.03.2014, 13:08. Просмотров 3008. Ответов 2
Метки нет (Все метки)

Бьюсь над задачей создания автономного логгера на базе STM32 c SD картой.

Задача относительно простая:
Есть устройство с СОМ-портом для вывода отладочной информации (115200 8-п-1), вывод текстовый человекочитаемыми строками.
Необходимо сделать автономный логгер с SD карточкой для записи отладочной информации + некоторых внешних событий (напряжение питания и т.п.) с привязкой к реальному времени.
Т.е. к каждой принятой с порта строке или событию добавляем таймстэмп и пишем все в лог-файл на карту.
Есть еще один СОМ-порт для конфигурации самого логгера и обновления прошивки через бутлоадер.

Сейчас макет работает на STM32F100C8 + SD.
В качестве файловой системы использую FatFS от ChaNa.

Алгоритм организован так:
1) данные с СОМ-порта анализируем на лету и складываем в буффер (4096 байт), туда же пишем и таймстэмпы для каждой новой строки (обнаруживаем по приему символа перевода строки) - это делаем в прерывании;
2) В основном цикле проверяем количество данных в буфере, и если там больше или равно 512 байт (размер сектора карты) то пишем кусок буфера в файл.

Есть некоторые проблемы со скоростью записи на карту - иногда буфер переполняется если девайс гонит лог большим потоком.
Но главные грабли в том что данные из буфера пишутся в файл только кратно размеру сектора карты, т.е. всегда есть кусок данных в буфере не записанный в файл а этого делать никак нельзя по ТЗ.

При попытке писать на карту данные не выровненные по размеру сектора (N*512) файл на карте получается битый при высокой скорости потока данных, а на малой скорости вроде все ОК но это не показатель.

Итак вопрос кто сталкивался с такой проблемой? В гугл не шлите - там ничего не нашел кроме ссылок на сайт самого ChaNa и тесты скорости записи.

Дебиггинг тоже не помогает ошибку можно обнаружить только при чтении уже записанного файла на компе - при работе никакие флаги ошибок не вылетают.

Пробовал разгонять и прой и SDшку (SPI) - эффекта 0 :(

ЗЫ. Кстати STM32F100 стабильно работает на 48МГц (Ftosh prefetch=On/Ftosh latency=1/AHB=48MHzAPB2=48MHz/APB1=24MHz), SPI на 24MHz (даташит 18 макс) :)

ЗЫЫ. Если нужно приложу код - если конечно вообще кто-то ответит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2014, 13:08
Я подобрал для вас темы с готовыми решениями и ответами на вопрос STM32+uSD serial logger (битые файлы) (ARM, Cortex, STM32 микроконтроллер):

Общение с барометром MS5540 на STM32 (Arduino to STM32) - ARM, Cortex, STM32 микроконтроллер
Получил от китайца сей аппарат, пошел тут же гуглить что нибудь готовое, но не тут то было. Информации по нем очень мало, даже на Arduino...

чем связать STM32 + STM32 в одном корпусе - ARM, Cortex, STM32 микроконтроллер
Есть 2 платы: (1) - STM32 (Вывод на LCD + запись SD) и (2) - STM32F4 (обработка сигналов + коммуникация с датчиками). Чем связать данные...

Битые файлы на флешке - Flash-память
Файлы на флешке изменили формат и названия на невесть что и,соответственно, не открываются. Может, кто-нибудь знает, как вылечить?

Битые файлы при загрузки из Интернета - Windows 7
Часто бывает такое. Хочу скачать какой-либо файл с файлообменников, получаю ссылку, перехожу по ней, а открывается такое окно. Причем,...

Битые файлы при загрузке с браузеров - Windows 7
В общем проблема такая, при загрузке с браузеров бьются файлы, не загружаются видео на ютубе/вконтакте, либо загружаются не полностью, а...

Чем и как определить битые сектора и (чем и как) разбить HDD на разделы, игнорируя (оставляя в не размеченных зонах) битые сектора? - Жесткие диски, HDD
Помнится, однажды (лет 7 назад) делал подобное с переносным диском. Тогда из 80 удалось сохранить 60 гб. создав три логические. При этом 8...

2
otirt80
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 115
27.03.2014, 19:49 #2
Не надо ничего разгонять. Для записи данных из порта на 115200 скорости должно хватать с огромным запасом.
Надо разбираться с кодом.

Буфер через который передаются данные - кольцевой?
Переполнение буфера контролируется?

С SPI через DMA работаете?
0
Mosokro
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 50
28.03.2014, 10:18 #3
Я тоже считал что скорости должно хватить.
Там правда оверхэд в виде таймстэмпа, но скорость все равно должна быть около 30кб/с.
Тест давал максимум 900кб/с на больших блоках и около 100кб/с на маленьких блоках.

Буфер кольцевой и переполнение контролируется.
SPI работает с ДМА (реализация драйвера от Мартина Томаса, правда допиленная для совместимости со свежим кодом FanFS от ChaNa).

Битый кусок в файле ровно 512 байт - т.е. 1 сектор или размер буфера самой ФС.

Вчера от балды поставил размер трансфера меньше сектора - и все заработало как ни странно.
Короче оставил пока 128 байт - буду тестировать.

А по поводу разгона камня - так этож на халяву двойной прирост скорости :)
Про разгонЯдро то у F100 и F101-107 одинаковое, техпроцесс тоже. Единственная засада скорость работы флэша.
Но вот похоже в F100 никто ускоритель флэша не выпиливал и его регистры управления тоже, только в даташите потерли эти разделы :) Таким образом я его вполне успешно активировал и поставил флэшу 1 цикл ожидания как и положено (0-24МГц - 0 / 24-48МГц - 1 / 48-72МГц - 2 цикла). Ну и делители на шины периферии настроил.
Это как с клонами ST-LINK на STM32F101 у которого USB официально нет а он есть :)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2014, 10:18
Привет! Вот еще темы с ответами:

Logger.debug - Java SE
Добрый день уважаемые коллеги! Подскажите, ведите ли вы что либо странное или неправильное в этом коде? logger.debug("this is the data...

Не работает Logger - Java
Доброго времени суток, форумчане! Помогите пожалуйста разобраться почему не работает Logger import org.apache.log4j.Logger; public...

Processor monitoring + logger - Софт
Здравствуйте, Подскажите пожалуйста, есть ли в природе некая программка для: 1. Мониторинг ЦП (загруженность ЦП. активные...

Logger from JDK SE 1.4.1 doubles messages - JAVA IDE
Logger from JDK SE 1.4.1 writes out messages not only to MY FileHandler but to stderr also. Note that I have manually deleted all...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru