On the other hand AVR is still very popular and widely available so it
could be NuttX ostest/benchmark for 8-bit platforms.. I have some
small/medium/big AVR MCUs somewhere around so I could find them and
help in testing/verification :-)

--
CeDeROM, SQ7MHZ, http://www.tomek.cedro.info

On Fri, Dec 26, 2025 at 12:06 PM <[email protected]> wrote:
>
> With avr-gcc, int is int16_t. Numeric literals are treated as int so
> every compile-time calculation larger than 16 bits gets truncated unless
> one of the operands is marked as longer type. tv_nsec is big enough to
> fit the value (sizeof(long) == 4) but the assignment to it only happens
> after the 16 bit truncation. Timing constants section in
> include/nuttx/clock.h is an example of what's needed to make such
> assignments to behave correctly.
>
> As for the test suite - it would be nice to have of course but
> considering that (I guess) there are not very many people who use NuttX
> on AVR, the time spent on making that happen would probably be better
> used on something with larger reach.
>
> (On a related note - there are other similar pitfalls when it comes to
> NuttX on AVR and probably on other 8 bit MCUs in general. For example,
> any code that assumes that arithmetical/logical operations on int
> operand are atomic is faulty in this setting. You can see commit
> a3f8b55143ad for possible implications of this. As far as I can see,
> struct circbuf_s has similar issue and I wonder if something like this
> can be found in core code like the scheduler. Because if so, then having
> tests is nice but not that useful since they should always fail under
> the circumstances.)
>
> On 2025-12-25 18:33, Matteo Golin wrote:
> > I wonder if the 8 bit architectures use smaller integer sizes for
> > things
> > like the timespec structs. I wonder if there are any other parts of
> > NuttX
> > that would complain during compilation seeing that ostest seems to make
> > the
> > assumption that tv_nsec is big enough for that operation. I guess its
> > infrequent that things are tested on 8-bit MCUs now.
> >
> > As someone who is regularly developing for AVR, do you think it would
> > be a
> > benefit to have a test suite that is able to run fully on AVR itself?
> > Even
> > if only a couple tests can be included in an image at once due to flash
> > size limits?
> >
> > Merry Christmas,
> > Matteo
> >
> > On Thu, Dec 25, 2025 at 8:18 AM <[email protected]> wrote:
> >
> >> I was wondering if ostest is even supposed to work on AVR so I gave it
> >> a
> >> try... it didn't do much, the only result I got when I ran ostest from
> >> NSH was:
> >>
> >> stdio_test: write fd=1
> >> stdio_test: write fd=2
> >>
> >> And that's it.
> >>
> >> (There may be something wrong with printf when the application gets
> >> executed through NSH though - just noticed that my other testing apps
> >> also print nothing when executed from NSH while being able to printf
> >> when executed as init entrypoint. Will try to update apps to something
> >> more recent but if anyone has any idea what may be causing this, it
> >> would be appreciated.)
> >>
> >> Anyway, the compilation also throws a lot of warnings, for example
> >>
> >> semtimed.c:87:32: warning: integer overflow in expression of type
> >> ‘int’
> >> results in ‘16960’ [-Woverflow]
> >>     87 |            tp->tv_nsec >= 1000 * 1000 * 1000)
> >>
> >> and there are also warnings regarding to size mismatch in
> >> pointer/integer conversion.
> >>
> >> So it may be that ostest doesn't work well for AVR (and probably for
> >> other 8 bit MCUs) already. It also already barely fits the flash of
> >> the
> >> largest AVR DA chip.
> >>
> >> (Not suggesting to make it even more faulty, just mentioning it FYI.)
> >>
> >> On 2025-12-22 13:35, Alan C. Assis wrote:
> >> > Is it too complicated to rewrite the cmocka tests in Unity?
> >> >
> >> > If cmoka is not feasible for small microcontrollers, like AVRs and
> >> > others,
> >> > our test coverage will be faulty.
> >> >
> >> > BR,
> >> >
> >> > Alan
> >> >
> >> > On Mon, Dec 22, 2025 at 6:14 AM raiden00pl <[email protected]>
> >> > wrote:
> >> >
> >> >> I'm a fan of Unity and have been using it in my projects for years,
> >> >> but I
> >> >> think
> >> >> we should stick with one testing framework. Currently, Cmocka is used
> >> >> in
> >> >> nuttx-apps, and we should stick with it. The only question is how well
> >> >> Cmocka
> >> >> is suitable for running on small systems? Will ostest still be able to
> >> >> run
> >> >> on small MCUs?
> >> >> With Unity this would be quite likely, so maybe an exception for Unity
> >> >> and
> >> >> ostest would
> >> >> be acceptable, but using it for other test cases will only cause
> >> >> chaos.
> >> >>
> >> >> pon., 22 gru 2025 o 10:05 Guiding Li <[email protected]> napisał(a):
> >> >>
> >> >> > Hi Matteo,
> >> >> >
> >> >> > Good idea !
> >> >> >
> >> >> > But it is best to stick with a single testing framework. Currently,
> >> many
> >> >> > test cases are using cmocka, so I suggest reusing cmocka for
> >> consistency.
> >> >> >
> >> >> > ostest is a minimal basic test suite, typically used for CT
> >> (continuous
> >> >> > testing) of each patch.
> >> >> > If we move ostest to cmocka, it would make ostest dependent on a
> >> specific
> >> >> > framework before it can be run.
> >> >> > And It may increase the code size, which is not very friendly for
> >> >> > configurations with small flash memory.
> >> >> >
> >> >> > As Greg mentioned: the answer depends on a tradeoff between effort and
> >> >> test
> >> >> > coverage.
> >> >> >
> >> >> > We need to clarify whether we define ostest as a lightweight,
> >> >> ready-to-run
> >> >> > test set for quick verification, or as part of the full test suite.
> >> >> >
> >> >> >
> >> >> > The follow is my compiling for cmocka:
> >> >> >
> >> >> > *ligd@BAI:~/platform/mainline/nuttx$ ./tools/configure.sh sim:citest
> >> >> -j8*
> >> >> >   Copy files
> >> >> >   Select CONFIG_HOST_LINUX=y
> >> >> >   Refreshing...
> >> >> > CP: arch/dummy/Kconfig to
> >> >> > /home/ligd/platform/mainline/nuttx/arch/dummy/dummy_kconfig
> >> >> > CP: boards/dummy/Kconfig to
> >> >> > /home/ligd/platform/mainline/nuttx/boards/dummy/dummy_kconfig
> >> >> > LN: include/arch to arch/sim/include
> >> >> > LN: drivers/platform to
> >> /home/ligd/platform/mainline/nuttx/drivers/dummy
> >> >> > LN: arch/sim/src/chip to
> >> >> > /home/ligd/platform/mainline/nuttx/arch/sim/src/sim
> >> >> > LN: arch/sim/src/board to
> >> >> > /home/ligd/platform/mainline/nuttx/boards/sim/sim/sim/src
> >> >> > LN: include/arch/board to
> >> >> > /home/ligd/platform/mainline/nuttx/boards/sim/sim/sim/include
> >> >> > LN: include/arch/chip to
> >> >> > /home/ligd/platform/mainline/nuttx/arch/sim/include/sim
> >> >> > LN: platform/board to /home/ligd/platform/mainline/apps/platform/dummy
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/audioutils
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/benchmarks
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/boot
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/canutils
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/crypto
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/database
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/examples/rust
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/examples/sotest
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/examples/module
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/examples/mcuboot
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/examples
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/fsutils
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/games
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/graphics
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/industry
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/inertial
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/interpreters/luamodules
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/interpreters
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/logging
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/lte
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/math
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/mlearning
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/netutils
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/sdr
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/system
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/tee
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/testing/drivers
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/testing/sched
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/testing/fs
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/testing/mm
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/testing/libc
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/testing/arch
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/testing/cxx
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/testing
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/videoutils
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/wireless/bluetooth
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/wireless/ieee802154
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps/wireless
> >> >> > mkkconfig in /home/ligd/platform/mainline/apps
> >> >> > Loaded configuration '.config'
> >> >> > Configuration saved to '.config'
> >> >> > ligd@BAI:~/platform/mainline/nuttx$
> >> >> > *ligd@BAI:~/platform/mainline/nuttx$ make*
> >> >> > Create version.h
> >> >> > Downloading: libcxx-17.0.6.src.tar.xz LN: platform/board to
> >> >> > /home/ligd/platform/mainline/apps/platform/dummy
> >> >> > Downloading: v1.46.0.zip
> >> >> > ...
> >> >> > patching file
> >> >> >
> >> >> >
> >> >>
> >> testcases/open_posix_testsuite/conformance/interfaces/pthread_sigmask/18-1.c
> >> >> > Hunk #1 succeeded at 160 with fuzz 2 (offset -8 lines).
> >> >> >
> >> >> > CP:  /home/ligd/platform/mainline/nuttx/include/nuttx/config.h
> >> >> > CP:  /home/ligd/platform/mainline/nuttx/include/nuttx/fs/hostfs.h
> >> >> > LD:  nuttx
> >> >> > Pac SIM with dynamic libs..
> >> >> > '/lib/x86_64-linux-gnu/libz.so.1' -> 'sim-pac/libs/libz.so.1'
> >> >> > '/lib/x86_64-linux-gnu/libstdc++.so.6' ->
> >> 'sim-pac/libs/libstdc++.so.6'
> >> >> > '/lib/x86_64-linux-gnu/libc.so.6' -> 'sim-pac/libs/libc.so.6'
> >> >> > '/lib/x86_64-linux-gnu/libm.so.6' -> 'sim-pac/libs/libm.so.6'
> >> >> > '/lib/x86_64-linux-gnu/libgcc_s.so.1' -> 'sim-pac/libs/libgcc_s.so.1'
> >> >> > '/lib64/ld-linux-x86-64.so.2' -> 'sim-pac/ld-linux-x86-64.so.2'
> >> >> > SIM elf with dynamic libs archive in nuttx.tgz
> >> >> > ligd@BAI:~/platform/mainline/nuttx$
> >> >> > ligd@BAI:~/platform/mainline/nuttx$
> >> >> > ligd@BAI:~/platform/mainline/nuttx$
> >> >> > *ligd@BAI:~/platform/mainline/nuttx$ ./nuttx *
> >> >> > CHelloWorld: Constructor: mSecret=42
> >> >> > nsh: init: open failed: 2
> >> >> >
> >> >> > NuttShell (NSH) NuttX-12.11.0
> >> >> > MOTD: username=admin password=Administrator
> >> >> > nsh>
> >> >> > nsh> help
> >> >> > help usage:  help [-v] [<cmd>]
> >> >> >
> >> >> >     .           df          ifconfig    mkfifo      readlink    umount
> >> >> >     [           dmesg       ifdown      mkrd        rm          unset
> >> >> >     ?           echo        ifup        mount       rmdir       uptime
> >> >> >     alias       env         insmod      mv          rmmod       usleep
> >> >> >     unalias     exec        kill        nslookup    set         watch
> >> >> >     basename    exit        pkill       pidof       sleep       xd
> >> >> >     break       expr        losetup     pmconfig    source      wait
> >> >> >     cat         false       ln          poweroff    test
> >> >> >     cd          fdinfo      ls          quit        time
> >> >> >     cp          free        lsmod       printf      true
> >> >> >     cmp         help        mkdir       ps          truncate
> >> >> >     dirname     hexdump     mkfatfs     pwd         uname
> >> >> >
> >> >> > Builtin Apps:
> >> >> >     cmocka
> >> >> >     cmocka_driver_block
> >> >> >     cmocka_driver_gpio
> >> >> >     cmocka_driver_pm
> >> >> >     cmocka_driver_pm_runtime
> >> >> >     cmocka_driver_regulator
> >> >> >
> >> >> > Matteo Golin <[email protected]> 于2025年12月22日周一 10:15写道:
> >> >> >
> >> >> > > I think so. Best to leave OS test alone and slowly replace it with a
> >> >> new
> >> >> > > tool that has improvements. The only reason I can see to modify OS
> >> test
> >> >> > now
> >> >> > > would just be to have clearer output about what passed/failed.
> >> >> > >
> >> >> > > I'll come up with an improved proof of concept for a new tool to
> >> share
> >> >> in
> >> >> > > the next few days.
> >> >> > >
> >> >> > > Matteo
> >> >> > >
> >> >> > > On Sun, Dec 21, 2025, 9:13 PM Tomek CEDRO <[email protected]> wrote:
> >> >> > >
> >> >> > > > Small steps with measurable results may be the best approach
> >> here, to
> >> >> > > > create some new solution next to existing ostest but not
> >> replacing it
> >> >> > > > until ready? :-)
> >> >> > > >
> >> >> > > > --
> >> >> > > > CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
> >> >> > > >
> >> >> > > > On Mon, Dec 22, 2025 at 3:06 AM Matteo Golin <
> >> [email protected]
> >> >> >
> >> >> > > > wrote:
> >> >> > > > >
> >> >> > > > > I agree, I think it would take a long time to have proper
> >> coverage
> >> >> of
> >> >> > > > NuttX
> >> >> > > > > as a whole. Perhaps even impossible, since Unity is more of a
> >> unit
> >> >> > > > testing
> >> >> > > > > framework and thus there are definitely test cases for NuttX
> >> that
> >> >> > would
> >> >> > > > be
> >> >> > > > > outside of its realm of "applicability". There is still a need
> >> for
> >> >> a
> >> >> > > > > variety of testing applications and bench-marking applications
> >> for
> >> >> > > those
> >> >> > > > > scenarios.
> >> >> > > > >
> >> >> > > > > That makes sense, prerequisites would need to be considered. I
> >> >> think
> >> >> > > > > targeting the low-hanging fruit of unit-testable code would be
> >> easy
> >> >> > in
> >> >> > > > that
> >> >> > > > > case, since prerequisites are mostly encoded in the Kconfig
> >> >> > definitions
> >> >> > > > > existing or not for features to be tested. Any complex behaviour
> >> >> > > > > (interrupts, multi-threading, etc.) might be out of the realm of
> >> >> > what's
> >> >> > > > > testable by Unity in the first place. We'll always have OS test
> >> in
> >> >> > that
> >> >> > > > > case, but maybe then it's better to do what Alan suggested and
> >> at
> >> >> > least
> >> >> > > > > make its output more clear in the meantime. I suppose RTOS
> >> testing
> >> >> > is a
> >> >> > > > > whole field in itself.
> >> >> > > > >
> >> >> > > > > On Sun, Dec 21, 2025 at 8:40 PM Gregory Nutt <
> >> [email protected]>
> >> >> > > > wrote:
> >> >> > > > >
> >> >> > > > > > I think that the answer depends on a tradeoff between effort
> >> and
> >> >> > test
> >> >> > > > > > coverage.  I could imagine that a proper job could be
> >> man-years
> >> >> of
> >> >> > > > effort.
> >> >> > > > > >
> >> >> > > > > > My only concern with a re-design is to be certain that tests
> >> are
> >> >> > > > > > arranged so that the prerequisites of later test are tested
> >> >> first.
> >> >> > > If
> >> >> > > > > > tests are grouped by, for example, functional area, then
> >> failures
> >> >> > can
> >> >> > > > be
> >> >> > > > > > difficult to understand if there is a failure in an unverified
> >> >> test
> >> >> > > > > > prerequisite.
> >> >> > > > > >
> >> >> > > > > > Some of the "tests" are bogus and only exist to provide some
> >> >> > minimum
> >> >> > > > > > confidence that we have the functionality to run the test.
> >> For
> >> >> > > > > > example:  Can I start tasks?  Can I pass parameters? Can I
> >> >> survive
> >> >> > a
> >> >> > > > > > context switch.  Some of the tests were intended only to
> >> support
> >> >> > > debug.
> >> >> > > > > > Some were created only to track down specific bugs.
> >> >> > > > > >
> >> >> > > > > > On 12/21/25 18:39, Matteo Golin wrote:
> >> >> > > > > > > LTS being the Long-Term-Stable release of NuttX?
> >> >> > > > > > >
> >> >> > > > > > > I'm starting to think that it would be best to create new
> >> suite
> >> >> > of
> >> >> > > > tests
> >> >> > > > > > > using Unity, using what's in OS Test as a basis and then
> >> >> > expanding
> >> >> > > it
> >> >> > > > > > > further. Greg has pointed out that OS test is not intended
> >> to
> >> >> be
> >> >> > a
> >> >> > > > > > complete
> >> >> > > > > > > test, so maybe a more solid testing framework base in a new
> >> >> form
> >> >> > > > would be
> >> >> > > > > > > in order. At that point it would also be good to document
> >> and
> >> >> > > educate
> >> >> > > > > > users
> >> >> > > > > > > about other test options, since OS test is a current
> >> favourite
> >> >> > for
> >> >> > > > > > showing
> >> >> > > > > > > PRs haven't broken anything. Maybe that's not the best
> >> choice
> >> >> > > anymore
> >> >> > > > > > with
> >> >> > > > > > > this information.
> >> >> > > > > > >
> >> >> > > > > > > I don't want to re-invent the wheel of what's already in
> >> >> > > `testsuite`,
> >> >> > > > > > but I
> >> >> > > > > > > think Unity might end up being lighter-weight in the long
> >> run?
> >> >> > And
> >> >> > > > it is
> >> >> > > > > > > also not a Xiaomi owned/maintained framework so it may
> >> receive
> >> >> > > better
> >> >> > > > > > > external support (i.e. more users rely on it?). I tried to
> >> >> > compile
> >> >> > > > the
> >> >> > > > > > > sim:citest configuration to run the testsuite example and
> >> see
> >> >> > what
> >> >> > > > it was
> >> >> > > > > > > like, but I was met with a long list of C++ compilation
> >> errors
> >> >> > that
> >> >> > > > I'd
> >> >> > > > > > > rather not deal with. There also seems to be zero docs
> >> about it
> >> >> > or
> >> >> > > > cmocka
> >> >> > > > > > > in our NuttX docs at the moment.
> >> >> > > > > > >
> >> >> > > > > > > What do you think? Start a Unity test suite, add some
> >> switches
> >> >> to
> >> >> > > > choose
> >> >> > > > > > > which test cases get compiled into the binary, open for
> >> >> > extensions
> >> >> > > by
> >> >> > > > > > users
> >> >> > > > > > > who know more about different subsystems? This way we can
> >> keep
> >> >> OS
> >> >> > > > test
> >> >> > > > > > how
> >> >> > > > > > > it is for a quick, low-resource sanity check of "board
> >> bringup"
> >> >> > > while
> >> >> > > > > > > having a dedicated testing application for patches? Someone
> >> >> > > changing
> >> >> > > > file
> >> >> > > > > > > system stuff can just compile to include file system test
> >> cases
> >> >> > and
> >> >> > > > run
> >> >> > > > > > > that suite only as proof that their PR works. The output is
> >> >> > really
> >> >> > > > easy
> >> >> > > > > > to
> >> >> > > > > > > glance at to determine pass/fail results.
> >> >> > > > > > >
> >> >> > > > > > > Anyways, here's my draft demonstrating how Unity works with
> >> the
> >> >> > FPU
> >> >> > > > test
> >> >> > > > > > > suite from OS test:
> >> >> > https://github.com/apache/nuttx-apps/pull/3259
> >> >> > > > > > >
> >> >> > > > > > > Matteo
> >> >> > > > > > >
> >> >> > > > > > > On Sun, Dec 21, 2025 at 7:13 PM Tomek CEDRO <
> >> [email protected]>
> >> >> > > > wrote:
> >> >> > > > > > >
> >> >> > > > > > >> On Mon, Dec 22, 2025 at 1:02 AM Gregory Nutt <
> >> >> > [email protected]
> >> >> > > >
> >> >> > > > > > wrote:
> >> >> > > > > > >>> (..)
> >> >> > > > > > >>> Starting with bits and pieces of something like the LTS
> >> might
> >> >> > > make
> >> >> > > > more
> >> >> > > > > > >>> sense other than its licensing problems.  Since it would
> >> >> never
> >> >> > be
> >> >> > > > > > >>> included in a distributed binary, the licensing really
> >> should
> >> >> > not
> >> >> > > > > > matter
> >> >> > > > > > >>> much in practice.
> >> >> > > > > > >> Unless its GPL and some company would like to have their
> >> own
> >> >> > > > internal
> >> >> > > > > > >> bits and pieces.. luckily its MIT and the whole thing is
> >> >> > > open-source
> >> >> > > > > > >> anyways :-)
> >> >> > > > > > >>
> >> >> > > > > > >> Yes we had many discussions about the LTS and this could be
> >> >> > great
> >> >> > > > start!
> >> >> > > > > > >> :-)
> >> >> > > > > > >>
> >> >> > > > > > >> --
> >> >> > > > > > >> CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
> >> >> > > > > > >>
> >> >> > > > > >
> >> >> > > >
> >> >> > >
> >> >> >
> >> >>
> >>

Reply via email to