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

 
 
> TNKernel IAR ARM Plugin
Nixon
сообщение Feb 24 2012, 15:39
Сообщение #1


Гуру
******

Группа: Админы
Сообщений: 2 736
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48



По мотивам примера из С-Spy SDK (спасибо Ксении за него) начал я писать плагин для отладки приложений с TNKernel (пока только для ARM). На данным момент реализовано только обзор задач и их состояния. По примеру сделанного будет писаться и остальное (event, mutex и т.д.).

В общем если будут пожелания и рекомендации - пишите.

P.S. TNKernel я чуток модифицировал (добавил имена для всех системных объектов - удобнее, например, видеть имя задачи, а не адрес ее функции в списке задач), но по идее плагин будет работать и на чистой авторской RTOS.

P.S.S. Архив распаковывать в \IAR Systems\Embedded Workbench 6.0\arm\plugins\rtos\



--------------------
Вам помочь или не мешать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Nixon
сообщение Mar 2 2012, 14:12
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 2 736
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48



IAR 6.xx TNKernel RTOS (ARM) Plugin 1.0a

Поддерживает TNKernel 2.6 для ARM и Cortex. TNKernel используется в авторском варианте со следующим изменением:
- в файле tn_port.h значение #define TN_FILL_STACK_VAL замененен с 0xFFFFFFFF на 0xDEADBEEF (для точного расчета % расхода стека)

Плагин отображает следующие объекты TNKernel их параметры:
task - имя TN_TCB задачи, приоритет, состояние, причина ожидания, объект ожидания, начало стека, конец стека, размер стека, текущее положение стека, % максимального использования стека, % текущего использования стека
mutex - имя TN_MUTEX мьютекса, тип, приоритет (для Ceiling), счетчик, захватившая задача
semaphore - имя TN_SEM семафора, счетчик, макс. значение счетчика, список задач ожидания
event - имя TN_EVENT события, тип, текущий паттерн, список задач ожидания
queue - имя TN_DQUE очереди, адрес массива, размер массива, голова, хвост, список задач ожидания записи, список задач ожидания чтения
memory pool - имя TN_FMP пула памяти, адрес пула, размер блока, кол-во блоков в пуле, кол-во свободных блоков, список задач ожидания

Кроме указанных выше нужных изменений в TNKernel (хотя если их не сделать, то будет неправильно показан только % максимального использования стека задачи) в моем варианте TNKernel все системные объекты RTOS имеют текстовые имена и добавлены функции присвоения этих имен. Это несколько визуализирует отладку TNKernel.
Данная возможность определяется через #define DEBUG_USENAME.
например так
Код
/----- Semaphore -----
typedef struct _TN_SEM
{
   CDLL_QUEUE  wait_queue;
   int count;
   int max_count;
   int id_sem;     //-- ID for verification(is it a semaphore or another object?)
                         // All semaphores have the same id_sem magic number (ver 2.x)
#ifdef DEBUG_USENAME
   char *name;                                //-- Semaphore name
#endif
в tn.h и
Код
//----------------------------------------------------------------------------
#ifdef DEBUG_USENAME
int tn_sem_set_name(TN_SEM * sem, char * str)
{
#if TN_CHECK_PARAM
    if(sem == NULL) return TERR_WRONG_PARAM;
#endif
    sem->name = str;

  return TERR_NO_ERR;
}
#endif
в tn_sem.c. И так для всех объектов TNKernel. В общем кому надо - сделает сам.

По сути данный плагин подходит для любых процессоров, у которых размеры системных объектов совпадают с размерами таковых для ARM, но при необходимости можно переделать его под любой порт TNKernel.


Прикрепленные файлы
Прикрепленный файл  TNKernel.rar ( 130.2 килобайт ) Кол-во скачиваний: 112
 


--------------------
Вам помочь или не мешать?
Go to the top of the page
 
+Quote Post
megajohn
сообщение Jul 25 2012, 12:21
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(Nixon @ Mar 2 2012, 18:12) *
IAR 6.xx TNKernel RTOS (ARM) Plugin 1.0a


благодарствую, стало легче =)

Кто не в кусе, выкладываю скриншот что в итоге получается
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
megajohn
сообщение Oct 9 2012, 14:29
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



после удаления задачи, вызов окна TNkernel->Task list производит зависание IAR

или я не правильно удаляю smile3046.gif


#define TASK_DELETE(name)\
{ if( name.task_state != TSK_STATE_DORMANT ) task_set_dormant_state( &name );\
int ret = tn_task_delete(&name);\
ASSERT( ret == TERR_NO_ERR ); }



--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 19:24
Рейтинг@Mail.ru


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