selected processor does not support

nobody wrote on Thursday, January 04, 2007:

i what to make free rtos soft with using interupt but i have strange complilation erorr :

C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:121: Error: selected processor does not support `stmdb SP!,{R0}’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:122: Error: selected processor does not support `stmdb SP,{SP}^’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:125: Error: lo register required – `ldmia SP!,{R0}’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:126: Error: selected processor does not support `stmdb R0!,{LR}’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:128: Error: lo register required – `ldmia SP!,{R0}’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:129: Error: selected processor does not support `stmdb LR,{R0-LR}^’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:131: Error: lo register required – `sub LR,LR,#60
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:132: Error: selected processor does not support `mrs R0,SPSR’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:133: Error: selected processor does not support `stmdb LR!,{R0}’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:136: Error: selected processor does not support `stmdb LR!,{R0}’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:139: Error: lo register required – `str LR,[R0]’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:146: Error: lo register required – `sub R11,LR,#4
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:180: Error: lo register required – `ldr LR,[R0]’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:182: Error: lo register required – `ldmfd LR!,{R1}’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:184: Error: lo register required – `ldmfd LR!,{R0}’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:185: Error: selected processor does not support `msr SPSR,R0’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:186: Error: Thumb load/store multiple does not support {reglist}^ – `ldmfd LR,{R0-R14}^’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:188: Error: lo register required – `ldr LR,[LR,#+60]’
C:\DOCUME~1\Tomasz\USTAWI~1\Temp/ccOqaaaa.s:189: Error: instruction not supported in Thumb16 mode – `subs PC,LR,#4

my soft code :

#include <stdlib.h>
#include <stdio.h>

/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "lib_AT91SAM7S256.h"

#include "Board.h"

static void task_1( void *pvParameters );
static void task_2( void *pvParameters );
void timer0_c_irq_handler(void) __attribute__ ((naked));
void timer_init ( void );

#define TC_CLKS                  0x7
#define TC_CLKS_MCK2             0x0
#define TC_CLKS_MCK8             0x1
#define TC_CLKS_MCK32            0x2
#define TC_CLKS_MCK128           0x3
#define TC_CLKS_MCK1024          0x4

int main( void )
{
   AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA;   //rejest dopuszczaja zegar do peryferi
   AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, LED_MASK );
   timer_init ();
   xTaskCreate( task_1, ( const signed portCHAR * const )  "LED1", configMINIMAL_STACK_SIZE, ( void * ) NULL,tskIDLE_PRIORITY + 3 , ( xTaskHandle * ) NULL ); //utozenie wontka
//   xTaskCreate( task_2, ( const signed portCHAR * const )  "LED2", configMINIMAL_STACK_SIZE, ( void * ) NULL,tskIDLE_PRIORITY + 3 , ( xTaskHandle * ) NULL ); //utozenie wontka   
   vTaskStartScheduler(); //start system
   return 0;
}
/*-----------------------------------------------------------*/

void timer0_c_irq_handler(void)
{
portENTER_SWITCHING_ISR();
portBASE_TYPE xSwitchRequired = pdFALSE;
AT91PS_TC TC_pt = AT91C_BASE_TC0;
unsigned int dummy;
//* Acknowledge interrupt status
dummy = TC_pt->TC_SR;
//* Suppress warning variable "dummy" was set but never used
dummy = dummy;

//* Read the output state
if ( (AT91F_PIO_GetInput(AT91C_BASE_PIOA) & LED1 ) == LED1 )
{
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED1 );
}
else
{
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED1 );
}
*AT91C_AIC_EOICR = 0; // kasujemy flage przerwania
portEXIT_SWITCHING_ISR( xSwitchRequired );
}

static void task_2( void *pvParameters )
{
    while(1) {
    vTaskDelay(portTICK_RATE_MS*200);
    if ((AT91F_PIO_GetInput(AT91C_BASE_PIOA) & LED1 ) == LED1 )
    {AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED1 ); }
    else {AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED1 );}
   
    }
}

static void task_1( void *pvParameters )
{
    while(1) {
    vTaskDelay(portTICK_RATE_MS*500);
    if ( (AT91F_PIO_GetInput(AT91C_BASE_PIOA) & LED3 ) == LED3 )
    {AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED3 ); }
    else {AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED3 );}
   
    }
}

void AT91F_TC_Open ( AT91PS_TC TC_pt, unsigned int Mode, unsigned int TimerId)
//* Begin
{
    unsigned int dummy;

    //* First, enable the clock of the TIMER
        AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1<< TimerId ) ;

    //* Disable the clock and the interrupts
    TC_pt->TC_CCR = AT91C_TC_CLKDIS ;
    TC_pt->TC_IDR = 0xFFFFFFFF ;

    //* Clear status bit
        dummy = TC_pt->TC_SR;
    //* Suppress warning variable "dummy" was set but never used
        dummy = dummy;
    //* Set the Mode of the Timer Counter
    TC_pt->TC_CMR = Mode ;

    //* Enable the clock
    TC_pt->TC_CCR = AT91C_TC_CLKEN ;
//* End
}

void timer_init ( void )
{
portENTER_CRITICAL();
//* Open timer0
AT91F_TC_Open(AT91C_BASE_TC0,TC_CLKS_MCK8,AT91C_ID_TC0);
//* Open Timer 0 interrupt
//AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_TC0, 4,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, timer0_c_irq_handler);
AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS; // IRQ enable CPC
// AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC0);
AT91C_BASE_AIC->AIC_IECR = 0x1 << AT91C_ID_TC0;
//* Start timer0
AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG ;
portEXIT_CRITICAL();
//* End
}

nobody wrote on Monday, January 08, 2007:

Don’t know but maybe you are attempting to compile ARM mode code when the compiler is set to THUMB mode?