avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-gcc-list] AVR223 for GCC


From: ramnath
Subject: Re: [avr-gcc-list] AVR223 for GCC
Date: Thu, 27 Feb 2003 18:17:41 -0800

Joerg,
How about the registers that are used? I am trying to use the 8th order 
filter in AVR223 and aren't the register use conventions somewhat 
different? Somehow my FIR8 function is not getting called at all. I have 
not changed the register use conventions currently that have been used 
for IARCC. What do you suggest?
Thanks a lot for all your help,
Ramnath.

---------Included Message----------
>Date: Mon, 17 Feb 2003 16:48:02 +0100 (MET)
>From: "Joerg Wunsch" <address@hidden>
>Reply-To: "Joerg Wunsch" <address@hidden>
>To: <address@hidden>
>Subject: Re: [avr-gcc-list] AVR223 for GCC
>
>address@hidden wrote:
>
>> The application I am trying to use with GCC is the Appnote 223 which
>> has the major filters written in the IARCC format.
>
>What's so difficult about it?  After looking into one of the files, it
>took me only a few minutes to figure out what needs to be changed.
>Context diff for one file below.  Of course, if i were you, i'd
>probably automate the process.
>
>The biggest problem seems to be that the IAR assembler uses \1 etc.
>for positional macro arguments, while the GNU assembler expects
>explicitly named positional arguments for its macros.
>
>Note that i have also removed all \r characters from the file, it
>might be required (but i'm not sure).
>
>Make sure you generate a file ending in .S (a capital letter S) since
>this will make avr-gcc also invoke the C preprocessor.
>
>--- 2nd_order_FIR.s90  Fri Jun  7 11:46:50 2002
>+++ 2nd_order_FIR.S    Mon Feb 17 16:42:29 2003
>@@ -50,9 +50,8 @@
> ;*      INIT:  Depending on compiler settings (135 cycles)
> ;*      FILTER:  60 instructions; 80 cycles (excl. ret)
> ;*****************************************************
>-      NAME    assembly(16)
>-      PUBLIC  FIR2
>-      RSEG    CODE
>+      .global FIR2
>+      .text
> 
> ;ZERO register (used to add carry flag)
> #define ZERO  R2
>@@ -91,22 +90,22 @@
> ;**************************************************
> ;* MACROS
> ;**************************************************
>-LOAD_NODE MACRO
>-      ldd       DATAL,Z+\1            ; Load low byte of node 
>-      ldd       DATAH,Z+\1+1          ; Load high byte of node
>-    ENDM
>-
>-UPDATE_NODE MACRO
>-      std       Z+\1, DATAL           ; Update low byte of node to prepare 
>next filter 
run
>-      std       Z+\1+1, DATAH         ; Update high byte of node to prepare 
>next 
filter run
>-    ENDM
>-
>-LOAD_COEF MACRO
>-      ldd       COEFL,Z+\1            ; Load low byte of node 
>-      ldd       COEFH,Z+\1+1          ; Load high byte of node
>-    ENDM
>+.macro LOAD_NODE a
>+      ldd       DATAL,Z+\a            ; Load low byte of node 
>+      ldd       DATAH,Z+\a+1          ; Load high byte of node
>+    .ENDM
>+
>+.macro UPDATE_NODE a
>+      std       Z+\a, DATAL           ; Update low byte of node to prepare 
>next filter 
run
>+      std       Z+\a+1, DATAH         ; Update high byte of node to prepare 
>next 
filter run
>+    .ENDM
>+
>+.macro LOAD_COEF a
>+      ldd       COEFL,Z+\a            ; Load low byte of node 
>+      ldd       COEFH,Z+\a+1          ; Load high byte of node
>+    .ENDM
> 
>-MUL_MOV_24 MACRO
>+.macro MUL_MOV_24
>       muls  COEFH, DATAH              ; Signed multiply, coefficient high 
> byte and data 
high
>byte
>       mov       AC2, r0                       ; Copy low byte into 
> accumulator byte 2 (sign bit
>automatically correct)
> 
>@@ -121,9 +120,9 @@
>       mulsu DATAH, COEFL              ; Signed-unsigned multiply, data high 
> byte and 
coefficient
>low byte
>       add       AC1, r0                       ; Add low byte of result to 
> accumulator byte 1
>       adc       AC2, r1                       ; Add with carry high byte of 
> result to accumulator 
byte 2
>-    ENDM
>+    .ENDM
> 
>-SMAC24 MACRO
>+.macro SMAC24
>       muls  COEFH, DATAH              ; Signed multiply, coefficient high 
> byte and data 
high
>byte
>       add       AC2, r0                       ; Copy low byte into 
> accumulator byte 2
> 
>@@ -139,7 +138,7 @@
>       mulsu DATAH, COEFL              ; Signed-unsigned multiply, data high 
> byte and 
coefficient
>low byte 
>       add       AC1, r0                       ; Add low byte of result to 
> accumulator byte 1
>       adc       AC2, r1                       ; Add with carry high byte of 
> result to accumulator 
byte 2
>-    ENDM
>+    .ENDM
>       
> ;*****************************************************
> ; FIR filter function
>@@ -181,4 +180,3 @@
> ;Return the value stored in accumulator AC2 and AC1 (which are the 
return
>registers)
>       ret
>     
>-    END
>
>-- 
>J"org Wunsch                                          Unix support engineer
>address@hidden        
http://www.interface-systems.de/~j/
>
>_______________________________________________
>avr-gcc-list mailing list
>address@hidden
>http://www.avr1.org/mailman/listinfo/avr-gcc-list
>
---------End of Included Message----------
_____________________________________________________________




reply via email to

[Prev in Thread] Current Thread [Next in Thread]