Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Thread

Re: [lpc2000] Re: Problem with interrupts (and crt0.s) using GNU compiler.

Re: [lpc2000] Re: Problem with interrupts (and crt0.s) using GNU compiler.

2004-03-09 by dkis

try this
http://www.geocities.com/michaelanburaj/downloads/arm_ucos_1.13.zip

At 09:28 PM 3/10/2004 +0000, you wrote:
Show quoted textHide quoted text
>Michael Anburaj wrote:
> > Hi Pascal,
> >
> > If you need a simple & effective startup code check my
> > ARM UCOS port it has a startup code along with linker
> > script.
> >
> > 
> <http://geocities.com/michaelanburaj/downlaod/arm_ucos_1.3.zip>http://geocities.com/michaelanburaj/downlaod/arm_ucos_1.3.zip
>
>"Sorry, the page you requested was not found."
>
>
>
>----------
>Yahoo! Groups Links
>    * To visit your group on the web, go to:
>    * 
> <http://groups.yahoo.com/group/lpc2000/>http://groups.yahoo.com/group/lpc2000/
>    *
>    * To unsubscribe from this group, send an email to:
>    * 
> <mailto:lpc2000-unsubscribe@yahoogroups.com?subject=Unsubscribe>lpc2000-unsubscribe@yahoogroups.com 
>
>    *
>    * Your use of Yahoo! Groups is subject to the 
> <http://docs.yahoo.com/info/terms/>Yahoo! Terms of Service.

Problem with interrupts (and crt0.s) using GNU compiler.

2004-03-10 by Pascal Degryze

Hi,

I'm trying to start-up the interrupt handling. Herefor I configured Timer0
as IRQ source, and forced an interrupt. But nothing happened.

LPC21xx_VICIntSelect 	= 0x00000000;	// all interrupts are 'IRQ' category
LPC21xx_VICIntEnClr 	= 0xFFFFFFFF;	// clear alle interrupts
LPC21xx_VICIntEnable 	=	IRQ_TIMER_0;	// enable IRQ
LPC21xx_VICDefVectAddr = (UINT32) DefaultInterrupt; // Default IRQ vector
address (for non-vectored irq
LPC21xx_VICVectAddr0 = (UINT32) Timer_OnInterrupt;
LPC21xx_VICVectCntl0 = 0x00000024; // Timer0
 LPC21xx_VICSoftInt = 0x00000010; // bit 4 = Timer0 // force an interrupt -
for test purposes

Then I realized that the IRQ was disabled by next lines in the crt0.s-file:
/* ----------------- */
/* Re-enter SVC mode */
/* ----------------- */
MOV	r0, #Mode_SVC	/* Setup SVC mode */
ORR	r0, r0, #I_Bit	/* IRQ is disabled */
ORR	r0, r0, #F_Bit	/* FIQ is disabled */
MSR     CPSR, r0    	/* Enter SVC mode */
LDR     SP, =SVC_Stack	/* Set stack pointer */

But when I don't set the IRQ-disable-bit, then the code crashes somewhere in
the main-initialisation-code of the GNU compiler.
The PC never gets at @18 (IRQ handler), but at @10 (abourt address)

b	reset_handler	/* @ 0x00 = reset address */
nop			          /* @ 0x04 = undefined address */
b SWI_handler			/* @ 0x08 = SWI address */	
nop			          /* @ 0x0C = prefetch address */	
b ABT_handler			/* @ 0x10 = abort address */	
nop			          /* @ 0x14 = reserved vector */

/*b	IRQ_handler*/	    /* @ 0x18 = IRQ address */		
LDR     PC, [PC, #-0xFF0]	   /* Vector from VicVECAddr */	
b	FIQ_handler	    /* @ 0x1C = FIQ address */		

When the lines:
ORR	r0, r0, #I_Bit	/* IRQ is disabled */
ORR	r0, r0, #F_Bit	/* FIQ is disabled */
are set, the code keeps working normal.

When I try to run the code in USER mode, then it crashes always.

-Compiler is arm-elf-gcc V2.95.2
-I'm using a Nohau debugger for ARM.

My questions are:
-What could be wrong?
-Can someone provide me example source code for GNU-compiler?
-Does the device has to work in user mode, or in service mode?

Thanks.
Pascal Degryze - Belgium

Re: [lpc2000] Problem with interrupts (and crt0.s) using GNU compiler.

2004-03-10 by Michael Anburaj

Hi Pascal,

If you need a simple & effective startup code check my
ARM UCOS port it has a startup code along with linker
script.

http://geocities.com/michaelanburaj/downlaod/arm_ucos_1.3.zip

cheers,
-Mike.

--- Pascal Degryze <pascal.degryze@...>
wrote:
> Hi,
> 
> I'm trying to start-up the interrupt handling.
> Herefor I configured Timer0
> as IRQ source, and forced an interrupt. But nothing
> happened.
> 
> LPC21xx_VICIntSelect 	= 0x00000000;	// all
> interrupts are 'IRQ' category
> LPC21xx_VICIntEnClr 	= 0xFFFFFFFF;	// clear alle
> interrupts
> LPC21xx_VICIntEnable 	=	IRQ_TIMER_0;	// enable IRQ
> LPC21xx_VICDefVectAddr = (UINT32) DefaultInterrupt;
> // Default IRQ vector
> address (for non-vectored irq
> LPC21xx_VICVectAddr0 = (UINT32) Timer_OnInterrupt;
> LPC21xx_VICVectCntl0 = 0x00000024; // Timer0
>  LPC21xx_VICSoftInt = 0x00000010; // bit 4 = Timer0
> // force an interrupt -
> for test purposes
> 
> Then I realized that the IRQ was disabled by next
> lines in the crt0.s-file:
> /* ----------------- */
> /* Re-enter SVC mode */
> /* ----------------- */
> MOV	r0, #Mode_SVC	/* Setup SVC mode */
> ORR	r0, r0, #I_Bit	/* IRQ is disabled */
> ORR	r0, r0, #F_Bit	/* FIQ is disabled */
> MSR     CPSR, r0    	/* Enter SVC mode */
> LDR     SP, =SVC_Stack	/* Set stack pointer */
> 
> But when I don't set the IRQ-disable-bit, then the
> code crashes somewhere in
> the main-initialisation-code of the GNU compiler.
> The PC never gets at @18 (IRQ handler), but at @10
> (abourt address)
> 
> b	reset_handler	/* @ 0x00 = reset address */
> nop			          /* @ 0x04 = undefined address */
> b SWI_handler			/* @ 0x08 = SWI address */	
> nop			          /* @ 0x0C = prefetch address */	
> b ABT_handler			/* @ 0x10 = abort address */	
> nop			          /* @ 0x14 = reserved vector */
> 
> /*b	IRQ_handler*/	    /* @ 0x18 = IRQ address */		
> LDR     PC, [PC, #-0xFF0]	   /* Vector from
> VicVECAddr */	
> b	FIQ_handler	    /* @ 0x1C = FIQ address */		
> 
> When the lines:
> ORR	r0, r0, #I_Bit	/* IRQ is disabled */
> ORR	r0, r0, #F_Bit	/* FIQ is disabled */
> are set, the code keeps working normal.
> 
> When I try to run the code in USER mode, then it
> crashes always.
> 
> -Compiler is arm-elf-gcc V2.95.2
> -I'm using a Nohau debugger for ARM.
> 
> My questions are:
> -What could be wrong?
> -Can someone provide me example source code for
> GNU-compiler?
> -Does the device has to work in user mode, or in
> service mode?
> 
> Thanks.
> Pascal Degryze - Belgium
> 


__________________________________
Do you Yahoo!?
Yahoo! Search - Find what you\ufffdre looking for faster
http://search.yahoo.com

Re: Problem with interrupts (and crt0.s) using GNU compiler.

2004-03-10 by Andreas Schwarz

Michael Anburaj wrote:
> Hi Pascal,
> 
> If you need a simple & effective startup code check my
> ARM UCOS port it has a startup code along with linker
> script.
> 
> http://geocities.com/michaelanburaj/downlaod/arm_ucos_1.3.zip

"Sorry, the page you requested was not found."

Re: Problem with interrupts (and crt0.s) using GNU compiler.

2004-03-10 by Andreas Schwarz

Andreas Schwarz wrote:
> Michael Anburaj wrote:
>> Hi Pascal,
>> 
>> If you need a simple & effective startup code check my
>> ARM UCOS port it has a startup code along with linker
>> script.
>> 
>> http://geocities.com/michaelanburaj/downlaod/arm_ucos_1.3.zip
> 
> "Sorry, the page you requested was not found."

OK, found it here:
http://www.geocities.com/michaelanburaj/downloads/arm_ucos_1.13.zip

Which license is the startup code?

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.