rtems with matlab autocode problems

Jiri Gaisler jiri at gaisler.com
Wed Jun 16 19:22:47 UTC 2010


.rodata is typically part of .text - you can look in the linkcmds file
to see how the different sections are grouped.

João Rasta wrote:
> When loading the application, GRMON only shows me .text, .data, .jcr and
> .got sections. Should it give me the address of .rodata as well?
> 
> 
> Best,
> JM
> 
> On Wed, Jun 16, 2010 at 8:04 PM, Jiri Gaisler <jiri at gaisler.com
> <mailto:jiri at gaisler.com>> wrote:
> 
> 
>     printf() takes a pointer to a string as first parameter. A string
>     like "B\n" will be stored in the .rodata segment and a pointer
>     will be passed to printf. If the pointer is created with immediate
>     operands (sethi() etc.) then it cannot be corrupted. If it is passed
>     from a register or stack location, then it can be overwritten.
>     The string itself in .rodata can always be overwritten, that is
>     why a watchpoint should be placed in it.
> 
>     Jiri.
> 
>     João Rasta wrote:
>     > Sorry but what do you mean by "check what the string parameter points
>     > to"? I can insert the breakpoint but i don't understand what is the
>     > string parameter.
>     >
>     >
>     > Best,
>     > JM
>     >
>     > On Wed, Jun 16, 2010 at 7:15 PM, Jiri Gaisler <jiri at gaisler.com
>     <mailto:jiri at gaisler.com>
>     > <mailto:jiri at gaisler.com <mailto:jiri at gaisler.com>>> wrote:
>     >
>     >
>     >     Everything in RTEMS is a task, either the init task or created
>     >     'secondary'
>     >     tasks. You might want to set CONFIGURE_INIT_TASK_STACK_SIZE to
>     some
>     >     higher
>     >     value if your auto-code uses a lot of stack space ...
>     >
>     >     But the proper way to debug this is to put a breakpoint on the
>     offending
>     >     printf, and check what the string parameter points to. If it
>     is not your
>     >     intended string ("B\n"), it might have been overwritten in
>     memory. Put a
>     >     watch point on the address and check when it is written.
>     Alternatively,
>     >     the pointer to the string might have been overwritten, which
>     can be
>     >     tracked by similar means ...
>     >
>     >     Jiri.
>     >
>     >     João Rasta wrote:
>     >     > It is not a task, just a simple function call. I passed this
>     call
>     >     to the
>     >     > first thing in the void POSIX_Init() and the same happens.
>     No matter
>     >     > what i pass to printf or puts it allways writes the same if this
>     >     > function is implemented on the autocode *.c files..
>     >     >
>     >     >
>     >     > Best,
>     >     > JM
>     >     >
>     >     > On Wed, Jun 16, 2010 at 6:31 PM, Jiri Gaisler
>     <jiri at gaisler.com <mailto:jiri at gaisler.com>
>     >     <mailto:jiri at gaisler.com <mailto:jiri at gaisler.com>>
>     >     > <mailto:jiri at gaisler.com <mailto:jiri at gaisler.com>
>     <mailto:jiri at gaisler.com <mailto:jiri at gaisler.com>>>> wrote:
>     >     >
>     >     >
>     >     >     Each task is allocated a certain amount of stack space -
>     how much
>     >     >     have you allocated to your auto-code one? You might try
>     the RTEMS
>     >     >     stack checker to detect a stack overflow ...
>     >     >
>     >     >     Jiri.
>     >     >
>     >     >     João Rasta wrote:
>     >     >     > How can i be sure?
>     >     >     >
>     >     >     > The fact is that if i read the contents of all the memory
>     >     space with
>     >     >     > grmon, they are not zero.. And i have "washed" prior
>     to load the
>     >     >     > application.
>     >     >     >
>     >     >     >
>     >     >     > Best,
>     >     >     > JM
>     >     >     >
>     >     >     > On Wed, Jun 16, 2010 at 6:11 PM, Jiri Gaisler
>     >     <jiri at gaisler.com <mailto:jiri at gaisler.com>
>     <mailto:jiri at gaisler.com <mailto:jiri at gaisler.com>>
>     >     >     <mailto:jiri at gaisler.com <mailto:jiri at gaisler.com>
>     <mailto:jiri at gaisler.com <mailto:jiri at gaisler.com>>>
>     >     >     > <mailto:jiri at gaisler.com <mailto:jiri at gaisler.com>
>     <mailto:jiri at gaisler.com <mailto:jiri at gaisler.com>>
>     >     <mailto:jiri at gaisler.com <mailto:jiri at gaisler.com>
>     <mailto:jiri at gaisler.com <mailto:jiri at gaisler.com>>>>> wrote:
>     >     >     >
>     >     >     >
>     >     >     >
>     >     >     >     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..
>     >     >     >
>     >     >     >     Sounds to me like you have blown the stack or run
>     out of
>     >     >     memory ...
>     >     >     >
>     >     >     >     Jiri.
>     >     >     >
>     >     >     >     >
>     >     >     >     >
>     >     >     >     > Best,
>     >     >     >     > JM
>     >     >     >     >
>     >     >     >     > On Wed, Jun 16, 2010 at 4:56 PM, Joel Sherrill
>     >     >     >     > <joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>
>     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com> <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>
>     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>>>
>     >     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>
>     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>>
>     >     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>
>     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto: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>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>
>     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>>
>     >     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>
>     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>>>
>     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>
>     <mailto:joel.sherrill at oarcorp.com <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>>
>     >     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>
>     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>>>>
>     >     >     >     >         <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>
>     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>>
>     >     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>
>     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>>>
>     >     >     >     >         <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>
>     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>>
>     >     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>>
>     >     >     <mailto:joel.sherrill at oarcorp.com
>     <mailto:joel.sherrill at oarcorp.com>
>     >     <mailto: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
>     <mailto:rtems-users at rtems.org> <mailto:rtems-users at rtems.org
>     <mailto:rtems-users at rtems.org>>
>     >     <mailto:rtems-users at rtems.org <mailto:rtems-users at rtems.org>
>     <mailto:rtems-users at rtems.org <mailto:rtems-users at rtems.org>>>
>     >     >     <mailto:rtems-users at rtems.org
>     <mailto:rtems-users at rtems.org> <mailto:rtems-users at rtems.org
>     <mailto:rtems-users at rtems.org>>
>     >     <mailto:rtems-users at rtems.org <mailto:rtems-users at rtems.org>
>     <mailto:rtems-users at rtems.org <mailto:rtems-users at rtems.org>>>>
>     >     >     >     > http://www.rtems.org/mailman/listinfo/rtems-users
>     >     >     >
>     >     >     >
>     >     >     _______________________________________________
>     >     >     rtems-users mailing list
>     >     >     rtems-users at rtems.org <mailto:rtems-users at rtems.org>
>     <mailto:rtems-users at rtems.org <mailto:rtems-users at rtems.org>>
>     >     <mailto:rtems-users at rtems.org <mailto:rtems-users at rtems.org>
>     <mailto:rtems-users at rtems.org <mailto:rtems-users at rtems.org>>>
>     >     >     http://www.rtems.org/mailman/listinfo/rtems-users
>     >     >
>     >     >
>     >     _______________________________________________
>     >     rtems-users mailing list
>     >     rtems-users at rtems.org <mailto:rtems-users at rtems.org>
>     <mailto:rtems-users at rtems.org <mailto:rtems-users at rtems.org>>
>     >     http://www.rtems.org/mailman/listinfo/rtems-users
>     >
>     >
>     _______________________________________________
>     rtems-users mailing list
>     rtems-users at rtems.org <mailto:rtems-users at rtems.org>
>     http://www.rtems.org/mailman/listinfo/rtems-users
> 
> 



More information about the users mailing list