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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> TNKernel будет ли порт для cortex m4 ?
kosyak©
сообщение Jan 21 2014, 17:20
Сообщение #31


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966



VslavX, а почему в Вашем порте пропала необходимость в функции tn_int_exit() (заменена пустым макросом)?
Как оно теперь работает?
Go to the top of the page
 
+Quote Post
remi700
сообщение Jan 30 2014, 17:36
Сообщение #32





Группа: Новичок
Сообщений: 4
Регистрация: 22-09-13
Пользователь №: 78 436



Здравствуйте!
Из документации непонятно, можно ли при добавлении TNKernel в свой проект добавить tn_arm_disable_interrupts() и tn_arm_enable_interrupts() в уже имеющийся startup_stm32f4xx.s и вызывать tn_tick_int_processing() из обработчика SysTick_Handler() в stm32f4xx_it.c или обязательно заменить его на startup_hardware_init.s из комплекта TNKernel как в примере. Получается очень много исправлений по сравнению с тем что приходится делать например для FreeRTOS (только дописать __weak__ к обработчику SysTick), это нормально или делаю лишнее по незнанию (начал работать с ARM недавно, использовал шаблоны из CMSIS/SPL и FreeRTOS)?
Go to the top of the page
 
+Quote Post
Almaz_emb
сообщение Jul 16 2014, 05:10
Сообщение #33





Группа: Новичок
Сообщений: 4
Регистрация: 9-09-13
Пользователь №: 78 231



Доброго времени суток)
Безуспешно пытаюсь запустить TNKernel на STM32F401VC из Keil.
Порт для Cortex-M4 конфликтует с CMSIS core:
Код
.\TNKernelF4\CortexM4F/tn_port_cm4f.h(166): error:  #247: function "__get_PRIMASK" has already been defined
  __get_PRIMASK(void)
.\TNKernelF4\CortexM4F/tn_port_cm4f.h(179): error:  #247: function "__set_PRIMASK" has already been defined
  __set_PRIMASK(unsigned long mask)

А порт для Cortex-M3 (как я понял из топика вполне работоспособен на Cortex-M4 ) падает в hardfault-handler:
Код
#include <al_discovery_led.h>
#include <tn.h>


//----------- Tasks ----------------------------------------------------------

#define  TASK_0_PRIORITY 7
#define  TASK_0_STK_SIZE 128
align_attr_start unsigned int task_0_stack[TASK_0_STK_SIZE] align_attr_end;
TN_TCB  task_0;
void task_0_func(void);

//----------------------------------------------------------------------------

#define VECTACTIVE  (0x000001FF)
#define rNVIC_ICSR  (*((__IO unsigned int*)0xE000ED04))

void tn_cpu_int_enable()
{
   tn_arm_enable_interrupts();
}

//----------------------------------------------------------------------------
int tn_inside_int(void)
{
   if(rNVIC_ICSR & VECTACTIVE)
      return 1;
   return 0;
}


int main( void )
{
//    tn_arm_disable_interrupts();
    al_discovery_LED_init();
    tn_start_system();
    while(1)
    {
    }
}

void tn_app_init ()
{

   task_0.id_task = 0;
   tn_task_create(&task_0,               //-- task TCB
                 task_0_func,            //-- task function
                 TASK_0_PRIORITY,        //-- task priority
                 &(task_0_stack          //-- task stack first addr in memory
                    [TASK_0_STK_SIZE-1]),
                 TASK_0_STK_SIZE,        //-- task stack size (in int,not bytes)
                 NULL,                          //-- task function parameter
                 TN_TASK_START_ON_CREATION      //-- Creation option
                 );
}

//----------------------------------------------------------------------------
void task_0_func (void)
{
   for(;;)
   {
    al_discovery_LED_on(BLUE);
    tn_task_sleep(128);
   }
}

Поделитесь пожалуйста простейшим проектом под Keil)
Go to the top of the page
 
+Quote Post
Almaz_emb
сообщение Jul 16 2014, 21:22
Сообщение #34





Группа: Новичок
Сообщений: 4
Регистрация: 9-09-13
Пользователь №: 78 231



Продолжаю мудохаться.
Запустил порт для CortexM4 так, чтобы компилятор не ругался. Проект в прикрепленном файле.
Одна задача, которая зажигает светодиод. Падает в hardFault. Прошелся дебагером - проблемное место - функция tn_start_exe() ( достигается конец функции: строчка
Код
                b       .                               // Never reach this

Прикрепленные файлы
Прикрепленный файл  tnkernel.rar ( 657.92 килобайт ) Кол-во скачиваний: 23
 
Go to the top of the page
 
+Quote Post
VslavX
сообщение Jul 19 2014, 20:10
Сообщение #35


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(Almaz_emb @ Jul 17 2014, 00:22) *
Одна задача, которая зажигает светодиод. Падает в hardFault. Прошелся дебагером - проблемное место - функция tn_start_exe() ( достигается конец функции: строчка
Код
                b       .                               // Never reach this

А какой у Вас PendSV_Handler() работает? Судя по всему из файла startup_stm32f401xx.s, а должен бы из tn_port_cm4f_asm.s. Ну и для нормальной работы TN нужен системный таймер, функция tn_tick_int_processing() должна периодически вызываться из прерывания системного таймера.
Go to the top of the page
 
+Quote Post
kosyak©
сообщение Sep 11 2014, 15:13
Сообщение #36


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966



Пробую запустить порт CortexM4F в своем проекте.
При TN_SUPPORT_FPU = 0 и TN_SUPPORT_FPU = 1 работает без проблем.
А при TN_SUPPORT_FPU = 2 падает в HardFault при первой же встреченной команде работы с FPU.
Компилятор IAR 7202. В чем может бть проблема?
Go to the top of the page
 
+Quote Post
prgjz
сообщение Oct 9 2014, 12:19
Сообщение #37


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 3-01-07
Из: Germany
Пользователь №: 24 071



Кто нибудь добился успеха с TN_SUPPORT_FPU?
Прграмма с TN_SUPPORT_FPU > 0 ведёт себя как ревнивая женщина (LPC4088).
Неужели нет альтернативы FreeRTOS?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 9 2014, 14:54
Сообщение #38


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(prgjz @ Oct 9 2014, 18:19) *
Неужели нет альтернативы FreeRTOS?

scmRTOS?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
prgjz
сообщение Oct 9 2014, 16:50
Сообщение #39


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 3-01-07
Из: Germany
Пользователь №: 24 071



Да, мне нравится она!
Использую в старых проектах.
Перешёл на TNKernel в частности из-за tn_net.

Go to the top of the page
 
+Quote Post
prgjz
сообщение Oct 10 2014, 16:34
Сообщение #40


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 3-01-07
Из: Germany
Пользователь №: 24 071



упс... минимальный стек больше при FPU.
Заработало но результат как и у kosyak©:
При TN_SUPPORT_FPU = 0 и TN_SUPPORT_FPU = 1 работает без проблем.
А вот при TN_SUPPORT_FPU = 2 падает в HardFault на инструкции VMOV S0,R0.
R0 = 0x320. Уже день пробился безрезультатно.
Меня собственно устраивает TN_SUPPORT_FPU = 1 sm.gif

Не подскажет ли кто как в EWARM заставть компилятор для определённой
функции не делать код для FPU (#pragma например)?
Go to the top of the page
 
+Quote Post
LightElf
сообщение Oct 30 2014, 15:34
Сообщение #41


Частый гость
**

Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205



QUOTE (prgjz @ Oct 10 2014, 20:34) *
Не подскажет ли кто как в EWARM заставть компилятор для определённой
функции не делать код для FPU (#pragma например)?

Попробуйте так.
Выносите функцию в отдельный файл, включаете файл в проект, в опциях указываете компилятору ключ командной строки --core=Cortex-M4
Go to the top of the page
 
+Quote Post

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

 


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


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