реклама на сайте
подробности

 
 
> Особенности построения ПО c использованием RTOS, Взаимодействия между отдельными задачами, событиями ???
Asteo
сообщение May 13 2014, 13:41
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 7-04-14
Пользователь №: 81 265



Доброго времени суток!


По немногу разбираюсь с freeRTOS. До этого использовал архитектуру: "Суперцикл+прерывания".

Интересуют особенности построения архитектуры ПО с ее использованием.
Т.е. "Как наиболее грамотно и рационально произвести взаимодействия между отдельными задачами, событиями ".

В учебных целях (а в случае успеха и "сугубо индивидуальных меркантильных планах автора " wink.gif ) было решено разработать проект GPS трекера для автомобиля.

В кратце:

Планируется использовать несколько цифровых и аналоговых GPIO.
Повесить датчики на стандартные интерфейсы(I2С,SPI,UART,1-Wire).
Использовать несколько каналов АЦП и т.д.
Для ведения "event log" планирую какую нибудь внутреннюю память (FSMC или SPI Serial Flash -- еще не определился),
а также microSD-card.
С помощью GSM модуля данные будут передаваться на сервер.
В качестве отладочных стендов использую STM32f103RET6 от "Terraelectronica", SIM68v и sim900 от SimCom.

Идею обрисовал , теперь ближе к делу.

Поставил RTOS, прикрутил задачу взаимодействия с GPS , установил FatFs от Чана (SDIO) , пишу лог NMEA сообщений на microSD.
Но это сейчас все в одной задаче. Чтобы было видно, что RTOS не завис, параллельная задача мигает диодом .

Дальше необходимо организовать сбор данных с других ресурсов --- GPIO,АЦП, I2C .
И вот тут у меня как у начинающего и возник вопрос ---Как с помощью freeRTOS наиболее рационально и целесообразно осуществить сбор данных с разных ресурсов микроконтроллера и осуществить их запись по протоколу в память?(Передачу по GSM пока не трогаем, хотя и подразумеваем что она будет осуществляться в дальнейшем.)

А хочу я от вас я хочу ответы по типу:


1) Высокоприоритетные задачи обработки периферии с использованием соответствующих прерываний собирают данные. Используя механизмы семафоров и очередей передают их низкоприоритетной задаче, которая собрав все необходимые данные пишет их на SD карту.

2)Высокоприоритетные задачи обрабатывают данные и каждая пишет свой собственный лог в буффер во flash памяти(возможно даже дублирует). Низкоприоритетная задача читает все эти логи и пишет на SD card.

3) Ваш способ + обоснование "Почему так". biggrin.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jekin
сообщение May 17 2014, 03:28
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 9-09-07
Из: Минск
Пользователь №: 30 406



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

Цитата(Asteo @ May 17 2014, 06:02) *
Если можно,эту часть объясните по подробнее, или дайте ссылку где почитать "у Курница wink.gif" .
Также заинтересовали многопоточные FS на RAM --- в функционале Keil имеется что-то подобное?

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

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

Сообщение отредактировал Jekin - May 17 2014, 04:12
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 19 2014, 04:02
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Jekin @ May 17 2014, 10:38) *
AlexandrY, на счет гибкости системы я с Вами согласен. Но функционал обрисова в первом посте топика.
Что касается жесткого реального времени для АЦП. Как правило, в GPS трекерах это не требуется. И дискретизации данных в 1 секунду вполне достаточно.


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

Т.е. какие датчики в каких задачах управления задействованы.
Например акселерометр для идентификации вибраций, или для инерциальной навигации.
Или датчики тока-напряжения для управления рулями или двигателями.
Или датчики для управления зарядником.
Или микрофоны для записи звуков и т.д.

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

Например в моем дивайсе активируются сразу больше десятка независимых логов:
-системный (следит за порядком включения-выключения задач и другими общими событиями)
-лог протокола PPP
-лог событий для отправляемых на сервер
-лог GSM протокола
-лог GPS протокола
-лог GPRS сессий
-лог зарядника
-лог поступающих сообщений по SMS
-лог TCP/IP протокола
-лог HTTP протокола и облачных сервисов
-логи сырых данных всех UART-ов
Все логи идут в свои файлы с метками времени с точностью до 1 мкс.

А вот для быстрой периферии типа АЦП или I/O сопроцессора реализуются еще синхронные логи.
Синхронные логи могут быть очень большими, до гигабайт.
Никакой Excel и даже Matlab их загрузить не может. Пишутся специальные утилиты обработчики таких файлов.
Синхронные логи специфичны для каждого применения поэтому конфигурируются, но ini файлы для этого слишком примитивны.
Конфигурирование выполняется JSON файлами. Конфигурируется частота дискретизации, какие сигналы будут записываться, тип данных, параметры фильтрации, конвертирующие функции.
Для синхронных логов нужна большая динамическая память для буферизации.

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Asteo   Особенности построения ПО c использованием RTOS   May 13 2014, 13:41
- - iosifk   Цитата(Asteo @ May 13 2014, 17:41) На са...   May 13 2014, 14:03
- - Asteo   Спасибо,прочел, специально написал, что часть рабо...   May 13 2014, 14:20
|- - iosifk   Цитата(Asteo @ May 13 2014, 18:20) Спасиб...   May 13 2014, 14:23
||- - Asteo   Цитата(iosifk @ May 13 2014, 17:23) Так н...   May 13 2014, 14:35
||- - iosifk   Цитата(Asteo @ May 13 2014, 18:35) Я пони...   May 13 2014, 14:50
||- - Asteo   Цитата(iosifk @ May 13 2014, 17:50) Совсе...   May 13 2014, 15:15
||- - AlexandrY   Цитата(Asteo @ May 13 2014, 18:15) Я испо...   May 15 2014, 19:09
|- - AlexandrY   Цитата(Asteo @ May 13 2014, 17:20) Спасиб...   May 13 2014, 14:36
- - Jekin   При использовании RTOS первый путь наиболее рацион...   May 13 2014, 14:36
- - Jekin   Цитата(AlexandrY @ May 15 2014, 22:09) Ко...   May 16 2014, 08:35
|- - AlexandrY   Цитата(Jekin @ May 16 2014, 11:35) Asteo ...   May 16 2014, 09:13
|- - Asteo   Цитата(AlexandrY @ May 16 2014, 12:13) Чт...   May 17 2014, 03:02
|- - kolobok0   Цитата(AlexandrY @ May 16 2014, 13:13) .....   May 17 2014, 03:53
- - Rst7   Moderator: Господа, а особенно juvf, давайте без ...   May 17 2014, 02:06
|- - Asteo   Jekin, Спасибо! Почитаю про RL-FlashFS. Ранее ...   May 17 2014, 03:49
|- - MiklPolikov   Цитата(Jekin @ May 17 2014, 07:28) В сост...   Jul 17 2014, 09:50
- - Asteo   Вот здесь http://www.keil.com/support/man/docs/rla...   May 17 2014, 05:39
|- - Jekin   Цитата(Asteo @ May 17 2014, 08:39) Каким ...   May 17 2014, 05:51
- - Asteo   Раньше использовал 4.73, сейчас перешел на 5.10.xx   May 17 2014, 06:00
|- - Jekin   В новой версии Middleware подключается через ...   May 17 2014, 06:09
- - Asteo   Создал тему про Keil RL File System отдельно , даб...   May 17 2014, 06:52
- - Asteo   Цитата(kolobok0 @ May 17 2014, 11:03) сам...   May 19 2014, 03:19
|- - kolobok0   Цитата(Asteo @ May 19 2014, 11:29) ...осн...   May 19 2014, 13:18
- - Asteo   Доброго времени суток! В свободное время прод...   Jul 14 2014, 10:37
- - grv   Коллеги, поскажите. Есть вполне увесистый проект н...   Oct 4 2015, 12:20


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01423 секунд с 7
ELECTRONIX ©2004-2016