Hi!
We recently switched to NuttX as our primary RTOS for STM32, so I'm
more than willing to share some experiences we had.
Post by lispybear-/***@public.gmane.org [nuttx]- what is the approximate size of NuttX on Flash ROM & the memory footprint in RAM ?
We're successfully running NuttX on STM32F103RB with 20KiB of RAM.
That's enough for a somewhat complicated application (GPS + GSM
stacks, 6 threads running in the system), but we had to specifically
design the app in a way that would keep the stack hogs in a single
2KiB-stack thread. We have just 500 bytes of free memory right now; we
could probably carve out 1-2KiB more if we needed but that's
approximately where the limit is. Remember that thread memory usage is
not just stack; the TCBs are quite big too, especially if you need
lots of UNIX features (we did).
Note, also, that this is without any flash filesystem. Last time I
tried SmartFS I couldn't get it running on the 20KiB part without
disabling at least one background task. That's precisely we switched
to a 64KiB part in the latest hardware revision: to stop worrying
about constant shortage of RAM.
Flash-wise, you could fit in 64KiB if you disabled some features but
for serious development 128KiB is the minimal size I find comfortable.
A small-ish hardware test image is 56KiB for us; the main app image is
approximately 90KiB. Again, this is with lots of features enabled,
floating point support, date/time utils, etc. In the real life there's
rarely any point in optimizing the image size as RAM is pretty much
always your primary concern.
Post by lispybear-/***@public.gmane.org [nuttx]- Is the libc compliance level good (excellent as stated in the wiki?)
It's excellent compared to every other RTOS I tried, even though
things do break sometimes. Some functions are missing, a few are
behaving wacky, but generally I'm extremely impressed with the vast
amounts of UNIX goodies that NuttX has. Even if something's missing or
broken, often it's just a matter of enabling it in .config; in other
situations you can often fix it yourself and submit the patch here.
Gregory is extremely responsive when it comes to integrating bugfixes.
Post by lispybear-/***@public.gmane.org [nuttx]By watchers I mean capability to watch for file changes & react accordingly.
Using the C wording, I expect to be able to use sys/select or pselect ?
Job scheduling as far as I know relies on timers & signals.
NuttX is like your typical UNIX system, but with some justified
exceptions: for example, you can't fork() or SIGKILL on MMU-less
systems. Other than that, you can expect your typical function to Just
Be There. Pthreads, select()/poll() and timers - it's just a matter of
enabling them in "make menuconfig".
To put it in some perspective: My primary documentation when
developing NuttX apps are BSD manpages. They're enough 95% of the
time. NuttX docs are only ever really needed when doing something
OS-specific or writing a new BSP.
--
Kosma Moczek
http://www.kosma.pl/
------------------------------------
Posted by: Kosma Moczek <kosma-OqCRPfiDy+***@public.gmane.org>
------------------------------------
------------------------------------
Yahoo Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/nuttx/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/nuttx/join
(Yahoo! ID required)
<*> To change settings via email:
nuttx-digest-***@public.gmane.org
nuttx-fullfeatured-***@public.gmane.org
<*> To unsubscribe from this group, send an email to:
nuttx-unsubscribe-***@public.gmane.org
<*> Your use of Yahoo Groups is subject to:
https://info.yahoo.com/legal/us/yahoo/utos/terms/