rtems with matlab autocode problems

João Rasta freakforever at gmail.com
Wed Jun 16 17:48:23 UTC 2010


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.orghttp://www.rtems.org/mailman/listinfo/rtems-users
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20100616/edee450e/attachment-0001.html>


More information about the users mailing list