Например TDA7294

Форум РадиоКот • Просмотр темы - FreeRTOS CVAVR вопросы начинающего
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Чт дек 18, 2025 18:55:04

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: FreeRTOS CVAVR вопросы начинающего
СообщениеДобавлено: Ср ноя 09, 2016 10:53:30 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
Привет всем!
Решил тут морально подрости и заюзать серьёзную ось.

Входящие данные - Atmega128 + 32k ExtSRAM + 240x128 GLCD t6963c

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

Взял порт с сайта кодевижна. Рассмотрел примеры и уже вечером получилось выводить на экран через бинарные мутексы столбики строк, графику и текстовую инфу о процессах.

Первая проблема - по ходу недопортированы функции мониторинга - нету вообще функции vTaskGetRunTimeStats
Попытка из общих исходников её туда перенести показала что портировали долго и упорно - ни один тип данных ни одна переменная и ни одна функция не совпадает...Тоесть состояние и размер свободного стека по забачам я могу посмотреть а процент загрузки процессора нет. Ну да ладно.

Вторая проблема - Моя версия этой операционки никогда не попадает в vApplicationIdleHook - я туда поставил счетчик и вот в нем всегда нуль.

Дальше - задолбался ловить глюки с переполнением стека. Памяти попой жуй а грабли эти постоянно ловлю.
Решил прописать
Код:
#define configCHECK_FOR_STACK_OVERFLOW  1


Это привело к появлению в теле Tasks.c макроса
Код:
taskFIRST_CHECK_FOR_STACK_OVERFLOW();

Который превращается в
Код:
/* Only the current stack state is to be checked. */
   #define taskFIRST_CHECK_FOR_STACK_OVERFLOW()                                          \
   {                                                                           \
   extern void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed portCHAR *pcTaskName );      \
                                                                              \
      /* Is the currently saved stack pointer within the stack limit? */                        \
      if( pxCurrentTCB->pxTopOfStack >= pxCurrentTCB->pxEndOfStack )                           \
      {                                                                        \
         vApplicationStackOverflowHook( ( xTaskHandle ) pxCurrentTCB, pxCurrentTCB->pcTaskName );   \
      }                                                                        \
   }


вот такого кода. Как я понимаю прототип функции должен быть
Код:
void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed portCHAR *pcTaskName )

Именно таким. Копирую его в главный файл где void main просто в конце листинга
Код:
void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed portCHAR *pcTaskName )
{
   
}

и компилер упорно орет
Код:
Error: \14\1.c(376): function parameter #1 doesn't match its previous declaration from file: '\14\FreeRTOS\tasks.c', line: 1411


Линия 1411 это taskFIRST_CHECK_FOR_STACK_OVERFLOW();

Что за борода?компилятор CVAVR 3.12 adv

Так то оно впринципе работает но хочется моргать светиком когда стек переполняется и в уарте ловить по какой задаче чтоб ей увеличить стек.

Вторая проблема - сколько должен быть параметр DataStackSize в свойствах проекта?
Пару раз словился на том что размер этого стека 1000 байт, компилятор предсказал использование стека в 130 байт а 5-ю задачу я создать не могу - вылетает в ребут проц! увеличил до 3к и заработало ...но чтото это как-то дофига... мне ещё огромный массив ланных в оперативке хранить и перелопачивать а 10к памяти как сдуло

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FreeRTOS CVAVR вопросы начинающего
СообщениеДобавлено: Ср ноя 09, 2016 23:03:09 
Нашел транзистор. Понюхал.

Карма: 1
Рейтинг сообщений: 25
Зарегистрирован: Пт сен 21, 2007 17:53:23
Сообщений: 190
Откуда: Зарайск
Рейтинг сообщения: 0
- если разговор про FREERTOS то насколько помню она изначально под GCC
и лучше юзать его и порт под него
- чтоб были попадания в vApplicationIdleHook нужно vTaskSleep во всех потоках пользовать
- при старте процесса задается размер стека - попробовать увельчить его
и была проблема при попытке использовать выделение память с помощью malloc
пришлось возвращаться к статическому выделению


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: AQ29 и гости: 23


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y