Looks like file fpga_IO.c miss stdio.h include.
~d

On Thu, 29 Aug 2002 14:36:59 -0400
"John Shanton" <john_shan...@littleoptics.com> wrote:

>  
> Problem with uprintf() when compiled in multiple files.
>  
> I have three source code files, p2a-reva.c, fpga_IO.c, and serial_IO.c.
> The first one is where main() resides.  The file fpga_IO.c has a call to
> uprintf() with a transmit character function pointer to txChar().
>  
> When I compile it as a single file (#include the latter two files into
> the first file), it generates good code in which the setup before a call
> to uprintf() consists of two push opcodes.  The first push points to the
> format string and the second push points to the txChar function.
>  
> The problem I have is that when I compile the code with the following
> command:
>  
> msp430-gcc -mmcu=msp430x149 -mIAR -o p2a-reva -O p2a-reva.c fpga_IO.c
> serial_IO.c
>  
> I get code generated such that functions in the fpga_IO.c (second) file
> has mov r14 and mov r15 instructions instead of push instructions before
> the call to uprintf().  Functions in the first file still have the
> correct push instructions prior to the call to uprintf().
>  
> The following are the generated assembler code fragments:
>  
>   Call to function uprintf( txChar, "done\n\r"); from function in source
> file fpga_IO.c
>     26d4:   3e 40 ae 26       mov   #9902,      r14   ;  #0x26ae
>     26d8:   3f 40 46 27       mov   #10054,     r15   ;  #0x2746
>     26dc:   b0 12 24 34       call  #13348            ;  #0x3424
>  
>   Call to function uprintf( txChar, "done\n\r");  from function in
> source file p2a-reva.c
>     11a2:   30 12 61 11       push  #4449       ;  #0x1161
>     11a6:   30 12 46 27       push  #10054            ;  #0x2746
>     11aa:   b0 12 24 34       call  #13348            ;  #0x3424
>  
> Note that address 0x2746 is the function txChar() that should be used by
> uprintf().  Uprintf() is at address 0x3424.  Both functions are calling
> the exact same uprintf() routine but with a different set up before
> calling.  The code in the first function should use push instead of mov
> before calling the uprint() function.
>  
> What am I doing wrong?
> Thanks.
> John L. Shanton III
> Little Optics, Inc.
>  
> 

Reply via email to