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

Особенности построения ПО c использованием RTOS

Jekin, Спасибо! Почитаю про RL-FlashFS. Ранее с ней не сталкивался.

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

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


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

...Поэтому автономных асинхронных друг к другу логгеров должно быть много. ...

 

цена таких логгеров? Просто типа закачать потом в эксель и красиво выдать кривую? Потому как для анализа глазками

шарахаться между файлами по временным срезам - вряд-ли удобное решение...Если из множество кэшей писателей захотите свести

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

- имхо...

 

========

 

сам обычно использую асинхронный, быстрый интерфейс к формированию единого потока данных, далее можно более медленно

запись в файл. Если есть типизация данных, то вот в данном случае логи разные:

- запись контрольных точек и "голубых экранов"

- логгирование инфы состояния: датчики-флаги-бизнес логика

- запись данных критичных к выполнению: изменение стэков, захват буфферов и памяти и т.д..

 

рулится всё это из интерфейса и с самой флэшки, типа ай-най файлика...

 

 

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


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

Вот здесь http://www.keil.com/support/man/docs/rlarm..._usingmcard.htm есть алгоритм настройки RL-FlashFS ,

но с использованием Configuration Wizard

 

Каким образом ее правильно настраивать и подключать к проекту без использования каких-либо "визардов"?

Или может вынести обсуждение в отдельную тему?

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


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

Каким образом ее правильно настраивать и подключать к проекту без использования каких-либо "визардов"?

Или может вынести обсуждение в отдельную тему?

Настройка заключается в редактировании файла File_Config.c

Это делать можно и в ручную, но лучше использовать визард, чтобы корректно настройку произвести. Там снизу Вы можете видеть две закладочки: "text editor" и "configuration wizard"

 

fs_usingmci.png

 

 

А Вы какую версию Keil MDK используете? Просто в новой версии (5.x) принцип подключения библиотек немного поменялся.

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

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


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

Раньше использовал 4.73, сейчас перешел на 5.10.xx

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

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


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

В новой версии Middleware подключается через "Manage Run-Time Environment":

 

http://www.keil.com/support/man/docs/uv4/u..._rtemanager.htm

 

Там же можно выбрать и другие необходимые драйвера.

 

Кстати, вот пример для демо-платы MCBSTM32E - использование FlashFS, с картой SD в том числе.

Boards.rar

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


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

сам обычно использую асинхронный, быстрый интерфейс к формированию единого потока данных, далее можно более медленно

запись в файл.

можете более подробно объяснить основные принципы "формирования единого потока данных" , собственно то, над чем я "туплю" :)

 

про "ini" файлик тоже объясните, если не сложно.

 

 

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


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

AlexandrY, на счет гибкости системы я с Вами согласен. Но функционал обрисова в первом посте топика.

Что касается жесткого реального времени для АЦП. Как правило, в GPS трекерах это не требуется. И дискретизации данных в 1 секунду вполне достаточно.

 

Функционал это что должен дивайс делать, а не какая периферия у микроконтроллера.

 

Т.е. какие датчики в каких задачах управления задействованы.

Например акселерометр для идентификации вибраций, или для инерциальной навигации.

Или датчики тока-напряжения для управления рулями или двигателями.

Или датчики для управления зарядником.

Или микрофоны для записи звуков и т.д.

 

Вот такое описание функционала и даст только представление о критичности задач и соответственно о свойствах логеров.

Кстати все что перечислил требует жесткого реального времени.

 

Например в моем дивайсе активируются сразу больше десятка независимых логов:

-системный (следит за порядком включения-выключения задач и другими общими событиями)

-лог протокола PPP

-лог событий для отправляемых на сервер

-лог GSM протокола

-лог GPS протокола

-лог GPRS сессий

-лог зарядника

-лог поступающих сообщений по SMS

-лог TCP/IP протокола

-лог HTTP протокола и облачных сервисов

-логи сырых данных всех UART-ов

Все логи идут в свои файлы с метками времени с точностью до 1 мкс.

 

А вот для быстрой периферии типа АЦП или I/O сопроцессора реализуются еще синхронные логи.

Синхронные логи могут быть очень большими, до гигабайт.

Никакой Excel и даже Matlab их загрузить не может. Пишутся специальные утилиты обработчики таких файлов.

Синхронные логи специфичны для каждого применения поэтому конфигурируются, но ini файлы для этого слишком примитивны.

Конфигурирование выполняется JSON файлами. Конфигурируется частота дискретизации, какие сигналы будут записываться, тип данных, параметры фильтрации, конвертирующие функции.

Для синхронных логов нужна большая динамическая память для буферизации.

 

 

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


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

...основные принципы "формирования единого потока данных"...про "ini" файлик тоже..

 

если речь идёт про ось(FreeRTOS), то можно завести очередь, в которую будут пихать инфу все кому не лень (ну например с указанием критичности,

модуля, файлика, дата создания файла, строчка в файле, сама формируемая строка, параметры, имя потока и т.д.). завести поток который будет читать из этой очереди

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

в файлик (ежели том смонтирован, типа флэш вставлена). и обозвать это к примеру поинт лог... можно на эту-же нитку повесить сбор инфы и формирование

других логов - ну например сбор посекундной информации с датчиков. или там критические данные (остаточный размер стэков, развёрнутая инфа о точке

произошедшего эксепшена и т.д.)...

 

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

создавать-читать-писать файлы, каталоги и иже...

 

в момент подъёма софта, после подготовки флэши к работе, вы можете считать(или сформировать если нет) ini файл вашего устройства. тем самым упрощается

первый старт девайса. т.е. достаточно вставить в большого брата флэш, прописать ini файл (ну или запустить с пустой - девайс сам его создаст по умолчанию) -

параметры сети, необходимость писать логи, имя вэб сервера, IP адрес, необходимость запуска WiFi и т.д. и т.п. (формат ini файла прост: секция, имя поля=данные).

вставляее в свой девайс, он считывает первоначальные установки, по дате-времени файла принимает решение - это новые установки или он уже их считывал.

считывает если нужно, сохраняет в свою внутреннюю флэш(к примеру). всё. девайс готов к работе. актуально при запуске девайса при отсутствии органов

ввода-вывода инфы. например общающегося через WiFi.

 

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


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

Доброго времени суток! В свободное время продолжаю работу над проектом.

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

Дошел до организации архитектуры приема-передачи.

 

Вопрос: каким образом организовывается передача данных в логгерах/трекерах с использованием RTOS???

расскажите в общих чертах про логику работы задачи(задач), отвечающей за передачу. Что она(они) должна уметь, что учитывать и тд.

Или ткните пальцем, где все это дело можно почитать.

 

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


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

В состав Keil MDK Pro входит многопоточная файловая система Keil FlashFS.

RAM диск в Keil FlashFS также поддерживается

 

Ух ты, и я не знал! Jekin огромное спасибо !

Пока не знал о FlashFS, успешно прикрутил к FreeRTOS файловую систему FatFS , два независимых потока для работы с двумя SD картами. Правда с извращениями, в момент создания файла может работать только один поток.

Судя по описанию, FlashFS на много мощнее. Такие вещи как функция дефрагментации диска мне с FlashFS и не снилась.

Кто использовал, скажите, эта FlashFS хорошая, безглючная и легко и с ней всё легко работать ? Или есть подводные камни ?

О FatFS я могу сказать только хорошее : всё просто, глюков не видил.

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


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

Коллеги, поскажите.

Есть вполне увесистый проект на stm32f207 + FREERTOS + Keil к которому нужно прикрутить SD-карту для чтения файлов конфигураций/ записи логов, т.е. особых требований к производительности нет. Единственное логи должны писаться с нескольких задач. Вопросы:

 

1.какую FS выбрать ?

-FatFS (есть опыт работы в суперлупе)

- Keil RL-FlashFS

- Super Lean FAT File System (есть на сайте FREERTOS)

- другое

 

2.соит ли заморачиваться с подключением по SDIO, либо оставить все на SPI ?

 

 

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


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

Здравствуйте. Подскажите, что почитать по теме. Пока прошёлся по докам FreeRTOS.

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


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

В 19.04.2019 в 12:25, doom13 сказал:

Здравствуйте. Подскажите, что почитать по теме. Пока прошёлся по докам FreeRTOS.

Почитать что? По какой теме? По использованию RTOS для МК?

Начните с основ любой RTOS - организация многозадачности, средства синхронизации потоков и т.д. Это стандартный набор для построения любой RTOS.

Ну а так, навскидку: А. Курниц. FreeRTOS - операционная система для микроконтроллеров.

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


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

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

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

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

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

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

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

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

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

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