NuttX is an open source and real-time embedded operating system (RTOS).
NuttX has a small footprint that is usable in micro-controller environments. It is fully scalable from tiny (8-bit) to moderate embedded (32-bit) systems.
It also aims to be fully compliant to standards, to be fully real time, and to be totally open.
Here are some key features of "NuttX":
· Small Footprint
· Rich Feature OS Set
· Highly Scalable
· Standards Compliance
· Totally Open
· Non-restrictive BSD license
What's New in This Release: [ read full changelog ]
· arch/arm/src/stm32: Support for STM32F100 high density chips added by Freddie Chopin.
· configs/stm32f100_generic: Support for generic STM32F100RC board contributed by Freddie Chopin.
· arch/arm/src/stm32_otgfsdev.c: Partial fix from Petteri Aimonen.
· *drivers/lcd/ug-2864ambag01.c and `include/nuttx/lcd/ug_2864ambag01.h: LCD driver for the Univision OLED of the same name (untested on initial check-in).
· configs/stm32f4discovery/nxlines: Configure to use mconf/Kconfig tool.
· configs/stm32f4discovery/src/up_ug2864ambag01.c: Board-specific initialization for UG-2864AMBAG01 OLED connecte to STM32F4Disovery.
· libxx/libxx_stdthrow.cxx: Exception stubs from Petteri Aimonen.
· configs/stm32f4discovery/src/up_ug2864ambag01.c: Driver has been verified on the STM32F4Discovery platform. Some tuning of the configuration could improve the presentation. Lower resolution displays are also more subject to the "fat, flat line bug" that I need to fix someday. See http://www.nuttx.org/doku.php?id=wiki:graphics:nxgraphics for a description of the fat, flat line bug.
· libc: Renamed nuttx/lib to nuttx/libc to make space for a true lib/ directory that will be forthcoming. Also rename libraries: liblib.a -> libc.a, libulib.a -> libuc.a, libklib.a -> libkc.a, liblibxx.a -> libcxx.a. (I will probably, eventually rename libxx to libcxx for consistency)
· Makefile, lib/: A new, empty directory that will hold generated libraries. This simplifies the library patch calculations and lets me get rid of some bash logic. The change is functional, but only partially complete; additional logic is needed in the arch/*/src/Makefile's as well. Right now that logic generate multiple library paths, all pointing to the lib/ directory.
· arch/*/src/Makefile: Now uses only the libraries in lib/ Replace bash fragments that test for board/Makefile.
· Makefile.win: The beginnings of a Windows-native build. This is just the beginning and not yet ready for prime time use.
· configs/stm32f4discovery/winbuild: This is a version of the standard NuttX OS test, but configured to build natively on Windows. Its only real purpose is to very the native Windows build logic.
· tools/mkdeps.bat and tools/mkdeps.c: mkdeps.bat is a failed attempt to leverage mkdeps.sh to CMD.exe. It fails because the are certain critical CFLAGvalues that cannot be passed on the CMD.exe command line (like '='). mkdeps.c is a work in progress that will, hopefully, replace both mkdeps.sh and mkdeps.bat.
· tools/Config.mk: Centralize the definition of the script that will be used to generated header file include paths for the compiler. This needs to be centralized in order to support the Windows native build.
· tools/incdir.bat: A replacement for tools/incdir.sh for use with the the Windows native build.
· Makefile.unix: The existing top-level Makefile has been renamed Makefile.unix.
· Makefile: This is a new top-level Makefile that just includes either Makefile.unix or Makefile.win
· configs/stm3240g-eval/src: Qencoder fixes from Ryan Sundberg.
· arch/arm/src/stm32/stm32_qencoder.c: TIM3 bug fix from Ryan Sundberg.
· tools/mkromfsimg.sh: Correct typo in an error message (Ryan Sundberg)
· arch/*/src/Makefile: Remove tftboot install and creation of System.map for Windows native build. The first is a necessary change, the second just needs re-implemented.
· configs/mirtoo: Update Mirtoo pin definitions for Release 2. Provided by Konstantin Dimitrov.
· Fixed an uninitialized variable in the file system that can cause assertions if DEBUG is on (contributed by Lorenz Meier).
· Config.mk: Defined DELIM to be either / or \, depending upon CONFIG_WINDOWS_NATIVE. This will allow me to eliminate a lot of conditional logic elsewhere.
· nuttx/graphics: One a mouse button is pressed, continue to report all mouse button events to the first window that received the the initial button down event, even if the mouse attempts to drag outside the window. From Petteri Aimonen.
· nuttx/graphics/nxmu/nx_block.c: One more fix to the NX block message logic from Petteri Aimonen.
· include/nuttx/wqueue.h: Some basic definitions to support a user-space work queue (someday in the future).
· graphics/nxmu: Add semaphores so buffers messages that send buffers will block until the buffer data has been acted upon.
· graphics/nxmw: Extended the blocked messages to cover mouse movement and redraw events. These will also cause problems if sent to a window while it is closing.
· arch/several: Change UARTs are enabled for i.MX, LM3S, ez80, and M16C to match how they are enabled for other architectures.
· configs/ez80f910200kitg: Convert to use mconf configuration.
· sched/pause.c: Implements the POSIX pause() function.
· ez80: Lots of changes to ez80 configurations and build logic as I struggle to get a clean Windows build (still not working).
· configs/cloudctrl: Darcy Gong's CloudController board. This is a small network relay development board. Based on the Shenzhou IV development board design. It is uses the STM32F107VC MCU.
· arch/arm/src/stm32_serial.c and stm32_lowputc.c: Added optional RS-485 direction bit control. From Freddie Chopin.
· Lots of build files: ARMv7-M and MIPS32 Make.defs now include a common Toolchain.defs file that can be used to manage toolchains in a more configurable way. Contributed by Mike Smith
· configs/stm32f4discovery/winbuild and configs/cloudctrl: Adapted to use Mike's Toolchain.defs.
· tools/configure.sh: Adapted to handle paths and setenv.bat files correctly for native Windows builds.
· More of build files: AVR and AVR32 Make.defs now include a common Toolchain.defs file that can be used to manage toolchains in a more configurable way. Contributed by Mike Smith
· tools/incdir.sh and incdir.bat: Add -s option to generate system header file paths.
· nuttx/arch/arm/src/arm/Toolchain.defs: Add support for more ARM toolchains (from Mike Smith).
· arch/arm/src/stm32/stm32f40xxx_rcc.c: Enabled FLASH prefetch (from Petteri Aimonen).
· graphics/nxtk/nxtk_filltrapwindow.c: Correct an offset problem (from Peterri Aimonen).
· graphics/nxglib/nxglib_splitline.c: Fix error in drawing of near horizontal lines (from Peterri Aimonen).
· sched/task_exithook.c: Missing right bracket with certain conditional compilation (thanks James Goppert).
· arch/arm/srch/stm32/stm32_otgfshost.c: Replace timeout handling; use system tick instead of frame counter. The frame counter gets reset to zero at 0x3fff making it error prone.
· arch/arm/src/stm32/stm32f20xx_rcc.c and stm32f40xx_rcc.c: Added option CONFIG_STM32_FLASH_PREFETCH. FLASH prefetch will now only be enabled if this option is selected.
· confgs/ez80f910200zco/ostest: Now uses Kconfig/mconf configuration tool. Updated to build in native Windows environment. Other ez80f910200zco build scripts also updated.
· configs/z8f64200100kit/ostest: Update to same level as ez80 configurations.
· nuttx/configs/z8f64200100kit/scripts/setenv.bat: Add support for native Windows build.
· nuttx/arch/arm/src/lpc17xx/lpc17_i2c.c: Resources not being released when I2C is uninitialized.
· cloudctrl/src/up_chipid.c and shenzhou/src/up_chipid.c: Add functions to get chip ID. Contributed by Darcy Gong. These should not be board-dependent, but should be in arch/arm/src/stm32 where they can be used from any board.
· sched/work_thread.c: Fix backward conditional compilation. This might has caused a memory leak. From Freddie Chopin.
· configs//Make.defs: Fix typo -wstrict-prototypes should be -Wstrict-prototypes (From Denis Carilki).
· arch/arm/src/calapyso/calypso_keypad.c: Add Calypso keypad driver. From Denis Carilki.
· z8encore000zco/ostest and z8f64200100kit/ostest: Converted to use Kconfig/mconf configuration tool.
· arch/arm/src/armv7-m/up_exception.S: Missing curly braces for push/pop. From Freddie Chopin.
· z8encore000zco/ostest and z8f64200100kit/ostest: Can now be modified to support the Windows native builds (see corresponding README.txt files).
· configs/z16f2800100zcog: All configurations updated to use the ZDS-II 5.0.1 toolchain.
· *configs/z16f2800100zcog - All configurations updated to useKconfig/mconf` configuration tools.
· configs/z16f2800100zcog/ostest: Now supports a native Windows build (other ZNEO configs may also support the native build, but this has not been verfiied).
· include/nuttx/input/keypad.h, arch/arm/src/calypso/calypso_keypad.c, and configs/compal_e99/nsh_highram: First cut at a standard keypad interface definition. Contributed by Denis Carikli.
· libc/stdlib/lib_rand.c: Always add one to result congruential generators to avoid the value zero. Suggested by Freddie Chopin.
· tools/b16.c: Fixed precision math conversion utility.
· graphics/nxglib/nxglib_splitline.c: Fix the "fat, flat line bug"
· arch/z80/src/*/Toolchain.defs: Add dummy Toolchain.defs files for the z80 family.
· configs/z80sim/ostest: Converted to build with the Kconfig/mconf tool. Current configuration failed to build for me (Ubuntu 12.10, SDCC 3.2.0 pre-built for Linux) due to a glibc memory corruptionerror in SDCC.
· configs/z80sim/ostest: Default is now the Windows native build. See configs/z80sim/README.txt for instructions to convert back to a Linux or Cygwin build.
· arch/z80/src/Makefile.sdccw: Renamed makefiles with extensions zdiil, zdiiw, sdccl, and sdccw for the ZDS-II vs SDCC compilers and for the POSIX vs Windows native builds.
· nuttx/drivers/mtd/ftl.c: Fix for the flash translation layer. Short unaligned writes were buggy. From Petteri Aimonen.
· nuttx/libc/math/lib_round*.c: Add rounding functions to the math library. Contributed by Petteri Aimonen.
· include/cxx/cstdlib: Add stroul(). From Petteri Aimonen.
· arch/*/include/limits.h: Change signed minimum values from, for example, (-128) to (-127 - 1) to avoid overflows under certain conditions. From Peterri Aimonen.
· graphics/nxtk/nxtk_subwindowmove.c: Previously it was very difficult to do e.g. "scroll by dx, dy". When given the full window area, nxtk_subwindowmove() would clip the offset always to 0,0. It makes more sense for it to clip the source area and not modify the offset. From Petteri Aimonen.
· graphics/nxtk/nxtk_getwindow.c: Clipping would change the offset of returned data, and caller has no way to know what the new offset would be. This messes up font drawing when the text is partially out of window, e.g. when scrolling. Also from Petteri Aimonen.
· include/stdbool.h: Can now be disabled for C++ files if CONFIG_C99_BOOL8 is defined. CONFIG_C99_BOOL8 indicates (1) that the sizeof(_Bool) is one in both C and C++, and (2) tat the C compiler is C99 and supports the _Bool intrinsic type. Requested by Freddie Chopin.
· include/stdlib/lib_rand.c: Various additional changes so that the integer value zero can be returned. Requested by Freddie Chopin.
· arch/z80/src/Makefile.sdcc*, z80/up_mem.h: Redesign Z80 build so that it no longer depends on Bash scripts.
· configs/z80sim/nsh and pashello: Converted to (1) use the kconfig-frontends configuration tool, and (2) to build natively under Windows. The NSH configuration is verified; the pashello configuration needs a more TLC.
· tools/copydir.sh: Rename tools/winlink.sh to tools/copydir.sh
· tools/link.bat, unlink.bat, and copydir.bat: Add Windows counterparts to the link.sh, unlink.sh, and copydir.sh Bash scripts.
· configs/z80sim/pashello: Now builds correctly.
· configs/xtrs/ostest, nsh, and pashello: Converted to (1) use the kconfig-frontends configuration tool, and (2) to build natively under Windows.
· drivers/serial/Kconfig and sched/Kconfig: Two names for same configuration: CONFIG_LOWLEVEL_CONSOLE is bogus and CONFIG_DEV_LOWCONSOLE is in the wrong Kconfig file. Moved to drivers/serial/Kconfig replacing CONFIG_LOWLEVEL_CONSOLE.
· arch/z80/include/z180: Add header files for z180 chips. Initial versions are just clones of z80 header files.
· arch/z80/src/z180: Add source files for z180 chips. Initial versions are just clones of z80 source files.
· include/nuttx/arch.h: Add address environment control interfaces (for use with CPUs the provide MCUs and support process-like address environments).
· arch/z80/src/z180/z180_mmu.*: Add MMU support for z180 tasks.
· configs/p112: Add very basic board support and an examples/ostest configuration for the venerable P112 board.
· sched/os_bringup.c: If CONFIG_PATH_INITIAL is defined, then the initial environment of the task started by os_bringup() will have the PATH environment variable defined to be that string.
· binfmt/binfmt_exepath.c: If CONFIG_BINFMT_EXEPATH is defined, then this file will be built. It contains logic to search for regular files at the absolutes paths found in the current PATH environment variable setting. This is untested and not yet hooked into the binfmt exec() logic on initial check-in
· binfmt/binfmt_loadmodule.c: load_module() will now traverse the PATH variable to locate files from their relative path.
· include/nuttx/arch.h and arch/z80/src/z180/z180_mmu.c: Restructure the address environment interfaces so that they will better integrate with binfmt/.
· binfmt/libelf/*, binfmt/libnxflat/* and other files: Integrate the address environment interfaces. If CONFIG_ADDRENV=y, then binfmt/ will now create an address environment for new tasks (instead of just malloc'ing the task memory).
· configs/stm32f4discovery/elf: Enable support/test of the PATH to find executables using a relative path.
· apps/examples/ostest/roundrobin.c: Replace large tables with algorithmic prime number generation. This allows the roundrobin test to run on platforms with minimal SRAM (Freddie Chopin).
· apps/nshlib/nsh_dbgcmds.c: Add hexdump command to dump the contents of a file (or character device) to the console. Contributed by Petteri Aimonen.
· apps/examples/modbus: Fixes from Freddie Chopin
· apps/examples/modbus/Kconfig: Kconfig logic for FreeModBus contributed by Freddie Chopin.
· Makefile, */Makefile: Various fixes for Windows native build. Now uses make foreach loops instead of shell loops.
· apps/examples/elf/test/*/Makefile: OSX doesn't support install -D, use mkdir -p then install without the -D. From Mike Smith.
· apps/examples/relays/Makefile: Reduced stack requirement (Darcy Gong).
· apps/nshlib and apps/netutils/dhcpc: Extend the NSH ifconfig command plus various DHCPC improvements(Darcy Gong).
· apps/nshlib/nsh_apps.c: Fix compilation errors when CONFIG_NSH_DISABLEBG=y. From Freddie Chopin.
· Rename CONFIG_PCODE and CONFIG_FICL as CONFIG_INTERPRETERS_PCODE and CONFIG_INTERPRETERS_FICL for consistency with other configuration naming.
· apps/examples/keypadtest: A keypad test example contributed by Denis Carikli.
· apps/examples/elf and nxflat: If CONFIG_BINFMT_EXEPATH is defined, these tests will now use a relative path to the program and expect the binfmt/ logic to find the absolute path to the program using the PATH variable.
Via: NuttX 6.24