Yahoo Groups archive

Lpc2000

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

Thread

GCC+IRQ+ARM->THUMB

GCC+IRQ+ARM->THUMB

2006-02-11 by jschvab

Greetings,
Im currently creating application with GCC 4.0.2 and i'd like to use 
THUMB code in IRQ (of course called from ARM ISR). My testing code 
is very simple - UART ISR setting volatile int and main() checking 
it and perfrorming sw LED blinking. When I translate all in ARM it 
does exactly what it should do. But when one of routines called from 
ISR is in THUMB it behaves quite strange: ISR takes much longer time 
(LED flashing is significantly slower) and after sending two 
characters with short time space, core generates data abort 
exception and freezes. But when i remove int checking from main(), 
data abort exception is not generated but code is still 
significantly slowed down by ISR. To me it seems like some problem 
with stack caused by differences between IRQ and system run mode of 
ARM7TDMI core, but im really not sure and i have neither debugging 
hw nor any idea how to solve it...

Thank's for any responses
Jan Svab
http://schvab.no-ip.com/

Re: [lpc2000] GCC+IRQ+ARM->THUMB

2006-02-11 by Tom Walsh

jschvab wrote:

>Greetings,
>Im currently creating application with GCC 4.0.2 and i'd like to use 
>THUMB code in IRQ (of course called from ARM ISR). My testing code 
>is very simple - UART ISR setting volatile int and main() checking 
>it and perfrorming sw LED blinking. When I translate all in ARM it 
>does exactly what it should do. But when one of routines called from 
>ISR is in THUMB it behaves quite strange: ISR takes much longer time 
>(LED flashing is significantly slower) and after sending two 
>characters with short time space, core generates data abort 
>exception and freezes. But when i remove int checking from main(), 
>data abort exception is not generated but code is still 
>significantly slowed down by ISR. To me it seems like some problem 
>with stack caused by differences between IRQ and system run mode of 
>ARM7TDMI core, but im really not sure and i have neither debugging 
>hw nor any idea how to solve it...
>
>  
>
Well, if you want to do wonderful things in code, then you will need the 
tools...  JTAG debug is not that expensive, the Eclipse people and 
Olimex have shown that for a few dollars, plus a few hours of your time, 
you can have a decent debugging setup.

Aside from that, there is a really fine document up on ARM.COM which 
goes into detail about mixing Thumb + ARM32 code.  It even discusses, 
with examples, of the "interrupt problem".  As they say: RTFM (Read the 
Fine Manual).

TomW



>Thank's for any responses
>Jan Svab
>http://schvab.no-ip.com/
>
>
>
>
>
>
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>  
>


-- 
Tom Walsh - WN3L - Embedded Systems Consultant
http://openhardware.net, http://cyberiansoftware.com
"Windows? No thanks, I have work to do..."
----------------------------------------------------

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.