405 lines
17 KiB
Groff
405 lines
17 KiB
Groff
|
NuttX-7.9
|
||
|
---------
|
||
|
|
||
|
The 109th release of NuttX, Version 7.9, was made on April 14, 2015,
|
||
|
and is available for download from the SourceForge website. Note
|
||
|
that release consists of two tarballs: nuttx-7.9.tar.gz and
|
||
|
apps-7.9.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
|
file for build information).
|
||
|
|
||
|
Additional new features and extended functionality:
|
||
|
|
||
|
* Core OS:
|
||
|
|
||
|
- Assertions: Add support for dumping board-specific information on
|
||
|
assertions. From David Sidrane.
|
||
|
- boardctl(): : Add a new non-standard OS interface called boardctl().
|
||
|
This is similar to a driver IOCTL call. But this is an IOCTL call
|
||
|
directly on the board logic. This function will eventually replace
|
||
|
all of the ad hoc OS interfaces that are current used to perform
|
||
|
application specific initialization and application driver test
|
||
|
configuration. It essentially formalizes and institutionalizes
|
||
|
these rogue interface in to at least a single crazy call.
|
||
|
|
||
|
* Graphics:
|
||
|
|
||
|
- Line Joins: Line drawing graphic functions now take an argument that
|
||
|
will draw a circular "cap" on the ends of lines to support cleaner
|
||
|
joining of lines segments..
|
||
|
|
||
|
* Common Drivers:
|
||
|
|
||
|
- SPI iInterface: Add an SPIDEV_USER so that there can be board-
|
||
|
specific definitions of SPI devices.
|
||
|
- I2C Interface: Add a user provided void * argument to the I2C
|
||
|
callback method for the I2C slave interface. Suggested by Nate
|
||
|
Weibley.
|
||
|
- AT24 EEPROM Driver: Add support for (1) the byte-oriented read()
|
||
|
method, (2) devices that have extended memory regions, and (3)
|
||
|
devices that use 8-bit addressing.
|
||
|
- Freescale MPL115A barometer: Add driver for the Freescale MPL115A
|
||
|
barometer. From Alan Carvalho de Assis.
|
||
|
- CS2100-CP: Add a driver for the CS2100-CP Fractional-N Multipler
|
||
|
chip.
|
||
|
- RTC IOCTls: Added the definitions of a driver based RTC interfaces
|
||
|
and RTC upper half driver.
|
||
|
|
||
|
* File Systems/Block Drivers/MTD:
|
||
|
|
||
|
- umount2(): Added to support un-mount flags. umount() is now a macro
|
||
|
that just calls umount2() with flags = 0.
|
||
|
- File system interface: Pass the umount2() flags to every unbind()
|
||
|
implementation. That is where the decision to umount or not and how
|
||
|
to umount will be made.
|
||
|
- FAT unbind: Add support for umount2(target, MNT_FORCE) in the FAT
|
||
|
file system.
|
||
|
|
||
|
* Networking:
|
||
|
|
||
|
- netdev_register(): Improve the network device registration logic.
|
||
|
When multiple link types are used, modify how each interface number
|
||
|
is assigned to the device name by incrementing the device number
|
||
|
individually for each interface link type. From Max Neklyudov.
|
||
|
- Add TUN network device. Used to support the Netutils PPPD
|
||
|
implementation. From Max Neklyudov.
|
||
|
|
||
|
* ARMv7-M
|
||
|
|
||
|
- ARM Cortex-M7: Add basic support for the Cortex-M7 architecture.
|
||
|
- ARMv7 Common Lazy Exception handling. Add common support for lazy
|
||
|
FPU state saving. MCU-specific lazy FPU saving was already in place.
|
||
|
This change just makes the code share-able.
|
||
|
|
||
|
* Atmel SAMA5D3/4 Drivers:
|
||
|
|
||
|
- SAMA5 Serial: Backport support for flowcontrol and termios from
|
||
|
SAM3/4.
|
||
|
|
||
|
* Atmel SAMV7:
|
||
|
|
||
|
- Atmel SAMV7: Add architecture support for the Atmel SAMV7 family
|
||
|
(Cortex-M7)
|
||
|
|
||
|
* Atmel SAMV7 Boards:
|
||
|
|
||
|
- Atmel SAMV71 Xplained Ultra: Add board support for this SAMV7 board.
|
||
|
This initialize release includes support for: SDRAM, TWI/I2C, SPI,
|
||
|
Ethernet, HSMCI, DMA, GPIOs, UARTs, AT24 EEPROM and the maXTouch
|
||
|
Xplained Pro LCD. Drivers are available for SSC/I2C, the WM8904,
|
||
|
the maXTouch trouchscreen, and USB device but have not yet been
|
||
|
fully integrated in this release.
|
||
|
|
||
|
* SiLabs EFM32 Drivers:
|
||
|
|
||
|
- EFM32 USB Device is now functional with the efforts of From Pierre-
|
||
|
noel Bouteville.
|
||
|
- EFM32 I2C: Add I2C driver. From Pierre-noel Bouteville.
|
||
|
|
||
|
* STMicro STM32:
|
||
|
|
||
|
- STM32F372/F373: Adds architecture support for this STM32 parts.
|
||
|
Tested on STM32F373CC. Contributed by Marten Svanfeldt.
|
||
|
|
||
|
* STMicro STM32 Drivers:
|
||
|
|
||
|
- STM32 RTCC: Break out a new internal interface, stm32_rtc_setdatetime().
|
||
|
This eliminates some un-necessary time conversions. From Freddie Chopin.
|
||
|
- STM32 RTCC: Add an implementation of the RTC lower half interface
|
||
|
for the STM32.
|
||
|
- STM32 RTCC: Extend the RTC interface to support reading subseconds.
|
||
|
From Jussi Kivilinna.
|
||
|
- STM32 BBSRAM: Adds the ability to use the STM32F2 and STM32F4 Battery
|
||
|
Backed SRAM in the file system. With an option to Save Panic context
|
||
|
to one of the files. From David Sidrane.
|
||
|
|
||
|
* STMicro STM32 Boards:
|
||
|
|
||
|
- Olimexino-STM32: Board support for the Olimexino STM32 board from David
|
||
|
Sidrane.
|
||
|
- Viewtool-STM32F107: Add support for an optional, add-on Freescale
|
||
|
MPL115A baramoter. From Alan Carvalho de Assis.
|
||
|
|
||
|
* TI Tiva:
|
||
|
|
||
|
- TM4C1294: Add support for the TM4C1294. Contributed by Frank Sautter.
|
||
|
|
||
|
* TI Tiva Drivers:
|
||
|
|
||
|
- Tiva ADC: Updated files to allow for ADC and PWM triggering by a
|
||
|
timer. Refactoring of ADC implementation. From Calvin Maguranis.
|
||
|
- Tiva Timer: Refactoring by Calvin Maguranis
|
||
|
|
||
|
* TI Tiva Boards:
|
||
|
|
||
|
- TM4C123G-launchpad: Add ADC support. From Calvin Maguranis.
|
||
|
- TM4C123G-launchpad: Add board button interrupt support. From Calvin
|
||
|
Maguranis.
|
||
|
- TM4C1294 Launchpad: Add support for the TM4C1294 Launchpad.
|
||
|
Contributed by Frank Sautter.
|
||
|
|
||
|
* Microchip PIC32
|
||
|
|
||
|
- PIC32MZ: Add architectural support for the PIC32MZ (MIPS32 M14k).
|
||
|
Includes contributions from Kristopher Tate.
|
||
|
|
||
|
* Microchip PIC32MZ Boards
|
||
|
|
||
|
- PIC32MZ Starter Kit: Add basic board support for the PIC32MZ.
|
||
|
Includes contributions from David Sidrane.
|
||
|
|
||
|
* C Library/Header Files:
|
||
|
|
||
|
- gettimeofday(): This function is no longer a core OS interface. It
|
||
|
is only a wrapper around clock_settime().
|
||
|
- settimeofday(): Added. gettimeofday has been deprecated in POSIX
|
||
|
2008. settimeofday() was never part of POSIX, but I decided to add
|
||
|
it to libc as well just for symmetry.
|
||
|
- Day-of-Week: Add CONFIG_TIME_EXTENDED to support the last 3 members
|
||
|
of the tm struct and support for filling them in with the day of the
|
||
|
week. From David Sidrane.
|
||
|
- sighold(), sigrelse(), sigignore(), sigset() and sigpause(): New
|
||
|
signal handling functions.
|
||
|
- sys/select.h: Extend the fd_set type definition so that it can
|
||
|
handle more than 32 descriptors (if so configured). From Max
|
||
|
Neklyudov.
|
||
|
- netdb.h: Add a mostly-commented-out version of the standard netdb.h
|
||
|
header file.
|
||
|
- include/nuttx/board.h: Remove common board function prototypes from
|
||
|
other files and consolidate them in this new header file.
|
||
|
|
||
|
* Applications:
|
||
|
|
||
|
- OS test: Improved error checking for sem_timedwait() from Juha
|
||
|
Niskanen.
|
||
|
- OS test: Add a simple test of sigprocmask, sighold, and sigrelse.
|
||
|
- PPPD test: Add PPPD test case. Split out from the PPPD daemon by
|
||
|
Brennan Ashton.
|
||
|
- Netutils: Add a PPP daemon. From Max Neklyudov.
|
||
|
- NSH: NSH initialization now calls boardctl(BOARDIOC_INIT) instead
|
||
|
of nsh_archinitialize(). Remove support for CONFIG_NSH_ARCHMAC.
|
||
|
It is not used and there are better ways to do that operation.
|
||
|
- NSH: Allow NSH 'date' command with no hardware RTC. This command
|
||
|
is useful without an RTC too. Also, this permits testing on the
|
||
|
simulator which never has an RTC.
|
||
|
- apps/examples/: Several tests changed (touchscreen adc, pwm,
|
||
|
graphics). No longer call directly into the OS, but rather
|
||
|
indirectly via boardctl().
|
||
|
- Modbus: Includes extensions to support RTU master mode by
|
||
|
Armink(383016632@qq.com): https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32.
|
||
|
Ported to NuttX by Darcy Gong.
|
||
|
- TZ database: All logic to build timezone database needed for
|
||
|
localtime() support. Does not do much else yet.
|
||
|
|
||
|
Efforts In Progress. The following are features that are partially
|
||
|
implemented but present in this release. They are not likely to be
|
||
|
completed soon.
|
||
|
|
||
|
* Processes. Much of the work in this release is focused on the
|
||
|
realization of Unix-style user processes in NuttX. There is more to
|
||
|
be done, however. The full roadmap and status is available at:
|
||
|
https://cwiki.apache.org/confluence/display/NUTTX/Memory+Configurations
|
||
|
|
||
|
* XMega: There are some fragments in place for an XMega port. That
|
||
|
port has not really started, however.
|
||
|
|
||
|
Bugfixes. Only the most critical bugfixes are listed here (see the
|
||
|
ChangeLog for the complete list of bugfixes and for additional, more
|
||
|
detailed bugfix information):
|
||
|
|
||
|
* Core OS:
|
||
|
|
||
|
- atexit(): Fix compile failure due to reference to undefined variable
|
||
|
in certain configurations. From Juha Niskanen.
|
||
|
- syscalls: Last changes to message queue prototypes did not make it
|
||
|
into call gate logic. Some additional errors had crept as well since
|
||
|
the system calls are seldom used.
|
||
|
- waitpid(): Do not use uninitialized boolean in waitpid(). From Juha
|
||
|
Niskanen.
|
||
|
- Timing functions: Fix some nanosecond comparisons. Comparisons should
|
||
|
be greater than OR EQUAL TO 1000000000 for maximum value of nanoseconds
|
||
|
in struct tm. From Juha Niskanen.
|
||
|
- Time initialization: Fix an error in time initialization when there
|
||
|
is no RTC and the time is initialized from a fixed configured value.
|
||
|
The call to clock_calendar2utc() was returning the time in units of
|
||
|
seconds. The initialization logic, however, was expecting to get
|
||
|
time in units of days. This problem has been there forever but
|
||
|
obviously has not significant impact to behavior in systems where
|
||
|
time is not visible.
|
||
|
- mq_timedsend(): Should not check for valid time if there is space
|
||
|
in the message queue. Noted by Freddie Chopin.
|
||
|
- select() and sem_timedwait(): Fix places where the errno value was
|
||
|
being overwritten by subsequent actions so that the returned errno
|
||
|
value was incorrect. From Max Neklyudov.
|
||
|
- clock_systimer64(): Fix a problem in clock_systimer64 that occurs
|
||
|
when (1) the 64-bit system time is enabled, and (2) the value of
|
||
|
CONFIG_USEC_PER_TICK is less than 1 milliseconds (such as when using
|
||
|
the tickless mode of operation). In that case, the conversion of
|
||
|
time to 64-bit millisecond value in clock_systmer64() causes some
|
||
|
bad times to be returned. Time was converted to milliseconds, then
|
||
|
to configured ticks. Precision was lost in the millisecond
|
||
|
conversion. The fix is to first convert time to a 64-bit microsecond
|
||
|
value, then to the configured tick value. Noted by David Sidrane.
|
||
|
- clock_systimespec(): When an RTC is used clock_systimespec() must
|
||
|
subtract the basetime from the returned time. It needs to return
|
||
|
the time since power up, no the current time. Issue noted by Max
|
||
|
Neklyudov.
|
||
|
- AIO: correct some backward tests in aio_read() and aio_write():
|
||
|
Socket descriptors have higher numbers than file descriptors. In
|
||
|
aio_contain(), Copy u.ptr (void *) when initializing aioc and not
|
||
|
the case specific u.aioc_filep. From Michal Ulianko.
|
||
|
|
||
|
* File Systems/Block Drivers/MTD:
|
||
|
|
||
|
- procfs: Fix potential NULL pointer dereference of 'node'. From
|
||
|
Juha Niskanen.
|
||
|
- FAT: fat_unbind() was accessing 'fs->fs_sem' after freeing the 'fs'
|
||
|
struct. From Juha Niskanen.
|
||
|
- mkfatfs: Use DMA memory for mkfatfs when needed. This makes mkfatfs
|
||
|
use fat_dma_alloc() when CONFIG_FAT_DMAMEMORY is set. This is needed
|
||
|
to ensure mkfatfs operates with boards that use DMA for microSD.
|
||
|
From Andrew Tridgell via the PX4/NuttX repository.
|
||
|
- FAT unmount: Fix a bug in the FAT unbind() logic. There were
|
||
|
problems with the way certain internal list handling was
|
||
|
implemented. The end result is that newly opened or cloned file
|
||
|
structures were never being added to the list of open files. So
|
||
|
when the unmount() happens, it always looked like there were not
|
||
|
open files and a crash could ensue.
|
||
|
- FAT mounting: Fix misthink when CONFIG_ENDIAN_BIG=y. From Lwazi Dube.
|
||
|
|
||
|
* Common Drivers:
|
||
|
|
||
|
- CAN upper half driver: Some lines had to be reordered in the can_open
|
||
|
function otherwise the open count will only be incremented from 0 to
|
||
|
1. This caused problems when trying to open the can bus from two
|
||
|
different tasks. SourceForge Patch #46.
|
||
|
|
||
|
* Crypto:
|
||
|
|
||
|
- crypto: Fix issues when AES support was added for the STM32L1.
|
||
|
From Juha Niskanen.
|
||
|
|
||
|
* Networking:
|
||
|
|
||
|
- Network initialization: Divide net_intiialize() into net_setup() and
|
||
|
net_initialize() to solve a chicken-and-egg problem. net_setup()
|
||
|
must be called before up_initialize() is called so that networking
|
||
|
data structures are ready to register new network devices.
|
||
|
net_initialize() now does only timer related operations and is
|
||
|
called AFTER up_initialize() where the timers are configured.
|
||
|
Problem noted by Max Neklyudov.
|
||
|
- netdev_unregister(): Fix a list handling error. From Max Neklyudov.
|
||
|
- Socket dup: Do not call sockfd_socket() twice. From Juha Niskanen.
|
||
|
|
||
|
* Common Drivers:
|
||
|
|
||
|
- max11802 touchscreen: Fix possible unmatched IRQ restore (not
|
||
|
normally a problem, but could happen in certain configurations).
|
||
|
Noted by Juha Niskanen.
|
||
|
- MMCSD SPI Multi-block transfers: ACMD23 must be preceded with CMD55
|
||
|
command as any other ACMD commands. Also, after the block reading
|
||
|
wait loop must be inserted before writing the next block of data to
|
||
|
the sd card. From Dmitry Nikolaev via Jussi Kivilinna.
|
||
|
- MMCSD SDIO: Fix some bad logic when file system debug is turned on:
|
||
|
Arguments to syslog were missing so that garbage was being printed.
|
||
|
- Common upper-half serial driver: Report correct number of bytes free
|
||
|
in serial buffer with FIONWRITE. From Sami Pelkonen via Jussi Kivilinna.
|
||
|
- Pipes/Fifos: Fix zero-lenth writes to pipes/FIFOs. From Jussi Kivilinna.
|
||
|
- USB device MSC: Add NULL pointer check. From Juha Niskanen.
|
||
|
- BCH driver: Avoid NULL pointer dereference when bch->refs == 255.
|
||
|
From Juha Niskanen.
|
||
|
- Various drivers: The inode unlink method should not be support if
|
||
|
operations on the root pseudo-filesystem are disabled.
|
||
|
|
||
|
* ARMv7-M
|
||
|
|
||
|
- ARMv7M MPU: Bad syntax in ARMv7-M MPU logic would cause failure to
|
||
|
write the correct value to the MPU_RASR register. From Juha Niskanen.
|
||
|
|
||
|
* Atmel SAM3/4 Drivers:
|
||
|
|
||
|
- SAM3/4 Serial TERMIOS: A side-effect of changing serial settings
|
||
|
via TERMIOS (such as tcsetattr) is that serial interrupts were being
|
||
|
left disabled. This is not a problem if the serial configuration is
|
||
|
changed when there are no open references to the serial device. In
|
||
|
that case, serial interrupts are disabled and will not be enabled
|
||
|
enabled until the serial device is first opened. But it is fatal if
|
||
|
the serial device is already opened and if there is a task waiting
|
||
|
to receive data. In that case, the side-effect of disabling
|
||
|
interrupts is fatal: That task is then left hanging with interrupts
|
||
|
disabled.
|
||
|
- SAM3/4 Serial: The IMR register is read-only. This means that
|
||
|
sam_restoreints() did not actually re-enable UART interrupts
|
||
|
(Fortunately, that function was not being used up to this point).
|
||
|
- SAMA5 HSMCI: Fix a bug in SAMA5 HSMCI. The bitfield mask and shift
|
||
|
values were reversed resulting in a trashed value for the number of
|
||
|
blocks in the BLOCKR register. This was sufficient to prevent DMA
|
||
|
writes from working.
|
||
|
|
||
|
* Atmel SAMA5 Drivers:
|
||
|
|
||
|
- SAMA5 Timer/Counter: Fix typos in timer/counter header file. From
|
||
|
Bob Doiron.
|
||
|
|
||
|
* STMicro STM32 Drivers:
|
||
|
|
||
|
- STM32 PWR and RTC: Changes to support fully write protecting the
|
||
|
backup domain. N.B. stm32_pwr_enablebkp did not account for the delay
|
||
|
from enable to the domain being writable. The KISS solution is a
|
||
|
up_udelay. A more complex solution would be a negated write test
|
||
|
with restore. From David Sidrane.
|
||
|
- STM32 SPI: Add missing SPI callback functions to the STM32 SPI
|
||
|
driver. From Freddie Chopin.
|
||
|
- STM32 I2C: Add missing NULL check. From Juha Niskanen.
|
||
|
- STM32 USB device: Fix stale initialization invalidating later NULL
|
||
|
check. From Juha Niskanen.
|
||
|
- STM32 UART: Fix RX DMA setup for UART5. From Jussi Kivilinna.
|
||
|
- STM32 UART: Make input hardware flow-control work with RX DMA. From
|
||
|
Jussi Kivilinna.
|
||
|
- STM32 RTC and clock control: The STM32F4Discovery board doesn't
|
||
|
come with a Low speed external oscillator so the default LSE source
|
||
|
for the RTC doesn't work. In stm32_rtcc.c the up_rtc_initialize()
|
||
|
logic doesn't work with the LSI. The check on RTC_MAGIC on the BK0R
|
||
|
register lead to rtc_setup() call that rightfully enables the LSI
|
||
|
clock; but the next times, when the rtc is already setup, the
|
||
|
rtc_resume() call does NOT start the LSI clock! The right place to
|
||
|
put LSE/LSI initialization is inside stm32_stdclockconfig() in
|
||
|
stm32fxxxxx_rcc.c. Doing this I checked the possible uses of the
|
||
|
LSI and the LSE sources: the LSI can be used for RTC and/or the
|
||
|
IWDG, while the LSE only for the RTC (and to output the MCO1 pin).
|
||
|
This change is not verified for any other platforms. From Leo
|
||
|
Aloe3132
|
||
|
|
||
|
* Tiva Drivers:
|
||
|
|
||
|
- Tiva GPIO driver needed small fixes in the configuration routines and
|
||
|
discovered false-positive bugs in interrupt testing: interrupts are
|
||
|
now verified to actually be working reliably. From Calvin Maguranis .
|
||
|
|
||
|
* MIPS32:
|
||
|
|
||
|
- mips32/Toolchain.mk: Current Pinguino toolchain uses the prefix p32-
|
||
|
instead of mips-.
|
||
|
|
||
|
* C Library/Header Files:
|
||
|
|
||
|
- sigaddset() and sigdelset(): Need to set errno if a bad signal
|
||
|
number is received.
|
||
|
- sfrtime(): Missing implementation of %C in sfrtime() C (was being
|
||
|
treated as %y). From Freddie Chopin.
|
||
|
- pthread.h: Fix PTHREAD_COND_INITIALIZER.
|
||
|
- ungetc.c: Fix NULL pointer dereference in ungetc() if 'stream' was
|
||
|
NULL, 'stream->fs_oflags' was evaluated. From Juha Niskanen.
|
||
|
- Fixes to asinh(), atanh(), and sinh(): The 'basic' expansions all
|
||
|
exhibited bad cancellation errors near zero (<= 1E-10). This can be
|
||
|
easily seen e.g. with x = 1E-30, the results are all zero though they
|
||
|
should be extremely close to x. The cutoff values (1E-5, 1E-9) are
|
||
|
chosen so that the next term in the Taylor series is negligible (for
|
||
|
double). Functions could maybe be optimized to use only first term (x)
|
||
|
and a smaller cutoff, just bigger than where the cancellation occurs
|
||
|
- localtime(): Inconsistent configuration name: CONFIG_LIBC_TZDIR vs
|
||
|
CONFIG_LIBC_TZ_TZDIR. Former wins.
|
||
|
|
||
|
* Applications:
|
||
|
|
||
|
- Modbus: Fix some compile problems when TCP is enabled.
|