Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: RTOS для MSP430
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
arhiv6
Добрый день. Хочу попробовать использовать RTOS в своих проектах. На какую стоит обратить внимание для изучения? Есть старая тема, где советуют scmRTOS. Почитал описание, понравилась. Но, к сожалению, для новых МК (ядро MSP430X) есть порт только для IAR, а я использую gcc. Что в таком случае попробовать для изучения?
dxp
QUOTE (arhiv6 @ Oct 29 2015, 03:42) *
Добрый день. Хочу попробовать использовать RTOS в своих проектах. На какую стоит обратить внимание для изучения? Есть старая тема, где советуют scmRTOS. Почитал описание, понравилась. Но, к сожалению, для новых МК (ядро MSP430X) есть порт только для IAR, а я использую gcc. Что в таком случае попробовать для изучения?

Портируйте для gcc. Взять вариант от 430 и добавить то, чего не хватает (по аналогии с iar), там они только контекстом отличаются, насколько помню.
slavokhire5
Цитата(arhiv6 @ Oct 29 2015, 00:42) *
Добрый день. Хочу попробовать использовать RTOS в своих проектах. На какую стоит обратить внимание для изучения? Есть старая тема, где советуют scmRTOS. Почитал описание, понравилась. Но, к сожалению, для новых МК (ядро MSP430X) есть порт только для IAR, а я использую gcc. Что в таком случае попробовать для изучения?


а в сторону FreeRTOS не смотрели? вроде бы в списке поддерживаемых МК на ядре MSP430X есть, есть примеры для IAR и для CCS, а CCS, если я не ошибаюсь, на gcc работает
http://www.freertos.org/a00090.html#TI
yuri_t
Рекомендую "родную" SYS/BIOS от TI.
Работает надежно (использую bios_6_37_00_20 & xdctools_3_25_04_88, MCU MSP430F5359).

Недостатки

- Генерация ОС из скриптов ( надо скачивать и использовать XDC Tools)
- Нет нормальных исходных кодов.
k155la3
Самое простое и компактное - scmRTOS. Сделано на С++ / ООП, шаблоны. Поддержки дебаггера в IAR для нее нет.
Есть некоторая непонятка с настройками моделей памяти (IMHO) и "переключателем" контекста (IMHO)

Далее следует freeRTOS. Поддержка IAR-debug есть. Чистый С. В настройке сложнее и менее-читабельна чем scmRTOS.
Более емкая по RAM чем scmRTOS.
Контекст переключается с соотв-ии с моделью памяти. С документацией не густо. Есть ряд статей Курница. Хорошо расписано.
Для MSP430 в ней есть порт / пример для MSP430F5438 - из этого и надо исходить.

zltigo
QUOTE (k155la3 @ Oct 29 2015, 16:30) *
Более емкая по RAM чем scmRTOS.

По размеру RAM у FreeRTOS издревле было две глупости - для задач и очередей выделялось по два блока памяти и соответственно лишние расходы на блоки контроля памяти. Недавно заглянул в исходники - в какой-то момент глупость с отдельными блоками на стека и TCB убрали, но для очередей оставили. В остальном явным перересходам памяти взяться некоткуда -
размеры стека, сохраняеемого контекста, размеры очередей по любому основные потребители памяти и не зависят от операционки. Отличия в размерах TCB это уже не принципиально, да и их можно поджимать во FreeRTOS.
dxp
QUOTE (k155la3 @ Oct 29 2015, 19:30) *
Есть некоторая непонятка с настройками моделей памяти (IMHO) и "переключателем" контекста (IMHO)

Что имеется в виду под непонятками (в обоих случаях)?
k155la3
Цитата(dxp @ Oct 30 2015, 09:14) *
Что имеется в виду под непонятками (в обоих случаях)?


1. Настройки моделей памяти
----
В док. явно не расписано, как должна быть настроена ОС для работы в различных моделях памяти IAR C компилятора.
Возможно это и не имеет значения.

2. "Переключатель" контекста
----
зависимость (настройка) режимов переключения от:
- модели памяти
- MSP430 / MSP430X


dxp
QUOTE (k155la3 @ Oct 30 2015, 16:13) *
1. Настройки моделей памяти
----
В док. явно не расписано, как должна быть настроена ОС для работы в различных моделях памяти IAR C компилятора.

Модель памяти к ос вообще отношения не имеет.

QUOTE (k155la3 @ Oct 30 2015, 16:13) *
2. "Переключатель" контекста
----
зависимость (настройка) режимов переключения от:
- модели памяти
- MSP430 / MSP430X

Переключение контекста, конечно, отличается, т.к. контексты там разные (у 430Х больше регистров со всеми вытекающими). А "непонятка"-то в чём?
k155la3
Цитата(dxp @ Oct 30 2015, 15:01) *
Модель памяти к ос вообще отношения не имеет.


(freeRTOS portmacro.h) В зависимости от модели разрядность стека
и соотв-но его размер разные. Если компилировать в SMALL, а контекст переключать
"по полной" для MSP430X, то половина выделенного под стек RAM будет гулять.

Код
. . . .
/* The stack type changes depending on the data model. */
#if( __DATA_MODEL__ == __DATA_MODEL_SMALL__ )
    #define portSTACK_TYPE uint16_t
#else
    #define portSTACK_TYPE uint32_t
#endif
. . . .



Цитата(dxp @ Oct 30 2015, 15:01) *
Переключение контекста, конечно, отличается, т.к. контексты там разные (у 430Х больше регистров со всеми вытекающими). А "непонятка"-то в чём?

Это было немного давно (с полгода). Поэтому могу быть неточен.
(появится время, я могу попробовать "восстановить стек")
Проект довольно большой, флеш MSP430F2618 занята около 80-90проц.
4 потока. После наращивания текста программы (безобидные вещи, работа меню)
ПО начало "валиться", что проявлялось в "авторесете" при входе в ранее работавшие (и не изменявшиеся) пункты (блоки кода) .
Начались танцы с бубном - размеры-контроль стеков, проверки размеров массивов,
комбинациии настроек компилятора во всех вариантах и позах.
Все это в "debug".
------------
Непонятка: Не нашел док по ньюансам настройки ОС под различные модели памяти и опции компилятора.
------------
Опятьже, не факт, что причина в ОС. Авторесет, думаю, может происходить по причине "влета" процессора в некорректный опкод.
А это уже компилятор-дебаггер.





Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.