disable newlib
Manuel Coutinho
manuel.coutinho at edisoft.pt
Mon Aug 18 16:57:58 UTC 2008
We are using RTEMS 4.8.0 and the Leon2 BSP. I guess there are some
differences with the 4.9 version and with ARM...
> -----Original Message-----
> From: Joel Sherrill [mailto:joel.sherrill at oarcorp.com]
> Sent: Monday, August 18, 2008 5:01 PM
> To: Manuel Coutinho
> Cc: 'xu ray'; rtems-users at rtems.com
> Subject: Re: disable newlib
>
> Size info included. I hope the bfin and mcf52335 persons
> read this.
>
> Manuel Coutinho wrote:
> > Hi
> >
> > We are trying to make possible a configuration (using the configure
> script)
> > where RTEMS does not have newlib (open, close, malloc, etc) and other
> things
> > so that a minimal footprint can be achieved.
> >
> > At this stage, we are just checking how much effort is required to
> perform
> > this. I would suggest to place #ifdef inside the RTEMS source code so
> that
> > the unnecessary calls are not made. However, there is more work needed
> here.
> >
> > I've tried to take out most of the calls to libc and other things that
> we
> > don't need from the RTEMS source code (e.g rtems_termios_init, etc) and
> the
> > footprint has been reduced from ~70 KiB to ~37KiB, but we need to go
> further
> > and remove all dead code. Since RTEMS itself makes calls to newlib or
> libc,
> > if the application does not make the extra calls it is not sufficient
> > because the code will still be present.
> >
> What version are you looking at? rtems_termios_init is NOT
> required at all. Some BSPs had dependencies in old RTEMS
> versions but those have long been removed. I really hope
> you guys are not hacking those old versions to this level.
>
> Not to be ugly but I doubt any analysis that starts with
> that assertion. termios is only used if you have a console
> driver and a console driver is NOT part of the minimum
> configuration. Not even the clock tick driver is required.
>
> I would never claim that there is no room for improvement
> but I think you are barking up the wrong tree. This is
> the size of minimum.exe for arm/rtl22xx_t built from the
> head with everything disabled.
>
> 23127 2468 2512 28107 6dcb arm rtl22xx_t minimum.exe
>
> The workspace required is only 1560 bytes.
>
> Attached is the symbol table which only has 427 lines!!!
>
> I only see 4 newlib methods in this (str*, mem*) and
> then some RTEMS POSIX section 2 methods to build the device
> tree in the mini-IMFS. That appears to be the only source
> of calls to calloc and malloc in the executable as well.
>
> So I have hope that GSOC project Ray has mentored
> should eliminate much of that. But memset() and memcpy()
> are more than likely always going to be part of the footprint
> because gcc can emit calls to them for structure operations.
>
> For the sparc/erc32, that size changes to
>
> 43792 2308 2204 48304 bcb0 minimum.exe
>
> with only 430 symbols in the symbol table. Workspace
> required is 3256 bytes.
> > Now, we stumbled with the newlib source code that is very intertwined
> with
> > RTEMS (mainly to make malloc reentrant, from what I can tell). This will
> > need some detailed research to make sure everything works well.
> >
> >
> I don't think you are seeing what you think you are seeing.
> malloc is reentrant because it is using a mutex around a
> SuperCore heap. The RTEMS malloc_r ignores the reentrancy
> parameter. We do NOT use the code in newlib for malloc and
> never have.
> >
> >
> >> -----Original Message-----
> >> From: Joel Sherrill [mailto:joel.sherrill at oarcorp.com]
> >> Sent: Monday, August 18, 2008 3:38 PM
> >> To: xu ray
> >> Cc: Manuel Coutinho; rtems-users at rtems.com
> >> Subject: Re: disable newlib
> >>
> >> xu ray wrote:
> >>
> >>> You can disable it with patch YanMiao is working on.
> >>>
> >> I don't see how you can disable the entire newlib library without
> >> special tool builds.
> >>
> >> You can dynamically configure where the per-task reentrancy support is
> >> disabled. That saves a fair amount of memory.
> >>
> >>> But after doing this, lots of API (e.g. Posix ) and (most) C library
> >>> can not be used.
> >>>
> >>>
> >> If you build without newlib at all, this is true. The .h files from
> >> RTEMS and
> >> newlib are intertwined for the C library and POSIX threading.
> >>
> >>> You can use this for small footprint MCU/CPU that has limited RAM on
> >>>
> >> chip.
> >>
> >> You can also just not call the services and not get code pulled in.
> >>
> >> I will reserve judgment until I see the patch. I tend to believe that
> you
> >> can build everything and just not call it in your application. If
> there
> >> are
> >> pieces of RTEMS that are required that start to pull this in, then
> there
> >> is
> >> a dependency issue.
> >>
> >> 95% of the time breaking dependencies is sufficient. Special
> conditional
> >> builds are seldom required.
> >>
> >> --joel
> >>
> >>> 2008/8/18 Manuel Coutinho <manuel.coutinho at edisoft.pt
> >>> <mailto:manuel.coutinho at edisoft.pt>>
> >>>
> >>> Hi
> >>>
> >>>
> >>>
> >>> Just a quick question:
> >>>
> >>> How can we disable newlib (I mean, undefine RTEMS_NEWLIB)? Can
> >>> this be done in the configuration phase?
> >>>
> >>>
> >>>
> >>> Thanks
> >>>
> >>> *Manuel Coutinho
> >>> *Software Engineer - Space
> >>>
> >>> *EDISOFT, S.A.*
> >>> Rua Quinta dos Medronheiros - Lazarim
> >>> Apartado 382 Monte de Caparica
> >>> 2826-801 Caparica Portugal
> >>>
> >>>
> >>>
> >>>
> >>> _______________________________________________
> >>> rtems-users mailing list
> >>> rtems-users at rtems.com <mailto:rtems-users at rtems.com>
> >>> http://rtems.rtems.org/mailman/listinfo/rtems-users
> >>>
> >>>
> >>>
> >>>
> >>> --
> >>> Thanks & Best Regards!
> >>>
> >>> Ray, Xu
> >>>
> >> --
> >> 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
>
More information about the users
mailing list