реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> А кто нибудь для STM32F100 портировал?, что то не клеится
kan35
сообщение Nov 26 2010, 10:36
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



В общем, может быть кто то собрал рабочий шаблон на FREERTOS для STM32F10xx и крайне желательно с использованием стандартной периферийной библиотеки 3.x.x.
При запуске шедулера попадаю в HardFault_Handler, а именно после вызова SVC в
Код
vPortStartFirstTask
    /* Use the NVIC offset register to locate the stack. */
    ldr r0, =0xE000ED08
    ldr r0, [r0]
    ldr r0, [r0]
    /* Set the msp back to the start of the stack. */
    msr msp, r0
    /* Call SVC to start the first task. */
    svc 0

В общем... куда копать - не понимаю пока...
Go to the top of the page
 
+Quote Post
kan35
сообщение Nov 26 2010, 11:55
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



ну вроде замигали светодиоды..
Если нужен шаблон проекта - обращайтесь.
А вот теперь такой вопрос:
Разработчики определили стек как 128,
Код
...
#define configMINIMAL_STACK_SIZE    ( ( unsigned short ) 128 )
...

это получается, что 128 - это в чем? для STM32 в 32 битных словах? А то что то каждая задачка отъедает кучу памяти почему-то, хотя стеки для них определены как configMINIMAL_STACK_SIZE+50 всего лишь.

И количество в куче определяют
Код
...
#define configTOTAL_HEAP_SIZE        ( ( size_t ) ( 3*1024 ) )
...

кратно 1024 (зачем?)

У меня 4к - мне шиковать нечем...
Go to the top of the page
 
+Quote Post
kan35
сообщение Nov 26 2010, 14:24
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



В общем точно - минимум 128 32-битных слов (512 байт) для задачи по-умолчанию.. Почему так много, как проконтроллировать заполнение стека?..
Go to the top of the page
 
+Quote Post
klen
сообщение Nov 30 2010, 11:04
Сообщение #4


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(kan35 @ Nov 26 2010, 17:24) *
В общем точно - минимум 128 32-битных слов (512 байт) для задачи по-умолчанию.. Почему так много, как проконтроллировать заполнение стека?..


1. на фтп сервера есть документ ''USING THE FREERTOS REAL TIME KERNEL"
2. в отношении стеков задач :
....usStackDepth....
....The value specifies the number of words the stack can hold, not the number of
bytes
. For example, if the stack is 32 bits wide and usStackDepth is passed in as
100, then 400 bytes of stack space will be allocated (100 * 4bytes). The stack
depth multiplied by the stack width must not exceed the maximum value that can
be contained in a variable of type size_t......

2. uxTaskGetStackHighWaterMark()
3. vApplicationStackOverflowHook( xTaskHandle *pxTask, signed portCHAR *pcTaskName )

первй пункт говорит что при создании задачи указывается глубина стека в словах, в нашем случае это 4*n
второй - функция позволяющая смотреть верхнюю планку использования стека, позволяет полсе прогона всех ситуация оценить сколько максимум стека требуется задаче.
третье - обработчик ситуации при которой задача вылезла из своего стека , в этом месте можно увидеть кто глюканул и как это произошло, по результатам анализа принять решения что делать.
Go to the top of the page
 
+Quote Post
Losha
сообщение Dec 11 2010, 20:04
Сообщение #5





Группа: Новичок
Сообщений: 3
Регистрация: 4-11-08
Пользователь №: 41 369



Цитата(kan35 @ Nov 26 2010, 13:55) *
ну вроде замигали светодиоды..
Если нужен шаблон проекта - обращайтесь.

Столкнулся с такой же проблемой. У меня тоже после запуска шедулера вылетает в HardFault. Подскажите, пожалуйста, как удалось решить проблему. Шаблон был бы весьма кстати.
Go to the top of the page
 
+Quote Post
kan35
сообщение Dec 16 2010, 02:32
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Цитата(Losha @ Dec 12 2010, 02:04) *
Столкнулся с такой же проблемой. У меня тоже после запуска шедулера вылетает в HardFault. Подскажите, пожалуйста, как удалось решить проблему. Шаблон был бы весьма кстати.

FREERTOS_STM32F100_EXAMPLE_IAR552.rar
В этом проекте немного есть моего кода, будет понятно как его убрать, а мне - лень. Проект компилится как на С так и на С++, что меня очень радует:-).

В общем, проблема была в основном с корректной установкой прерываний. Асемблерные вставки это и есть прерывания, а я их вызывал из стандартных обработчиков, это по непониманию я делал...
Для поддержки С++ надо еще кое какие переопределения было сделать и обработчики прерываний объявить как <<extern "C">> иначе они не монтировались в С++ компиляции.

Если найдете ошибку или какую проблему - прошу сообщить smile3046.gif сюда


2 klen
к сожалению, потерял пароль к ftp. Устойчиво помню, что мне давали доступ, но было это года 4 назад и активно я им не пользовался. Как восстановить пароль?
Спасибо за ответ!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 14:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01411 секунд с 7
ELECTRONIX ©2004-2016