selected processor does not support
i what to make free rtos soft with using interupt but i have strange complilation erorr :
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:121: Error: selected processor does not support `stmdb SP!,{R0}’
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:122: Error: selected processor does not support `stmdb SP,{SP}^’
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:125: Error: lo register required — `ldmia SP!,{R0}’
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:126: Error: selected processor does not support `stmdb R0!,{LR}’
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:128: Error: lo register required — `ldmia SP!,{R0}’
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:129: Error: selected processor does not support `stmdb LR,{R0-LR}^’
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:131: Error: lo register required — `sub LR,LR,#60′
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:132: Error: selected processor does not support `mrs R0,SPSR’
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:133: Error: selected processor does not support `stmdb LR!,{R0}’
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:136: Error: selected processor does not support `stmdb LR!,{R0}’
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:139: Error: lo register required — `str LR,[R0]’
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:146: Error: lo register required — `sub R11,LR,#4′
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:180: Error: lo register required — `ldr LR,[R0]’
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:182: Error: lo register required — `ldmfd LR!,{R1}’
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:184: Error: lo register required — `ldmfd LR!,{R0}’
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:185: Error: selected processor does not support `msr SPSR,R0′
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:186: Error: Thumb load/store multiple does not support {reglist}^ — `ldmfd LR,{R0-R14}^’
C:DOCUME~1TomaszUSTAWI~1Temp/ccOqaaaa.s:188: Error: lo register required — `ldr LR,[LR,#+60]’
C:DOCUME~1TomaszUSTAWI~1Temp/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
}
selected processor does not support
Don’t know but maybe you are attempting to compile ARM mode code when the compiler is set to THUMB mode?