Доброго времени суток)
Безуспешно пытаюсь запустить 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)