Jump to content

    

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

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

Edited by Asteo

Share this post


Link to post
Share on other sites
...Поэтому автономных асинхронных друг к другу логгеров должно быть много. ...

 

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

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

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

- имхо...

 

========

 

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

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

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

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

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

 

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

 

 

Share this post


Link to post
Share on other sites

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

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

 

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

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

Share this post


Link to post
Share on other sites
Каким образом ее правильно настраивать и подключать к проекту без использования каких-либо "визардов"?

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

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

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

 

fs_usingmci.png

 

 

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

Edited by Jekin

Share this post


Link to post
Share on other sites

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

Edited by Asteo

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

Boards.rar

Share this post


Link to post
Share on other sites
сам обычно использую асинхронный, быстрый интерфейс к формированию единого потока данных, далее можно более медленно

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

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

 

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

 

 

Share this post


Link to post
Share on other sites
AlexandrY, на счет гибкости системы я с Вами согласен. Но функционал обрисова в первом посте топика.

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

 

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

 

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

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

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

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

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

 

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

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

 

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

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

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

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

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

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

-лог GPRS сессий

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

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

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

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

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

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

 

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

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

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

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

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

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

 

 

Share this post


Link to post
Share on other sites
...основные принципы "формирования единого потока данных"...про "ini" файлик тоже..

 

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

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

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

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

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

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

 

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

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

 

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

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

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

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

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

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

 

Share this post


Link to post
Share on other sites

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

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

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

 

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

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

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

 

Share this post


Link to post
Share on other sites
В состав Keil MDK Pro входит многопоточная файловая система Keil FlashFS.

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

 

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

 

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

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

- Keil RL-FlashFS

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

- другое

 

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

 

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
В 19.04.2019 в 12:25, doom13 сказал:

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

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

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this