Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: А кто нибудь для STM32F100 портировал?
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > FreeRTOS
kan35
В общем, может быть кто то собрал рабочий шаблон на 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

В общем... куда копать - не понимаю пока...
kan35
ну вроде замигали светодиоды..
Если нужен шаблон проекта - обращайтесь.
А вот теперь такой вопрос:
Разработчики определили стек как 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к - мне шиковать нечем...
kan35
В общем точно - минимум 128 32-битных слов (512 байт) для задачи по-умолчанию.. Почему так много, как проконтроллировать заполнение стека?..
klen
Цитата(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
второй - функция позволяющая смотреть верхнюю планку использования стека, позволяет полсе прогона всех ситуация оценить сколько максимум стека требуется задаче.
третье - обработчик ситуации при которой задача вылезла из своего стека , в этом месте можно увидеть кто глюканул и как это произошло, по результатам анализа принять решения что делать.
Losha
Цитата(kan35 @ Nov 26 2010, 13:55) *
ну вроде замигали светодиоды..
Если нужен шаблон проекта - обращайтесь.

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

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

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

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


2 klen
к сожалению, потерял пароль к ftp. Устойчиво помню, что мне давали доступ, но было это года 4 назад и активно я им не пользовался. Как восстановить пароль?
Спасибо за ответ!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.