rtems with matlab autocode problems

Nick Thomas nick.thomas at pixsan.com
Wed Jun 16 17:58:24 UTC 2010


 

Have you tried ‘puts’ instead of printf?

I have seen a similar thing when printf was used, but without any format
specifiers.

 

 

 

Nick

 

From: rtems-users-bounces at rtems.org [mailto:rtems-users-bounces at rtems.org]
On Behalf Of João Rasta
Sent: 16 June 2010 18:48
To: Till Straumann
Cc: rtems-users at rtems.com
Subject: Re: rtems with matlab autocode problems

 

Yes, here goes

// dummy printf test code
int upa(void)
{
    int i = 0;

    for (i=0; i < 20; i++)
        printf("B\n");

    exit(0);

}

And the result is:


    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf
    ¬ÖUf

Program exited normally. This same code works correctly if i put the
function in the main code instead of the library code. I still have no idea
of what can be causing this, any hints would be apreciated. Mabe a compiler
flag is messing up the library code? 

The matlab autocode makefile generates some flags i don't recognize such as
the DXXX:

sparc-rtems-gcc -c -O3 -g3 -ffloat-store -fPIC   -DUSE_RTMODEL -DMODEL=gnc
-DRT -DNUMST=1 -DTID01EQ=0 -DNCSTATES=0 -DUNIX -DMT=0 -DHAVESTDI
O   -I. -I../../rtwlt/matlab/simulink/include
-I../../rtwlt/matlab/extern/include -I../../rtwlt/matlab/rtw/c/src
-I../../rtwlt/matlab/rtw/c/
src/ext_mode/common -I. -I.. -I../../rtwlt/matlab/rtw/c/libsrc
../../rtwlt/matlab/rtw/c/src/rt_sim.c


These flags are not used in the "main" code, for instance

sparc-rtems-gcc  -DLOGGING=1 -DLOGNOTORIETY=10 -I"../src"
-I"../src/comms/packet_lib" -I"../src/shell" -I"../src/comms"
-I"../model/gnc_linu
x" -I../rtwlt/matlab/simulink/include -I../rtwlt/matlab/extern/include
-I../rtwlt/matlab/rtw/c/src -I../rtwlt/matlab/rtw/c/src/ext_mode/comm
on -I../rtwlt/matlab/rtw/c/libsrc   -O2 -g -Wall -c -fmessage-length=0 -DRT
-MMD -MP -MF"src/common.d" -MT"src/common.d" -o"src/common.o" ".
./src/common.c"

Has anyone seen the DXX flags?

Best,
JM



On Wed, Jun 16, 2010 at 6:31 PM, Till Straumann <strauman at slac.stanford.edu>
wrote:

Can you post the offending code?

T.



On 06/16/2010 12:02 PM, João Rasta wrote: 

Just an update:

If i do fflush(stdout) inside the test function, the application crashes.
Also, no matter what i put in printf, it allways prints the same characters,
but it detects the \n correctly.. I don't see if this can be related to the
compiler..


Best,
JM

On Wed, Jun 16, 2010 at 4:56 PM, Joel Sherrill <joel.sherrill at oarcorp.com>
wrote:

On 06/16/2010 10:52 AM, João Rasta wrote:

Hi,

No, autocode requires the real-time workbench only, it is quite
straightforward to generate the code.

I didn't fully understood your question. Anyway, i have tried to compile the
application with gcc and runs fine on linux so it should run on rtems with
the apropriate modifications. However, when i printf("test\n") within the
library finction, it returns strange characters, which doesn't happen in the
function that calls the library function..

Is it including stdio.h?  I have seen some targets where if you don't the
variable
arguments stuff gets confused.

Is the generated code warning free? 

 


I suspect of a compilation flag/option i may be missing on the library. Do
you have any idea?

As long as it is compiled the same as the rest of the app, it should be ok. 

 

Also, i don't need any rtems primitives/configurations on the library
functions right? I'm assuimng It is enough to have the rtems configuration
on the "main" file.

Right.

Can you print from other tasks?

--joel


Best,
JM 





On Wed, Jun 16, 2010 at 4:42 PM, Joel Sherrill <joel.sherrill at oarcorp.com
<mailto:joel.sherrill at oarcorp.com>> wrote:

   On 06/16/2010 10:38 AM, João Rasta wrote:

       Hi,

       I'm having trouble running an rtems application that uses code
       generated from matlab using autocode. It all goes well until a
       function of this library is called: printfs return awkward
       characters and then the application crashes.

   I have seen references to this before.  Is this hard to do?  Are
   there instructions?
   Standard glue code, etc.

       1) Is there any obvious reason to why printfs of the autocode
       generated functions are not working properly? They are
       compiled with sparc-rtems-gcc, as the main code.

       2) Are there any special flags needed to be passed to the
       compiler in order to link other libraries? Or some rtems
       configuration..

   Is there any chance it is printing floating point numbers from a
   non-FP task?


       Best,
       JM



   --     Joel Sherrill, Ph.D.             Director of Research&
Development
   joel.sherrill at OARcorp.com        On-Line Applications Research
   Ask me about RTEMS: a free RTOS  Huntsville AL 35805
     Support Available             (256) 722-9985






-- 
Joel Sherrill, Ph.D.             Director of Research&  Development
joel.sherrill at OARcorp.com        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
  Support Available             (256) 722-9985



 

 
_______________________________________________
rtems-users mailing list
rtems-users at rtems.org
http://www.rtems.org/mailman/listinfo/rtems-users
  

 

 

No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 9.0.829 / Virus Database: 271.1.1/2938 - Release Date: 06/15/10
19:35:00

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20100616/4e0dd1e6/attachment-0001.html>


More information about the users mailing list