Jump to content

    

CMSIS-RTOS RTX

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

osThreadDef(LightBlue, osPriorityNormal, 1, 0);

работает.

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

osThreadDef(LightBlue, osPriorityNormal, 1, 200);

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

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

Share this post


Link to post
Share on other sites

И точно. Только править нужно, оказывается, не 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:

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites
А что за ОС такая появилась "CMSIS-RTOS RTX"

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

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

 

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

post-11606-1381493287_thumb.png

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

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

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

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

 

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

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

post-11606-1381495828_thumb.png

Share this post


Link to post
Share on other sites
Кстати у вас Event Viewer нормально работает?

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

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

Share this post


Link to post
Share on other sites
Если в задаче внутри функции создается массив, то куда он денется при переключении задачи?

...

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

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

Share this post


Link to post
Share on other sites
В природе существует документация на CMSIS-RTOS RTX на русском?

 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this