RTX5. Технические данные

Поддерживаемые инструменты (Toolchains)

Keil RTX5 разработан и протестирован с использованием общепринятых инструментов и сред разработки.

ARM компилятор (Arm/Keil MDK, uVision5)

Основные части кода RTX5 разрабатываются и оптимизируются с использованием ARM компилятора и Arm/Keil MDK. Текущая версия протестирована со следующими версиями:

  • Arm Compiler 5.06 обновление 6
  • Arm Compiler 6.6.2 (долгосрочное обслуживание)
  • Arm Compiler 6.9
  • Отладка с поддержкой RTOS с помощью uVision 5.24

IAR Embedded Workbench

RTX5 был портирован, чтобы полностью поддерживать IAR Embedded Workbench. Следующие релизы работают с RTX5:

  • IAR Embedded Workbench 7.7 (community report)
  • IAR Embedded Workbench 7.80.4
  • IAR Embedded Workbench 8.20.1

GNU Compiler Collection

RTX5 так же был портирован для поддержки GCC, поддерживается на основе вклада сообщества. В настоящее время активная разработка тестируется с помощью:

  • GNU Tools for Arm Embedded 6.3.1 20170620

Размеры блока управления

Определения специфичных блоков управления Keil RTX5 (включая размеры), а также требования к памяти и требования к памяти очереди сообщений определены в файле заголовка RTX5:

/// Размеры блоков управления
#define osRtxThreadCbSize sizeof(osRtxThread_t)
#define osRtxTimerCbSize sizeof(osRtxTimer_t)
#define osRtxEventFlagsCbSize sizeof(osRtxEventFlags_t)
#define osRtxMutexCbSize sizeof(osRtxMutex_t)
#define osRtxSemaphoreCbSize sizeof(osRtxSemaphore_t)
#define osRtxMemoryPoolCbSize sizeof(osRtxMemoryPool_t)
#define osRtxMessageQueueCbSize sizeof(osRtxMessageQueue_t)
/// Размер памяти в байтах для хранилища пула памяти.
/// \param block_count максимальное количество блоков памяти в пуле памяти.
/// \param block_size размер блока памяти в байтах.
#define osRtxMemoryPoolMemSize(block_count, block_size) \
(4*(block_count)*(((block_size)+3)/4))
/// Размер памяти в байтах для хранилища очереди сообщений.
/// \param msg_count максимальное количество сообщений в очереди.
/// \param msg_size максимальный размер сообщения в байтах.
#define osRtxMessageQueueMemSize(msg_count, msg_size) \
(4*(msg_count)*(3+(((msg_size)+3)/4)))

Если вы используете глобальный пул памяти для выделения памяти для объектов RTOS, вам необходимо знать размер, необходимый для каждого объекта в случае ошибок. В настоящее время размеры блока управления следующие (могут быть изменены без уведомления):

Тип Размер блока управления в байтах
Поток 68
Таймер 32
Флаг событий 16
Мьютекс 28
Семафор 16
Пул памяти 36
Очередь сообщений 52

Размер памяти, который требуется для хранения пула памяти и хранения данных в очереди сообщений, может быть определен из макросов, указанных выше.

Оставить ответ