Перейти к содержанию

    

Критерии совершенства в CubeMX?

А кто-нибудь использует у себя RTOS RTX5 от keil ?

Ведь она - одна из немногих RTOS, у которой системные вызовы реализованы исключительно через SVC.

В моих проектах она оказалась чуть шустрее freeRTOS и занимает немного меньше места.

И использует ли кто их библиотеки MDK-Middleware (USB, FileSystem, Network v6 в т.ч, GUI ...)?

 

По поводу ассертов:

у себя используют встроенные в c++11 static_assert,

а в рантайме - RTT от сеггер (терминал через порт оладчика), исходники лежат в папке сеггера (Program Files ххх\SEGGER\JLink_V640\Samples\RTT\). Для связи достаточно лишь SWD/SWC (SWO не нужен).

Прикручиваются к любому проекту за пару минут. У меня получилось что-то типа того: 

 

#ifdef DEBUG
	#include "RTT\SEGGER_RTT.h"
	#define INFO(str) SEGGER_RTT_WriteString(0, str);
	#define MESSAGE(str) SEGGER_RTT_WriteString(1, str);
	#define WARNING(str) SEGGER_RTT_WriteString(2, str);
	#define ERROR(str) SEGGER_RTT_WriteString(3, str);
#else
	#define INFO(str)
	#define MESSAGE(str)
	#define WARNING(str)
	#define ERROR(str)
#endif

Есть у них даже самописный printf - SEGGER_RTT_printf, увы, не поддерживает float/double.

 

Сама утилита летит там же - в папке с дровами jlink: JLinkRTT***.exe,

она ессно умеет коннектится к железке как standalone или к уже установленному каналу IDE<->JLINK, что в некоторых случаях бывает полезно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 hour ago, Forger said:

А кто-нибудь использует у себя RTOS RTX5 от keil ?

Ведь она - одна из немногих RTOS, у которой системные вызовы реализованы исключительно через SVC.
И использует ли кто их библиотеки MDK-Middleware (USB, FileSystem, Network v6 в т.ч, GUI ...)?

Ну я использую.
И уже много лет. А че спросить то хотели? 

Middleware у Keil в основнов закрытое.
В проекте mbed есть тоже самое и открытое и там же будет RTOS RTX.
Здесь я писал про особенности портирования mbed.

В RTX мало телеметрии и сильно ограниченное количество сервисов у RTOS.
Эт система начального уровня. 
На mbed я потоптался и вернулся на MQX.
Всеж  middleware и сервисы на MQX по прежнему вне конкуренции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 minutes ago, AlexandrY said:

вернулся на MQX.

Кстати, а вы не пробовали её портировать на другие МК, вроде она ж только для кинетисов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 minutes ago, AlexandrY said:

Middleware у Keil в основнов закрытое.

Если покупать за деньги, то открытое )) Но цены там немалые.

Я про впечатления от использования. Какие были и есть нарекания и вопросы к этому "набору"?

 

Quote

В RTX мало телеметрии и сильно ограниченное количество сервисов у RTOS.

Она идет в исходниках изначальное, при покупке keil. Переделать - не проблема, только надо ли?

Вот лично мне по сервисам вполне хватает лишь задач, семафоров и мьютексов, а более "толстые" сервисы ОС реализую уже сам через те самые семафоры и мьютексы, т.е. некая надстройка над ОС, она тоже идет как некая библиотека.

Надоест, переделаю под себя (выпилив лишнее) или заменю на другое ))

 

Но не суть, меня больше интересуют отзывы по Keil Middleware ))

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я Keil-овскую RTOS использую. Нравится простотой, но не нравится, что закрытая.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 hour ago, ViKo said:

но не нравится, что закрытая.

Неправда - исходники доступны там же - в папке с Keil: \ARM\PACK\ARM\CMSIS\x.x.x\CMSIS\RTOS2\RTX\Source\

 

но по мне она сложнова-то устроена, многое по-моему можно смело выпиливать, под себя. Но тогда это будет уже другая ось... 

Благо, компиляторы/линкеры нынче умные и неиспользуемые функции тупо не попадают в прошивку, хоть что-то ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 hours ago, haker_fox said:

Кстати, а вы не пробовали её портировать на другие МК, вроде она ж только для кинетисов?

Да, пришлось ее  хорошенько профильтровать от привязки к железу. И теперь могу в течении дня портировать на любой Cortex-M. 
Но эта RTOS подпольная, передается только по знакомству, т.е. через участие в сообществе.  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 hours ago, Forger said:

Неправда - исходники доступны там же - в папке с Keil: \ARM\PACK\ARM\CMSIS\x.x.x\CMSIS\RTOS2\RTX\Source\

 

но по мне она сложнова-то устроена, многое по-моему можно смело выпиливать, под себя. Но тогда это будет уже другая ось... 

Благо, компиляторы/линкеры нынче умные и неиспользуемые функции тупо не попадают в прошивку, хоть что-то ))

Ничесе "cложнова-то" . Она теперь идет как add-on для других более серьезных RTOS, как более простая альтернатива организации потоков.  
Например в Zephyr ее можно прилинковать и юзать там где CMSIS требует многозадачности. 
Мода идет к тому чтобы использовать но две оси, а то и больше осей одновременно даже на Cortex-M. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16 minutes ago, AlexandrY said:

Ничесе "cложнова-то" . 

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

Например, если в проект требуется включать ее исходники, то возникает оверхед по занимаемому ОЗУ для каждого сервиса. Этого нет в той же freeRTOS (из-за некоторой монструзности я отказался от нее).

Мне очень не нравится, что нет возможности полностью отключить функционал для поддержания куч для сервисов, т.е. статическое (ручное) создание объектов.

Как-нибудь дойдут руки и выпилю нафик из RTX весь этот "мусор", оставив конечно кросс-платформенность хотя бы под cortex-m. Заодно сразу встрою туда функционал SystemView (сеггер) для версии DEBUG.

Очень уж приглянулась схема вызова любых сервисов исключительно через SVC, т. е. в точности как "велела партия" (ARM).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 minutes ago, Forger said:

Например, если в проект требуется включать ее исходники, то возникает оверхед по занимаемому ОЗУ для каждого сервиса.

Не понял проблему с исходниками, я всегда компилил только с исходниками, но кто реально обеспокоен оверхедом ОЗУ использует автоматы Миро Самека потому как самый большой оверхед в вытесняющих RTOS из-за  избыточности стека.
А RTX конфигурируется в файле RTX_Config.h, там можно хоть все поотключать. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
21 minutes ago, AlexandrY said:

Не понял проблему с исходниками, 

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

В частности: "osRtxConfig" и "osRtxInfo" содержат кучу ненужных мне полей, в каждом сервисе есть поле "name", которое я лично в релизной версии не использую....

Если бы они там были добавлены хотя бы через #if/def, то претензий у меня не было бы вообще к ней.

 

Quote

я всегда компилил только с исходниками

Аналогично

 

Quote

А RTX конфигурируется в файле RTX_Config.h, там можно хоть все поотключать. 

Знаю, это все понятно.

 

Для нормальных МК пофиг, можно закрыть глаза не такие "мелочи".

Но для маленьких МК (мало флэши/озу) все равно многова-то сжирает.

В частности, нет раздельно версий что-то типа debug/release, где в одной куча доп. информации, а в другой ее просто нет. 

Конечно, для кого-то это мелочи, но тем не менее, это есть и мне лично это не нравится, хочу переделать, но как-то влом )) Пользую как есть.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 hours ago, Forger said:

В частности: "osRtxConfig" и "osRtxInfo" содержат кучу ненужных мне полей, в каждом сервисе есть поле "name", которое я лично в релизной версии не использую....

Что-то ваша логика не последовательна.
С одной стороны хотите применить middleware от Keil куда входят файловый системы и TCP стек с бесконтрольным использованием ОЗУ c другой стороны хотите экономить на именах объектов, без которых будет довольно затруднительно отлаживать RTOS.
Если не нравиться топором забивать гвозди,  то стоит поменять его на молоток, а не стачивать лезвие у топора.
Поэтому рекомендовал бы   QP™ Real-Time Frameworks с встроенной минималистичной RTOS. Вот уж где не найдете ничего лишнего. :ok:
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
14 hours ago, AlexandrY said:

Но эта RTOS подпольная, передается только по знакомству, т.е. через участие в сообществе. 

Да, я заметил, что просто так её скачать нельзя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 hours ago, AlexandrY said:

Что-то ваша логика не последовательна.

Я уже пояснял, что использую эту ОСь и в маленьких проектах на небольших камнях в том числе, а там нет толстых сторонних стеков.

Поэтому мне нужна ось без лишней "ботвы", или хотя бы в возможностью сборки таковой (через банальные if/def). А прыгать с одной оси на другую - крайний случай. Но, если придется, именно так и сделаю.

А пока, изучая код RTX, наткнулся на этот ... оверхед.

 

Quote

 middleware от Keil куда входят файловый системы и TCP стек с бесконтрольным использованием ОЗУ

А вот тут, пожалуйста, по-подробнее! Поделитесь опытом, если не затруднит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 hours ago, AlexandrY said:

Поэтому рекомендовал бы   QP™ Real-Time Frameworks с встроенной минималистичной RTOS. Вот уж где не найдете ничего лишнего. :ok:

Спасибо. Посмотрел. Честно пытался вкурить (начал конечно же с примеров).

Короче, по-мне  - это типичный образец проявления хронического мазохизма авторов :crazy:

Если уж выбирать, то мне проще как вы выражаетесь "стачивать лезвие у топора", чем разбираться и пытаться применить это ... 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти