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

 
 
> Особенности построения ПО 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 16 2014, 08:35
Сообщение #2


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

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



Цитата(AlexandrY @ May 15 2014, 22:09) *
Кольцевые буферы во FLASH это скорее всего будет изобретение велосипеда.
Придется все равно решать проблему одновременного доступа нескольких задач к FLASH, получить при этом проблемы с неопределенностью времени доступа.
В результате будет непредсказуемое взаимовлияние одних задач на другие.

Asteo же планирует использовать один файл лога для всех задач. Может все же тогда проще писать во флеш из одной задачи-логгера, как я писал выше?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 16 2014, 09:13
Сообщение #3


Ally
******

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



Цитата(Jekin @ May 16 2014, 11:35) *
Asteo же планирует использовать один файл лога для всех задач. Может все же тогда проще писать во флеш из одной задачи-логгера, как я писал выше?


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

RTOS ведь выбирают когда хотят нагрузить побольше функциональности.
Вопрос "проще" тут бесполезен ибо конфликтует с целью.
А вот гибкость однозначно облегчит будущее наращивание функциональности.

Поэтому автономных асинхронных друг к другу логгеров должно быть много.
Отключается модуль (скажем Wi-Fi вместо GPRS) и автоматически перестает работать его логгер.

Потом для периферии типа АЦП нужен синхронный логгер с жестким реальным временем, а логгер GSM можно сделать и асинхронным.
Реально быстрый синхронный лог возможен только в процедуре ISR
И тут получается различная реализация разных типов логеров.

Я использую для логгеров всегда неблокирующие очереди, но не конвейеры. Элементы очередей это указатели на структуры сообщений.
Выделяется ли память структурам динамически или статически зависит от требований к быстродействию. Конвейеры в данном случае менее предсказуемы.
Go to the top of the page
 
+Quote Post
Asteo
сообщение May 17 2014, 03:02
Сообщение #4


Участник
*

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



Цитата(AlexandrY @ May 16 2014, 12:13) *
Что-то конкретно можно обсуждать только зная функциональность всего приложения и ограничения платформы.


В самом начале темы функционал почти описал, а также говорил,что как отладочник использую STM32f103RET6 " от "Terraelectronica
При разработке собственного железа планирую использовать STM32F103VG.
из Flash присмотрел SST26VF064B --- Microchip 2.7V to 3.6V 64 Mbit SPI Serial Flash .
В качестве среды использую Keil

Цитата(AlexandrY)
Я использую для логгеров всегда неблокирующие очереди, но не конвейеры. Элементы очередей это указатели на структуры сообщений.
Выделяется ли память структурам динамически или статически зависит от требований к быстродействию. Конвейеры в данном случае менее предсказуемы.


Если можно,эту часть объясните по подробнее, или дайте ссылку где почитать "у Курница wink.gif" .
Также заинтересовали многопоточные FS на RAM --- в функционале Keil имеется что-то подобное?

Сообщение отредактировал Asteo - May 17 2014, 03:04
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
|- - kolobok0   Цитата(AlexandrY @ May 16 2014, 13:13) .....   May 17 2014, 03:53
- - Rst7   Moderator: Господа, а особенно juvf, давайте без ...   May 17 2014, 02:06
- - Jekin   AlexandrY, на счет гибкости системы я с Вами согла...   May 17 2014, 03:28
|- - Asteo   Jekin, Спасибо! Почитаю про RL-FlashFS. Ранее ...   May 17 2014, 03:49
|- - AlexandrY   Цитата(Jekin @ May 17 2014, 10:38) Alexan...   May 19 2014, 04:02
|- - 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 Текстовая версия Сейчас: 21st July 2025 - 17:37
Рейтинг@Mail.ru


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