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

 
 
> STM32F4 Ethernet + Dallas: перетягивание каната
k000858
сообщение Aug 27 2015, 04:15
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Всем привет.
Есть девайс : stm + 1-wire шина (реализованная аппаратным UART'ом) + ethernet (обслуживается стеком Lwip), управляется FreeRTOS.

Есть 2 задачи (есть и другие, но они на работу не влияют):
1) Обслуживание Ethernet (приоритет realtime (highest))
2) Обслуживание шины 1 wire. (задача выполняется раз в секунду с osDelay(1000)wink.gif Этапы:
- поиск устройств на шине
- запись инициализирующих данных (для каждого по серийнику из найденных)
- конвертация температуры (для всех)
- osDelay(100);
- конвертация напряжения/тока (для всех СКИП РОМ)
- osDelay(5);
- чтение памяти каждого датчика (по серийнику)

Если приоритет 2й задачи нормал или хай (ниже езернетного таска), езернет работает отлично (пинг без потерь, время ответа 1 мс), однако датчики Даллас работают с перебоем - видимо нарушаются задержки в протоколе общения (задержки аппаратные, т.к. 1-wire шина эмулируется ЮАРТом).
Если приоритет 2й задачи = приоритету езернета, езернет работает неситабильно, регулярно время ответа увеличивается до 10-100мс (при 3 датчика Даллас на шине 1-wire) (в этот момент видимо проц занят работой 2й задачи, по обслуживанию шины 1-wire).

Посоветуйте, плиз, как оптимизировать работу этих 2х задач, что бы задача 1 работала стабильно (с текущим приоритетом), задача 2 так же работала стабильно, выполняясь раз в секунду.



Второй вопрос по тему: FreeRTOS к девайсу прикрутил совсем недавно. Разбираюсь с распределением памяти. На данный момент определяюсь, сколько памяти отдать каждой задачи. Вроде как нужно определить функцию диагностики стэка ОС, которой определять, у какой задачи переполняется стек, увеличивать стек каждой задачи пока не прекратится переполнение. Верно? Как определить такую диагностическую функцию? не могу найти ее в исходниках. Как посчитать (хотя бы ориентировочно), сколько кучи выделить в целом ОС (configTOTAL_HEAP_SIZE) ? И влияет ли размер памяти, выделяемой для Ос на настройки стека/кучи всего Си проекта?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Sep 1 2015, 18:37
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Переменные передаваемые при создании задачи служат как правило для других целей. Обычно так делается для идентификации задачи, либо при создании нескольких копий одной задачи.
Например я пишу задачу обслуживания COM порта. В задачу передаю номер этого порта. И запускаю 3 задачи на 3 COM порта.

Как правило, в реальном проекте появляются глобальные переменные или структуры, к которым требуется доступ из разных задач.
Кроме того, что надо, как уже написали, чётко продумать механизм совместного использования, желательно подробно описать это там, где вы их объявляете.
Существуют различные способы обеспечить грамотную работу с такими данными. Почитайте пожалуйста. Есть хорошее описание FreeRTOS на русском у Курница. Все ОС используют похожие механизмы, выработанные десятилетия назад. Поэтому это будет вдвойне полезно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- k000858   STM32F4 Ethernet + Dallas: перетягивание каната   Aug 27 2015, 04:15
- - SasaVitebsk   Есть понятие системного тика. Это время переключен...   Aug 27 2015, 04:59
|- - k000858   Цитата(SasaVitebsk @ Aug 27 2015, 07:59) ...   Aug 27 2015, 05:09
|- - SasaVitebsk   Цитата(k000858 @ Aug 27 2015, 08:09) При ...   Aug 27 2015, 05:57
- - mantech   Цитата(k000858 @ Aug 27 2015, 07:15) Есть...   Aug 27 2015, 06:17
|- - Сергей Борщ   Цитата(mantech @ Aug 27 2015, 09:17) Личн...   Aug 27 2015, 07:42
|- - jcxz   Цитата(mantech @ Aug 27 2015, 12:17) Личн...   Aug 27 2015, 08:03
- - SasaVitebsk   Как формируются задержки при работе с ОСью. Моё ви...   Aug 27 2015, 06:18
- - scifi   Цитата(k000858 @ Aug 27 2015, 07:15) Если...   Aug 27 2015, 06:23
|- - k000858   Цитата(scifi @ Aug 27 2015, 09:23) Дурдом...   Aug 27 2015, 06:53
|- - scifi   Цитата(k000858 @ Aug 27 2015, 09:53) може...   Aug 27 2015, 07:17
|- - SasaVitebsk   Цитата(k000858 @ Aug 27 2015, 09:53) пока...   Aug 27 2015, 07:39
- - bugdesigner   Проблема с нестабильностью 1-wire скорее всего свя...   Aug 27 2015, 07:07
|- - k000858   Цитата(bugdesigner @ Aug 27 2015, 10:07) ...   Aug 27 2015, 07:21
|- - jcxz   Цитата(k000858 @ Aug 27 2015, 13:21) в ка...   Aug 27 2015, 07:49
- - Сергей Борщ   Цитата(k000858 @ Aug 27 2015, 07:15) одна...   Aug 27 2015, 07:36
- - Сергей Борщ   Добавлено: так у вас там еще и ПДП. Тогда вообще н...   Aug 27 2015, 07:50
- - SasaVitebsk   Вот кидаю вам картинку, где виден плагин FreeRTOS,...   Aug 27 2015, 08:29
|- - k000858   Цитата(SasaVitebsk @ Aug 27 2015, 11:29) ...   Aug 27 2015, 08:33
|- - SasaVitebsk   Цитата(k000858 @ Aug 27 2015, 11:33) вот ...   Aug 27 2015, 08:46
|- - jcxz   Цитата(k000858 @ Aug 27 2015, 14:33) вот ...   Aug 27 2015, 08:53
- - k000858   а теперь вопрос на миллион!!! 1) задач...   Aug 27 2015, 09:02
|- - scifi   Цитата(k000858 @ Aug 27 2015, 12:02) при ...   Aug 27 2015, 09:32
|- - jcxz   Цитата(k000858 @ Aug 27 2015, 15:02) при ...   Aug 27 2015, 09:34
|- - k000858   Цитата(jcxz @ Aug 27 2015, 12:34) Ну если...   Aug 27 2015, 10:41
- - SasaVitebsk   Я бы никаких критических секций не делал. И даже н...   Aug 27 2015, 11:27
|- - k000858   Цитата(SasaVitebsk @ Aug 27 2015, 14:27) ...   Aug 28 2015, 02:47
|- - jcxz   Цитата(SasaVitebsk @ Aug 27 2015, 17:27) ...   Aug 28 2015, 16:23
- - k000858   Что бы не создавать вторую тему, задам вопрос в эт...   Aug 28 2015, 05:47
|- - scifi   Цитата(k000858 @ Aug 28 2015, 08:47) Подо...   Aug 28 2015, 06:37
|- - k000858   Цитата(scifi @ Aug 28 2015, 09:37) Сомнев...   Aug 28 2015, 06:50
|- - scifi   Цитата(k000858 @ Aug 28 2015, 09:50) в пр...   Aug 28 2015, 10:05
|- - kolobok0   Цитата(k000858 @ Aug 28 2015, 09:50) ...в...   Aug 28 2015, 16:31
- - k000858   появился еще вопрос от относительно ФрииРТОС: есть...   Sep 1 2015, 10:54
|- - kolobok0   Цитата(k000858 @ Sep 1 2015, 13:54) ... е...   Sep 1 2015, 11:20
- - k000858   весьма информативно. благодарю. исследование работ...   Sep 2 2015, 03:03
- - k000858   в процессе доработки столкнулся с зависанием некот...   Sep 2 2015, 06:50
|- - Сергей Борщ   Цитата(k000858 @ Sep 2 2015, 09:50) задач...   Sep 2 2015, 06:54
|- - jcxz   Цитата(k000858 @ Sep 2 2015, 12:50) Есть ...   Sep 2 2015, 06:59
- - k000858   да это понятное дело, что я могу сам сваять некий ...   Sep 2 2015, 07:02
|- - jcxz   Цитата(k000858 @ Sep 2 2015, 13:02) да эт...   Sep 3 2015, 03:45
- - k000858   Если мне необходимо выполнять некую задачу (наприм...   Sep 3 2015, 07:15
- - SasaVitebsk   Ну я так понимаю, что вам же не надо точно 1 сек? ...   Sep 4 2015, 05:22
|- - k000858   Цитата(SasaVitebsk @ Sep 4 2015, 08:22) Н...   Sep 4 2015, 08:07
- - SasaVitebsk   1. Я не совсем понял ф-ции osSemaphoreRelease/ osS...   Sep 7 2015, 06:01


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

 


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


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