Yahoo Groups archive

Lpc2000

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

Message

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..."
----------------------------------------------------

Attachments

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.