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

CMSIS-RTOS RTX

Пока использую стандартного размера стек

osThreadDef(LightBlue, osPriorityNormal, 1, 0);

работает.

Как только пытаюсь задать свой размер (любой)

osThreadDef(LightBlue, osPriorityNormal, 1, 200);

задача не создается.

Или там в Кейле еще нужно что-то править-объяснять?

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


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

И точно. Только править нужно, оказывается, не Number of threads with user-provided stack size, который можно оставить и 0, а Total stack size [bytes] for threads with user-provided stack size, который должен быть равен (не меньше) суммарному размеру использумого нестандартного стека. В файле RTX_Conf_CM.c, естественно.

О так, яволь! :laughing:

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


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

Сколько стека выделить задаче? Как увидеть в отладчике Keil, хватило, не хватило, лишний?

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


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

В 4 кейле было Debug->Os support и что-то там дальше...

Показывал в процентах текущий используемый объем стека по каждой задаче.

А что за ОС такая появилась "CMSIS-RTOS RTX"

Старой RTX больше нет? У вас задачи объявляются совсем не так как было раньше.

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


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

А что за ОС такая появилась "CMSIS-RTOS RTX"

Старой RTX больше нет? У вас задачи объявляются совсем не так как было раньше.

Это надстройка над старой RTX. Наверное, можно и без нее.

 

Если в задаче внутри функции создается массив, то куда он денется при переключении задачи?

Похоже, из-за этого у меня вылетает в ошибку ОС.

Как быть? Сделать массив глобальным?

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


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

Про CMSIS-RTOS я вообще был не в теме.

Вот попробовал в 5 келей запустить пример на STM32 дисковери.

Размер используемого стека показывает.

post-11606-1381493287_thumb.png

Все локальные переменные складываются в стек.

И по поводу делать большие массивы глобальными или локальными у меня тоже устоявшегося мнения.

Глобальные переменные принято считать злом.

На складывание в стек локальных уходит время.

 

Кстати у вас Event Viewer нормально работает?

У меня через несколько секунд (иногда минут) такая ерунда выскакивает.

post-11606-1381495828_thumb.png

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


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

Кстати у вас Event Viewer нормально работает?

У меня через несколько секунд (иногда минут) такая ерунда выскакивает.

У меня выскакивает такое, когда шевелю USB разъем на Discovery, через ST-LINK2 которой отлаживаюсь.

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


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

Если в задаче внутри функции создается массив, то куда он денется при переключении задачи?

...

Как быть? Сделать массив глобальным?

Правильнее сделать его статическим. Работает.

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


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

В природе существует документация на CMSIS-RTOS RTX на русском?

 

На русском пока нет, хотя тут есть пара энтузистов, который взялись писать статьи не только по CMSIS-RTOS RTX но и по HAL вообще. Не знаю во что это выльется, лично я не вижу в этом смысла - на английском она вполне доходчивая.

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


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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...