public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
* [ECOS] POSIX main thread
@ 2009-04-10 20:51 Szentirmai Gergely
  2009-04-10 21:03 ` Sergei Gavrikov
  0 siblings, 1 reply; 6+ messages in thread
From: Szentirmai Gergely @ 2009-04-10 20:51 UTC (permalink / raw)
  To: eCos Discuss

Hello

I had to add POSIX compatibility to my project, because FAT support is 
depending on it. It's ok, but I don't need POSIX compat to create a 
thread, and call main(). It eats 8k from my SRAM, and that hurts much!

As I see from the source pthread.cxx there is no upportunitiy to disable 
this feature.

Would not be it usefull? Or there is a reason, why it is not available. 
As a secound option, I would make a main_thread_stack_size option in 
posix thread configuration in the cdl.

Gergely Szentirmai

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [ECOS] POSIX main thread
  2009-04-10 20:51 [ECOS] POSIX main thread Szentirmai Gergely
@ 2009-04-10 21:03 ` Sergei Gavrikov
  2009-04-12 15:29   ` Szentirmai Gergely
  0 siblings, 1 reply; 6+ messages in thread
From: Sergei Gavrikov @ 2009-04-10 21:03 UTC (permalink / raw)
  To: Szentirmai Gergely; +Cc: eCos Discuss

On Fri, Apr 10, 2009 at 08:03:29PM +0200, Szentirmai Gergely wrote:
> Hello
>
> I had to add POSIX compatibility to my project, because FAT support is  
> depending on it. It's ok, but I don't need POSIX compat to create a  
> thread, and call main(). It eats 8k from my SRAM, and that hurts much!

Hm. POSIX compat or LINUX compat? It's possible do not include posix
package to buid eCos `fatfs1' test

ecosconfig new <target>
ecosconfig add CYGPKG_LINUX_COMPAT
ecosconfig add CYGPKG_BLOCK_LIB
ecosconfig add fileio fatfs
ecosconfig tree
make -s
make -s -C fs/fat/current/ tests

The fatfs1's size is

arm-eabi-size install/tests/fs/fat/current/tests/fatfs1 
   text	   data	    bss	    dec	    hex	filename
  48088	    956	  15148	  64192	   fac0	install/tests/fs/fat/current/tests/fatfs1


> As I see from the source pthread.cxx there is no upportunitiy to disable  
> this feature.
>
> Would not be it usefull? Or there is a reason, why it is not available.  
> As a secound option, I would make a main_thread_stack_size option in  
> posix thread configuration in the cdl.
>

If your main() will be just a paleholder, decrease it's stack. If you
import the below, for example, before to type 'ecosconfig tree'

cdl_option CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE {
    user_value 128;
};

you will decrease .bss. It's just an example! Unfortunately, AFAIK,
FATFS will suck in any case, you can think, I will decrease .bss, and
all will be okay, but FATFS sucks a heap too

arm-eabi-nm install/tests/fs/fat/current/tests/fatfs1 | grep alloc
           ...
68010aa4 T cyg_fd_alloc
68010b1c T cyg_file_alloc
68013dd0 D cygmem_memalloc_heaps
6800cc94 T fatfs_node_alloc
6800f9d0 T malloc

Yet another "reserve" to decrease amount of used RAM is to decrease
CYGNUM_FILEIO_NFILE value.


Sergei

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [ECOS] POSIX main thread
  2009-04-10 21:03 ` Sergei Gavrikov
@ 2009-04-12 15:29   ` Szentirmai Gergely
  2009-04-12 18:39     ` Sergei Gavrikov
  0 siblings, 1 reply; 6+ messages in thread
From: Szentirmai Gergely @ 2009-04-12 15:29 UTC (permalink / raw)
  To: Sergei Gavrikov, ecos Discuss

Hello

POSIX compatibility, not Linux compat. I'm not using the command line 
ecos config, rather than the configtool GUI. In the ISO C startup 
section, I have found abelity to define the calling mode of main(), and 
the default stacksize. My coniguration is to call main() from 
cyg_user_start context. This way ecos does not allocate stack for 
starting main. This way, the

CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE   option is disabled. So, I can't set the value (in the GUI of course). 

When I use POSIX layer, pthread.cxx allocates a stack whether there is a 
main() function, or not. The size of this stack is depending on 
CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE and PTHREAD_STACK_MINIMUM.

PTHREAD_STACK_MINIMUM is given, but I think 
CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE  should be active even if there is a 
POSIX compatibility layer added.

Thank you!
Gergely Szentirmai

Sergei Gavrikov írta:
> On Fri, Apr 10, 2009 at 08:03:29PM +0200, Szentirmai Gergely wrote:
>   
>> Hello
>>
>> I had to add POSIX compatibility to my project, because FAT support is  
>> depending on it. It's ok, but I don't need POSIX compat to create a  
>> thread, and call main(). It eats 8k from my SRAM, and that hurts much!
>>     
>
> Hm. POSIX compat or LINUX compat? It's possible do not include posix
> package to buid eCos `fatfs1' test
>
> ecosconfig new <target>
> ecosconfig add CYGPKG_LINUX_COMPAT
> ecosconfig add CYGPKG_BLOCK_LIB
> ecosconfig add fileio fatfs
> ecosconfig tree
> make -s
> make -s -C fs/fat/current/ tests
>
> The fatfs1's size is
>
> arm-eabi-size install/tests/fs/fat/current/tests/fatfs1 
>    text	   data	    bss	    dec	    hex	filename
>   48088	    956	  15148	  64192	   fac0	install/tests/fs/fat/current/tests/fatfs1
>
>
>   
>> As I see from the source pthread.cxx there is no upportunitiy to disable  
>> this feature.
>>
>> Would not be it usefull? Or there is a reason, why it is not available.  
>> As a secound option, I would make a main_thread_stack_size option in  
>> posix thread configuration in the cdl.
>>
>>     
>
> If your main() will be just a paleholder, decrease it's stack. If you
> import the below, for example, before to type 'ecosconfig tree'
>
> cdl_option CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE {
>     user_value 128;
> };
>
> you will decrease .bss. It's just an example! Unfortunately, AFAIK,
> FATFS will suck in any case, you can think, I will decrease .bss, and
> all will be okay, but FATFS sucks a heap too
>
> arm-eabi-nm install/tests/fs/fat/current/tests/fatfs1 | grep alloc
>            ...
> 68010aa4 T cyg_fd_alloc
> 68010b1c T cyg_file_alloc
> 68013dd0 D cygmem_memalloc_heaps
> 6800cc94 T fatfs_node_alloc
> 6800f9d0 T malloc
>
> Yet another "reserve" to decrease amount of used RAM is to decrease
> CYGNUM_FILEIO_NFILE value.
>
>
> Sergei
>
>   

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [ECOS] POSIX main thread
  2009-04-12 15:29   ` Szentirmai Gergely
@ 2009-04-12 18:39     ` Sergei Gavrikov
  2009-04-13  9:46       ` Sergei Gavrikov
  0 siblings, 1 reply; 6+ messages in thread
From: Sergei Gavrikov @ 2009-04-12 18:39 UTC (permalink / raw)
  To: Szentirmai Gergely; +Cc: ecos Discuss

Please, stop a top posting: http://en.wikipedia.org/wiki/Top_posting
Here use: http://en.wikipedia.org/wiki/Top_posting#Bottom-posting

On Sun, Apr 12, 2009 at 05:21:49PM +0200, Szentirmai Gergely wrote:
> Hello
>
> POSIX compatibility, not Linux compat. I'm not using the command line  
> ecos config, rather than the configtool GUI. In the ISO C startup  

Szentirmai, I belive in that what anyone can do the same using eCos GUI
(configtool) what anybody did get with `ecosconfig'. eCos documentation
talks about.

I did show you in previous post that eCos FS_FAT is not depend on POSIX
package. It requires CYGPKG_BLOCK_LIB package and this package depends
on CYGPKG_LINUX_COMPAT (I guess on some compatible headers).

> section, I have found abelity to define the calling mode of main(), and  
> the default stacksize. My coniguration is to call main() from  
> cyg_user_start context. This way ecos does not allocate stack for  
> starting main. This way, the

Is it so exactly? eCos iself stands up the main() thread (it is declared
as a weak function). By default, it does nothing (returns immediately),
if do not have own one. Even more, you can remove an eCos package
CYGPKG_ISO_STARTUP from your configuration. Try to remove it. As I could
understand you try to reduce any overhead from eCos+fatfs.

Just to demo (without the STACK_SIZE dances). I will use stm3210e target
to finalize example: eCos+fatfs-main ("minus main"). Once again, I
belive in that what you will be able to get it with `configtool' too
(see what I add and see what I remove and do the same using GUI).

$ ecosconfig new stm3210e default
$ ecosconfig add crc fileio CYGPKG_BLOCK_LIB CYGPKG_LINUX_COMPAT fatfs
U CYGBLD_ISO_FNMATCH_HEADER, new inferred value <cyg/fileio/fnmatch.h>
U CYGBLD_ISO_DIRENT_HEADER, new inferred value <cyg/fileio/dirent.h>
U CYGBLD_ISO_OPEN_MAX_HEADER, new inferred value <cyg/fileio/limits.h>
U CYGBLD_ISO_NAME_MAX_HEADER, new inferred value <cyg/fileio/limits.h>
$ ecosconfig remove CYGPKG_LIBC_STARTUP
$ ecosconfig check
Target: stm3210e_eval
Template: default
Added:
 CYGPKG_CRC
 CYGPKG_IO_FILEIO
 CYGPKG_BLOCK_LIB
 CYGPKG_LINUX_COMPAT
 CYGPKG_FS_FAT
Removed:
 CYGPKG_LIBC_STARTUP
No conflicts

...

$ make -s -C fs/fat/v3_0 tests
$ arm-eabi-size install/tests/fs/fat/v3_0/tests/fatfs1
    text   data	    bss	    dec	    hex	filename
  34052	    944	   6276	  41272	   a138	install/tests/fs/fat/v3_0/tests/fatfs1

I checked that there are a lot of fatfs entries in the executable (it's
too long list to paste here)

$ arm-eabi-nm install/tests/fs/fat/v3_0/tests/fatfs1 | grep fatfs
...
6800a734 T fatfs_write_data
6800b1fc T fatfs_write_dir_entry

$ arm-eabi-nm install/tests/fs/fat/v3_0/tests/fatfs1 | grep fatfs | wc -l
54

As you can see it was possible to get eCos+fatfs-main with an unbeat
size. Try to get it with `configtool'. You have to get something I have
got. There are menus to add/remove packages in `configtool'. And, it
seems for me that you must read eCos documentation. For reference about
ISO main() startup read eCos reference:
http://ecos.sourceware.org/docs-latest/ref/c-and-math-library-overview.html
http://ecos.sourceware.org/docs-latest/ref/c-library-startup.html.


Sergei


> CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE   option is disabled. So, I can't set 
> the value (in the GUI of course). 
>
> When I use POSIX layer, pthread.cxx allocates a stack whether there is a  
> main() function, or not. The size of this stack is depending on  
> CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE and PTHREAD_STACK_MINIMUM.
>
> PTHREAD_STACK_MINIMUM is given, but I think  
> CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE  should be active even if there is a  
> POSIX compatibility layer added.
>
> Thank you!
> Gergely Szentirmai
>
> Sergei Gavrikov írta:
>> On Fri, Apr 10, 2009 at 08:03:29PM +0200, Szentirmai Gergely wrote:
>>   
>>> Hello
>>>
>>> I had to add POSIX compatibility to my project, because FAT support 
>>> is  depending on it. It's ok, but I don't need POSIX compat to create 
>>> a  thread, and call main(). It eats 8k from my SRAM, and that hurts 
>>> much!
>>>     
>>
>> Hm. POSIX compat or LINUX compat? It's possible do not include posix
>> package to buid eCos `fatfs1' test
>>
>> ecosconfig new <target>
>> ecosconfig add CYGPKG_LINUX_COMPAT
>> ecosconfig add CYGPKG_BLOCK_LIB
>> ecosconfig add fileio fatfs
>> ecosconfig tree
>> make -s
>> make -s -C fs/fat/current/ tests
>>
>> The fatfs1's size is
>>
>> arm-eabi-size install/tests/fs/fat/current/tests/fatfs1    text	   
>> data	    bss	    dec	    hex	filename
>>   48088	    956	  15148	  64192	   fac0	install/tests/fs/fat/current/tests/fatfs1
>>
>>
>>   
>>> As I see from the source pthread.cxx there is no upportunitiy to 
>>> disable  this feature.
>>>
>>> Would not be it usefull? Or there is a reason, why it is not 
>>> available.  As a secound option, I would make a 
>>> main_thread_stack_size option in  posix thread configuration in the 
>>> cdl.
>>>
>>>     
>>
>> If your main() will be just a paleholder, decrease it's stack. If you
>> import the below, for example, before to type 'ecosconfig tree'
>>
>> cdl_option CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE {
>>     user_value 128;
>> };
>>
>> you will decrease .bss. It's just an example! Unfortunately, AFAIK,
>> FATFS will suck in any case, you can think, I will decrease .bss, and
>> all will be okay, but FATFS sucks a heap too
>>
>> arm-eabi-nm install/tests/fs/fat/current/tests/fatfs1 | grep alloc
>>            ...
>> 68010aa4 T cyg_fd_alloc
>> 68010b1c T cyg_file_alloc
>> 68013dd0 D cygmem_memalloc_heaps
>> 6800cc94 T fatfs_node_alloc
>> 6800f9d0 T malloc
>>
>> Yet another "reserve" to decrease amount of used RAM is to decrease
>> CYGNUM_FILEIO_NFILE value.
>>
>>
>> Sergei
>>
>>   

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [ECOS] POSIX main thread
  2009-04-12 18:39     ` Sergei Gavrikov
@ 2009-04-13  9:46       ` Sergei Gavrikov
  2009-04-15  7:00         ` Szentirmai Gergely
  0 siblings, 1 reply; 6+ messages in thread
From: Sergei Gavrikov @ 2009-04-13  9:46 UTC (permalink / raw)
  To: Szentirmai Gergely; +Cc: ecos Discuss

On Sun, Apr 12, 2009 at 08:28:59PM +0300, Sergei Gavrikov wrote:
> Please, stop a top posting: http://en.wikipedia.org/wiki/Top_posting
> Here use: http://en.wikipedia.org/wiki/Top_posting#Bottom-posting
> 
> On Sun, Apr 12, 2009 at 05:21:49PM +0200, Szentirmai Gergely wrote:
> > Hello
> >
> > POSIX compatibility, not Linux compat. I'm not using the command line  
> > ecos config, rather than the configtool GUI. In the ISO C startup  
> 
> Szentirmai, I belive in that what anyone can do the same using eCos GUI
> (configtool) what anybody did get with `ecosconfig'. eCos documentation
> talks about.

Okay, there is no splash at `configtool' start as 'Read eCos Doc First',
See the "screenshots" the below (and you will understand why you find no
assistance (help) with configtool on the list). Let eCos veterans excuse
the below guide

configtool
  Build
    Templates
      ST STM3210E EVAL board
    OK

  Build
    Packages
      Available packages
        CRC support
          Add
        File IO
          Add
        Block cache and access library
          Add
        Linux compatiblility
          Add
        FAT Filesystem
          Add
      Use theses packages
        ISO environment startup/termination
          Remove
    OK 
    Resolve config?
      Continue

  File
    Save as
      fatfs
    OK

  Build
    Generate Build Tree

  Build
    Library

  Build
    Tests


$ arm-eabi-size fatfs_install/tests/fs/fat/v3_0/tests/fatfs1 
   text	   data	    bss	    dec	    hex	filename
  34036	    944	   6276	  41256	   a128	fatfs_install/tests/fs/fat/v3_0/tests/fatfs1

It was happiness that I had no need to guide you via a forest of the
pulled-down options :-)


Sergei


> I did show you in previous post that eCos FS_FAT is not depend on POSIX
> package. It requires CYGPKG_BLOCK_LIB package and this package depends
> on CYGPKG_LINUX_COMPAT (I guess on some compatible headers).
> 
> > section, I have found abelity to define the calling mode of main(), and  
> > the default stacksize. My coniguration is to call main() from  
> > cyg_user_start context. This way ecos does not allocate stack for  
> > starting main. This way, the
> 
> Is it so exactly? eCos iself stands up the main() thread (it is declared
> as a weak function). By default, it does nothing (returns immediately),
> if do not have own one. Even more, you can remove an eCos package
> CYGPKG_ISO_STARTUP from your configuration. Try to remove it. As I could
> understand you try to reduce any overhead from eCos+fatfs.
> 
> Just to demo (without the STACK_SIZE dances). I will use stm3210e target
> to finalize example: eCos+fatfs-main ("minus main"). Once again, I
> belive in that what you will be able to get it with `configtool' too
> (see what I add and see what I remove and do the same using GUI).
> 
> $ ecosconfig new stm3210e default
> $ ecosconfig add crc fileio CYGPKG_BLOCK_LIB CYGPKG_LINUX_COMPAT fatfs
> U CYGBLD_ISO_FNMATCH_HEADER, new inferred value <cyg/fileio/fnmatch.h>
> U CYGBLD_ISO_DIRENT_HEADER, new inferred value <cyg/fileio/dirent.h>
> U CYGBLD_ISO_OPEN_MAX_HEADER, new inferred value <cyg/fileio/limits.h>
> U CYGBLD_ISO_NAME_MAX_HEADER, new inferred value <cyg/fileio/limits.h>
> $ ecosconfig remove CYGPKG_LIBC_STARTUP
> $ ecosconfig check
> Target: stm3210e_eval
> Template: default
> Added:
>  CYGPKG_CRC
>  CYGPKG_IO_FILEIO
>  CYGPKG_BLOCK_LIB
>  CYGPKG_LINUX_COMPAT
>  CYGPKG_FS_FAT
> Removed:
>  CYGPKG_LIBC_STARTUP
> No conflicts
> 
> ...
> 
> $ make -s -C fs/fat/v3_0 tests
> $ arm-eabi-size install/tests/fs/fat/v3_0/tests/fatfs1
>     text   data	    bss	    dec	    hex	filename
>   34052	    944	   6276	  41272	   a138	install/tests/fs/fat/v3_0/tests/fatfs1
> 
> I checked that there are a lot of fatfs entries in the executable (it's
> too long list to paste here)
> 
> $ arm-eabi-nm install/tests/fs/fat/v3_0/tests/fatfs1 | grep fatfs
> ...
> 6800a734 T fatfs_write_data
> 6800b1fc T fatfs_write_dir_entry
> 
> $ arm-eabi-nm install/tests/fs/fat/v3_0/tests/fatfs1 | grep fatfs | wc -l
> 54
> 
> As you can see it was possible to get eCos+fatfs-main with an unbeat
> size. Try to get it with `configtool'. You have to get something I have
> got. There are menus to add/remove packages in `configtool'. And, it
> seems for me that you must read eCos documentation. For reference about
> ISO main() startup read eCos reference:
> http://ecos.sourceware.org/docs-latest/ref/c-and-math-library-overview.html
> http://ecos.sourceware.org/docs-latest/ref/c-library-startup.html.
> 
> 
> Sergei
> 
> 
> > CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE   option is disabled. So, I can't set 
> > the value (in the GUI of course). 
> >
> > When I use POSIX layer, pthread.cxx allocates a stack whether there is a  
> > main() function, or not. The size of this stack is depending on  
> > CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE and PTHREAD_STACK_MINIMUM.
> >
> > PTHREAD_STACK_MINIMUM is given, but I think  
> > CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE  should be active even if there is a  
> > POSIX compatibility layer added.
> >
> > Thank you!
> > Gergely Szentirmai
> >
> > Sergei Gavrikov írta:
> >> On Fri, Apr 10, 2009 at 08:03:29PM +0200, Szentirmai Gergely wrote:
> >>   
> >>> Hello
> >>>
> >>> I had to add POSIX compatibility to my project, because FAT support 
> >>> is  depending on it. It's ok, but I don't need POSIX compat to create 
> >>> a  thread, and call main(). It eats 8k from my SRAM, and that hurts 
> >>> much!
> >>>     
> >>
> >> Hm. POSIX compat or LINUX compat? It's possible do not include posix
> >> package to buid eCos `fatfs1' test
> >>
> >> ecosconfig new <target>
> >> ecosconfig add CYGPKG_LINUX_COMPAT
> >> ecosconfig add CYGPKG_BLOCK_LIB
> >> ecosconfig add fileio fatfs
> >> ecosconfig tree
> >> make -s
> >> make -s -C fs/fat/current/ tests
> >>
> >> The fatfs1's size is
> >>
> >> arm-eabi-size install/tests/fs/fat/current/tests/fatfs1    text	   
> >> data	    bss	    dec	    hex	filename
> >>   48088	    956	  15148	  64192	   fac0	install/tests/fs/fat/current/tests/fatfs1
> >>
> >>
> >>   
> >>> As I see from the source pthread.cxx there is no upportunitiy to 
> >>> disable  this feature.
> >>>
> >>> Would not be it usefull? Or there is a reason, why it is not 
> >>> available.  As a secound option, I would make a 
> >>> main_thread_stack_size option in  posix thread configuration in the 
> >>> cdl.
> >>>
> >>>     
> >>
> >> If your main() will be just a paleholder, decrease it's stack. If you
> >> import the below, for example, before to type 'ecosconfig tree'
> >>
> >> cdl_option CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE {
> >>     user_value 128;
> >> };
> >>
> >> you will decrease .bss. It's just an example! Unfortunately, AFAIK,
> >> FATFS will suck in any case, you can think, I will decrease .bss, and
> >> all will be okay, but FATFS sucks a heap too
> >>
> >> arm-eabi-nm install/tests/fs/fat/current/tests/fatfs1 | grep alloc
> >>            ...
> >> 68010aa4 T cyg_fd_alloc
> >> 68010b1c T cyg_file_alloc
> >> 68013dd0 D cygmem_memalloc_heaps
> >> 6800cc94 T fatfs_node_alloc
> >> 6800f9d0 T malloc
> >>
> >> Yet another "reserve" to decrease amount of used RAM is to decrease
> >> CYGNUM_FILEIO_NFILE value.
> >>
> >>
> >> Sergei
> >>
> >>   

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [ECOS] POSIX main thread
  2009-04-13  9:46       ` Sergei Gavrikov
@ 2009-04-15  7:00         ` Szentirmai Gergely
  0 siblings, 0 replies; 6+ messages in thread
From: Szentirmai Gergely @ 2009-04-15  7:00 UTC (permalink / raw)
  To: Sergei Gavrikov, eCos Discuss



Sergei Gavrikov írta:
> On Sun, Apr 12, 2009 at 08:28:59PM +0300, Sergei Gavrikov wrote:
>> Please, stop a top posting: http://en.wikipedia.org/wiki/Top_posting
>> Here use: http://en.wikipedia.org/wiki/Top_posting#Bottom-posting
>>
>> On Sun, Apr 12, 2009 at 05:21:49PM +0200, Szentirmai Gergely wrote:
>>> Hello
>>>
>>> POSIX compatibility, not Linux compat. I'm not using the command line  
>>> ecos config, rather than the configtool GUI. In the ISO C startup  
>> Szentirmai, I belive in that what anyone can do the same using eCos GUI
>> (configtool) what anybody did get with `ecosconfig'. eCos documentation
>> talks about.
> 
> Okay, there is no splash at `configtool' start as 'Read eCos Doc First',
> See the "screenshots" the below (and you will understand why you find no
> assistance (help) with configtool on the list). Let eCos veterans excuse
> the below guide
> 

My problem was not the usage of configtool, but thanks anyway, it lead 
me to the solution. I added fatfs to my existing ecos config, which 
previously had a POSIX compat layer, which changed the type headers in 
some package options. When I removed it, there were error during 
compilation, it did not find files in install/posix/ etc. (because the 
header options were changed previously). That's why I beleived that 
something is depending on POSIX.
I removed the user-values manually from my ecc file, and now it can be 
compiled without POSIX compat.

Thank you for your help, and your patience!
Gergely Szentirmai

> configtool
>   Build
>     Templates
>       ST STM3210E EVAL board
>     OK
> 
>   Build
>     Packages
>       Available packages
>         CRC support
>           Add
>         File IO
>           Add
>         Block cache and access library
>           Add
>         Linux compatiblility
>           Add
>         FAT Filesystem
>           Add
>       Use theses packages
>         ISO environment startup/termination
>           Remove
>     OK 
>     Resolve config?
>       Continue
> 
>   File
>     Save as
>       fatfs
>     OK
> 
>   Build
>     Generate Build Tree
> 
>   Build
>     Library
> 
>   Build
>     Tests
> 
> 
> $ arm-eabi-size fatfs_install/tests/fs/fat/v3_0/tests/fatfs1 
>    text	   data	    bss	    dec	    hex	filename
>   34036	    944	   6276	  41256	   a128	fatfs_install/tests/fs/fat/v3_0/tests/fatfs1
> 
> It was happiness that I had no need to guide you via a forest of the
> pulled-down options :-)
> 
> 
> Sergei
> 
> 
>> I did show you in previous post that eCos FS_FAT is not depend on POSIX
>> package. It requires CYGPKG_BLOCK_LIB package and this package depends
>> on CYGPKG_LINUX_COMPAT (I guess on some compatible headers).
>>
>>> section, I have found abelity to define the calling mode of main(), and  
>>> the default stacksize. My coniguration is to call main() from  
>>> cyg_user_start context. This way ecos does not allocate stack for  
>>> starting main. This way, the
>> Is it so exactly? eCos iself stands up the main() thread (it is declared
>> as a weak function). By default, it does nothing (returns immediately),
>> if do not have own one. Even more, you can remove an eCos package
>> CYGPKG_ISO_STARTUP from your configuration. Try to remove it. As I could
>> understand you try to reduce any overhead from eCos+fatfs.
>>
>> Just to demo (without the STACK_SIZE dances). I will use stm3210e target
>> to finalize example: eCos+fatfs-main ("minus main"). Once again, I
>> belive in that what you will be able to get it with `configtool' too
>> (see what I add and see what I remove and do the same using GUI).
>>
>> $ ecosconfig new stm3210e default
>> $ ecosconfig add crc fileio CYGPKG_BLOCK_LIB CYGPKG_LINUX_COMPAT fatfs
>> U CYGBLD_ISO_FNMATCH_HEADER, new inferred value <cyg/fileio/fnmatch.h>
>> U CYGBLD_ISO_DIRENT_HEADER, new inferred value <cyg/fileio/dirent.h>
>> U CYGBLD_ISO_OPEN_MAX_HEADER, new inferred value <cyg/fileio/limits.h>
>> U CYGBLD_ISO_NAME_MAX_HEADER, new inferred value <cyg/fileio/limits.h>
>> $ ecosconfig remove CYGPKG_LIBC_STARTUP
>> $ ecosconfig check
>> Target: stm3210e_eval
>> Template: default
>> Added:
>>  CYGPKG_CRC
>>  CYGPKG_IO_FILEIO
>>  CYGPKG_BLOCK_LIB
>>  CYGPKG_LINUX_COMPAT
>>  CYGPKG_FS_FAT
>> Removed:
>>  CYGPKG_LIBC_STARTUP
>> No conflicts
>>
>> ...
>>
>> $ make -s -C fs/fat/v3_0 tests
>> $ arm-eabi-size install/tests/fs/fat/v3_0/tests/fatfs1
>>     text   data	    bss	    dec	    hex	filename
>>   34052	    944	   6276	  41272	   a138	install/tests/fs/fat/v3_0/tests/fatfs1
>>
>> I checked that there are a lot of fatfs entries in the executable (it's
>> too long list to paste here)
>>
>> $ arm-eabi-nm install/tests/fs/fat/v3_0/tests/fatfs1 | grep fatfs
>> ...
>> 6800a734 T fatfs_write_data
>> 6800b1fc T fatfs_write_dir_entry
>>
>> $ arm-eabi-nm install/tests/fs/fat/v3_0/tests/fatfs1 | grep fatfs | wc -l
>> 54
>>
>> As you can see it was possible to get eCos+fatfs-main with an unbeat
>> size. Try to get it with `configtool'. You have to get something I have
>> got. There are menus to add/remove packages in `configtool'. And, it
>> seems for me that you must read eCos documentation. For reference about
>> ISO main() startup read eCos reference:
>> http://ecos.sourceware.org/docs-latest/ref/c-and-math-library-overview.html
>> http://ecos.sourceware.org/docs-latest/ref/c-library-startup.html.
>>
>>
>> Sergei
>>
>>
>>> CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE   option is disabled. So, I can't set 
>>> the value (in the GUI of course). 
>>>
>>> When I use POSIX layer, pthread.cxx allocates a stack whether there is a  
>>> main() function, or not. The size of this stack is depending on  
>>> CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE and PTHREAD_STACK_MINIMUM.
>>>
>>> PTHREAD_STACK_MINIMUM is given, but I think  
>>> CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE  should be active even if there is a  
>>> POSIX compatibility layer added.
>>>
>>> Thank you!
>>> Gergely Szentirmai
>>>
>>> Sergei Gavrikov írta:
>>>> On Fri, Apr 10, 2009 at 08:03:29PM +0200, Szentirmai Gergely wrote:
>>>>   
>>>>> Hello
>>>>>
>>>>> I had to add POSIX compatibility to my project, because FAT support 
>>>>> is  depending on it. It's ok, but I don't need POSIX compat to create 
>>>>> a  thread, and call main(). It eats 8k from my SRAM, and that hurts 
>>>>> much!
>>>>>     
>>>> Hm. POSIX compat or LINUX compat? It's possible do not include posix
>>>> package to buid eCos `fatfs1' test
>>>>
>>>> ecosconfig new <target>
>>>> ecosconfig add CYGPKG_LINUX_COMPAT
>>>> ecosconfig add CYGPKG_BLOCK_LIB
>>>> ecosconfig add fileio fatfs
>>>> ecosconfig tree
>>>> make -s
>>>> make -s -C fs/fat/current/ tests
>>>>
>>>> The fatfs1's size is
>>>>
>>>> arm-eabi-size install/tests/fs/fat/current/tests/fatfs1    text	   
>>>> data	    bss	    dec	    hex	filename
>>>>   48088	    956	  15148	  64192	   fac0	install/tests/fs/fat/current/tests/fatfs1
>>>>
>>>>
>>>>   
>>>>> As I see from the source pthread.cxx there is no upportunitiy to 
>>>>> disable  this feature.
>>>>>
>>>>> Would not be it usefull? Or there is a reason, why it is not 
>>>>> available.  As a secound option, I would make a 
>>>>> main_thread_stack_size option in  posix thread configuration in the 
>>>>> cdl.
>>>>>
>>>>>     
>>>> If your main() will be just a paleholder, decrease it's stack. If you
>>>> import the below, for example, before to type 'ecosconfig tree'
>>>>
>>>> cdl_option CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE {
>>>>     user_value 128;
>>>> };
>>>>
>>>> you will decrease .bss. It's just an example! Unfortunately, AFAIK,
>>>> FATFS will suck in any case, you can think, I will decrease .bss, and
>>>> all will be okay, but FATFS sucks a heap too
>>>>
>>>> arm-eabi-nm install/tests/fs/fat/current/tests/fatfs1 | grep alloc
>>>>            ...
>>>> 68010aa4 T cyg_fd_alloc
>>>> 68010b1c T cyg_file_alloc
>>>> 68013dd0 D cygmem_memalloc_heaps
>>>> 6800cc94 T fatfs_node_alloc
>>>> 6800f9d0 T malloc
>>>>
>>>> Yet another "reserve" to decrease amount of used RAM is to decrease
>>>> CYGNUM_FILEIO_NFILE value.
>>>>
>>>>
>>>> Sergei
>>>>
>>>>   
> 

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-04-14 20:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-10 20:51 [ECOS] POSIX main thread Szentirmai Gergely
2009-04-10 21:03 ` Sergei Gavrikov
2009-04-12 15:29   ` Szentirmai Gergely
2009-04-12 18:39     ` Sergei Gavrikov
2009-04-13  9:46       ` Sergei Gavrikov
2009-04-15  7:00         ` Szentirmai Gergely

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).