Easyelectronics.ru

Электроника для всех
Текущее время: 26 фев 2021, 03:58

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Глобальные переменные во FreeRTOS, стоит ли использовать?
СообщениеДобавлено: 31 авг 2020, 21:20 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 863
BARS_ писал(а):
Дабы не плодить темы, спрошу тут. Есть девайс, который постоянно опрашивает 7 других девайсов по RS485. С каждого сливается 100 с лишним байт информации в виде MODBUS пакета. Мне нужно хранить данные с каждого блока в памяти. Периодически их запрашивают из вне через ЛВС (чип W5500, подключен по SPI) ну и сам девайс берет часть данных для работы. Собственно вопрос, как лучше организовать хранение этих данных? Просто сделать массив структур или в RTOS это делается как-то хитрее?

Также, но проще, ибо будет делаться средствами ОС.
У тебя видны 2 задачи: одна поднимает данные по Модбас, вторая отдаёт их по Эзернет. Данные у задач общие, поэтому нужна синхронизация доступа к ним со стороны задач. Как её сделать, определяется ресурсами. Можно, например, просто синхронизировать доступ через семафор, можно через двойную-тройную буферизацию. Тут уже сам смотри, что тебе важнее, экономия памяти или малые задержки при ответах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Глобальные переменные во FreeRTOS, стоит ли использовать?
СообщениеДобавлено: 31 авг 2020, 21:36 
Старожил
Аватара пользователя

Зарегистрирован: 28 сен 2012, 22:11
Сообщения: 409
Откуда: г. Ростов-на-Дону
Да в принципе камень будет 429, так что памяти там достаточно. Просто RTOS только начал изучать и хочу сделать, как правильно. Сейчас пока думаю сделать глобальный буфер. После приема по RS производится проверка CRC, затем типа команды (ответ это на запись или на чтение). Если это пакет с прочитанными данными, то через DMA складываем его в глобальный буфер из которого потом можно прочесть его через ЛВС. Если же пакет с данными записи, то сразу слать его в ЛВС. Ну и по окончанию копирования через DMA, будет выставляться семафор готовности буфера.

_________________
Количество полученного опыта прямо пропорционально выведенному из строя оборудованию....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Глобальные переменные во FreeRTOS, стоит ли использовать?
СообщениеДобавлено: 31 авг 2020, 22:12 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 551
Откуда: Киев
Если есть возможность берите в проект H750, он дешевле и получше 429, смотря подойдет ли корпус конечно. Ник у вас знакомый))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Глобальные переменные во FreeRTOS, стоит ли использовать?
СообщениеДобавлено: 31 авг 2020, 22:25 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 863
Цитата:
берите в проект H750

Тут народ недавно сетовал, что Н7 стало трудно покупать. Я осторожно предположил, что имеющиеся ревизии с большим числом ошибок сняты с производства, а новых еще не выпустили. Обрати внимание на этот нюанс. В своих проектах я не стал рисковать и заложил F7. Решать тебе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Глобальные переменные во FreeRTOS, стоит ли использовать?
СообщениеДобавлено: 31 авг 2020, 22:28 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 551
Откуда: Киев
Тема была про 2 ядерники, H750 кучами ревизии V есть


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Глобальные переменные во FreeRTOS, стоит ли использовать?
СообщениеДобавлено: 31 авг 2020, 23:25 
Старожил
Аватара пользователя

Зарегистрирован: 28 сен 2012, 22:11
Сообщения: 409
Откуда: г. Ростов-на-Дону
Пока железо менять не получится, уже платы есть готовые. Осталось лишь прошивку сделать =)

_________________
Количество полученного опыта прямо пропорционально выведенному из строя оборудованию....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Глобальные переменные во FreeRTOS, стоит ли использовать?
СообщениеДобавлено: 01 сен 2020, 09:39 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2881
BARS_ писал(а):
Дабы не плодить темы, спрошу тут. Есть девайс, который постоянно опрашивает 7 других девайсов по RS485. С каждого сливается 100 с лишним байт информации в виде MODBUS пакета. Мне нужно хранить данные с каждого блока в памяти. Периодически их запрашивают из вне через ЛВС (чип W5500, подключен по SPI) ну и сам девайс берет часть данных для работы. Собственно вопрос, как лучше организовать хранение этих данных? Просто сделать массив структур или в RTOS это делается как-то хитрее?

Т.е. задачка: регулярно, допустим раз в секунду, опрашиваются слейвы по модбасу, и у вас висит актуальная инфа в виде массива на 700+ байт. Иногда, кто-то сверху по Eth просит отдать эти данные, со всех слейвов.
Вариантов тут собственно немного:
- вводим мьютексы на доступ к данным. Минусы: могут быть задержки, когда Eth просит отдать данные, пытается взять мьютекс, а в это время медленный RS485 их только обновляет.
- двойная буферизация, когда у нас всегда есть готовый пакет данных для Eth, а в это время модбас работает с другим буфером. Чтобы не копировать зазря буфера, проще перекидывать указатель на них, защитив конечно мьютексом эту операцию.
Если память позволяет, сделал бы второй вариант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Глобальные переменные во FreeRTOS, стоит ли использовать?
СообщениеДобавлено: 01 сен 2020, 11:22 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 718
Откуда: Германия
Hold писал(а):
Вариантов тут собственно немного:


А еще есть очередь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Глобальные переменные во FreeRTOS, стоит ли использовать?
СообщениеДобавлено: 01 сен 2020, 11:27 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2640
В FreeRTOS ничего "хитрее" не делается.
"Хитрее" делается в C++
Сейчас камни полетят, но сама жизнь заставляет уже Вас вылазить из детских штанишек "чистого" Си.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Глобальные переменные во FreeRTOS, стоит ли использовать?
СообщениеДобавлено: 01 сен 2020, 11:55 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 863
Цитата:
Сейчас камни полетят, но сама жизнь заставляет уже Вас вылазить из детских штанишек "чистого" Си.

Почему? Я также думаю. И тут ещё есть товарищи, которые хорошо пишут на С++.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Глобальные переменные во FreeRTOS, стоит ли использовать?
СообщениеДобавлено: 01 сен 2020, 14:34 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2881
dev писал(а):
Hold писал(а):
Вариантов тут собственно немного:


А еще есть очередь.

Очередь конечно есть, но как в ней регулярно обновлять данные?) Eth может и не всегда забирать данные, а допустим раз в сутки. Либо эту очередь постоянно вычитывать. Да и пересылать постоянно 700+ байт данных через очередь, зачем?) Буфер лежит себе, никого не трогает, только указатели перекидывай.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Глобальные переменные во FreeRTOS, стоит ли использовать?
СообщениеДобавлено: 01 сен 2020, 15:21 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 718
Откуда: Германия
Ну так очереди разные бывают. Бывают и на один элемент. А если данные забираются раз в сутки, то их придется где-то хранить - в очереди, например.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Глобальные переменные во FreeRTOS, стоит ли использовать?
СообщениеДобавлено: 01 сен 2020, 16:51 
Старожил
Аватара пользователя

Зарегистрирован: 28 сен 2012, 22:11
Сообщения: 409
Откуда: г. Ростов-на-Дону
Pingvin писал(а):
В FreeRTOS ничего "хитрее" не делается.
"Хитрее" делается в C++

А как там делается хитрее? =)

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

_________________
Количество полученного опыта прямо пропорционально выведенному из строя оборудованию....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Глобальные переменные во FreeRTOS, стоит ли использовать?
СообщениеДобавлено: 02 сен 2020, 16:37 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2640
Есть стандартная библиотека шаблонов - STL.
Там есть контейнеры на любой вкус.



Show Я уже тут приводил пример, как хранил радиопакеты в таких контейнерах.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу Пред.  1, 2


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB