18221 lines
828 KiB
Plaintext
18221 lines
828 KiB
Plaintext
NuttX Release Notes
|
||
===================
|
||
|
||
This file contains are the release notes for the NuttX (and apps) packages
|
||
for every release. The text is just as was written at the time of release
|
||
(with perhaps some corrected typos). Over the course of time, NuttX has
|
||
used several different repositories: CVS, two SVN repositories, and
|
||
currently a GIT repository. Therefore, revision information specific to an
|
||
older repository may not be meaningful today.
|
||
|
||
To make it easier to track there older versions in the current GIT
|
||
repository, a GIT lightweight tag has been applied for each release. The
|
||
tag name is the release name (for example, the release 6.27 has tag name
|
||
"nuttx-6.27").
|
||
|
||
NuttX-0.1.0
|
||
-----------
|
||
|
||
This is the initial. This initial includes the complete NuttX RTOS
|
||
with support for the Linux user mode simulation and the TI TMS320C5471
|
||
(Arm7) processor. Partial support for the 87C52 is included.
|
||
|
||
This release has been verified on both the Linux user-mode and C5471
|
||
platforms using the test program under examples/ostest. Test results
|
||
for the C5471 can be found in arch/c5471/doc/test-results.txt.
|
||
|
||
This tarball contains a complete CVS snapshot from March 9,2007.
|
||
|
||
NuttX-0.1.1
|
||
-----------
|
||
|
||
This is the second release of NuttX. This release includes the following.
|
||
See the ChangeLog for more detailed description of the changes.
|
||
|
||
(1) General OS bugfixes (see the ChangeLog for details),
|
||
(2) bugfixes for the TI TMS320C5471 (Arm7) platform (see
|
||
the ChangeLog)
|
||
(3) Complete support for the 87C52. (However, the 87C52
|
||
release is not stable enough for general usage).
|
||
(4) Added the beginning of a shell call NuttShell (nsh)
|
||
|
||
This release has been verified on the Linux user-mode platform, the
|
||
Spectrum Digital TMS320C5471 EVM, and the PJRC 87C52 development board
|
||
using the test program under examples/ostest.
|
||
|
||
STATUS: The development status remains as ALPHA until further testing
|
||
is performed.
|
||
|
||
This tarball contains a complete CVS snapshot from March 14, 2007.
|
||
|
||
NuttX-0.1.2
|
||
-----------
|
||
|
||
This is the third release of NuttX. This release is
|
||
primarily a bugfix release with minimal new features. See
|
||
the ChangeLog for a more detailed description of the
|
||
changes.
|
||
|
||
(1) Several important OS and ARM7 bugfixes,
|
||
(2) opendir(), closedir(), readdir(), etc. added
|
||
(3) Added C5471 watchdog timer.
|
||
(4) Created a shareable, serial driver.
|
||
(5) Added 'ls' command to NuttShell (nsh)
|
||
(6) Added a test of the round robin scheduler
|
||
|
||
This release has been verified on the Linux user-mode
|
||
platform, the Spectrum Digital TMS320C5471 EVM using the
|
||
test program under examples/ostest.
|
||
|
||
This tarball contains a CVS snapshot from March 19, 2007.
|
||
|
||
NuttX-0.2.1
|
||
-----------
|
||
|
||
This is the fourth release of NuttX. This release adds adds
|
||
support for a new platform, restructures many header files,
|
||
and adds a few new features:
|
||
|
||
(1) Support for Neuros OSD / DM320
|
||
(2) Restructuring of header files for better POSIX compliance
|
||
(3) Added kill()
|
||
(4) Added POSIX timers
|
||
(5) bugfixes and documentation updates
|
||
|
||
This release has been verified on the Linux user-mode
|
||
platform, the Spectrum Digital TMS320C5471 EVM, and the
|
||
Neuros OSD using the test program under examples/ostest. Because
|
||
of the stability of these tests, the project status
|
||
has been upgraded to 'beta.'
|
||
|
||
This tarball contains a complete CVS snapshot from March 22, 2007.
|
||
|
||
NuttX-0.2.2
|
||
------------
|
||
|
||
This is the fifth release of NuttX. There is no major new
|
||
functionality in this release. This release adds support
|
||
for new pthread barrier APIs, changes the directory
|
||
structure, to better handle different board configurations
|
||
using the same processor architecture, and corrects a few
|
||
defects.
|
||
|
||
See the ChangeLog for a complete list of changes.
|
||
|
||
This release has been verified on the Linux user-mode
|
||
platform and the Neuros OSD using the test program under
|
||
examples/ostest. There are no known, critical defects but
|
||
the project development status remains at 'beta' status
|
||
pending further test and evaluation.
|
||
|
||
This tarball contains a complete CVS snapshot from
|
||
March 26, 2007.
|
||
|
||
NuttX-0.2.3
|
||
------------
|
||
|
||
This is the sixth release of NuttX. This release is
|
||
primarily a bugfix release. Numerous problems were fixed
|
||
as detailed in the change log. New functionality includes
|
||
support for timed message queues.
|
||
|
||
See the ChangeLog for a complete list of changes.
|
||
|
||
This release has been verified on the Linux user-mode
|
||
platform and the Neuros OSD using the test program under
|
||
examples/ostest. The results of the testing is available in
|
||
the source tree under configs/ntosd-dm320/doc/test-results.
|
||
There are no known, critical defects but the project
|
||
development status remains at 'beta' status pending further
|
||
test and evaluation.
|
||
|
||
This tarball contains a complete CVS snapshot from March 29,
|
||
2007.
|
||
|
||
NuttX-0.2.4
|
||
------------
|
||
|
||
This is the 7th release of NuttX. This release is only to roll out
|
||
build changes to better support different SoC's that use the same
|
||
processor architecture. In particular, the two existing ARM architectures,
|
||
c5471 and DM320 were combined into a single ARM directory. This was done
|
||
in preparation for an LPC2148 port that is currently in progress. There
|
||
is NO new functionality or significant bugfixes in this release.
|
||
|
||
See the ChangeLog for a complete list of changes.
|
||
|
||
This release has been verified on the Linux user-mode platform
|
||
and the Neuros OSD using the test program under examples/ostest.
|
||
The results of the testing is available in the source tree under
|
||
configs/ntosd-dm320/doc/test-results and under configs/sim/doc/test-results.
|
||
There are no known, critical defects but the project development status
|
||
remains at 'beta' status pending further test and evaluation.
|
||
|
||
This tarball contains a complete CVS snapshot from April 28, 2007.
|
||
|
||
NuttX-0.2.5
|
||
------------
|
||
|
||
This is the 8th release of NuttX. This release includes:
|
||
|
||
(1) Several bug fixes
|
||
(2) Initial support for FAT filesystems. Testing has not
|
||
been exhaustive and some functionality is missing
|
||
(mkdir, stat, unlink chmod, and rename functionality is
|
||
not yet implemented).
|
||
(3) Support for the NXP lpc2148 processor is included but
|
||
is untested as of this writing. The current
|
||
implementation includes only support for serial console
|
||
and timer interrupt.
|
||
|
||
See the ChangeLog for a complete list of changes.
|
||
|
||
This release has been verified only on the Linux user-mode
|
||
platform.
|
||
|
||
This tarball contains a complete CVS snapshot from May 19,
|
||
2007.
|
||
|
||
NuttX-0.2.6
|
||
-----------
|
||
|
||
This is the 9th release of NuttX. This is primarily a
|
||
bugfix release to correct a number of problems introduced
|
||
with the 0.2.5 release. This release does include some FAT
|
||
filesystem extensions including unlink(), mkdir(), rmdir(),
|
||
rename(), opendir(), closedir(), readdir(), seekdir(),
|
||
telldir(), rewindir(). There are some pending FAT changes
|
||
that did not make it into this release including stat(),
|
||
truncate(), and long file names.
|
||
|
||
See the ChangeLog for a complete list of changes.
|
||
|
||
This release has been verified only on the Linux user-mode platform.
|
||
|
||
This tarball contains a complete CVS snapshot from May 26, 2007.
|
||
|
||
NuttX-0.2.7
|
||
-----------
|
||
|
||
This is the 10th release of NuttX. This is primarily a bugfix
|
||
release to correct a number of problems reported to me (thanks
|
||
Didier!). This release does include the final changes complete the
|
||
FAT filesystem logic including stat(), statfs(), and non-standard
|
||
APIs to manage FAT attributes. At present, FAT long file names and
|
||
file truncate() are still not supported.
|
||
|
||
See the ChangeLog for a complete list of changes.
|
||
|
||
This release has been verified only on the Linux user-mode platform.
|
||
|
||
This tarball contains a complete CVS snapshot from June 9, 2007.
|
||
|
||
NuttX-0.2.8
|
||
-----------
|
||
|
||
This is the 11th release of NuttX. This release:
|
||
(1) corrects important bugs in opendir() and realloc()
|
||
(2) adds support for environment variables
|
||
(3) adds several new C library interfaces
|
||
(4) extends several example programs
|
||
|
||
See the ChangeLog for a complete list of changes.
|
||
|
||
This release has been verified only on the Linux user-mode platform.
|
||
|
||
This tarball contains a complete CVS snapshot from July 2, 2007.
|
||
|
||
NuttX-0.3.0
|
||
-----------
|
||
|
||
This is the 12th release of NuttX. This release includes the initial
|
||
integration of a network subsystem and the uIP TCP/IP stack into NuttX
|
||
(see http://www.sics.se/~adam/uip/index.php/Main_Page). Also included
|
||
is a device driver for the Davicom DM90x0 Ethernet controller.
|
||
|
||
This integration is very preliminary. Only a small portion of the
|
||
network functionality has been integrated and there are a number of
|
||
open issues (see the TODO file). The network subsystem is pre-alpha
|
||
at this point in time. I expect that it will stabilize and mature
|
||
over the next few releases.
|
||
|
||
The baseline functionality of NuttX continues to mature and remains at
|
||
post-beta (as long as the network is not used).
|
||
|
||
See the ChangeLog for a complete list of changes.
|
||
|
||
This release has been verified only on the Neuros OSD (DM320 ARM9)
|
||
platform using the DM90x0 driver.
|
||
|
||
This tarball contains a complete CVS snapshot from November 6, 2007.
|
||
|
||
NuttX-0.3.1
|
||
-----------
|
||
|
||
This is the 13th release of NuttX and the second release containing
|
||
the integration of a network subsystem and the uIP TCP/IP, UDP, and
|
||
ICMP stacks into NuttX (see http://www.sics.se/~adam/uip/index.php/Main_Page).
|
||
|
||
Many network-related problems have been fixed and the implementation
|
||
has matured significantly. However, the level of network reliability
|
||
is probably still at the pre-alpha or early level. It is sufficiently
|
||
complete that you may begin to perform some network integration and
|
||
is expected to achieve beta level of reliability over the next few
|
||
releases.
|
||
|
||
The baseline functionality of NuttX continues to mature and remains at
|
||
post-beta (as long as the network is not used).
|
||
|
||
See the ChangeLog for a complete list of changes.
|
||
|
||
This release has been verified only on the Neuros OSD (DM320 ARM9)
|
||
platform using the DM90x0 driver.
|
||
|
||
This tarball contains a complete CVS snapshot from November 19, 2007.
|
||
|
||
NuttX-0.3.2
|
||
-----------
|
||
|
||
This is the 14th release of NuttX and the 3rd release containing
|
||
the integration of a network subsystem and the uIP TCP/IP, UDP, and
|
||
ICMP stacks into NuttX (see http://www.sics.se/~adam/uip/index.php/Main_Page).
|
||
|
||
Many network-related problems have been fixed and the implementation
|
||
has matured significantly. This release consists of:
|
||
|
||
o TCP-related bug-fixes
|
||
o TCP performance improvements
|
||
o Initial UDP integration
|
||
o Initial uIP micro webserver integration
|
||
|
||
See the ChangeLog for a complete list of changes.
|
||
|
||
The level of network reliability is at alpha level is expected to
|
||
achieve beta level of reliability over the next few releases.
|
||
|
||
The baseline functionality of NuttX continues to mature and remains at
|
||
post-beta.
|
||
|
||
This release has been verified only on the Neuros OSD (DM320 ARM9)
|
||
platform using the DM90x0 driver.
|
||
|
||
This tarball contains a complete CVS snapshot from November 23, 2007.
|
||
|
||
NuttX-0.3.3
|
||
-----------
|
||
|
||
This is the 15th release of NuttX and the 4th release containing
|
||
the integration of a network subsystem and the uIP TCP/IP, UDP, and
|
||
ICMP stacks into NuttX (see http://www.sics.se/~adam/uip/index.php/Main_Page).
|
||
|
||
Many network-related problems have been fixed and the implementation
|
||
has matured significantly. This release consists of:
|
||
|
||
o TCP-related bug-fixes for disconnecting sockets
|
||
o Correction of some TCP read-ahead logic
|
||
o TCP performance improvements
|
||
o Misc. additions and cleanup (See the ChangeLog for a complete list of
|
||
changes).
|
||
|
||
The level of network reliability is at an early beta release level. The
|
||
baseline functionality of NuttX continues to mature and remains at
|
||
post-beta. Open network-related issues include only:
|
||
|
||
o Some minor unimplemented BSD socket functionality,
|
||
o Thread safety issues: the same socket cannot be used concurrently on
|
||
different threads.
|
||
o Pending design changes necessary to support multiple network interfaces.
|
||
o IPv6 support is incomplete.
|
||
|
||
This release has been verified only on the Neuros OSD (DM320 ARM9)
|
||
platform using the DM90x0 driver. Any feedback for improving the network
|
||
reliability/performance would be greatly appreciated.
|
||
|
||
This tarball contains a complete CVS snapshot from November 28, 2007.
|
||
|
||
NuttX-0.3.4
|
||
-----------
|
||
|
||
This is the 16th release of NuttX and the 5th release containing
|
||
the integration of a network subsystem and the uIP TCP/IP, UDP, and
|
||
ICMP stacks into NuttX (see http://www.sics.se/~adam/uip/index.php/Main_Page).
|
||
|
||
This release is primarily a bug-fix release. New features include
|
||
only:
|
||
|
||
o TELNET front-end to NSH,
|
||
o DHCPC server functionality, and
|
||
o C5471 Ethernet driver.
|
||
|
||
Numerous network related problems were fixed related to DHCPC, UDP
|
||
input processing, UDP broadcast, send timeouts, and bad compilation when
|
||
uIP is compiled at high levels of optimization.
|
||
|
||
The level of network reliability is at a strong beta release level. The
|
||
baseline functionality of NuttX continues to mature and remains at
|
||
post-beta or production level.
|
||
|
||
Parts of this release were verified only on the Neuros OSD (DM320 ARM9)
|
||
platform using the DM90x0 Ethernet driver and other parts on the Spectrum
|
||
Digital C5471 EVM using the C5471 Ethernet driver. Any feedback about bugs
|
||
or suggestions for improving the network reliability/performance would be
|
||
greatly appreciated.
|
||
|
||
This tarball contains a complete CVS snapshot from December 10, 2007.
|
||
|
||
NuttX-0.3.5
|
||
-----------
|
||
|
||
This is the 17th release of NuttX this release is primarily a bug-fix
|
||
release and intended to synchronize with the current CVS contents. See
|
||
the ChangeLog for a detailed list of changes and fixes.
|
||
|
||
This release were verified only on the Spectrum Digital C5471 EVM using
|
||
the C5471 Ethernet driver. Any feedback about bugs or suggestions for
|
||
improvement would be greatly appreciated.
|
||
|
||
This tarball contains a complete CVS snapshot from December 18, 2007.
|
||
|
||
NuttX-0.3.6
|
||
-----------
|
||
|
||
This is the 18th release of NuttX. This release contains on a few
|
||
changes. The primary purpose of this release is to synchronize with
|
||
the release of the pascal-0.1.0 add-on package.
|
||
|
||
This release of NuttX includes the following changes:
|
||
|
||
* Fixes for use with SDCC compiler
|
||
* Added a simulated z80 target (arch/z80)
|
||
* Fix deadlock errors when using stdio but with no buffering
|
||
* Add support for the add-on Pascal P-Code interpreter (pcode/)
|
||
(see the pascal-0.1.0 package)
|
||
|
||
This release were verified only on the simulated Z80 and and host
|
||
simulation targets. As usual, any feedback about bugs or suggestions
|
||
for improvement would be greatly appreciated.
|
||
|
||
This tarball contains a complete CVS snapshot from January 6, 2007.
|
||
|
||
====
|
||
|
||
There was an error in the initial 0.3.6 release that prevented
|
||
a successful build unless the Pascal add-on was present. The
|
||
tarball was patched to include the fix. Make sure that you download
|
||
the nuttx-0.3.6.1.tar.gz version to avoid this problem.
|
||
|
||
NuttX-0.3.7
|
||
-----------
|
||
|
||
This is the 19th release of NuttX. This release includes the
|
||
preliminary port of NuttX to the ZiLOG z16f 16-bit microcontroller.
|
||
This port was verified using the ZiLOG z16f2800100zcog Development
|
||
and the ZiLOG ZDS-II toolchain. See http://www.zilog.com for
|
||
further information.
|
||
|
||
I emphasize that this is a preliminary release of the z16f port and
|
||
is only alpha or, perhaps, pre-alpha quality as of this writing.
|
||
There are a list of known issues in the TODO file in the root of
|
||
the NuttX directory. The overall quality of NuttX (excluding the
|
||
z16f port) continues to improve beyond the late beta level.
|
||
|
||
The z16f port required numerous changes to NuttX to handle:
|
||
|
||
* NEAR and FAR addressing, and
|
||
* Use of a Windows native toolchain in a Cygwin build environment.
|
||
|
||
In addition to the z16f port, at least one very critical bug was
|
||
found and corrected in NuttX: The thread-specific errno value of one
|
||
task was being randomly trashed when a different thread exited.
|
||
|
||
This release were verified on the ZiLOG z16f2800100zcog, Neuros OSD
|
||
(ARM9), and the simulation platforms. As usual, any feedback about bugs
|
||
or suggestions for improvement would be greatly appreciated.
|
||
|
||
This tarball contains a complete CVS snapshot from January 31, 2008.
|
||
|
||
NuttX-0.3.8
|
||
-----------
|
||
|
||
This is the 20th release of NuttX. This is a minor bugfix release.
|
||
It corrects a few minor problems, adds a few minor features, and
|
||
continues the integration of the ZiLOG Z18F and of the Pascal P-Code
|
||
add-on. This release is synchronized with the release of Pascal-0.1.2.
|
||
|
||
This tarball contains a complete CVS snapshot from February 10, 2008.
|
||
|
||
NuttX-0.3.9
|
||
-----------
|
||
|
||
This is the 21st release of NuttX. This is a minor future enhancement
|
||
release. This release includes support for the ZiLOG Z8Encore! micro-
|
||
controller. Also included is the initial framework for support for
|
||
the Z80, XTRS platform (http://www.tim-mann.org/xtrs.html).
|
||
|
||
This released has been verified only on the ZiLOG ZDS-II Z8Encore!
|
||
chip simulation.
|
||
|
||
This tarball contains a complete CVS snapshot from March 9, 2008.
|
||
|
||
NuttX-0.3.10
|
||
------------
|
||
|
||
This is the 22nd release of NuttX. This is an important bug fix
|
||
release. This release incorporates fixes to correct critical list
|
||
handling errors in task shutdown logic: One in timer deletion logic
|
||
(timer_delete.c) and one in stream logic (lib_init.c). This release
|
||
also includes support to ZiLOG EZ80Acclaim microcontroller (EZ80F91
|
||
chip) and configurations for the ZiLOG z8f64200100kit (Z8F6423) and
|
||
ez80f0910200kitg (EZ80F091) development kit.
|
||
|
||
NuttX-0.3.11
|
||
------------
|
||
|
||
This is the 23rd release of NuttX. This is another important bugfix
|
||
release. This releases fixes several bugs:
|
||
|
||
* Two POSIX timer bugs: a memory leak as well a fatal sequencing error.
|
||
* Several FAT filesystem errors.
|
||
* A deadlock that can occur in opendir()
|
||
|
||
A few new features were also added:
|
||
|
||
* Support for recursive mutexes
|
||
* Added a RAM disk block driver
|
||
* The host simulator no longer uses direct Linux system calls and
|
||
now also works on Cygwin.
|
||
* The OS test was strengthen and now runs as an endurance test
|
||
|
||
These changes were verified only on the Host simulator under Cygwin.
|
||
Please report any errors to me.
|
||
|
||
This tarball contains a complete CVS snapshot from June 1, 2008.
|
||
|
||
NuttX-0.3.12
|
||
------------
|
||
|
||
This is the 24th release of NuttX. This release includes some minor
|
||
bugfixes as well as a few new features. Bugs fixed include:
|
||
|
||
* Corrected an error in recursive mutex implementation.
|
||
* task_create() was only dup()ing the first three file descriptors.
|
||
* Fixed driver open reference counting errors in dup(), dup2(), and exit().
|
||
* Fixed error handling logic in fflush().
|
||
|
||
New features were also added:
|
||
|
||
* Pipes and pipe() API
|
||
* FIFOs and mkfifo() API
|
||
* mkfatfs() API can be used to format FAT file systems.
|
||
|
||
These changes were verified only on the Host simulator under Cygwin.
|
||
Please report any errors to me.
|
||
|
||
This tarball contains a complete CVS snapshot from August 10, 2008.
|
||
|
||
NuttX-0.3.13
|
||
------------
|
||
|
||
This is the 25th release of NuttX. This release includes some
|
||
important bugfixes as well as a few new features. Bugs fixed
|
||
include:
|
||
|
||
* Fixed problems with Cygwin-based console input. NSH now works
|
||
with the Cygwin simulator.
|
||
* sched_get_priority_max/min returned error on SCHED_RR
|
||
* Corrected detection of End-of-File in fgets()
|
||
* Fixed an error in opendir() that could cause an assertion to fail
|
||
inappropriately.
|
||
* Corrected an error in the FAT that caused files opened for writing
|
||
with O_APPEND to fail.
|
||
* Fix error in getopt() when called with argc==1
|
||
* Fix error in stat() when used on the root directory
|
||
* Fixed a critical bug that effects the way that environment variables
|
||
are shared among pthreads.
|
||
* uIP port now supports multi-threaded, concurrent socket access.
|
||
So, for example, one thread can be reading from a socket while
|
||
another is writing to the socket.
|
||
|
||
New features were also added:
|
||
|
||
* New OS APIs: chdir() and getcwd()
|
||
* The Nuttx shell (NSH) has been extended in many ways.
|
||
- New commands: mkfatfs, mkfifo, sleep, usleep, nice, sh, cd, and pwd
|
||
- New memory inspection commands and heap usage commands
|
||
- New capabilities:
|
||
- Execution of commands in background
|
||
- Execution of simple scripts
|
||
- Redirection of command output
|
||
- Last command status ($?)
|
||
- Now supports if-then[-else]-fi construct
|
||
- Other features as noted in the ChangeLog.
|
||
|
||
These changes were verified only on the Host simulator under Cygwin
|
||
and under Linux and also on the Neuros OSD (ARM9). Please report
|
||
any errors to me.
|
||
|
||
This tarball contains a complete CVS snapshot from September 1, 2008.
|
||
|
||
nutt-0.3.14
|
||
-----------
|
||
|
||
This is the 26th release of NuttX. This release includes some
|
||
important bugfixes as well as a few new features. Critical bugs
|
||
fixed include:
|
||
|
||
FAT FS:
|
||
* Fixed several critical bugs with regard to fat reading and
|
||
writing and FAT12 accesses. Basically the FAT FS only worked
|
||
with my tiny test files and test cases. A lot of stronger FAT
|
||
tested is still needed!
|
||
* Fixed another FAT bug in implementation of FAT lseek();
|
||
this prohibited correct random access to large files.
|
||
|
||
Network:
|
||
* Corrected a critical bug that may prevent recvfrom from receiving
|
||
packets from most remote UDP port numbers.
|
||
* Corrected an error in multi-threaded socket handling in send() and
|
||
sendto(). Outgoing data could overwrite incoming data.
|
||
* Corrected IP checksum calculation in ICMP and UDP message send logic.
|
||
* Corrected an error in send() timeout logic.
|
||
|
||
New features were also added:
|
||
|
||
Network:
|
||
* Added support for application access to ICMP protocol stacks
|
||
* Added ping request logic (net/uip).
|
||
* Added basic TFTP client logic (netutils/tftpc).
|
||
|
||
NuttShell (NSH):
|
||
* New commands: 'test', '[', 'ping', 'mkrd', 'xd', and TFTP 'get' and 'put'
|
||
See the new NuttShell User Guide for additional information.
|
||
|
||
Other less critical bugs were also fixed and other less important
|
||
features were were added. See the ChangeLog for details.
|
||
|
||
These changes were verified only on the Neuros OSD (ARM9). Please
|
||
report any errors to me.
|
||
|
||
This tarball contains a complete CVS snapshot from September 8, 2008.
|
||
|
||
nutt-0.3.15
|
||
-----------
|
||
|
||
This is the 27th release of NuttX. This release includes some new features:
|
||
|
||
* Adds support for the ROMFS filesystem
|
||
* ROMFS supports mmap() to provide eXecute In Place (XIP) capability
|
||
* NuttShell (NSH) can be configured to use ROMFS to provide a tiny read-only
|
||
filesystem with a startup script in /etc.
|
||
* Completed the basic port of the NXP LPC2148 on the mcu123.com board.
|
||
The basic port includes successful booting, timer interrupts,
|
||
serial console, successfully passing the examples/ostest, and a
|
||
NuttShell (NSH) configuration.
|
||
|
||
These changes were verified only on the mcu123.com NXP LPC2148
|
||
board. Please report any errors to me.
|
||
|
||
This tarball contains a complete CVS snapshot from September 20, 2008.
|
||
|
||
nutt-0.3.16
|
||
-----------
|
||
|
||
This is the 28th release of NuttX. This release includes the first
|
||
support for USB in NuttX. A set of USB APIs were added to support
|
||
USB device controller drivers and bindings to USB device class
|
||
drivers. The form of the interface was inspired by the Linux Gadget APIs.
|
||
|
||
At present USB device controller drivers are included for:
|
||
* The NXP LPC214x. This driver has been verified and is an early alpha
|
||
stage in quality.
|
||
* TI DM320. Coding for this driver is complete but it is completely
|
||
untested as of this release.
|
||
|
||
A controller-independent class driver is also included for:
|
||
* USB serial class device driver (emulates the Prolific PL2303
|
||
serial-to-USB adapter). This driver has only been verified with
|
||
the Linux host PL2303 driver.
|
||
|
||
Other new features include:
|
||
* Add an option to set aside a separate stack for interrupt
|
||
handling (ARM only). This is useful when memory is constrained,
|
||
there are multiple tasks, and the interrupt stack requirement
|
||
is high (as when USB is enabled).
|
||
|
||
A few bugs were also fixed:
|
||
* Fixed the frequency of system timer interrupts in the NXP LPC214x port
|
||
(off by 20x in nuttx-0.3.15)
|
||
* Fixed serial driver bugs related to (1) open counts and (2) recognizing
|
||
O_NONBLOCK on read.
|
||
* Fixed an error in read(); it was not setting the errno on errors returned
|
||
from the driver.
|
||
|
||
These changes were verified only on the mcu123.com NXP LPC2148 board
|
||
using with a Linux host. Please report any errors to me.
|
||
|
||
This tarball contains a complete CVS snapshot from October 10, 2008.
|
||
|
||
UPDATE
|
||
------
|
||
This release does not build for the ARM target when USB is disabled.
|
||
Here is the fix:
|
||
|
||
Index: arch/arm/src/common/up_internal.h
|
||
===================================================================
|
||
RCS file: /cvsroot/nuttx/nuttx/arch/arm/src/common/up_internal.h,v
|
||
retrieving revision 1.13
|
||
diff -u -r1.13 up_internal.h
|
||
--- arch/arm/src/common/up_internal.h 6 Oct 2008 16:20:52 -0000 1.13
|
||
+++ arch/arm/src/common/up_internal.h 13 Oct 2008 20:48:21 -0000
|
||
@@ -200,7 +200,8 @@
|
||
extern void up_usbinitialize(void);
|
||
extern void up_usbuninitialize(void);
|
||
#else
|
||
-# define up_netinitialize()
|
||
+# define up_usbinitialize()
|
||
+# define up_usbuninitialize()
|
||
#endif
|
||
|
||
#endif /* __ASSEMBLY__ */
|
||
|
||
NuttX-0.3.17
|
||
------------
|
||
|
||
This is the 29th release of NuttX. This release includes the
|
||
additional support for USB in NuttX. The following new features
|
||
were added:
|
||
|
||
* Added support for SPI-based MMC/SD cards (with an SPI driver
|
||
for the NXP LPC214x).
|
||
* Added USB storage class device side driver (BBB)
|
||
* Added an example that demonstrates the USB storage class by
|
||
exporting the SPI based MMC/SD card on the NXP LPC214x.
|
||
|
||
This is an early alpha release of these drivers. At present they
|
||
only work with debug features enabled so there are probably some
|
||
race conditions that occur only with debug features disabled.
|
||
(Anyone out there with a USB analyzer? I would love to know what
|
||
is happening.)
|
||
|
||
Several important bugs were also fixed in the FAT file system, USB
|
||
serial driver and NXP LPC214x USB controller driver. (See the ChangeLog
|
||
for details.)
|
||
|
||
These changes were verified only on the mcu123.com NXP LPC2148 board
|
||
using a Linux development environment. USB testing was performed
|
||
using both a Linux host and a WinXP host. Please report any errors
|
||
to me.
|
||
|
||
This tarball contains a complete CVS snapshot from October 28, 2008.
|
||
|
||
NuttX-0.3.18
|
||
------------
|
||
|
||
This is the 30th release of NuttX. This release includes two
|
||
partially completed ports, several new features, and a couple of
|
||
important bug fixes. The two partially completed ports are:
|
||
|
||
* The STMicro STR71x processor and configuration for the Olimex
|
||
STR-P711 board.
|
||
* The Hitachi SH-1 using the SH1_LCEVB1 (SH-1/US7032EVB1) board
|
||
|
||
Progress on these ports is stalled (as detailed in the ChangeLog).
|
||
|
||
The new features focus primarily on management of block devices and
|
||
extensions of the NuttShell (NSH). These include:
|
||
|
||
* A loop device that converts a file into a block device.
|
||
* A block to character (BCH) driver that allow access a block device as
|
||
if it were character device.
|
||
* Added strcasecmp() and strncasecmp() libc functions.
|
||
* Added the 'dd' and 'losetup' commands to NSH. These commands
|
||
(along with mkfatfs and mount), give good management of filesystems
|
||
on the target.
|
||
|
||
Several bugs were fixed, the most important of which are:
|
||
|
||
* Fixed a race condition workaround delay in LPC214X SPI logic.
|
||
This was also the cause of some bad MMC/SD performance on that
|
||
platform.
|
||
|
||
* Fixed a recently introduced FAT file system problem: It would
|
||
mount a (invalid) FAT file system even if the medium is not formatted!
|
||
|
||
* Corrected two other important errors in the FAT lseek() implementation:
|
||
1 - The sectors-per-cluster value was being reset to "1".
|
||
2 - Important lseek logic was omitted when the seek position was zero.
|
||
|
||
The FAT filesystem has had many bugs fixed in it and, I think, is
|
||
now maturing and becoming stable.
|
||
|
||
These changes were verified only on the mcu123.com NXP LPC2148
|
||
board, the Hitachi SH1_LCEVB1 board, and the Linux simulator, all
|
||
using a Linux development environment. Please report any errors
|
||
to me.
|
||
|
||
This tarball contains a complete CVS snapshot from November 16, 2008.
|
||
|
||
NuttX-0.3.19
|
||
------------
|
||
|
||
This is the 31st release of NuttX. This release includes the
|
||
following new feature:
|
||
|
||
* Add poll() and select() APIs that may be used to monitor for
|
||
data availability on character devices or TCP/IP sockets.
|
||
* Implemented support TCP/IP connection backlog. This allows
|
||
select() to wake-up on new connections to a listener socket.
|
||
* Added definition of a framebuffer driver and implement framebuffer
|
||
drivers for the simulated platform and the TI DM320 (untested
|
||
as of the initial check-in).
|
||
* Partially developed a graphics framework based on the framebuffer
|
||
drivers, however, this will not be ready for use for a few more
|
||
releases. Currently this includes only a few color conversion
|
||
routines and some rasterizing functions. A tiny windowing system
|
||
is under development but not ready for check-in yet.
|
||
* Added support for fixed precision math.
|
||
* Added support for outgoing multicast packets.
|
||
|
||
Several bugs were fixed, the most important of which are:
|
||
|
||
* Fixed an important bug in the TCP/IP buffering logic. When
|
||
TCP/IP read-ahead is enabled and not recv() is in-place when a
|
||
TCP/IP packet is received, the packet is placed into a read-ahead
|
||
buffer. However, the old contents of the read-ahead buffer
|
||
were not being cleared and old data would contaminate the newly
|
||
received buffer.
|
||
|
||
* Changed the behavior of the serial driver read. It now returns
|
||
data as it is available rather than waiting for the full requested
|
||
read size. This makes functions like fgetc() work much more
|
||
smoothly.
|
||
|
||
These changes were verified only on the Neuros OSD (ARM9) using a
|
||
Linux development environment. Please report any errors to me.
|
||
|
||
This tarball contains a complete CVS snapshot from November 26, 2008.
|
||
|
||
NuttX-0.4.0
|
||
-----------
|
||
|
||
This is the 32nd release of NuttX. This release adds graphics
|
||
support and a tiny windowing subsystem. That new graphics subsystem
|
||
is documented at http://nuttx.sourceforge.net/NXGraphicsSubsystem.html.
|
||
No other substantial changes were made.
|
||
|
||
These changes were verified only on the NuttX simulation platform
|
||
with X11 windows simulating a device framebuffer. Please report any
|
||
errors to me.
|
||
|
||
The version number was bumped up to 0.4.0 in part to reflect the
|
||
new graphics subsystem, but also to recognize the NuttX is approaching
|
||
complete functionality. In the 0.3.x versions, network support was
|
||
added, Pascal P-code runtime support was added, FAT and ROMFS
|
||
filesystems were added, MMC/SD and USB device support were added.
|
||
There were also numerous extensions to the NuttShell, NuttX APIs,
|
||
and architecture ports.
|
||
|
||
This tarball contains a complete CVS snapshot from December 6, 2008.
|
||
|
||
NuttX-0.4.1
|
||
-----------
|
||
|
||
This is the 33rd release of NuttX. This is a minor bugfix release.
|
||
The primary reason for this release is to correct numerous build
|
||
errors that have accumulated for the ZiLOG ZDS-II based targets.
|
||
All ZDS-II targets now build correctly (but have not been re-tested).
|
||
In addition to platform-specific build failures, this release also
|
||
adds the following features which were not tested as of the time
|
||
of the release:
|
||
|
||
* Board support for the ZiLog ez80Acclaim! ez80f910200zco Development Kit
|
||
* ZiLOG eZ80F91 EMAC driver
|
||
|
||
These changes were verified only on the NuttX simulation platform.
|
||
Please report any errors to me.
|
||
|
||
This tarball contains a complete CVS snapshot from February 6, 2009.
|
||
|
||
NuttX-0.4.2
|
||
-----------
|
||
|
||
This is the 34th release of NuttX. This release adds no new OS
|
||
features but does include support for two new architectures:
|
||
|
||
* ez80Acclaim! Basic support has been integrated and verified
|
||
for the ez80f910200zcog-d board (eZ80F91-based). That basic
|
||
support includes timer interrupts and serial console. Ongoing
|
||
work includes an EMAC driver that should be integrated for the
|
||
next release nuttx-0.4.2. eZ80Acclaim! support has been in the
|
||
code base for some time, but has only just been integrated due
|
||
to toolchain issues.
|
||
|
||
* Renesas M16C/20. Support for the Renesas SKP16C20 board has
|
||
been included in the NuttX source tree. However, as the
|
||
eZ80Acclaim!, testing and integration of that port is stalled
|
||
due to toolchain issues.
|
||
|
||
These changes were verified only on the ZiLOG eZ80910200zcog-d
|
||
board. Please report any errors to me.
|
||
|
||
This tarball contains a complete CVS snapshot from February 28, 2009.
|
||
|
||
NuttX-0.4.3
|
||
-----------
|
||
|
||
This is the 35th release of NuttX. This release one important new
|
||
OS feature and corrects and extends the eZ80 port:
|
||
|
||
* Priority Inheritance. The basic NuttX waiting logic was extended
|
||
to support priority inheritance. See the NuttX User Manual for
|
||
further information:
|
||
http://www.nuttx.org/NuttxUserGuide.html#priorityinheritance.
|
||
|
||
* ez80Acclaim! Corrected several critical, show-stopping bugs on that
|
||
platform including:
|
||
- Errors in the serial driver interrupts.
|
||
- An error in the eZ80 table.
|
||
* eZ80Acclaim!: Completed integration of the eZ80F91 EMAC driver.
|
||
|
||
These changes were verified only on the ZiLOG eZ80910200zcog-d board
|
||
and on Cygwin-based simulation platform in various configurations.
|
||
Please report any errors to me.
|
||
|
||
This tarball contains a complete CVS snapshot from March 13, 2009.
|
||
|
||
NuttX-0.4.4
|
||
-----------
|
||
|
||
This is the 36th release of NuttX. This release focuses on bugfixes
|
||
and extending and verifying certain networking features.
|
||
|
||
* Important bugs were fixed in NSH, UDP checksum calculation, UDP
|
||
bind() behavior for port==0, the eZ80Acclaim! EMAC driver, Z80
|
||
interrupt handling, and in the C libraries.
|
||
|
||
* Testing was extended to further verify the tiny webserver,
|
||
DHCPD, wget(), and sendmail.
|
||
|
||
See the Changelog for a detailed description of these changes.
|
||
|
||
These changes were verified only on the ZiLOG eZ80910200zcog-d board
|
||
using the ZDS-II toolchain in Cygwin-based environment. Please
|
||
report any errors to me.
|
||
|
||
This tarball contains a complete CVS snapshot from March 29, 2009.
|
||
|
||
NuttX-0.4.5
|
||
-----------
|
||
|
||
This is the 37th release of NuttX. This release focuses on a few new features.
|
||
|
||
* The basic port for the Freescale ARM920T i.MX1 processor on the
|
||
Freescale MX1ADS board. Coding is complete for this port, but
|
||
it is has not yet fully integrated
|
||
* Extended I2C and SPI interface definitions
|
||
* Add basic support for C++ applications. Very simple C++
|
||
applications can now be built against NuttX without any external
|
||
libraries. At present, only the most primitive C++ programs
|
||
are supported, but it is hoped that this support will be extended
|
||
in future releases.
|
||
|
||
See the Changelog for a detailed description of these changes.
|
||
|
||
This tarball contains a complete CVS snapshot from April 19, 2009.
|
||
|
||
NuttX-0.4.6
|
||
-----------
|
||
|
||
This is the 38th release of NuttX. The release features support
|
||
for the Micromint Eagle-100 development board. This board is based
|
||
around, the Luminary LM3S6918 MCU. This is the first ARM Cortex-M3
|
||
architecture supported by Nuttx. This initial, basic port includes
|
||
timer and serial console with configurations to execute the NuttX
|
||
OS test and to run the NuttShell (NSH). Work is still underway on
|
||
this port and current plans are to have I2C, SSI, MMC/SD, and and
|
||
Ethernet driver in the 0.4.7 release.
|
||
|
||
Additional work was done on the MXADS i.MX1 port, however, that
|
||
work has been set aside until I complete work on the Eagle-100 (I
|
||
also need to come up with a 3V power supply).
|
||
|
||
Other changes in this release include: Extensions to the SPI interface
|
||
definition in order to handle 9-bit interfaces to displays. Several
|
||
bugs were fixed (see the ChangeLog for a complete list of changes).
|
||
|
||
This tarball contains a complete CVS snapshot from May 19, 2009.
|
||
|
||
NuttX-0.4.7
|
||
-----------
|
||
|
||
This is the 39th release of NuttX. This release focuses on cleaning
|
||
up and extending the Eagle100/LM3S6918 port released in nuttx-0.4.6
|
||
and on improved MMC/SD support. New features include:
|
||
|
||
* Improved reliably and additional drivers for the Eagle-100 board
|
||
(LM3S6918 ARM Cortex-M3). Additional drivers include Ethernet,
|
||
SSI, and support for the on-board LEDs and microSD cards.
|
||
|
||
* The SPI-based MMC/SD driver was extended to support SDHC Version
|
||
2.xx cards.
|
||
|
||
In addition, this release includes several important bugfixes for
|
||
the LM3S6918, the LPC2148, the SPI-based MMC/SD driver, and to
|
||
FAT32. See the ChangeLog for details of these bugfixes.
|
||
|
||
This tarball contains a complete CVS snapshot from May 29, 2009.
|
||
|
||
NuttX-0.4.8
|
||
-----------
|
||
|
||
This is the 40th release of NuttX. This release adds:
|
||
|
||
* Support for the Olimex STRP711 board. That board is based on
|
||
the STMicro STR711 MCU (ARM7TDMI). Integration is complete on
|
||
the basic port (boot logic, system time, serial console). Two
|
||
configurations have been verified: (1) The board boots and
|
||
passes the OS test with console output visible on UART0, and
|
||
the NuttShell (NSH) is fully functional with interrupt driven
|
||
serial console. An SPI driver is available but untested (because
|
||
the Olimex card slot appears to accept only MMC cards; I have
|
||
only SD cards). Additional needed: USB and driver, MMC
|
||
integration.
|
||
|
||
* Support for the CodeSourcery and devkitARM Windows-native GNU
|
||
toolchains. Makefiles have been modified for the LM3S6918,
|
||
LPC2148, and STR711 to support these toolchains under Cygwin.
|
||
|
||
This tarball contains a complete CVS snapshot from June 13, 2009.
|
||
|
||
NuttX-0.4.9
|
||
-----------
|
||
|
||
This is the 41st release of NuttX. This release adds:
|
||
|
||
* Support for a new binary format call NXFLAT that can be used to
|
||
execute separately linked programs in place in a file system.
|
||
See http://www.nuttx.org/NuttXNxFlat.html.
|
||
|
||
* Several important bugs were files related to networking and ROMFS.
|
||
See the ChangeLog for a complete list.
|
||
|
||
This tarball contains a complete CVS snapshot from June 26, 2009.
|
||
|
||
NuttX-0.4.10
|
||
-----------
|
||
|
||
This is the 42nd release of NuttX. This released focused on the
|
||
port of Jeff Poskanzer's THTTPD HTTP server (see
|
||
http://acme.com/software/thttpd/). As of the 0.4.10 release, that
|
||
port is still not fully complete and functional. However, numerous
|
||
related bug-fixes and functional additions for THTTPD were added:
|
||
|
||
* Several new standard C-library functions (fileno, strstr,
|
||
strpbrk, fcntl).
|
||
* Improved and extended timing APIs (mktime, gmtime, gmtime_r,
|
||
gettimeofday, localtime, localtime_r, and strftime)
|
||
* Networking enhancements: recvfrom() and accept() now work with
|
||
non-blocking sockets.
|
||
* NXFLAT extensions (exec)
|
||
* Pattern matching logic.
|
||
* And miscellaneous bug fixes (see the ChangeLog for details).
|
||
|
||
This tarball contains a complete CVS snapshot from August 8, 2009.
|
||
|
||
NuttX-0.4.11
|
||
------------
|
||
|
||
This is the 43rd release of NuttX. This release of NuttX incorporates
|
||
the verified port of Jeff Poskanzer's THTTPD HTTP server (see
|
||
http://acme.com/software/thttpd/). Many of the key features of
|
||
THTTPD have been tested on the Micromint Eagle-100 development board
|
||
(Cortex-M3). These tests verify:
|
||
|
||
* Serving of files from any file system
|
||
* Execution of CGI executable. This release supports execution
|
||
of NXFLAT executables on a ROMFS file system
|
||
(http://www.nuttx.org/NuttXNxFlat.html)
|
||
|
||
A standard CGI interface is used: Information is pasted to the CGI
|
||
program via POST commands and via environment variables. CGI socket
|
||
I/O is redirected to stdin and stdout so that the CGI program only
|
||
need to printf() to send its content back to the HTTP client.
|
||
|
||
Another value to this THTTPD integration effort has been that THTTPD
|
||
has provided a very good test bed for finding NuttX networking bugs.
|
||
Several very critical networking bugs have been fixed with this
|
||
0.4.11 release (see the ChangeLog for details). Networking throughput
|
||
has also been greatly improved. Anyone using NuttX networking
|
||
should consider upgrading to this release.
|
||
|
||
This tarball contains a complete CVS snapshot from September 16, 2009
|
||
|
||
NuttX-0.4.12
|
||
------------
|
||
|
||
This is the 44th release of NuttX. This release adds basic support
|
||
for the STMicro STM32, Cortex-M3 MCU. The specific port is to the
|
||
STMicro STM3210E-EVAL development board based around the STM32F103ZET6
|
||
MCU. Some highlights of this port:
|
||
|
||
* This basic port includes boot-up logic, interrupt driven serial
|
||
console, and system timer interrupts.
|
||
* Includes a basic STMicro RIDE7 project that can be used to
|
||
perform basic STM32 board bring-up (due to RIDE7 size limitations,
|
||
it cannot be used for the full NuttX bring-up).
|
||
* Working, Tested Configurations: the NuttX OS test and the
|
||
NuttShell (NSH) example.
|
||
|
||
This basic STM32 port will be extended in the 0.4.13 NuttX release.
|
||
Functionality needed for complete STM32 support includes: USB
|
||
device driver, LCD driver and NX bringup on the development board's
|
||
display and MicroSD support. An SPI driver and a DMA support was
|
||
included in this 0.4.12 release, but is not yet tested.
|
||
|
||
This tarball contains a complete CVS snapshot from October 17, 2009
|
||
|
||
NuttX-0.4.13
|
||
------------
|
||
|
||
This is the 45th release of NuttX. The release extends the support
|
||
for the STMicro STM32 microcontroller. Minimal support for the
|
||
STM3210E-EVAL development board based around the STM32F103ZET6 MCU
|
||
was released in NuttX-0.4.12. This release adds:
|
||
|
||
* A simple interface definition to support some FLASH, EEPROM,
|
||
NVRAM, etc. devices.
|
||
* Verified SPI operation using driver for SPI based FLASH parts
|
||
M25P64 and M25P128.
|
||
* Improved Cortex-M3 context switching. This should improve
|
||
context switching performance be 2x in certain cases.
|
||
* Added a USB device-side driver for the STM32. This is an early
|
||
release of a very complex driver; some bugs are expected.
|
||
* The USB driver has been verified against the USB serial device
|
||
class driver. There is at least one known outstanding issue
|
||
(see the full bug description in the TODO list).
|
||
|
||
This release also corrects some important bugs in the early STM32 release:
|
||
|
||
* Fixed several errors the prevented operation of NuttX on an
|
||
STM32 development board using USART2 as the serial console.
|
||
* Fixed and optimization-dependent race condition in the clock
|
||
initialization.
|
||
* Fixed a critical bug in the interrupt control logic that could
|
||
cause interrupt operations to failed used for interrupts in a
|
||
certain range.
|
||
|
||
This tarball contains a complete CVS snapshot from November 4, 2009
|
||
|
||
NuttX-4.14
|
||
----------
|
||
|
||
This is the 46th release of NuttX. The release extends the support
|
||
for the STMicro STM32 microcontroller. Minimal support for the
|
||
STM3210E-EVAL development board based around the STM32F103ZET6 MCU
|
||
was released in NuttX-0.4.12 and extended in Nuttx-0.4.13 to include
|
||
initial USB support. This completes the STM32F103ZET6 and adds:
|
||
|
||
New Generic RTOS Features:
|
||
|
||
* Added generic support that can be included in any block driver
|
||
to provide read-ahead buffering and write buffering for improved
|
||
driver performance.
|
||
* Added a generic worker thread that can used to defer processing
|
||
from an interrupt to a task.
|
||
* Defined a generic SD/SDIO interface can can be bound to a MMC/SD
|
||
or SDIO driver to provide SDIO support.
|
||
* Implemented a an SDIO-based MMC/SD driver using this new SDIO
|
||
interface.
|
||
|
||
New STM32 Features:
|
||
|
||
* Add support to configure an STM32 input GPIO to generate an
|
||
EXTI interrupt.
|
||
* Added support for buttons on the STM3210E-EVAL board.
|
||
* Implemented an STM32 version of the common the SDIO interface.
|
||
* Added a configuration to exercise the STM32 with the USB mass
|
||
storage device class example.
|
||
|
||
This release also corrects some important bugs in the early STM32 release:
|
||
|
||
* Correct error handling in the mount() logic.
|
||
* Fixed several STM32 DMA-related issues. Integrated and debugged
|
||
STM32 DMA functionality that was added in 0.4.12.
|
||
* Fixed several bugs in the STM32 USB device-side driver.
|
||
|
||
NOTE: This version, 4.14, is equivalent to what would have been
|
||
called 0.4.14 to follow 0.4.13. The zero has been eliminated from
|
||
the front of the version number to avoid confusion about the state
|
||
of development: Some have interpreted the leading zero to mean
|
||
that the code is in some way unstable. That was not the intent.
|
||
Beginning in January 2010, I will switch to the 2010.nn versioning
|
||
as many others have done to avoid such confusion.
|
||
|
||
This tarball contains a complete CVS snapshot from December 2, 2009
|
||
|
||
NuttX-5.0
|
||
---------
|
||
|
||
This is 47th release of NuttX and the successor to nuttx-4.14. This
|
||
major revision number has been incremented to indicate that an
|
||
incompatibility with previous nuttx releases has been introduced.
|
||
This version adopts standard fixed width integer names as specified
|
||
by the ANSI C99 standard. The core logic of NuttX is older than
|
||
that standard and did not conform to it.
|
||
|
||
If you have applications running on NuttX-4.14, those applications
|
||
should continue to build and execute without problem on NuttX-5.0.
|
||
However, if you have device drivers or other OS-internal logic, you
|
||
will probably have to make some minor changes to your code to use
|
||
this version. Below is a summary of those changes:
|
||
|
||
* If you include sys/types.h to get the non-standard, fixed width
|
||
integer types (uint32, uint16, ubyte, etc.), that is no longer
|
||
necessary.
|
||
* Instead, you will need to include stdint.h where the new fixed
|
||
width integer types are defined (uint32_t, uint16_t, uint8_t, etc).
|
||
* You will have to change all occurrences of the following types:
|
||
|
||
uint32 -> uint32_t
|
||
uint16 -> uint16_t
|
||
ubyte -> uint8_t
|
||
uint8 -> uint8_t
|
||
sint32 -> int32_t
|
||
sint16 -> int16_t
|
||
sint8 -> int8_t
|
||
|
||
* In addition, the non-standard type 'boolean' must replaced with
|
||
the standard type 'bool'. The type definition for 'bool' is in
|
||
stdbool.h
|
||
|
||
This change in typing caused small changes to many, many files. It
|
||
was verified that all configurations in the release still build
|
||
correctly (other than the SDCC-based configurations). Regression
|
||
testing was performed on a few configurations, but it is possible
|
||
that minor build issues still exist. (If you encounter any, please
|
||
let me know and I will help you to fix them.)
|
||
|
||
In the course of the regression testing, several important bugs
|
||
unrelated to the type changes were found and corrected.
|
||
|
||
* Fixed an important error in the RX FIFO handling logic of the
|
||
LM3S6918 Ethernet driver.
|
||
* Corrected the handling of TCP sequence numbers in the TCP stack.
|
||
* And other less important bugs as detailed in the ChangeLog.
|
||
|
||
The primary focus of this release was standards compatibility, but
|
||
a few new features were added including a (1) Flash Translation
|
||
Layer (FTL) that will support filesystems on a FLASH device and (2)
|
||
partial ports for the STM32F107VC and HCS12 C9S12NE64 MCUs. Those
|
||
ports are very incomplete as of this writing.
|
||
|
||
This tarball contains a complete CVS snapshot from December 21, 2009
|
||
|
||
NuttX-5.1
|
||
---------
|
||
|
||
This is the 48th release of NuttX. This release adds support for
|
||
two new MCU architectures in various states of development:
|
||
|
||
* AT91SAM3U (http://www.atmel.com/products/at91/sam3landing.asp?family_id=605)
|
||
|
||
This release adds support for the SAM3U-EK development board with
|
||
the AT91SAM3U4E MCU
|
||
(http://www.atmel.com/dyn/products/product_card_mcu.asp?part_id=4562).
|
||
As with most NuttX architecture releases, the release will be
|
||
rolled out in two parts: A basic port and an extended port.
|
||
|
||
NuttX-5.1 includes the basic port for the SAM3U-EK board. This
|
||
release passes the NuttX OS test and is proven to have a valid
|
||
OS implementation. It supports the basic boot-up, serial console
|
||
and timer interrupts. A configuration to support the NuttShell
|
||
is also included.
|
||
|
||
The extended port will also include support for SDIO-based SD
|
||
cards and USB device (and possible LCD support). These extensions
|
||
may or may not happen by the Nuttx 5.2 release as my plate is
|
||
kind of full now.
|
||
|
||
* LPC3131 (http://ics.nxp.com/products/lpc3000/lpc313x.lpc314x.lpc315x/)
|
||
|
||
This release also adds the complete implementation of the basic
|
||
port for the NXP LPC3131 MCU on the Embedded Artists EA3131 board
|
||
(http://www.embeddedartists.com/products/kits/lpc3131_kit.php).
|
||
That port, unfortunately has stalled due to tools issues. Those
|
||
tool issues have been resolved and I am confident that the verified
|
||
basic port will be available in NuttX-5.2.
|
||
|
||
The extended release will follow and should include SDIO-based
|
||
SD card support and device USB.
|
||
|
||
A few additional features and bugfixes of a minor nature were also
|
||
incorporated as detailed in the ChangeLog.
|
||
|
||
NuttX-5.2
|
||
---------
|
||
|
||
This is the 49th release of NuttX. This release completes the
|
||
verification of the basic port for the NXP LPC3131 MCU on the
|
||
Embedded Artists EA3131 board
|
||
(http://www.embeddedartists.com/products/kits/lpc3131_kit.php).
|
||
This basic port includes basic boot-up, serial console, and timer
|
||
interrupts. This port has been verified on the using the NuttX OS
|
||
test and includes a working implementation of the NuttShell (NSH).
|
||
|
||
An extended release will follow and should include SDIO-based SD
|
||
card support and device USB.
|
||
|
||
NuttX-5.3
|
||
---------
|
||
|
||
This is the 50th release of NuttX. This release support for one new
|
||
architecture:
|
||
|
||
* A basic port for the NXP LPC2378 MCU on the Olimex-LPC2378
|
||
development board was contributed by Rommel Marcelo.
|
||
|
||
And extensions to two existing architectures:
|
||
|
||
* David Hewson contributed a dual-speed (full/high) USB device-side
|
||
driver for the NXP LPC3131 on the Embedded Artists EA3131
|
||
development board.
|
||
|
||
* A DMA driver and a high speed MCI driver for the Atmel AT91SAM3U
|
||
are included (but not fully tested in this release).
|
||
|
||
Two important bugfix was also included:
|
||
|
||
* An important fix to the USB mass storage driver was contributed
|
||
by David Hewson.
|
||
* A serious error in the AT91SAM3U PIO handling was fixed.
|
||
|
||
NuttX-5.4
|
||
---------
|
||
|
||
This is the 51st release of NuttX. This release includes one new,
|
||
important extension to th NX graphics system (See
|
||
http://www.nuttx.org/NXGraphicsSubsystem.html).
|
||
|
||
NX was develop a couple years back on hardware that supported only
|
||
framebuffer devices, that is, video hardware with video memory
|
||
directly converts the memory content to video. However, most MCUs
|
||
that NuttX focuses on do not support such video memory; rather,
|
||
that typically only support LCDs via parallel or serial interfaces.
|
||
|
||
This release of NuttX extends NX so that now renders directly to
|
||
the LCD device via its serial or parallel interface. No in-memory
|
||
copy of the screen memory need be maintained so this solution should
|
||
also work in MCUs with very limited SRAM.
|
||
|
||
This initial release of this feature includes the verified NX
|
||
extensions plus a driver for the HX8347, 16-bit parallel LCD. This
|
||
LCD supports 16-bit RGB (5:6:5).
|
||
|
||
NuttX-5.5
|
||
---------
|
||
|
||
This is the 52nd release of NuttX. This release includes one new
|
||
port, some new drivers and some important bugfixes:
|
||
|
||
* NuttX was ported to the Luminary/TI LM3S6965 Ethernet Evaluation
|
||
Kit. At present, that port includes an OS test configuration
|
||
and a NuttShell (NSH) configuration with Telnet support.
|
||
|
||
MMC/SD and Networking support are provided but not thoroughly
|
||
verified in this release: Current development efforts are focused
|
||
on porting the NuttX window system (NX) to work with the
|
||
Evaluation Kits OLED display.
|
||
|
||
* A NuttX Ethernet driver for the Microchip ENC28J60 SPI Ethernet
|
||
chip is available in the source tree (but has not yet been fully
|
||
verified because I haven't properly connected it to hardware
|
||
yet).
|
||
|
||
* The Olimex STR-P711 NuttX port was extended to support the
|
||
ENC28J60 and some new networking configurations were added.
|
||
The ENC28J60 has not been tested on the STR-P711, however,
|
||
because of hardware issues (I don't think the USB powered board
|
||
provides enough power for the ENC28J60 and I don't have the
|
||
right wall wart yet).
|
||
|
||
Along the way, external interrupt support (XTI) was added to
|
||
the STMicro STR-P711 port and some important bugs were fixed
|
||
in the STR-P711 SPI driver.
|
||
|
||
* Added (optional) floating point support for printf().
|
||
(Contributed by Yolande Cates.)
|
||
|
||
* Corrected an important UDP reference counting error. It was
|
||
not a serious error, but it trigger an assertion was IS a serious
|
||
error.
|
||
|
||
NuttX-5.6
|
||
---------
|
||
|
||
This is the 53rd release of NuttX. This release includes one several
|
||
new drivers for existing NuttX ports:
|
||
|
||
* This port adds support for the RiT displays P14201 4-bpp,
|
||
greyscale OLED. 4-bpp greyscale support was integrated into
|
||
the NX graphics sub-system and verified using the TI/Luminary
|
||
LP3S6965 Ethernet Evaluation Kit.
|
||
|
||
* The M25Px driver was extended for the M24P1 FLASH part (see NOTE).
|
||
|
||
* An I2C driver and (basic) SPI driver were added for the NXP
|
||
LPC313x port. The I2C interface definition was extended to
|
||
efficiently handle multiple I2C transfers.
|
||
(Contributed by David Hewson.)
|
||
|
||
As well as a few, important USB-related bugfixes (See the ChangeLog
|
||
for details).
|
||
|
||
This release also includes the beginnings of a port for the NXP
|
||
LPC1768 MCU. However, it is too early for that port to be useful
|
||
(stay tuned for a future announce of the availability of the LPC1768
|
||
port).
|
||
|
||
NuttX-5.7
|
||
---------
|
||
|
||
This is the 54th release of NuttX. This release adds basic support
|
||
for one new ARM Cortex-M3 architecture:
|
||
|
||
* Added support for NXP LPC1768 MCU as provided on the Nucleus
|
||
2G board from 2G Engineering (http://www.2g-eng.com).
|
||
* Some initial files for the LPC17xx family were released in NuttX
|
||
5.6, but the first functional release for the NXP LPC1768/Nucleus2G
|
||
occurred with NuttX 5.7.
|
||
* That initial basic release included timer interrupts and a
|
||
serial console and was verified using the NuttX OS test.
|
||
* That release includes a verified NuttShell (NSH) configuration
|
||
(see the http://www.nuttx.org/NuttShell.html).
|
||
* Also included are unverified SPI and USB device drivers.
|
||
|
||
Further efforts include:
|
||
(1) development of a DMA support library
|
||
(2) SPI-based MMC/SD support
|
||
(3) verification of the USB driver
|
||
|
||
Watch for announcement of the completed LPC1768 port expected in
|
||
NuttX-5.8.
|
||
|
||
NuttX-5.8
|
||
---------
|
||
|
||
This is the 55th release of NuttX. This includes several important
|
||
bugfixes:
|
||
|
||
* Corrects some interrupt vectoring for the TI/Stellarix LM3S
|
||
port
|
||
* Correct initialization logic for NXP LPC17xxx NuttX ports:
|
||
Power was not being provided to the GPIO module!
|
||
* Corrected (but did not verify) implementation of the optional
|
||
interrupt stack feature (all Cortex M3 architectures).
|
||
* Correct a HardFault in the LPC17xx SSP driver.
|
||
|
||
Additional minor fixes are also included as detailed in the ChangeLog.
|
||
|
||
Several new features have been fully developed and included in this
|
||
release, but full verification of most of these new features has
|
||
been blocked for a variety of issues:
|
||
|
||
* Added microSD support for the NuttShell (NSH) configuration in
|
||
the Nucleus2G LPC1768 port. For reasons that have not yet been
|
||
determined, I have not successfully accessed the microSD card
|
||
as of this writing.
|
||
* Two USB configurations were also added for the Nucleus2G board:
|
||
One to support the USB serial device and one for the USB mass
|
||
storage device. Some testing of the USB driver was performed,
|
||
but full verification is stalled for an OTG style USB cable.
|
||
* LEDs now work correctly on the Nucleus2G LPC1768 board.
|
||
* The NuttX/uIP networking subsystem now supports IGMPv2 client.
|
||
IGMP (Internet Group Multicast Protocol) network "appliances"
|
||
to join into multicast groups. Outbound traffic to enter and
|
||
leave multicast groups has been verified, but full verification
|
||
will require a switch capable of multicast. Issues associated
|
||
with the receipt of multicast packets are likely.
|
||
|
||
NuttX-5.9
|
||
---------
|
||
|
||
This is the 56th release of NuttX. This release is difficult to
|
||
categorize; NuttX-5.9 was really released because there were too
|
||
many changes accumulating in CVS -- a few important, some unfinished
|
||
implementations, and a couple of important bugfixes.
|
||
|
||
* By far biggest change in this release is the complete implementation
|
||
of on-demand paging support. This feature will allow you to
|
||
execute large programs on a mass storage device (such as SPI
|
||
FLASH) in a small RAM. All of the core on-demand paging logic
|
||
was completed (see http://www.nuttx.org/NuttXDemandPaging.html)
|
||
and support was implemented for the ARM-9 family. A test
|
||
configuration is in place for the NXP LPC3131. It has been
|
||
verified that this new logic does not interfere with normal
|
||
fixed-page ARM9 operation, but otherwise this new on-demand
|
||
paging feature is untested.
|
||
* Add support for the CodeSourcery toolchain to the Olimex-lpc2378
|
||
port and for the Neuros OSD port.
|
||
* The Neuros OSD port has been updated to work with the production
|
||
v1.0 OSD (previously it only worked with the development board).
|
||
* And some miscellaneous feature enhancements as detailed in the
|
||
ChangeLog.
|
||
|
||
This includes several important bugfixes:
|
||
|
||
* NXP LPC17xx - Fixed a critical bug in the GPIO configuration
|
||
logic: When attempting to set no pull-up or pull-down (floating),
|
||
it would, instead, select pull-down.
|
||
|
||
* TI/Luminary LM3Sxxxx - Fixed:
|
||
(1) A logic error in an address table lookup.
|
||
(2) GPIO port encoding the limited support to only 8 GPIO ports.
|
||
|
||
* Corrected the lease time in the DHCPC implementation: It was
|
||
not in host byte order.
|
||
|
||
* And several other less important bugs as documented in the
|
||
ChangeLog: Warnings, cornercase compilation problems, etc.
|
||
|
||
NuttX-5.10
|
||
----------
|
||
|
||
This is the 57th release of NuttX. This release includes a combination
|
||
of some new features as well as several bugfixes. New features
|
||
include:
|
||
|
||
* TI/Luminary Stellaris LM3S9B96:
|
||
Header file changes contributed by Tiago Maluta.
|
||
* TI/Luminary Stellaris LM3S8962:
|
||
Header file changes and support for the Stellaris LM3S8962
|
||
Ethernet+CAN Evaluation Board contributed by Larry Arnold.
|
||
* On-Demand Paging Support:
|
||
The basic logic for the On-Demand Paging feature is complete,
|
||
implemented for the NXP LPC3131, and partially tested. See
|
||
http://www.nuttx.org/NuttXDemandPaging.html. Some additional
|
||
test infrastructure will be needed in order to complete the
|
||
verification. See configs/ea3131/README.txt for details.
|
||
* Two Pass Build Support:
|
||
The make system now supports a two pass build where a relocatable,
|
||
partially linked object is created on the first pass and that
|
||
object is linked with the NuttX libraries to produce the final
|
||
executable on the second pass. This two pass build is currently
|
||
only used to support the On-Demand paging feature: The first
|
||
pass link forces critical logic into the locked text region;
|
||
the second pass builds the NuttX executable more-or-less as
|
||
normal.
|
||
* CONFIG_APP_DIR:
|
||
Generalized the way in which applications are built and linked
|
||
with NuttX. The new configuration CONFIG_APP_DIR replaces
|
||
CONFIG_EXAMPLE. CONFIG_EXAMPLE used to identify the sub-directory
|
||
within the NuttX examples/ directory that held the example
|
||
application to be built. That made it awkward to configure to
|
||
build an application that resides outside of the NuttX examples/
|
||
directory. CONFIG_APP_DIR is more general; it can be used to
|
||
refer to any directory containing the application to be built.
|
||
|
||
For people who have their own configurations and/or Makefiles,
|
||
you will need to make a couple of changes:
|
||
|
||
- Replace all occurrences of CONFIG_EXAMPLE=foobar with
|
||
CONFIG_APP_DIR=examples/foobar in all of the configuration
|
||
files.
|
||
- Replace any occurrences of examples/$(CONFIG_EXAMPLE) with
|
||
$(CONFIG_APP_DIR)
|
||
- Replace any occurrences of lib$(CONFIG_EXAMPLE)$(LIBEXT)
|
||
with libapp$(LIBEXT) in your Makefiles.
|
||
- Check any other occurrences of CONFIG_EXAMPLE.
|
||
|
||
* Several bugfixes are included as well as code changes to eliminate
|
||
some warnings. See the ChangeLog for details.
|
||
|
||
NuttX-5.11
|
||
----------
|
||
|
||
This is the 58th release of NuttX. This is a bugfix release.
|
||
|
||
* One very important bug fixes a race condition that can occur
|
||
using semaphores that can be awakened by signals. Under this
|
||
particular race condition, a task could hang waiting for a
|
||
semaphore.
|
||
* Corrections to lm3s8962 port contributed by Larry Arnold. That
|
||
port is purported to work correctly with these changes in place.
|
||
|
||
Plus less critical bugfixes as detailed in the ChangeLog. New features
|
||
include:
|
||
|
||
* A new configuration to support the mbed.org LPC1768 board.
|
||
(Contributed by Dave Marples.)
|
||
* A driver for the Atmel AT45DB161D 4Mbit SPI FLASH part
|
||
|
||
NuttX-5.12
|
||
----------
|
||
|
||
This is the 59th release of NuttX. This is a critical bugfix release.
|
||
|
||
* Fixed an important error in the signal trampoline logic.
|
||
Essentially, interrupts are re-enabled while the signal handler
|
||
executes, but the logic to re-disable the interrupts before
|
||
returning from the signal handler trampoline was missing. Under
|
||
certain circumstances, this can cause stack corruption. This
|
||
was discovered by David Hewson on an ARM9 platform, but since
|
||
the code has been leveraged, the bug has been propagated from
|
||
ARM to Cortex-M3, AVR32, M16C, SH1, ZNEO, eZ80, Z8, and Z80 --
|
||
almost every architecture. The correction has been incorporated
|
||
for all architectures but only verified on a few.
|
||
|
||
Other notable changes in NuttX-5.12:
|
||
|
||
* A complete port for the AVR32 (AT32UC3B0256) is incorporated
|
||
in the source tree. Testing of this port is underway now. This
|
||
release was made before verifying this port in order to get the
|
||
important bugfix in place.
|
||
|
||
* Other miscellaneous bugfix and enhancements as noted in the
|
||
ChangeLog.
|
||
|
||
NuttX-5.13
|
||
----------
|
||
|
||
This is the 60th release of NuttX. Headlines for this release
|
||
include:
|
||
|
||
* AVR32, www.mcuzone.com AVR32DEV1
|
||
|
||
The port for the www.mcuzone.com AVRDEV1 board based on the
|
||
Atmel AT32UC3B0256 MCU was (almost) fully integrated. The port
|
||
now successfully passes the NuttX OS test (examples/ostest).
|
||
A NuttShell (NSH) configuration is in place (see the NSH User
|
||
Guide at http://www.nuttx.org/NuttShell.html). Testing of that
|
||
NSH configuration, however, has been postponed (because it got
|
||
bumped by the Olimex LPC1766-STK port -- see below)
|
||
|
||
Current Status: I think I have a hardware problem with my serial
|
||
port setup. There is a good chance that the NSH port is complete
|
||
and functional, but I am not yet able to demonstrate that. At
|
||
present, I get nothing coming in the serial RXD line (probably
|
||
because the pins are configured wrong or I have the MAX232
|
||
connected wrong).
|
||
|
||
A complete port will include drivers for additional AVR32 UC3
|
||
devices -- like SPI and USB --- and will be available in a
|
||
later release, time permitting.
|
||
|
||
* LPC1766, Olimex LPC1766-STK
|
||
|
||
Support for the Olimex-LPC1766 is newly added to NuttX and is
|
||
still undergoing development, test, and integration. Verified
|
||
configurations for the NuttX OS test and for the NuttShell (NSH,
|
||
see the NSH User Guide at http://www.nuttx.org/NuttShell.html.
|
||
Additional USB configurations are in the release as well, but
|
||
they have not yet been verified. Goals for NuttX-5.14 include:
|
||
(1) An Ethernet driver, (2) Verified USB support, and (3) SD
|
||
card support.
|
||
|
||
* Additional changes and bugfixes as detailed in the ChangeLog.
|
||
|
||
NuttX-5.14
|
||
----------
|
||
|
||
The 61st release of NuttX, NuttX-5.14, was made on November 27,
|
||
2010. This release includes multiple, important bugfixes as well
|
||
as a new driver for the NXP LPC1766.
|
||
|
||
This release corresponds with SVN release number: r3137
|
||
|
||
Important bugfixes include:
|
||
|
||
* Cortex-M3 Hard Fault. Fixed a hard fault problem that can occur
|
||
if certain types of interrupts are pending at the time another
|
||
interrupt returns. This problem has only been observed on the
|
||
LPC1766 (returning from a SYSTICK interrupt with a pending
|
||
Ethernet interrupt). However, it is assumed that all Cortex-M3
|
||
ports could have this as a latent bug.
|
||
|
||
* TCP/IP Sequence Number Bug. Corrected errors some important
|
||
logic in the way that sequence numbers are managed when send()
|
||
sends out packets before a previous packet has been acknowledged.
|
||
Some of that send() logic was incompatible with logic in the
|
||
uIP layer. Errors seen include: (1) The final final packet in
|
||
a sequence of packets might be too large! In the THTTPD example,
|
||
this might leave some garbage at the bottom of the display. Or
|
||
(2) send() might hang with outstanding, unacknowledged data
|
||
(and with no re-transmission requests). This was due to
|
||
differences in sequence number handling in send() and in
|
||
uip_tcpinput.c; uip_tcpinput.c thought (incorrectly) that all
|
||
of the bytes were acknowledged; send.c knew that they were not.
|
||
|
||
* One-Shot POSIX Timer Bug. Fixed an error in set-up of a one-shot
|
||
POSIX timer. It was using the repetitive timer value (which
|
||
is zero in the one-shot case), always resulting in a 10Ms timer!
|
||
Found and fixed by Wilton Tong.
|
||
|
||
Additional support has been included for the Olimex-LPC1766. Support
|
||
for that board was added to NuttX 5.13. This release extends that
|
||
support with an Ethernet driver. Verified configurations are now
|
||
available for the NuttX OS test, for the NuttShell (NSH, see
|
||
http://www.nuttx.org/NuttShell.html), for the NuttX network test,
|
||
and for the THTTPD webserver. (Additional USB configurations are
|
||
in the release as well, but those have not yet been verified. Goals
|
||
for NuttX-5.15 (and beyond) include: (1) Verified USB support, (2)
|
||
SD card support, and (3) LCD support.
|
||
|
||
NuttX-5.15
|
||
----------
|
||
|
||
The 62nd release of NuttX, NuttX-5.15, was made on December 12,
|
||
2010. This release includes several bugfixes as well as feature
|
||
enhancements, primarily for the Olimex LPC1766-STK board.
|
||
|
||
Important bugfixes included:
|
||
|
||
* Additional fixes needed with the TCP sequence number problem
|
||
"fixed" in NuttX-5.14.
|
||
* In the send() logic, now checks if the destination IP address
|
||
is in the ARP table before sending the packet; an ARP request
|
||
will go out instead. This improves behavior, for example, on
|
||
the first on the first GET request from a browser
|
||
* All USB class drivers need to call DEV_CONNECT() when they are
|
||
ready to be enumerated. That is, (1) initially when bound to
|
||
the USB driver, and (2) after a USB reset.
|
||
* The SPI_SETBITS macro was calling the SPI setmode method.
|
||
* And several other bug fixes of lower importance (see the
|
||
ChangeLog for details).
|
||
|
||
And feature enhancements:
|
||
|
||
* The LPC176x Ethernet driver was using all of AHB SRAM Bank0 for
|
||
Ethernet packet buffers (16K). An option was added to limit
|
||
the amount of SRAM used for packet buffering and to re-use any
|
||
extra Bank0 memory for heap.
|
||
|
||
* Enabled networking and SD/MMC card support in the Olimex
|
||
LPC1766-STK NuttShell (NSH) configuration.
|
||
|
||
* The LPC176x USB driver is now fully fully functional.
|
||
* Added an optional cmddata() method to the SPI interface. Some
|
||
devices require an additional out-of-band bit to specify if the
|
||
next word sent to the device is a command or data. The cmddata
|
||
method provides selection of command or data.
|
||
|
||
* A driver for the Nokia 6100 LCD (with either the Phillips PCF8833
|
||
LCD controller and for the Epson S1D15G10 LCD controller) and
|
||
an NX graphics configuration for the Olimex LPC1766-STK have
|
||
been added. However, neither the LCD driver nor the NX
|
||
configuration have been verified as of the this release.
|
||
|
||
NuttX-5.16
|
||
----------
|
||
|
||
The 63rd release of NuttX, Version 5.16, was made on January 10,
|
||
2010 and is available for download from the SourceForge website.
|
||
This release includes initial support for USB host in NuttX. The
|
||
USB host infrastructure is new to NuttX. This initial USB host release
|
||
is probably only beta quality; it is expected the some bugs remain
|
||
in the logic and that the functionality requires extension.
|
||
|
||
Below is a summary of the NuttX USB host implementation as extracted
|
||
from the NuttX Porting Guide:
|
||
|
||
6.3.9 USB Host-Side Drivers
|
||
* include/nuttx/usb/usbhost.h. All structures and APIs needed to
|
||
work with USB host-side drivers are provided in this header
|
||
file.
|
||
* struct usbhost_driver_s. Each USB host controller driver must
|
||
implement an instance of struct usbhost_driver_s. This structure
|
||
is defined in include/nuttx/usb/usbhost.h. Examples:
|
||
arch/arm/src/lpc17xx/lpc17_usbhost.c.
|
||
* struct usbhost_class_s. Each USB host class driver must implement
|
||
an instance of struct usbhost_class_s. This structure is also
|
||
defined in include/nuttx/usb/usbhost.h. Examples:
|
||
drivers/usbhost/usbhost_storage.c
|
||
* USB Host Class Driver Registry. The NuttX USB host infrastructure
|
||
includes a registry. During its initialization, each USB host
|
||
class driver must call the interface, usbhost_registerclass()
|
||
in order add its interface to the registry. Later, when a USB
|
||
device is connected, the USB host controller will look up the
|
||
USB host class driver that is needed to support the connected
|
||
device in this registry. Examples: drivers/usbhost/usbhost_registry.c,
|
||
drivers/usbhost/usbhost_registerclass.c, and
|
||
drivers/usbhost/usbhost_findclass.c,
|
||
* Detection and Enumeration of Connected Devices. Each USB host
|
||
device controller supports two methods that are used to detect
|
||
and enumeration newly connected devices (and also detect
|
||
disconnected devices):
|
||
+ int (*wait)(FAR struct usbhost_driver_s *drvr, bool connected);
|
||
Wait for a device to be connected or disconnected.
|
||
+ int (*enumerate)(FAR struct usbhost_driver_s *drvr);
|
||
Enumerate the connected device. As part of this enumeration
|
||
process, the driver will (1) get the device's configuration
|
||
descriptor, (2) extract the class ID info from the configuration
|
||
descriptor, (3) call usbhost_findclass() to find the class
|
||
that supports this device, (4) call the create() method on
|
||
the struct usbhost_registry_s interface to get a class instance,
|
||
and finally (5) call the connect() method of the struct
|
||
usbhost_class_s interface. After that, the class is in charge
|
||
of the sequence of operations.
|
||
* Binding USB Host-Side Drivers. USB host-side controller drivers
|
||
are not normally directly accessed by user code, but are usually
|
||
bound to another, higher level USB host class driver. The class
|
||
driver exports the standard NuttX device interface so that the
|
||
connected USB device can be accessed just as with other, similar,
|
||
on-board devices. For example, the USB host mass storage class
|
||
driver (drivers/usbhost/usbhost_storage.c) will register a
|
||
standard, NuttX block driver interface (like /dev/sda) that can
|
||
be used to mount a file system just as with any other other
|
||
block driver instance. In general, the binding sequence is:
|
||
|
||
1. Each USB host class driver includes an initialization entry
|
||
point that is called from the application at initialization
|
||
time. This driver calls usbhost_registerclass() during this
|
||
initialization in order to makes itself available in the
|
||
event that the device that it supports is connected. Examples:
|
||
The function usbhost_storageinit() in the file
|
||
drivers/usbhost/usbhost_storage.c
|
||
2. Each application must include a waiter thread thread that
|
||
(1) calls the USB host controller driver's wait() to detect
|
||
the connection of a device, and then (2) call the USB host
|
||
controller driver's enumerate method to bind the registered
|
||
USB host class driver to the USB host controller driver.
|
||
Examples: The function nsh_waiter() in the file
|
||
configs/nucleus2g/src/up_nsh.c and the function nsh_waiter()
|
||
in the file configs/olimex-lpc1766stk/src/up_nsh.c.
|
||
3. As part of its operation during the binding operation, the
|
||
USB host class driver will register an instances of a standard
|
||
NuttX driver under the /dev directory. To repeat the above
|
||
example, the USB host mass storage class driver
|
||
(drivers/usbhost/usbhost_storage.c) will register a standard,
|
||
NuttX block driver interface (like /dev/sda) that can be
|
||
used to mount a file system just as with any other other
|
||
block driver instance. Examples: See the call to
|
||
register_blockdriver() in the function usbhost_initvolume()
|
||
in the file drivers/usbhost/usbhost_storage.c.
|
||
|
||
NuttX-5.17
|
||
----------
|
||
|
||
The 64th release of NuttX, Version 5.17, was made on January 19,
|
||
2011 and is available for download from the SourceForge website.
|
||
This release follows close on the heels of the 5.16 release and
|
||
extends the USB host capabilities first introduced in that version.
|
||
|
||
* The LPC17xx USB host controller driver was extended to (1) add
|
||
support for low-speed devices, (2) handle multiple concurrent
|
||
transfers on different endpoints (still only one TD per endpoint),
|
||
and (3) handle periodic interrupt endpoint types.
|
||
|
||
* Add a USB host HID keyboard class driver. Now you can connect
|
||
a standard USB keyboard to NuttX and receive keyboard input for
|
||
an application.
|
||
|
||
And other changes as detailed in the ChangeLog.
|
||
|
||
NuttX-5.18
|
||
----------
|
||
|
||
The 65th release of NuttX, Version 5.18, was made on February 27,
|
||
2011 and is available for download from the SourceForge website.
|
||
This is first release from the new NuttX SVN repository. This
|
||
release is made primarily to keep the release tarball in synchronization
|
||
with SVN. Many smaller changes have been made as identified in the
|
||
ChangeLog. Headlines include:
|
||
|
||
* Incorporate several important uIP patches -- including the well
|
||
known patch to handle missing SYNACK.
|
||
* The Freescale mc8s12ne64 port is code complete but testing has
|
||
not yet begun due to toolchain issues. Added support for the
|
||
Future Electronics Group NE64 Badge board.
|
||
* Added support for a new STM32 board, the ISOTEL NetClamps VSN
|
||
V1.2 ready2go sensor network platform. This board is based on
|
||
a STM32F103RET6 and includes some interesting power saving/clock
|
||
control extensions.
|
||
* USB host support expanded to handle vendor specific USB devices.
|
||
* Incorporated the LUFA HID parser.
|
||
* Various bugfix as detailed in the ChangeLog
|
||
|
||
NuttX-5.19
|
||
----------
|
||
|
||
The 66th release of NuttX, Version 5.19, was made on March 12, 2011
|
||
and is available for download from the SourceForge website. This
|
||
release includes several new features in various states of integration
|
||
and maturity:
|
||
|
||
* 486SX QEMU port. This port supports the Intel 486SX architecture
|
||
using the QEMU simulator. Initial functionality is in place a
|
||
partially tested. There are still some outstanding issues with
|
||
timer interrupts.
|
||
* Platform specific application support. A new apps/ directory
|
||
appears in this port. This apps/ directory provides a mechanism
|
||
for applications using NuttX to have a highly customized
|
||
initialization process. It supports a set of end-user applications
|
||
than can be executed (1) standalone so you can have a fully
|
||
customized application startup, or (2) on top of NSH. Think
|
||
of it this way: In a buckled-up embedded application, your
|
||
end-user programs will probably have their own dedicated start-up
|
||
logic. But, during development, you might want to have you
|
||
applications available and executable from the NSH command line.
|
||
This apps/ add-on (and NSH hooks) was contributed by Uros to
|
||
accomplish just that.
|
||
* NSH was also extended to support application specific ROMFS
|
||
/etc/init.d/rcS start-up scripts. This feature, as well, as
|
||
all of the above-mentioned apps/ directory support was contributed
|
||
by Uros Platise
|
||
* Additional NSH improvements and bug fixes. See the Changelog
|
||
for details.
|
||
* This release also provides a new SLIP network driver. This
|
||
driver should support point-to-point network communications to
|
||
a host using TCP/IP or UDP. This driver is code complete, but
|
||
not tested in this release.
|
||
* New RAMTRON FRAM driver (contributed by Uros Platise)
|
||
* New generic 16550 UART driver.
|
||
* Cortex-M3 Power improvements: Waits for Interrupt (WFI) in idle
|
||
loop for reduced power consumption (LPC17xx and STM32 only -
|
||
contributed by Uros Platise))
|
||
* New waitpid() system interface.
|
||
* Additional bugfixes: pipes, stdint.h, STM32 SDIO and SPI drivers
|
||
|
||
NuttX-6.0
|
||
---------
|
||
|
||
The 67th release of NuttX, Version 6.0, was made on March 21, 2011
|
||
and is available for download from the SourceForge website. The
|
||
version number of this release was bumped from 5.19 to 6.0. A
|
||
change in the major revision number is used to reflect an incompatibility
|
||
with previous versions. In this release, the NuttX core OS
|
||
functionality has been separated from NuttX application-related
|
||
functionality. These are provided as separate tarballs:
|
||
|
||
* nuttx-6.0.tar.gz, and
|
||
* apps-6.0.tar.gz
|
||
|
||
The purpose of this separation is both to better organize and
|
||
modularize the NuttX source tree, but also to provide better support
|
||
for incorporation of end-user applications with Nuttx.
|
||
|
||
The incompatibility results from the changes to the board configuration
|
||
logic needed to supported the separable application. The major
|
||
changes to the configuration include:
|
||
|
||
* CONFIG_APPS_DIR - This should not be set. The default is
|
||
../apps. This should only be set if you have a custom,
|
||
product-specific application directory in some different location.
|
||
|
||
* appconfig - Each board configuration now requires a new file
|
||
called 'appconfig.' As its name suggests, this file provides
|
||
new configuration information needed by the logic in ../apps.
|
||
|
||
In addition to this major reorganization in the directory structure,
|
||
this release also includes some important extensions to existing
|
||
features and some important bugfixes. These include:
|
||
|
||
* The SLIP driver was been well debugged and significantly
|
||
re-designed. Now you can have an Ethernet connection to you
|
||
board even if you have no Ethernet hardware. How cool is that?
|
||
|
||
* The QEMU i486 port is now functional. It has also been reported
|
||
to work on the Bifferboard (see http://bifferos.bizhat.com/).
|
||
|
||
* And extensions to the uIP driver interface, and
|
||
|
||
* Bug fixes to fopen() and STM32 GPIO configuration
|
||
|
||
Please see the ChangeLog for details.
|
||
|
||
NuttX-6.1
|
||
---------
|
||
|
||
The 68th release of NuttX, Version 6.1, was made on April 10, 2011
|
||
and is available for download from the SourceForge website. The
|
||
6.0 release introduced a detach-able application environment to
|
||
build applications outside of the NuttX source tree. The primary
|
||
purpose of this release is to correct numerous build problems
|
||
introduced by that architectural change:
|
||
|
||
* In many newer environments, NuttX produced strange Makefile
|
||
errors but built correctly in older environments. A fix provided
|
||
by Rafael Noronha was incorporated and is reported to fix those
|
||
build problems.
|
||
* The apps/ directory build system would not handle Windows-native
|
||
toolchains due to obscure path formatting issues.
|
||
* And other problems as detailed in the Changelog.
|
||
|
||
Many additional changes were made in the 6.1 release for another
|
||
major architectural change: NuttX will now build as a separately
|
||
linked microkernel. In this build option the RTOS builds as a
|
||
kernel, applications build separately and interface with kernel via
|
||
system calls. Applications run in user mode and kernel logic users
|
||
in kernel-mode. This provides a secure environment for NuttX. This
|
||
feature is fully coded in NuttX-6.1, but has not been tested due
|
||
to higher priority tasks that have arisen.
|
||
|
||
Related to this change, support for the Cortex-M3 memory protection
|
||
unit (MPU) has been integrated with the NuttX kernel build to provide
|
||
an even higher level of security.
|
||
|
||
NOTE: This kernel build is an option; the default build configuration
|
||
is still the standard, flat, unsecured RTOS as in previous releases.
|
||
|
||
Additional new features in this release:
|
||
|
||
* Support for LPC17xx GPIO interrupts (with much support from
|
||
Decio Renno).
|
||
* Basic timer support for STM32 (Contributed by Uros Platise)
|
||
* A binfs file system. This is a tiny pseudo file system that
|
||
lets named applications to be viewed and accessed in NSH under
|
||
the /bin directory.
|
||
* An I2C-based driver for the LIS331DL MEMS motion sensor.
|
||
(Contributed by Uros Platise.)
|
||
* A configuration for the Embedded Artists LPCXpresso LPC1768 board.
|
||
* The user_initialize() interface has been removed.
|
||
|
||
And several bugfix associated with SD drivers, opendir(), signed
|
||
8-bit types (int8_t), and USB serial device. See the ChangeLog for
|
||
details.
|
||
|
||
NuttX-6.2
|
||
---------
|
||
|
||
The 69th release of NuttX, Version 6.2, was made on May 6, 2011 and
|
||
is available for download from the SourceForge website. The 6.2
|
||
release includes several new features:
|
||
|
||
* NXFFS: The obvious new feature is NXFFS, the NuttX wear-leveling
|
||
FLASH file system. This new file system is intended to be
|
||
small for the MCU usage and has some limitations. No formal
|
||
documentation of NXFFS yet exists. See the fs/nxffs/README.txt
|
||
file for details (see
|
||
http://svn.code.sf.net/p/nuttx/code/trunk/nuttx/fs/nxffs/README.txt?view=log)
|
||
* Support for NXP LPCXpresso LPC1768 board on the Embedded
|
||
Artists base board. The Code Red toolchain is supported under
|
||
either Linux or Windows. Verified configurations include
|
||
dhcpd, nsh, nx, ostest, thttpd, and usbstorage.
|
||
* Support for the Univision UG-9664HSWAG01 OLED with Solomon
|
||
Systech SD1305 LCD controller.
|
||
* A new RAM MTD driver with FLASH simulation capability.
|
||
* A version.h file is now automatically generated so that C code
|
||
can now be version aware.
|
||
|
||
In addition to these new feature, several important bugfixes are
|
||
included in this release correcting problems with dup2(), LPC17xx
|
||
GPIO interrupts, LPC17xx UART2/3, the FAT file system, build issues,
|
||
and strrch(). See the ChangeLog for more details.
|
||
|
||
NuttX-6.3
|
||
---------
|
||
|
||
The 70th release of NuttX follows only a nines days after the release
|
||
of version 6.2. It was released on May 15, 2011. This special
|
||
back-to-back release was made so that the current released version
|
||
of NuttX will correspond to the initial release from the RGMP
|
||
project.
|
||
|
||
This release adds architecture support and build configuration for
|
||
RGMP. RGMP is a project for running GPOS and RTOS simultaneously
|
||
on multi-processor platforms. See
|
||
http://rgmp.sourceforge.net/wiki/index.php/Main_Page for further
|
||
information about RGMP.
|
||
|
||
This release also includes support for STM32 FLASH, build improvements,
|
||
and initial, incomplete support for the MicroChip PIC32MX MCU. Bug
|
||
fixes are included for some build problems, USB host class driver
|
||
error handling, NX graphics color mapping, and problems with C
|
||
standard I/O buffer flushing. See the ChangeLog for further details.
|
||
|
||
NuttX-6.4
|
||
---------
|
||
|
||
The 71st release of NuttX, Version 6.4, was made on June 5, 2011
|
||
and is available for download from the SourceForge website. The
|
||
6.4 release includes several new features:
|
||
|
||
* A new, full-featured FTP client. This client may be used as a library
|
||
for automated FTP or via an FTP client shell. The FTP shell
|
||
supports the following commands: cd, chmod, get, help, idle,
|
||
login, ls, quit, mkdir, noop, put, pwd, rename, rhelp, rm,
|
||
rmdir, size, time, and up. A configuration is available for
|
||
the NXP LPC17xx to demonstrate this functionality.
|
||
* A functional C1101 wireless driver (contributed by Uros Platise)
|
||
* A PCI-based E1000 Ethernet driver (contributed by Yu Qiang)
|
||
* New C library functions: inet_addr() (contributed by Yu Qiang),
|
||
strndup(), asprintf()
|
||
* Reduced memory allocation overhead for MCUs with small heaps (<64K).
|
||
* fdopen() now works with socket descriptors allowing standard
|
||
buffered C functions to be used for network communications.
|
||
* The NSH ifconfig command can now be used to set or change the
|
||
IP address (contributed by Yu Qiang)
|
||
|
||
This release also includes some completed but untested functionality.
|
||
|
||
* The MicroChip PIC32MX port is now code complete and ready to
|
||
begin testing. Unfortunately, testing will be delayed due to
|
||
tool issues.
|
||
* Support for the NXP LPC315x MCUs.
|
||
|
||
Additional miscellaneous enhancements and bug fixes to task_delete(),
|
||
recvfrom(), and other changes as noted in the ChangeLog.
|
||
|
||
NuttX-6.5
|
||
---------
|
||
|
||
The 72nd release of NuttX, Version 6.5, was made on June 21, 2011
|
||
and is available for download from the SourceForge website. The
|
||
6.5 release is all about support for the Atmel 8-bit AVR family.
|
||
I have been interested in the AVR family for some time but because
|
||
of the severe SRAM constraints and because of the availability of
|
||
many tiny schedulers for the AVR, it has not been "on the radar
|
||
screen." However, I have recently become interested because of
|
||
interest expressed by members of the forum and because of the
|
||
availability of newer, larger capacity AVR parts (that I don't have
|
||
yet).
|
||
|
||
This release corresponds with SVN release number: r3730
|
||
|
||
This release includes support for the following AVR boards. As
|
||
with any initial support for new architectures, there are some
|
||
incomplete areas and a few caveats that need to be stated. Here
|
||
they are, ordered from the least to the most complete:
|
||
|
||
* SoC Robotics Amber Web Server (ATMega128).
|
||
|
||
This port of NuttX to the Amber Web Server from SoC Robotics
|
||
(http://www.soc-robotics.com/index.htm). Is only partially in
|
||
place. The Amber Web Server is based on an Atmel ATMega128
|
||
(128K FLASH but only 4K of SRAM).
|
||
|
||
STATUS: Work on this port has stalled due to toolchain issues. It
|
||
is complete, but untested.
|
||
|
||
* Micropendous 3 AT9USB647
|
||
|
||
This port of NuttX to the Opendous Micropendous 3 board. The
|
||
Micropendous3 may be populated with an AT90USB646, 647, 1286,
|
||
or 1287. See http://code.google.com/p/opendous/. I have only
|
||
the AT90USB647 version for testing. This version has very
|
||
limited memory resources: 64K of FLASH and 4K of SRAM.
|
||
|
||
STATUS: The basic port was released in NuttX-6.5. This basic
|
||
port consists only of a "Hello, World!!" example that demonstrates
|
||
initialization of the OS, creation of a simple task, and serial
|
||
console output. The tiny SRAM limits what you can do with the
|
||
AT90USB647 (see issues below).
|
||
|
||
* PJRC Teensy++ 2.0 AT9USB1286
|
||
|
||
This is a port of NuttX to the PJRC Teensy++ 2.0 board. This
|
||
board was developed by PJRC (http://pjrc.com/teensy/). The
|
||
Teensy++ 2.0 is based on an Atmel AT90USB1286 MCU with 128K
|
||
of FLASH and 8K of SRAM; a little more room to move than the
|
||
AT90USB647.
|
||
|
||
STATUS: The basic port was released in NuttX-6.5. This basic
|
||
port consists of a "Hello, World!!" example and also slightly
|
||
simplified NuttShell (NSH) configuration (see the NSH User Guide
|
||
at http://www.nuttx.org/NuttShell.html).
|
||
|
||
An SPI driver and a USB device driver exist for the AT90USB as
|
||
well as a USB mass storage configuration. However, this
|
||
configuration is not fully debugged as of the NuttX-6.5 release.
|
||
|
||
AVR-specific issues. The basic AVR port is solid and biggest issue
|
||
for using AVR is its tiny SRAM memory and its Harvard architecture.
|
||
Because of the Harvard architecture, constant data that resides to
|
||
flash is inaccessible using "normal" memory reads and writes (only
|
||
SRAM data can be accessed "normally"). Special AVR instructions
|
||
are available for accessing data in FLASH, but these have not been
|
||
integrated into the normal, general purpose OS.
|
||
|
||
Most NuttX test applications are console-oriented with lots of
|
||
strings used for printf and debug output. These strings are all
|
||
stored in SRAM now due to these data accessing issues and even the
|
||
smallest console-oriented applications can quickly fill a 4-8K
|
||
memory. So, in order for the AVR port to be useful, one of two
|
||
things would need to be done:
|
||
|
||
1. Don't use console applications that required lots of strings.
|
||
The basic AVR port is solid and your typical deeply embedded
|
||
application should work fine.
|
||
|
||
2. Create a special version of printf that knows how to access
|
||
strings that reside in FLASH (or EEPROM).
|
||
|
||
NuttX-6.6
|
||
---------
|
||
|
||
The 73rd release of NuttX, Version 6.6, was made on July 11, 2011
|
||
and is available for download from the SourceForge website. The
|
||
6.6 release adds several smaller features but is mostly a bugfix
|
||
release.
|
||
|
||
Bugfixes include
|
||
|
||
* Fixed several NX Graphics bugs: Rendering fonts at >8 bits-per-pixel,
|
||
graphics move logic, and display artifacts that appear when a
|
||
window is closed.
|
||
* Corrections to the USB host mass storage class driver
|
||
* STM32 bugfixes: serial driver, GPIO interrupt handling
|
||
* LPC17xx: Changes for a success compilation with no console.
|
||
* Corrections to the Teensy AT90USB SD driver
|
||
* Changes for a clean compilation under the ZDS-II toolchain.
|
||
|
||
Minor features:
|
||
|
||
* Add logic to extract printf strings from FLASH (but there are
|
||
still printf issues for that target)
|
||
* Added a configuration for the Sure Electronics PIC32MX board.
|
||
However, higher priority tasks have stopped work on that
|
||
configuration.
|
||
* Added several new configurations for the STMicro STM3210E-EVAL
|
||
board.
|
||
* Added support for the STM3210E-EVAL board: (1) LCD in either
|
||
landscape or portrait mode, and (2) interrupting buttons.
|
||
* Added a configuration option to use different serial ports for
|
||
debug and for the NSH serial console (there are some issues
|
||
with CR-LF expansion and character echo if NSH is not run on
|
||
the console).
|
||
* Standardized the button press and button interrupt interfaces
|
||
so that they are common across all boards.
|
||
* Added a new graphics example that focuses on placing text on
|
||
the background while pop-up windows occur. Text should continue
|
||
to update normally with or without the popup windows present.
|
||
* Added ARM stack checking logic.
|
||
|
||
See the ChangeLog for a detailed description of these changes.
|
||
|
||
NuttX-6.7
|
||
---------
|
||
|
||
The 74th release of NuttX, Version 6.7, was made on August 2, 2011
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.7.tar.gz and
|
||
apps-6.7.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information). Changes in this release are summarized
|
||
below:
|
||
|
||
* New OS APIs: Add the standard sem_timedwait() interface.
|
||
* FAT File System: Adds (optional) support for VFAT long file
|
||
names.
|
||
* USB: Now the mass storage device can be connected when needed
|
||
and disconnected when not needed (or re-connected as a different
|
||
kind of device).
|
||
* Touchscreen Support: Defined a new NuttX touchscreen interface.
|
||
Added a driver for the TI TSC2007 touchscreen controller chip.
|
||
* NX Fonts: Add support for multiple fonts; developed a tool to
|
||
convert open source fonts into NuttX format; Converted and
|
||
installed nine new, high quality fontsets.
|
||
* NX Graphics: Add new NX APIs to support drawing of wide lines
|
||
in any orientation. Added new low level routines to set
|
||
individual pixel more efficiently.
|
||
* Build system: Added a export target that will bundle up all
|
||
of the NuttX libraries, header files, and the startup object
|
||
into an exportable tarball.
|
||
* LPC17xx: A CAN driver was contributed by Li Zhuoyi (Lzyy).
|
||
* STM32: New NX-related configurations to exercise text and
|
||
graphic image displays.
|
||
* C Library: Added a fixed precision atan2() math function.
|
||
* Bugfixes: Serial RX overrun error, FAT upper/lower NT 8.3 name
|
||
handling fixed. FAT directory allocation and initialization
|
||
bug. STM32 SDIO DMA race condition bug. eZ80 UART1 serial
|
||
driver errors (Paul Osmialowski)
|
||
|
||
NuttX-6.8
|
||
---------
|
||
|
||
The 75th release of NuttX, Version 6.8, was made on August 19, 2011
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.8.tar.gz and
|
||
apps-6.8.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information). Changes in this release are summarized
|
||
below:
|
||
|
||
* NuttX has been ported to run on the Freescale Cortex-M4 "Kinetis"
|
||
boards. Two board ports are available for (1) the Kinetis
|
||
KwikStik-K40 and (2) the Kinetis TWR-K60N512 tower.
|
||
* Support for RGMP 0.3. This version of RGMP now runs on the
|
||
OMAP4430 (arm) pandaboard
|
||
* LPC17xx CAN driver extended to support both CAN1 and CAN2
|
||
(submitted by Li Zhuoy (Lzzy))
|
||
* Fixed several critical bugs related to signal handling
|
||
initialization and for signals the wake up tasks that are waiting
|
||
to send or receive message queues.Both are important. (submitted
|
||
by hkwilton).
|
||
* drivers/can.c: Fixed a semaphore overflow problem in the CAN
|
||
driver (reported by Li Zhouy (Lzzy)).
|
||
* Added a new ADC driver infrastructure and TI ADS1255 driver
|
||
both developed and submitted by Li Zhouy (Lzzy)).
|
||
|
||
See the Changelog for additional changes included in this release.
|
||
|
||
NuttX-6.9
|
||
---------
|
||
|
||
The 76th release of NuttX, Version 6.9, was made on September 11, 2011
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.9.tar.gz and
|
||
apps-6.9.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release includes a few new features and several important bug fixes.
|
||
The new features (some still incomplete) include:
|
||
|
||
* Analog Support/ NXP LPC17xx: New DAC sub-system including ADC and DAC
|
||
drivers for the LPC17xx. Extensions to the ADS1255 driver.
|
||
(Contributed by Li Zhuoyi (Lzyy))
|
||
|
||
* Power Management: Added a new NuttX power management sub-system for
|
||
controlling and coordinating reduced power states. At present, only
|
||
verified in a simulation environment.
|
||
|
||
* I2C Test Tool: A new application was added that can be used to
|
||
verify and debug I2C interfaces from the NuttShell (NSH) command
|
||
line.
|
||
|
||
* NuttShell (NSH): In addition to the I2C test tool, a date command
|
||
is now supported (if CONFIG_RTC is defined) that can be used to
|
||
read and set the RTC.
|
||
|
||
* NXP LPC17xx: I2C and DAC driver for the NXP LPC17xx family submitted by Li Zhuoyi
|
||
(Lzyy)
|
||
|
||
* Kinetis Cortex-M4: Added a SDHC driver for the Kinetis parts.
|
||
Complete debug of the Kinetis SDHC driver was not completed, however,
|
||
do to some higher priority tasks that forced me to stop work.
|
||
|
||
* Other new drivers: Driver for I2C-based at24cxx EEPROM submitted by
|
||
Li Zhuoyi (Lzyy); Driver for the LM-75 temperature sensor. Support
|
||
for the LM-75 temperature sensor integrated into the SM3210E-EVAL
|
||
development board.
|
||
|
||
* NuttX Graphics (NX): Added new NX interfaces for drawing circles,
|
||
both circle outlines and filled circles.
|
||
|
||
* FLASH: Added a function that accepts the path to a block driver and
|
||
then erases the underlying FLASH memory
|
||
|
||
* Build System: The Make export logic now also tries to track down all
|
||
architecture-specific header files and include these in the NuttX
|
||
export bundle as well. Various changes and modifications so that
|
||
NuttX wil build on FreeBSD using the ASH shell (submitted by Kurt Lidl).
|
||
|
||
Bugfixes, order roughly on decreasing criticality include:
|
||
|
||
* STM32 I2C Driver: Add resets, timeout, and other fixes to work
|
||
reliably with the I2C tool. Corrected a major error introduced in
|
||
NuttX 6.8.
|
||
|
||
* BCH Driver. Several important bugs (noted by Li Zhuoyi (Lzyy))
|
||
were fixed.
|
||
|
||
* C Library: Fixed errors in gmtime() and gmtime_r() that could lead to
|
||
errors in date calculations.
|
||
|
||
* Timing: Correct an error in the tv_nsec calculation that happens
|
||
only config CONFIG_RTC is enabled
|
||
|
||
* Build System: Use of -print-libgcc-file-name to get path to
|
||
libgcc.a might select the wrong libgcc.a if a multilib toolchain
|
||
is used
|
||
|
||
NuttX-6.10
|
||
----------
|
||
|
||
The 77th release of NuttX, Version 6.10, was made on October 6, 2011
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.10.tar.gz and
|
||
apps-6.10.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r4028
|
||
|
||
This release includes a few new features and several important bug fixes.
|
||
The new features (some still incomplete) include:
|
||
|
||
* CDC ACM serial class device-side driver
|
||
|
||
* RTC: Now supports hi-res and lo-res hardware RTC. The lo-res RTC
|
||
runs at 1Hz.
|
||
|
||
* STM32 I2C driver. Now supports faster, polled mode of operation.
|
||
Added an I2C trace capability.
|
||
|
||
* ADS7843E touchscreen driver. As used on the SAM3U-EK development
|
||
board.
|
||
|
||
* AT91SAM3U SPI driver. To support the ADS7843E toucscreen
|
||
|
||
* X11 Support on simulation target. Build errors in the X11 windows
|
||
for the simulated target have been correct. Added support for a
|
||
simulated touchscreen on the X11 window (based on mouse inputs).
|
||
|
||
* System Timer. Added support for a 64-bit system timer.
|
||
|
||
* TIFF Support. Added a TIFF library (currently used for storing
|
||
LCD screen shots).
|
||
|
||
* LCD Support. Added a test to verify that we read and write correct
|
||
to LCD GRAM memory.
|
||
|
||
* I2C tool. Extended to support to include a verify command and
|
||
repititions and auto-address increment for most commands.
|
||
|
||
* USB terminal example. Line oriented serial bridge connects a host
|
||
USB serial terminal to a host UART serial terminal.
|
||
|
||
* Build System. apps/ Makefile will now include external directories
|
||
in the application build.
|
||
|
||
Bugfixes, order roughly on decreasing criticality include:
|
||
|
||
* Message Queues. Correct errors in mq_timedsend() and
|
||
mq_timedrecieve().
|
||
|
||
* FAT. Writes that cross sector boundaries, stray write into the FAT,
|
||
and a FAT long file name issue
|
||
|
||
* NXFFS. Added a missed error check. Files cannot be opened for
|
||
writing if they are already opened for reading.
|
||
|
||
* Library: fopen() for append modse was not appending.
|
||
|
||
* STM32 I2C driver. Correct another conflict between concurrent FSMC
|
||
and I2C1 accesses. Fixed some bad error detection logic.
|
||
|
||
* STM32 SDHC driver. Interrupts were being left disabled.
|
||
|
||
NuttX-6.11
|
||
----------
|
||
|
||
The 78th release of NuttX, Version 6.11, was made on November 12, 2011
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.11.tar.gz and
|
||
apps-6.11.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r4090
|
||
|
||
This release is a maintenance release that includes a few new features
|
||
and some important bugfixes. New features include:
|
||
|
||
* NX Graphics: New interfaces to read from graphics memory
|
||
* Drivers: AT24 FLASH driver will now supports clustering of blocks
|
||
to achieve a larger, more usable block size for NXFFS.
|
||
* STM32: LCD color corrections
|
||
* PIC32: Board configuration for the Microchip PIC32 Ethernet Starter kit
|
||
(not yet verified), new GPIO support library, button and LED support
|
||
for the Sure Electronics PIC32MX board. A lot of progress has been
|
||
made on the PIC32 NuttX port, but it is still not ready for prime time.
|
||
* NXP LPC3152: Board configuration for the Embedded Artists EA3152.
|
||
|
||
Bugfixes, order roughly on decreasing criticality include:
|
||
|
||
* NXFFS: Corrected critical bugs in initialization, some full FLASH handling,
|
||
and errors in certain cases where the FLASH is repacked.
|
||
* ARM EABI: Fix stack aligment required for passing floating point values.
|
||
* Build system: Fix build issues when g++ is used as the compiler.
|
||
* NX Graphics: Bitmap error handling, correct RGB color conversion macros,
|
||
Error when the background window is released.
|
||
* STM32: RTC build fixes, LCD color corrections
|
||
* Simulation target: build fixes
|
||
* C Library: fclose() return value.
|
||
|
||
See the change log for more detailed information.
|
||
|
||
NuttX-6.12
|
||
----------
|
||
|
||
The 79th release of NuttX, Version 6.12, was made on December 6, 2011
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.12.tar.gz and
|
||
apps-6.12.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r4141
|
||
|
||
New features in this release include:
|
||
|
||
* STM32. Basic support added for the STM32 F4 family. Board support
|
||
verified for the STMicro STM3250G-EVAL board.
|
||
* FAT. Enhanced partition handling.
|
||
* SDIO-Based SD Card support. Add support for large (>4Gb) devices
|
||
* Graphics. Added four new small sans serif fonts.
|
||
* Drivers. Fix a banding problem with the R61580 LCD.
|
||
|
||
Bugfixes, order roughly on decreasing criticality include:
|
||
|
||
* FAT. Fix errors in how the first entries in the root directory are
|
||
added. Fix errors in FAT date/time handling.
|
||
* Signals. Fix bug in certain sig_timedwait() error handling.
|
||
* Drivers. Fix cloned errors in poll() handling in several drivers.
|
||
* Message Queues. errno was not being set correctly by mq_notify().
|
||
* C Library. wchar_t is a built-in type for C++
|
||
|
||
NuttX-6.13
|
||
----------
|
||
|
||
The 80th release of NuttX, Version 6.13, was made on December 26, 2011
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.13.tar.gz and
|
||
apps-6.13.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r4231
|
||
|
||
New features in this release include:
|
||
|
||
* Drivers. New standard interface for PWM drivers and common
|
||
"upper half" PWM driver. Updated the MP25x driver to support
|
||
the Macronix MX25 chips (submitted by Mohammad Elwakeel).
|
||
* STM32 F1/F4. Added an Ethernet driver, ADC drivers, DAC driver,
|
||
PWM driver, CAN driver, F4 RTC driver, F4 DMA support,
|
||
logic for saving/restoring F4 FPU registers in context switches.
|
||
* STM32 Boards. Added STM3240G-EVAL DHPCD and nettest configuration.
|
||
Support for a new STM32 board, the HY-Mini STM32v board, was
|
||
contributed by Laurent Latil
|
||
* PIC32. The port to the Microchip PIC32MX is finally functional and
|
||
reliable. The NuttX PIC32 port has verified configurations for
|
||
the OS test and the NuttShell (NSH) both exist.
|
||
* Tests: New re-usable tests (in apps/examples) for PWM, ADC, and
|
||
CAN loopback. Several existing tests can now be built as NSH built-in
|
||
applicaitons (dhcpd, nettest, and all of the new tests).
|
||
|
||
Bugfixes, order roughly on decreasing criticality include:
|
||
|
||
* STM32: Correct handling of data overrun conditions. Existing logic
|
||
would hang with infinite interrupts when a data overrun occurred.
|
||
* DHCPD. Fix several problems using host order address where network
|
||
addresses expected (and vice versa).
|
||
|
||
And several others. See the ChangeLog for more details.
|
||
|
||
NuttX-6.14
|
||
----------
|
||
|
||
The 81st release of NuttX, Version 6.14, was made on January 15, 2012,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.14.tar.gz and
|
||
apps-6.14.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r4301
|
||
|
||
New features in this release include:
|
||
|
||
* Drivers. The upper-half PWM driver will now support a pulse count (as
|
||
would be needed to control a stepper motor).
|
||
|
||
* STM32. The CAN driver has been verified in loopback mode. ADC driver
|
||
support for the STM32 F4. Add support for UART4-5 and USART6
|
||
(Contributed by Mike Smith). The PWM driver now supports a pulse
|
||
count for TIM1 and TIM8. Timer driver now supports the F4's 32-bit
|
||
timers (Contributed by Mikhail Bychek)
|
||
|
||
* STM32F4Discovery. Support for the STM32F4-Discovery board contributed
|
||
by Mike Smith.
|
||
|
||
* STM3240G-EVAL. Add support for user control of LEDs.
|
||
|
||
* LPC17xx. Add support for loopback mode to CAN driver. CAN TX done
|
||
perations are now interrupt driver. Now supports configurable CAN bit
|
||
rate.
|
||
|
||
* LPC1766-STK. Add support for on-board buttons. Add support for user
|
||
control of LEDs.
|
||
|
||
* LM3S. Add support for the LM3S6432S2E on the TI RDK-S2E (Contributed
|
||
by Mike Smith)
|
||
|
||
* PIC32MX. USB device-side driver (needs further testing). A partial
|
||
Ethernet driver is also in place.
|
||
|
||
* Library. Support added for fixed floating point fieldwidths in output
|
||
formatting (Contributed by Mikhail Bychek)
|
||
|
||
* Build. New targets apps_clean and apps_distclean to simplify working
|
||
with application diretories.
|
||
|
||
Bugfixes include:
|
||
|
||
* Drivers. Fixed a buffer-full test in the upper-half CAN driver.
|
||
|
||
* STM32. GPIO initialize logic (submitted by Mike Smith). Fix the
|
||
debug logic that dumps the GPIO configuration.
|
||
|
||
* LPC17xxx. Correct an integeter overlow in GPIO interrupt setup
|
||
(prevented pins > 15 from being used as interrupt sources). Correct
|
||
a value used in GPIO interrupt number range test.
|
||
|
||
* FAT. Now returns the correct error value when it is unable to
|
||
recognize the file system.
|
||
|
||
* Build. MAC OS build fixes (submitted by Mike Smith)
|
||
|
||
And several others. See the ChangeLog for more details.
|
||
|
||
NuttX-6.15
|
||
----------
|
||
|
||
The 82nd release of NuttX, Version 6.15, was made on February 12, 2012,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.15.tar.gz and
|
||
apps-6.15.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r4387
|
||
|
||
New features and extended functionality:
|
||
|
||
* General Drivers: Add support for (29-bit) extended CAN IDs. Add an
|
||
infrastructure to support battery drivers. Add a driver for MAX17040x
|
||
battery "fuel gauge". Add support for Composite USB drivers (in
|
||
particular for a CDC/ACM with MSC USB composite driver).
|
||
|
||
Added a new RAM logging driver. This will allow debug output into
|
||
a RAM buffer associated with a character driver at /dev/ramlog.
|
||
Added the new command 'dmesg' to NSH that can be used to dump the
|
||
current contents of the log. This is useful for systems that do not
|
||
have the usual serial console (for example, if you only have a
|
||
Telnet console with NSH).
|
||
|
||
* Networking: Add a lower level, primitive socket interface. Telnet
|
||
driver:
|
||
|
||
A New Telnet daemon was created. It wraps a Telnet session within a
|
||
character driver that can serve as a "controlling terminal." The
|
||
Telnet session will then be inherited by tasks created from the
|
||
Telnet session and the stdin/stdout from the created task will
|
||
still go through the same Telnet connection.
|
||
|
||
* STM32 Drivers. PWM driver pulse count was limited to 128; now is
|
||
(essentially) unlimited. Add support for (29-bit) extended CAN IDs.
|
||
Add support for I2C3. The SDIO driver is (mostly) verified on the
|
||
STM32 F4 platforms.
|
||
|
||
* LPC17xx Drivers. Extended the CAN driver so that the TSEG1 and TSEG2
|
||
bit times can be set via the NuttX configuration. Add support for
|
||
(29-bit) extended CAN IDs.
|
||
|
||
* PIC32 Drivers. The PIC32 Ethernet driver is code complete (but still
|
||
untested).
|
||
|
||
* FTPD. Add a new FTP server daemon. This is based loosely on
|
||
the hwport_ftpd library provided by Jaehyuk Cho.
|
||
|
||
* Library: Add support for on_exit(). Implemented tcsetattr() and
|
||
tcgetattr(). Moved the old, too-smart fgets() to a new application
|
||
library function called readline(). Dumbed down the original fgets().
|
||
Add strcasestr(), avsprintf(), inet_ntop(), and inet_pton().
|
||
Add support to enable or disable debug output.
|
||
|
||
* Build system: Support for building a 32-bit simulation executable on
|
||
a 64-bit Linux machine. Correct a dependency issue in the arch/*/src/board
|
||
directory.
|
||
|
||
Bugfixes:
|
||
|
||
* System: Correct PTHREAD_MUTEX_INITIALIZER
|
||
|
||
* FAT: Fix an error in the FAT statfs() reported by David Sidrane.
|
||
|
||
* STM32: Fix clock frequencies for APB2 timers. Correct AFIO register
|
||
offset.
|
||
|
||
* PIC32. Correct GPIOs used for LEDs on the Sure PIC32MX board.
|
||
|
||
* NSH. Wait for a USB connection if a USB serial class is used to
|
||
interface with the host.
|
||
|
||
Additional bugfixes, name changes, and other differences as detailed in the
|
||
ChangeLog.
|
||
|
||
NuttX-6.16
|
||
----------
|
||
|
||
The 83rd release of NuttX, Version 6.16, was made on March 10, 2012,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.16.tar.gz and
|
||
apps-6.16.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r4475
|
||
|
||
New features and extended functionality:
|
||
|
||
* ARMv7M Support: Includes new, streamlined Cortex-M exception
|
||
handling provided by Mike Smith. Context switching support for the
|
||
Cortex-M4 FPU registers is now provided (in both "lazy" and "non-lazy"
|
||
modes)
|
||
|
||
* General Drivers: Added a generic "upper half" Quadrature Encoder driver.
|
||
The USB CDC/ACM serial driver can now be dynamically connnected or
|
||
disconnected from the host (programmatically or using NSH commands).
|
||
|
||
* STM32 Drivers: Added a "lower half" Quadrature Encoder driver.
|
||
Verified the STM32 F4 DMA driver; Added F4 DMA support to the existing
|
||
STM32 SDIO driver.
|
||
|
||
* STM32 Board Support. Added support for the STM32 F2 family and
|
||
for the STM3220G-EVAL board (contributed by Gary Teravskis).
|
||
Support is now included for C++ static constructors (verified using
|
||
the Atollic toolchain). Added support for the SRAM available on the
|
||
STM3240G-EVAL board.
|
||
|
||
* PIC32 Drivers. PIC32MX USB (device) driver is now functional.
|
||
The PIC32MX Ethernet driver not yet fully verified (and an
|
||
unverified SPI driver is also available).
|
||
|
||
* Networking. Added a lower-level, thread-independent socket layer.
|
||
Parts of this layer were created in 6.15 to support the FTPD
|
||
controlling terminal; this support has been extended in order
|
||
to support an NFS file system (not yet released).
|
||
|
||
* NuttShell (NSH). NSH will now support a USB serial connection for
|
||
the console (such as CDC/ACM). This is useful in environments
|
||
where there is no physical serial port on the board.
|
||
|
||
* Build System. Reorgnaization of networking header files.
|
||
|
||
Critical Bugfixes. The following bug fixes are considered critical:
|
||
|
||
* Networking: Fixed a "leak" in the TCP/IP read-ahead buffering logic.
|
||
Corrected an error in TCP/IP sequence numbering/ACK logic which
|
||
occurred when read-ahead buffering memory is exhausted.
|
||
|
||
* STM32 Drivers: Fixed an buffer sizing error in the STM32 Ethernet
|
||
driver.
|
||
|
||
Additional Bugfixes: Other important bug fixes are listed below. See
|
||
the ChangeLog of a complete, detailed list of bug fixes.
|
||
|
||
* Networking: Corrected recv()/recvfrom() return value. Added logic to
|
||
monitor for loss of connection after a new connection has been
|
||
established via accept() (Contributed by Max Nekludov). Add
|
||
logic to select() to correctly handle POLLHUP (Contributed by Max
|
||
Nekludov)
|
||
|
||
Additional bugfixes, name changes, and other differences as detailed in the
|
||
ChangeLog.
|
||
|
||
NuttX-6.17
|
||
----------
|
||
|
||
The 84th release of NuttX, Version 6.17, was made on April 14, 2012,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.17.tar.gz and
|
||
apps-6.17.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r4607
|
||
|
||
New features and extended functionality:
|
||
|
||
* Networking: Additional low-level, thread-independent socket
|
||
interfaces (for NFS client support).
|
||
|
||
* RTC: Added a new interface call clock_synchronize(). This function
|
||
will reload the system time from an RTC and is required when the
|
||
system re-awakens from certain deep-sleep modes.
|
||
|
||
* Graphics: Add NxConsole. This is a character device driver that
|
||
wraps an NX window and can be re-directed for stdout. This allows,
|
||
for example, a pop-up graphics window that contains a NuttShell (NSH)
|
||
session. A test of NxConsole is available at apps/examples/nxconsole.
|
||
|
||
* Watchdog Drivers: Added an interface definition an "upper half"
|
||
driver to support watchdog timers.
|
||
|
||
* Calypso: Support for TI Calypso-based cellphones (as supported by
|
||
the Osmocom-BB project) was contributed by members of the Osmocom-BB
|
||
team. This includes configurations for the Compal e88 and e99 phones.
|
||
|
||
* USB Device Interface: Needed to extend the USB device interface
|
||
because there was no mechanism for passing endpoint OUT data that
|
||
may need to accompany a setup request.
|
||
|
||
* STM32 drivers: Added some power management controls for entering
|
||
reduced power consumption states. An OTG FS driver was completed
|
||
and partially verified (this driver seems to be functional but since
|
||
it has been test so lightly, it might better be listed in the
|
||
next section "Work in progress").
|
||
|
||
* PIC32 drivers: The PIC32 Ethernet driver is now stable. The PIC32
|
||
USB device controller driver is now functional (but not yet stable).
|
||
|
||
* PIC32 boards: Added support for the Sure DB-DP11212 PIC32 General
|
||
Purpose Demo Board. There is now a PIC32 Starter Kit that
|
||
provides NSH only through a Telnet connection.
|
||
|
||
* Build System: Some header files were moved into include/nuttx.
|
||
The goal is to move any non-standard header files to include/nuttx
|
||
or include/arch. Moved include/math.h to include/nuttx/math.h;
|
||
this file is now only instantiated as the 'system' math.h if
|
||
CONFIG_ARCH_MATH_H=y is defined.
|
||
|
||
* Tools: Added tools/cmpconfig.c, a tool for comparing two
|
||
configuration files.
|
||
|
||
Work in progress. This release includes some partially completed
|
||
work that is still not ready for prime time.
|
||
|
||
* NFS Client: Work is progressing on support for an NFS client
|
||
file system. This is a port of the BSD NFS client file system
|
||
that is being done by Jose Pablo Rojas V.
|
||
|
||
* Automated Configuration: Automated configuration based on the
|
||
kconfig-frontends tool is being incorporated into the build
|
||
system. The configuration is still not complete enough for
|
||
general use in this release.
|
||
|
||
* STM32 Drivers: Added files that will (eventually) hold an STM32
|
||
OTG FS host driver. This is still a work in progress.
|
||
|
||
Bugfixes:
|
||
|
||
* Networking: Corrected a deadlock that only occurred when
|
||
executing the NSH 'ifconfig' command over Telnet.
|
||
|
||
* File system: Fix incorrect return errno value from read() when
|
||
the file is opened write-only.
|
||
|
||
* Graphics: Fix several compilation errors that have crept into the
|
||
multi-user NX server because of lack of use.
|
||
|
||
* STM32: In order to use CAN2, both CAN1 and CAN2 clocking must be
|
||
enabled. Fixed a troublesome bug in the STM32 F4 I2C driver that
|
||
resulting in timeouts.
|
||
|
||
* LPC17xx: Fixes for errors the crept in the LPC17xx DAC logic
|
||
Contributed by Lzyy).
|
||
|
||
* Build System: Reordered the link command line to account for new
|
||
versions of libgcc.a that require symbols from the application
|
||
(abort()).
|
||
|
||
NuttX-6.18
|
||
----------
|
||
|
||
The 85th release of NuttX, Version 6.18, was made on May 19, 2012,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.18.tar.gz and
|
||
apps-6.18.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
The majority of changes in this release are focused on supporting the
|
||
synchronized release of NxWM, the NuttX tiny window manager. That
|
||
window manager is released as part of the NxWidgets package, but depends
|
||
upon many of the changes in this NuttX release.
|
||
|
||
This release corresponds with SVN release number: r4751
|
||
|
||
New features and extended functionality:
|
||
|
||
* Drivers. Added a watchdog timer driver infrastructure. Add general
|
||
support for STMicro STMPE811 I/O Expander/touchscreen device.
|
||
|
||
* STM32. Add support for the STM32 IWDG and WWDG watchodog timers. DMA
|
||
now supports cicular buffer mode; serial driver now uses circular
|
||
DMA to improve Rx performance (Contributed by Mike Smith).
|
||
|
||
* STM3240G-EVAL Board. Add support for the LCD and for the STMPE811
|
||
I/O Expander as a touchscreen controller.
|
||
|
||
* PIC32 Boards. Board support for the Mikroelektronika PIC32MX7
|
||
Multimedia Board (MMB) and for the Sparkfun UBW32 PIC32 board.
|
||
|
||
* NX. Framed windows are now draw in three colors instead of just two.
|
||
Numerous other extensions needed to support NxWM (see the ChangeLog
|
||
for details).
|
||
|
||
* Library. Add prctl() command that can be used to setting and getting
|
||
the names of threads. This (plus several other improvements and bug
|
||
fixes) are part of a larger effort to improve task monitoring
|
||
capabilities.
|
||
|
||
Work in progress. This release includes some partially completed
|
||
work that is still not ready for prime time.
|
||
|
||
* NFS Client. Work is progressing on support for an NFS client
|
||
file system. This is a port of the BSD NFS client file system
|
||
that is being done by Jose Pablo Rojas V.
|
||
|
||
* Automated Configuration. Automated configuration based on the
|
||
kconfig-frontends tool is being incorporated into the build
|
||
system. The configuration is still not complete enough for
|
||
general use in this release.
|
||
|
||
* STM32 Drivers. Added files that will (eventually) hold an STM32
|
||
OTG FS host driver. This is still a work in progress.
|
||
|
||
Bugfixes (see the change log for details) :
|
||
|
||
* sched_setscheduler() return value (Contributed by Richard Cochran).
|
||
|
||
* stdio. Ignore CONFIG_STDIO_LINEBUFFER if the file was opened in binary mode.
|
||
|
||
* fopen(). Correct an error in parsing open mode string.
|
||
|
||
* serial driver. Improved performance be reducing the amount of time
|
||
that Rx interrupts are disabled.
|
||
|
||
* recvfrom(). Fix a compilation problem.
|
||
|
||
* CDC/ACM device driver. Fix an infinite loop that occurs when the serial
|
||
device is unregistered.
|
||
|
||
* STM32 OTG FS device driver. Numerous fixes and the driver is partially
|
||
functional but there are still some issues that become apparent when
|
||
debug output is disabled.
|
||
|
||
* fcntl(). Always returned zero on success; however, some fcntl commands
|
||
need to return non-zero values on success.
|
||
|
||
* graphics: Many multi-use mode fixes added to support NxWM (see the
|
||
ChangeLog for details). Auto-raise is temporarily disabled in multi-
|
||
user mode because it causes some problems with NxWM.
|
||
|
||
* on_exit(): Fix compilation errors if CONFIG_SCHED_ONEXIT is enabled.
|
||
|
||
NuttX-6.19
|
||
----------
|
||
|
||
The 86th release of NuttX, Version 6.19, was made on June 15, 2012,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.19.tar.gz and
|
||
apps-6.19.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r4847
|
||
|
||
This release features new support for a Network File System (NFS) client.
|
||
This feature allows a tiny, embedded MCU to mount a remote file system
|
||
exported by an NFS server and then to access the file system as it would
|
||
any local file system. Then the tiny MCU can effectively have terabytes
|
||
of storage!
|
||
|
||
This might be useful for data collection, for MCU configuration information,
|
||
for software updates, for providing modular, loadable code modes, controlling
|
||
a "farm" of MCUs, ... there are many possibilities and opportunities for
|
||
innovation!
|
||
|
||
The NuttShell (NSH) now supports the following command:
|
||
|
||
nfsmount <server-address> <mount-point> <remote-path>
|
||
|
||
That command will mount the remote NFS server directory <remote-path> at
|
||
<mount-point> on the target machine. <server-address> is the IP address of
|
||
the remote server.
|
||
|
||
The NFS development was the graduation project of Jose Pablo Rojas V. who
|
||
is a student at the Instituto Tecnol<6F>gico de Costa Rica (ITCR, or TEC).
|
||
A lot of effort went into understanding what a tiny, embedded NFS client should
|
||
do and getting the target resource usage to a bare minimum. Only around a
|
||
kilobyte or so of memory is required to run the NFS client (and most of that
|
||
for I/O buffers). Jose Pablo has spent several months living with NFS and
|
||
should be congratulated.
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Drivers: SSD1289 LCD driver, MIO283QT2 LCD driver
|
||
|
||
* LM3S: Additional register definition header files (contributed by Max
|
||
Neklyudov).
|
||
|
||
* STM32 Boards: The STM32F4Discovery will now support an SSD1289 LCD,
|
||
The STM3220G-EVAL board support is now equivalent to the STM3240G-EVAL
|
||
board support.
|
||
|
||
* PIC32 Boards: The Mikroelektronika PIC32MX7 MMB board port is now
|
||
functional, very complete, and stable.
|
||
|
||
* Graphics: The NxConsole will now take keyboard input from the NX graphics
|
||
subsystem. This means that if there are multiple NxConsole windows, only
|
||
the top instance that has focus will receive the keyboard input.
|
||
|
||
* apps/: Add the capability to use an arbitrary USB device as the console
|
||
(not necessarily /dev/console). Additional enhancements for USB consoles.
|
||
Added the 'mv' command.
|
||
|
||
Work in progress. This release includes some partially completed
|
||
work that is still not ready for prime time.
|
||
|
||
* Automated Configuration. Automated configuration based on the
|
||
kconfig-frontends tool is being incorporated into the build
|
||
system. The configuration is still not complete enough for
|
||
general use in this release.
|
||
|
||
* STM32 Drivers. Added files that will (eventually) hold an STM32
|
||
OTG FS host driver. This is still a work in progress.
|
||
|
||
Bugfixes (see the change log for details) :
|
||
|
||
* General: sleep() and usleep() return values, sig_timedwait() errno setting
|
||
on timeout.
|
||
* Drivers: STMPE811 touchscreen driver, USB PLC2303, USB CDC/ACM
|
||
* STM32: Several USB device controller driver fixes, F4 interrupt priorities
|
||
(contributed by Mike Smith).
|
||
* Graphics: Keyboard input, fill trapezoid bug
|
||
|
||
As well as other, less critical bugs (see the ChangeLog for details)
|
||
|
||
NuttX-6.20
|
||
----------
|
||
|
||
The 87th release of NuttX, Version 6.20, was made on July 12, 2012,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.20.tar.gz and
|
||
apps-6.20.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r4937
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Power Management: An evolving power management example is being
|
||
created by Diego Sanchez. This effort currently involves on the
|
||
STM32 F1 but clearly demonstrates the NuttX power management
|
||
system which will automatically drive the system to lower power
|
||
usage states due to lack of use.
|
||
|
||
* Drivers: Added a driver for the SST 25 SPI-based FLASH parts.
|
||
|
||
* PIC32: Added support for the PIC32MX1 and PIC32MX2 families.
|
||
Added support for the microchipOpen and Pinguino toolchains.
|
||
|
||
* NXP LPC43XX: Added support for the entire LPC43xx family
|
||
|
||
* PIC32 boards: Added support for the DTX1-4000L "Mirtoo" module
|
||
from http://www.dimitech.com/ (PIC32MX2).
|
||
|
||
* NXP LPC43XX Boards: Added support for NGX LPC4330-Xplorer board.
|
||
|
||
* NXP LPC17XX Boards: Added support for Micromint Lincoln60 board
|
||
(LPC1769).
|
||
|
||
* LM3S Boards: Add a configuration to support the TI/Stellaris
|
||
EKK-LM3S3B96 development board. Contributed by Jose Pablo Rojas V.
|
||
|
||
* Library: NuttX now supports platform-specific stdarg.h header
|
||
files.
|
||
|
||
Work in progress. This release includes some partially completed
|
||
work that is still not ready for prime time.
|
||
|
||
* Automated Configuration. Automated configuration based on the
|
||
kconfig-frontends tool is being incorporated into the build
|
||
system. The configuration is still not complete enough for
|
||
general use in this release.
|
||
|
||
* STM32 Drivers. Added files that will (eventually) hold an STM32
|
||
OTG FS host driver. This is still a work in progress.
|
||
|
||
Bugfixes (see the change log for details) :
|
||
|
||
* PIC32: GPIO output configuration (critical bug)
|
||
* STM32: Typos in pin mapping files.
|
||
* LM3S: Fixed an optimization related but that caused slow start-up
|
||
times if optimization was disabled.
|
||
* Library: Fixed signed extension but in all limit.h files
|
||
(reported by Lorenz Meier). inet_ntoa compilation failure
|
||
on Z80.
|
||
|
||
As well as other, less critical bugs (see the ChangeLog for details)
|
||
|
||
NuttX-6.21
|
||
----------
|
||
|
||
The 88th release of NuttX, Version 6.21, was made on August 25, 2012,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.21.tar.gz and
|
||
apps-6.21.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r5052
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core: Add support for multiple registered atexit() functions. Syslog
|
||
extended: Now any character driver may be used for the debug logging
|
||
device. Mountpoint traversal logic.
|
||
* Drivers: Added support for the TI PGA112-7 amplifier/multiplexor.
|
||
* LPC43xx: Added clock ramp-up logic to run at 204 MHz
|
||
* LPC43xx Drivers: SPIFI block driver, RS-485 support, Minimal termios
|
||
support. Framework for USB0 device controller driver.
|
||
* LPC17xx Drivers: Minimal termios support
|
||
* STM32: Support for STM32 F1 "Value Line" (contributed by Mike Smith).
|
||
Add support for STM32 F107 "Connectivity Line" (contributed by Max
|
||
Holtzberg).
|
||
Clock restart logic needed for recovery from low power modes.
|
||
* STM32 Drivers: RTC alarm support. Usable for wakeup from sleep mode,
|
||
Minimal serial termios support. USB OTG FS host driver (alpha).
|
||
* STM32 Boards: Add power management hooks for the STM32F4Discovery,
|
||
Add support for the Olimex STM32-P107 (contributed by Max Holtzberg).
|
||
* PIC32: Add support for the Pinguino MIPS toolchain.
|
||
* PIC32 Drivers: GPIO driver now supports F1 analog regiaters (ANSEL).
|
||
* PIC32 Boards: Add support for the PGA117 on the Mirtoo module.
|
||
* Calypso: Add support for the SSD1783 LCD on the Compal E99.
|
||
* Library: cfsetispeed(), cfsetospeed(), tcflush(), memchr(), and
|
||
memccpy().
|
||
* Applications: Port of freemodbus-v1.5.0. Add support for testing
|
||
devices with multiple ADC, PWM, and QE devices.
|
||
NSH: NSH 'mount' command (with no arguments) will now show mounted
|
||
volumes. Add new NSH 'df' command. Extended 'help' support. NSH
|
||
now catches the return value from spawned applications (provided
|
||
by Mike Smith).
|
||
* Build System: mkconfig will not define CONFIG_DRAM_END. A lot of
|
||
progress has been made on the automated NuttX configuration logic
|
||
(Thanks go to Richard Cochran).
|
||
* Documentation: Document ways to customize the behavior of NSH.
|
||
|
||
Bugfixes (see the change log for details) :
|
||
|
||
* Serial drivers (all): Fix ioctl return value. Common "upper half"
|
||
serial driver will now return with EINTR if a serial wait is
|
||
interrupted by a signal.
|
||
* FAT: Fix statfs() file name length.
|
||
* LPC43xx: Clock configuration.
|
||
* STM32: Pinmap fixes, SPI driver re-initialization
|
||
* STM32 Boards: Correct and lower SDIO frequency for F2 and f4 boards.
|
||
* AVR: C++ build issues.
|
||
* PM: Fix a place where interrupts were not be re-enabled.
|
||
* Applications: NSH application start-up race conditions.
|
||
* Library: Fieldwidth and justification for %s format. Fixed several
|
||
issues with presenting floating point numbers. NULL definition
|
||
for C++
|
||
|
||
As well as other, less critical bugs (see the ChangeLog for details)
|
||
|
||
NuttX-6.22
|
||
----------
|
||
|
||
The 89th release of NuttX, Version 6.22, was made on September 29, 2012,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.22.tar.gz and
|
||
apps-6.22.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r5206
|
||
|
||
Note that all SVN information has been stripped from the tarballs. If you
|
||
need the SVN configuration, you should check out directly from SVN. Revision
|
||
r5206 should equivalent to release 6.22 of NuttX 6.22:
|
||
|
||
svn checkout -r5206 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
|
||
|
||
Or
|
||
|
||
svn checkout -r5206 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* RTOS: Application entry point is no longer user_start, but can be
|
||
configured using CONFIG_USER_ENTRYPOINT. NuttX now supports two work
|
||
queues: A lower priority work queue (for extended processing) and a
|
||
higher priority work queue (for quick, high priority operations).
|
||
|
||
* Memory Management: Added a new granule-based allocated that can be
|
||
used to manage, aligned and quantized DMA memory.
|
||
|
||
* File System: Add hooks to allocate I/O memory with and external
|
||
allocated (need if required by DMA).
|
||
|
||
* Networking: ENC28J60 driver is (finally) verified.
|
||
|
||
* Drivers: Add hooks USB device drivers to allocate I/O memory with and
|
||
external allocated (need if required by DMA). Driver for the Windbond
|
||
SPI FLASH family (W25x16, W25x32, W25x64, and others). ADS7843E driver
|
||
extended for TSC2046 and XPT2046 and verified.
|
||
|
||
* ARMv7-M: Added logic to reset the MCU using the NVIC.
|
||
|
||
* STM32: Add support for STM32F103VET6.
|
||
|
||
* STM32 Drivers: Add logic to re-initialize UARTs a second time to
|
||
enable DMA (Mike Smith). I2C driver error recovery (Mike Smith).
|
||
|
||
* STM32 boards: Support for USB host added add to several configurations
|
||
(or at least explained in README files). Support for the Shenzhou
|
||
STM32F107 board (see www.armjishu.com). Support for M3 Wildfire
|
||
STM32F103 board (v2 and v3).
|
||
|
||
* Build System: Kconfig string de-quoting logic. Remove comments from
|
||
defconfig files (Kate). Add tool to create NuttX-style symbol tables.
|
||
Numerous changes to configuration logic as needed for the new mconf-based
|
||
configuration (much of this from Richard Cochran). Refactor common
|
||
Make.defs logic into tools/Config.mk (Richard Cochran).
|
||
|
||
* Library: Configurable terse output from strerror(). Added perror() (Kate).
|
||
Add %n format to sscanf() (Kate).
|
||
|
||
* Applications: Numerous changes and extensions to the old uIP web server
|
||
(from Kate and Max Holtzberg, see the ChangeLog for specific extensions).
|
||
UDP network discovery utility (Max Holtzberg). Embeddable Lightweight
|
||
XML-RPC Server (http://www.drdobbs.com/web-development/an-embeddable-lightweight-xml-rpc-server/184405364, Max Holtzberg).
|
||
|
||
Bugfixes (see the change log for details). Some of these are very important
|
||
(marked *critical*):
|
||
|
||
* RTOS: Fixes to priority inheritance logic (*critical*). waitpid()
|
||
critical section. Assertion in work_cancel() (Mike Smith). mmap() (Kate).
|
||
|
||
* FAT File System: Improper Boolean expression caused un-necessary writes
|
||
and performance issues (*critical*, Ronen Vainish).
|
||
|
||
* Networking: Remove an un-necessary delay from recvfrom(). This greatly
|
||
improves network performance (*critical*, Max Holtzberg).
|
||
|
||
* Graphics: NX parameter checking errors.
|
||
|
||
* Drivers: Fix double release of memory in SDIO-based, MMC/SD driver
|
||
(Ronen Vainish).
|
||
|
||
* LPC17xx: Ethernet driver fixes needed for certain PHYs (Kate).
|
||
|
||
* AVR: Fix build error (Richard Cochran).
|
||
|
||
* STM32: USB OTG FS host driver NAKing an retries. Power management
|
||
compilation errors (Diego Sanchez). Missing SPI3 remap logic.
|
||
|
||
* STM32 Drivers: Fix for Ethernet errata for STM32F107 (*critical*).
|
||
Ethernet buffer alignment check. Add "kludge" to Ethernet driver to
|
||
handle DM9161 PHY which (at least on the Shenzhou board), sometimes
|
||
does not come up correctly.
|
||
|
||
* Applications: THTTPD (Kate). NSH ping when IP address is on a different
|
||
network (Darcy Gong).
|
||
|
||
* Library: fread(), fflush(), fdopen(): Fix error handling logic (Ronen
|
||
Vainish). Fix some field-width handling issues in sscanf()
|
||
|
||
As well as other, less critical bugs (see the ChangeLog for details)
|
||
|
||
NuttX-6.23
|
||
----------
|
||
|
||
The 90th release of NuttX, Version 6.23, was made on November 5, 2012,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.23.tar.gz and
|
||
apps-6.23.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r5313
|
||
|
||
Note that all SVN information has been stripped from the tarballs. If you
|
||
need the SVN configuration, you should check out directly from SVN. Revision
|
||
r5313 should equivalent to release 6.23 of NuttX 6.23:
|
||
|
||
svn checkout -r5313 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
|
||
|
||
Or
|
||
|
||
svn checkout -r5313 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* RTOS: If both atexit() and on_exit() are enabled, use on_exit() to
|
||
implement atexit(). Updates for RGMP 4.0.
|
||
|
||
* Binfmt: Add support for loading and executing ELF binary modules from
|
||
a file system.
|
||
|
||
* Drivers: Maxim MAX11802 touchscreen controller (Petteri Aimonen)
|
||
|
||
* STM32 Driver: Implementation of /dev/random using the STM32 Random Number
|
||
Generator (RNG).
|
||
|
||
* STM32 Boards: ADC support for the Shenzhou IV board. Relay support for
|
||
the Shenzhou IV board.
|
||
|
||
* C Library: Support is now included for the add-on uClibc++ C++
|
||
standard library support. This includes support for iostreams, strings,
|
||
STL, RTTI, exceptions -- the complete C++ environment. (uClibc++ is
|
||
provided as a separate add-on package due to licensing issues).
|
||
|
||
Optimized generic and ARM-specific memcpy() function. Optimized
|
||
memset() function.
|
||
|
||
Add support for ferror(), feof(), and clearerror(). Add support for
|
||
__cxa_atexit().
|
||
|
||
Math Library: Port of the math library from Rhombus OS by Nick Johnson
|
||
(Darcy Gong).
|
||
|
||
* Applications: New NSH commands: ifup, ifdown, urlencode, urldecode,
|
||
base64enc, bas64dec, md5 (Darcy Gong). Add support for NSH telnet login
|
||
(Darcy Gong). Enancements to NSH ping command to support pinging hosts
|
||
with very long round-trip times. Extensions to the ifconfig command
|
||
Darcy Gong),
|
||
|
||
Many extensions to the webclient/wget and DNS resolver logic from Darcy
|
||
Gong. JSON, Base64, URL encoding, and MD5 libraries contributed by Darcy
|
||
Gong.
|
||
|
||
New examples: ELF loader, JSON, wgetjson, cxxtest, relays.
|
||
|
||
Bugfixes (see the change log for details). Some of these are very important
|
||
(marked *critical*):
|
||
|
||
* Drivers: W25 SPI FLASH
|
||
|
||
* STM32 Drivers: ADC reset
|
||
|
||
* Graphics: Missing implementation of the blocked method (*critical*,
|
||
Petteri Aimonen).
|
||
|
||
* C Library: Floating point numbers in printf and related formatting functions
|
||
(Mike Smith), cf[get|set]speed() (Mike Smith)
|
||
|
||
As well as other, less critical bugs (see the ChangeLog for details)
|
||
|
||
NuttX-6.24
|
||
----------
|
||
|
||
The 91st release of NuttX, Version 6.24, was made on December 20, 2012,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.24.tar.gz and
|
||
apps-6.24.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r5447
|
||
|
||
Note that all SVN information has been stripped from the tarballs. If you
|
||
need the SVN configuration information, you should check out directly from
|
||
SVN. Revision r5447 should equivalent to release 6.24 of NuttX 6.24:
|
||
|
||
svn checkout -r5447 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
|
||
|
||
Or (HTTP):
|
||
|
||
svn checkout -r5447 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* RTOS:
|
||
|
||
- Implemented the POSIX pause() function (still has some compiance
|
||
issues).
|
||
- Tasking logic is extended to support the notion of address
|
||
environments. An address environment is the key notion underlying
|
||
"process" vs. tasks. If tasks are created with address environments
|
||
(by binfmt), the OS will propogate that environment to child threads
|
||
and will destroy the address environment when the "process" exists.
|
||
- If support for the PATH variable is enabled, the OS start up logic
|
||
will create an initial environment containing the default PATH
|
||
setting (CONFIG_PATH_INITIAL). This initial PATH will then be
|
||
inherited by all tasks.
|
||
|
||
* Binfmt
|
||
|
||
- The NuttX binary loaders have been updated to support the PATH
|
||
environment variable. Now, if the PATH is properly defined, programs
|
||
can be executed from mass storage using only the file name. This
|
||
feature is added to support more standard behavior (eventually, NSH
|
||
will support execution of programs in file systems by just entering
|
||
the file name, perhaps in 6.25?).
|
||
- The NXFLAT and ELF binary loaders have been extended to create
|
||
address environments for any new tasks executed from the file system.
|
||
This feature requires that the architecture support a memory management
|
||
unit (MMU) and the address environment interfaces declared in
|
||
include/nuttx/arch.h (currently, this is only supported by the z180).
|
||
|
||
* Drivers: LCD driver for the Univision UG-2864AMBAG01 OLED
|
||
|
||
* STM32: Support for STM32F100 high density chips contributed by Freddie
|
||
Chopin.
|
||
|
||
* STM32 Drivers: Added optional RS-485 direction bit control (from
|
||
Freddie Chopin).
|
||
|
||
* STM32 Boards:
|
||
|
||
- Support for generic STM32F100RC board contributed by Freddie Chopin.
|
||
- stm32f4discovery/nxlines: STM32F4Discovery support for the
|
||
UG-2864AMBAG01 OLED.
|
||
- stm32f4discovery/winbuild: A version of the NuttX OS test
|
||
configured to build natively on Windows.
|
||
- stm32f4discovery/elf: Now uses the PATH variable to find ELF
|
||
executables.
|
||
- configs/cloudctrl: Added for Darcy Gong's CloudController board
|
||
|
||
* PIC32 Boards: Update the Mirtool configuration for Release 2 of the
|
||
Mirtoo module.
|
||
|
||
* Calypso: Add Calypso keypad driver. From Denis Cariki.
|
||
|
||
* ZiLOG:
|
||
|
||
- Add support for the z180 chip family and, specifically, for
|
||
the P112 retro hardware (see http://p112.feedle.net/).
|
||
- All ZiLOG configurations updated to use the current ZDS-II
|
||
and/or SDCC toolchains.
|
||
|
||
* Graphics:
|
||
|
||
- Add a semaphore handshake so that operations on buffers from
|
||
the NXMU client will be blocked until the NX server operates on the
|
||
buffer data (from Petteri Aimonen).
|
||
- nxtk_subwindowmove() and nxtk_getwindow(): Improvements to clipping
|
||
logic from Petteri Aimonen.
|
||
|
||
* C Library: lib/ sub-directory renamed libc/ (there is a new lib/ sub-
|
||
directory that is used to hold all archives).
|
||
|
||
* C++: Exception stubs from Petteri Aimonen.
|
||
|
||
* Applications:
|
||
|
||
- Add NSH hexdump command to dump the contents of a file (or character
|
||
device) to the console (contributed by Petteri Aimonen).
|
||
- Extend the NSH ifconfig command plus various DHCPC improvements
|
||
(from Darcy Gong).
|
||
|
||
* apps/examples:
|
||
|
||
- ostest: Replace large tables with algorithmic prime number
|
||
generation. This allows the roundrobin test to run on platforms
|
||
with minimal SRAM (Freddie Chopin).
|
||
- keypadtest: A new keypad test example contributed by Denis Carikli.
|
||
- elf and nxflat: If CONFIG_BINFMT_EXEPATH is defined, these examples
|
||
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.
|
||
|
||
* Build system:
|
||
|
||
- New top-level Makefiles: Makefile.unix and Makefile.win (along with
|
||
numerous changes to other make-related files). This adds basic
|
||
support for building NuttX natively under Windows from a CMD.exe
|
||
window (rather than in a POSIX-like environment). This build: (1)
|
||
Uses all Windows style paths, (2) Uses primarily Windows batch
|
||
commands from cmd.exe, with (3) a few extensions from GNUWin32.
|
||
|
||
This capability should still be considered a work in progress
|
||
because: (1) it has not been verfied on all targets and tools,
|
||
and (2) still lacks some of the creature-comforts of the more
|
||
mature environments (like a function configure.sh script and
|
||
'make menuconfig' support).
|
||
|
||
- Example Windows native builds for STM32F4Discovery, eZ80, z16f, z8,
|
||
Z80, and Z180.
|
||
- Several configurations have been converted to work the kconfig-
|
||
frontends mconf configuration tool: stm32f4discovery/nxlines, and
|
||
all eZ80, z16f, z8, Z80, and Z180 configurations.
|
||
- Architectures now include a common Toolchain.defs file that can be
|
||
used to manage toolchains in a more configurable way (most of this
|
||
contributed by Mike Smith).
|
||
|
||
* Build tools:
|
||
|
||
- Renamed tools/winlink.sh to tools/copydir.sh.
|
||
- Several new tools/scripts to support the Windows native build:
|
||
tools/mkdeps.bat, tools/mkdeps.c, tools/link.bat, unlink.bat, and
|
||
copydir.bat.
|
||
- tools/incdir.sh and incdir.bat now support an -s option to generate
|
||
system header file paths.
|
||
- tools/b16.c: Fixed precision math conversion utility.
|
||
|
||
Bugfixes (see the change log for details). Some of these are very important
|
||
(marked *critical*):
|
||
|
||
* RTOS: Fix some backward conditional compilation in the work queue
|
||
logic (Freddie Chopin).
|
||
|
||
* File System: Uninitialized variable caused assertions (from Lorenz
|
||
Meier).
|
||
|
||
* Drivers: Partial fix for STM32 OTGFS device drivers and fix for short,
|
||
unaligned writes in the flash translation layer (drivers/mtd/ftl.c),
|
||
both from Petteri Aimonen.
|
||
|
||
* STM32 Drivers:
|
||
|
||
- Qencoder driver and TIM3 driver fixes from Ryan Sundberg.
|
||
- Fix timeout delay calculation in the STM32 OTG FS host driver.
|
||
|
||
* LPC17xx Drivers: Resources not being properly released when I2C
|
||
driver is un-initialized.
|
||
|
||
* Graphics:
|
||
|
||
- Fix logic when the mouse drags outside of the window; fix
|
||
another "blocked message" handling case (both from Petteri Aimonen).
|
||
- nxtk_filltrapwindow(): Correct an offset problem (also from Peterri
|
||
Aimonen).
|
||
- nxglib_splitline(): Correct the "fat flat line" bug.
|
||
|
||
* C Library:
|
||
|
||
- nrand() changes to prevent coefficients from becoming zero which
|
||
would "lock up" the random number generate.
|
||
- Add rounding functions to the math library (contributed by Petteri
|
||
Aimonen).
|
||
|
||
* Build system: Changes to MIN definitions in all limit.h header files
|
||
to avoid integer overflows. For example from (-128) to (-127 - 1)
|
||
(from Petteri Aimonen).
|
||
|
||
* Applications: Modbus fixes from Freddie Chopin.
|
||
|
||
As well as other, less critical bugs (see the ChangeLog for details)
|
||
|
||
NuttX-6.25
|
||
----------
|
||
|
||
The 92nd release of NuttX, Version 6.25, was made on February 1, 2013,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.25.tar.gz and
|
||
apps-6.25.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r5595
|
||
|
||
Note that all SVN information has been stripped from the tarballs. If you
|
||
need the SVN configuration information, you should check out directly from
|
||
SVN. Revision r5595 should equivalent to release 6.25 of NuttX:
|
||
|
||
svn checkout -r5595 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
|
||
|
||
Or (HTTP):
|
||
|
||
svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* OS Initialization
|
||
|
||
- Removed support for CONFIG_BUILTIN_APP_START. This is not really a
|
||
useful feature and creates a violation of the OS layered
|
||
architecture.
|
||
|
||
* Task Creation:
|
||
|
||
- Implement a simple vfork(). In NuttX-6.25, this interface is
|
||
available only for ARM7/9, ARMv7-M (Cortext-M3/4), and MIPS32
|
||
(PIC32MX) platforms.
|
||
- exec() now sets the priority of the new task to the same priority as
|
||
the parent task (instead of the arbirtrary value of 50).
|
||
- New, partially complient implementations of execv() and execl().
|
||
These are only partially compliant because they do not overlay any
|
||
existing "process space" but rather create the new task and exit().
|
||
- Add a complete implementation of posix_spawn(). This standard
|
||
interface is a better match for an MMU-less architecture than are
|
||
vfork() plus execv() or execl().
|
||
- Add a task start hook that will be called before the task main
|
||
is started. This can be used, for example, to schedule C++
|
||
static constructors to run automatically in the context of the
|
||
new task.
|
||
|
||
* Task Parentage
|
||
|
||
- Repartitioned tasking data structures. All shared resources are now
|
||
collected together in a "task group". A task group includes the
|
||
original task plus all of the pthreads created by the task.
|
||
- Added support for remember the parent "task group" when a new task is
|
||
started.
|
||
- Added optional support to record the membership of each thread in
|
||
the "task group".
|
||
- Implement support for retaining child task status in the "task group"
|
||
after the child task exists. This is behavior required by POSIX.
|
||
But in NuttX is only enabled with CONFIG_SCHED_HAVE_PARENT and
|
||
CONFIG_SCHED_CHILD_STATUS
|
||
- Add internal logic to "reparent" a task. This is useful,
|
||
for example, where the child task is created through a trampoline
|
||
task that redirects I/O. Reparenting allows the caller of posix_spawn()
|
||
to be reparented for the eventual child thread.
|
||
- Added support for SIGCHLD. Sent to all members of the parent task
|
||
group when the file member of the child task group exits.
|
||
- If SIGCHLD and retention of child task exist status are enabled, then
|
||
a more spec-compliant version of waitpid() is enabled.
|
||
- New interfaces waitid() and wait() are also enabled when SIGCHLD
|
||
is enabled.
|
||
|
||
* File System
|
||
|
||
- dup() and dup2() can new be used with opened files in a mounted file
|
||
system. This supports re-direction of output in NSH to files.
|
||
- The binfs file system was moved from apps/builtin to fs/binfs. The
|
||
binfs file system was extended to support execution of "builtin
|
||
applications" using exec(), execv(), execl(), or posix_spawn().
|
||
- Added logic based on SIGCHLD to automatically unload and clean-up
|
||
after running a task that was loaded into memory.
|
||
|
||
* Binary Formats
|
||
|
||
- Much of the logic for "builtin applications" was moved from
|
||
apps/builtin to nuttx/binfmt/libbuiltin. Includes some extensions
|
||
contributed by Mike Smith.
|
||
- A binary loader was added for builtin applications to support
|
||
execution of "builtin applications" using exec(), execv(),
|
||
execl(), or posix_spawn().
|
||
|
||
* Drivers:
|
||
|
||
- Added logic to marshal and serialized "out-of-band" keyboard
|
||
commands (such as cursor controls and key release events) intermixed
|
||
with normal ASCII keypress data. The encoding is partially integrated
|
||
in the HID keyboard driver and the decoding full integrated into the
|
||
apps/examples hidkbd and keypadtest (the latter contributed by Denis
|
||
Carlikli).
|
||
- Driver for the UG-2864HSWEG01 OLED contributed by Darcy Gong.
|
||
- Add support for removable serial devices (like USB serial). This
|
||
support is enabled by CONFIG_SERIAL_REMOVABLE.
|
||
|
||
* ARMv7-M:
|
||
|
||
- Added an option to use the BASEPRI register to disable interrupts
|
||
(instead of the PRIMASK). This eliminates some innocuous hardfaults
|
||
that interfere with some debug tools. You need to switch to the
|
||
BASEPRI method only if you have such tool interference.
|
||
|
||
* STM32 Drivers
|
||
|
||
- Bring STM32 F1 DMA capabilities up to par with the STM32 F2/F4
|
||
(contributed by Mike Smith).
|
||
- Add support for USART single wire mode (Contributed by the PX4
|
||
team).
|
||
- Updates to support for SPI DMA on the STM32 F1/F2/F4. From
|
||
Petteri Aimonen.
|
||
|
||
* STM32 Boards:
|
||
|
||
- New configuration to support the UG-2864HSWEG01 OLED on the
|
||
STM32F4Discovery board.
|
||
- Added a posix_spawn() test configuration for the STM32F4Discovery.
|
||
|
||
* LM3S/LM4F
|
||
|
||
- Files and directories repartitioned to support both LM3S and LM4F
|
||
using the STM32 organization as a model.
|
||
- Partial definitions for the LM4F contributed by Jose Pablo Carballo
|
||
(this is still a work in progress).
|
||
|
||
* LM3S Boards
|
||
|
||
- Added scripts and documentation to use OpenOCD with the LM3S (from
|
||
Jose Pablo Carballo).
|
||
|
||
* LPC176x/LPC178x
|
||
|
||
- Files and directories repartitioned to support both LPC175x/LPC176x
|
||
and the LPC177x/LPC178x families using the STM32 organization as a
|
||
model. The LPC1788 port is a work in progress by Rommel Marcelo.
|
||
|
||
* LPC176x/LPC178x Boards:
|
||
|
||
- Added a configuration to support the Wave Share Open1788 board.
|
||
This is still a work in progress by Rommel Marcelo.
|
||
|
||
* LPC2148 Boards:
|
||
|
||
- Add basic support for the The0.net ZP213x/4xPA board (with the LPC2148
|
||
and the UG_2864AMBAG01 OLED).
|
||
- Add an nxlines configuration for the ZP213x/4xPA (with the LPC2148
|
||
and the UG_2864AMBAG01).
|
||
|
||
* Simulator:
|
||
|
||
- Add an nxlines configuration for the simulator.
|
||
|
||
* Networking:
|
||
|
||
- Add logic to work around delayed ACKs by splitting packets
|
||
(contributed by Yan T.).
|
||
- Split net_poll() to create the internal interface psock_poll().
|
||
|
||
* LCDs:
|
||
|
||
- Added support for LCD1602 alphanumeric LCD (HD4468OU controller).
|
||
|
||
* Graphics:
|
||
|
||
- Added 5x8 monospace font. This tiny font is useful for graph
|
||
labels and for small bitmapped display. Contributed by Petteri
|
||
Aimonen.
|
||
|
||
* Build System:
|
||
|
||
- Add an options to better manage toolchain prefixes.
|
||
- Redesigned how the context targer works in the apps/ directory.
|
||
The old design caused lots of problems when changing configurations
|
||
because there is no easy way to get the system to rebuild the
|
||
context. This change should solve most the problems and eliminate
|
||
questions like "Why don't I see my builtin application in NSH?"
|
||
|
||
* Kconfig Files:
|
||
|
||
- There are several new configurations that use the kconfig-frontends
|
||
tools and several older configurations that have been converted to
|
||
use these tools. There is still a long way to go before the conversion
|
||
is complete:
|
||
|
||
configs/sim/nxwm
|
||
configs/sim/nsh
|
||
configs/stm3220g-eval/nxwm
|
||
configs/stm32f4discovery/posix_spawn
|
||
configs/olimex-lpc1766stk/nsh
|
||
configs/olimex-lpc1766stk/hidkbd
|
||
configs/olimex-lpc1766stk/nettest
|
||
configs/open1788/ostest
|
||
configs/stm32f4discovery/nsh
|
||
configs/stm32f4discovery/usbnsh
|
||
configs/lm326965-ek (all configurations)
|
||
configs/mcu123-214x/nsh
|
||
configs/ubw32/ostest
|
||
|
||
* Tools:
|
||
|
||
- tools/kconfig.bat: Kludge to run kconfig-frontends from a DOS shell.
|
||
- tools/configure.c: configure.c can be used to build a work-alike
|
||
program as a replacement for configure.sh. This work-alike
|
||
program would be used in environments that do not support Bash
|
||
scripting (such as the Windows native environment).
|
||
- tools/configure.bat: configure.bat is a small Windows batch
|
||
file that can be used as a replacement for configure.sh in a
|
||
Windows native environment. configure.bat is actually just a
|
||
thin layer that executes configure.exe if it is available. If
|
||
configure.exe is not available, then configure.bat will attempt
|
||
to build it first.
|
||
|
||
* Applications:
|
||
|
||
- New and modified examples:
|
||
|
||
apps/examples/wlan: Remove non-functional example.
|
||
apps/examples/ostest: Added a test of vfork(). Extend signal
|
||
handler test to catch death-of-child signals (SIGCHLD). Add a
|
||
test for waitpid(), waitid(), and wait().
|
||
apps/exampes/posix_spawn: Added a test of posix_spawn().
|
||
|
||
- NSH:
|
||
|
||
NSH now supports re-direction of I/O to files (but still not from).
|
||
The block driver source argument to the mount command is now
|
||
optional for file systems that do not require a block driver.
|
||
NSH can now execute a program from a file system using posix_spawn().
|
||
Added support for a login script. The init.d/rcS script will be
|
||
executed once when NSH starts; the .nshrc script will be executed
|
||
for each session: Once for serial, once for each USB connection,
|
||
once for each Telnet session.
|
||
|
||
- Supports a new daemon that can be used to monitor USB trace outpout.
|
||
- Removed non-functional wlan example.
|
||
|
||
Bugfixes (see the ChangeLog for details). Some of these are very important:
|
||
|
||
* Tasking:
|
||
|
||
- Fixed a *critical* task exit bug. Here is the failure scenario:
|
||
(1) sched_lock() is called increments the lockcount on the current
|
||
TCB (i.e., the one at the head of the ready to run list), (2)
|
||
sched_mergepending is called which may change the task at the head
|
||
of the ready-to-run list, then (3) sched_unlock() is called which
|
||
decrements the lockcount on the wrong TCB. The failure case that
|
||
I saw was that pre-emption got disabled in the IDLE thread, locking
|
||
up the whole system.
|
||
|
||
* Signals:
|
||
|
||
- sigtimedwait() would return a bad signal number if the signal was
|
||
already pending when the function was called.
|
||
|
||
* Drivers:
|
||
|
||
- Some SD cards will appear busy until switched to SPI mode for
|
||
first time. Having a pull-up resistor on MISO may avoid this
|
||
problem, but this fix from Petteri Aimonen makes it work also
|
||
without pull-up.
|
||
|
||
* STM32 Drivers:
|
||
|
||
- STM32 FLASH driver counting error (from Freddie Chopin).
|
||
- STM32 F4 maximum SPI frequency was wrong (corrected by Petteri
|
||
Aimonen).
|
||
|
||
* STM32 Boards
|
||
|
||
- Due to cloning of untested code, the logic to control on-board
|
||
LEDs did not work on any STM32 boards.
|
||
- Serial devices number /dev/ttyS0-5 is there is a serial console,
|
||
but /dev/ttyS1-6 if there is no serial console.
|
||
|
||
* Binary Formats
|
||
|
||
- C++ static constructors execute now using a start taskhook
|
||
so that they execute in the context of the child task (instead
|
||
of in the context of the parent task).
|
||
|
||
* File Systems:
|
||
|
||
- Several FAT-related bugs fixed by Petteri Aimonen.
|
||
|
||
* Networking:
|
||
|
||
- Fix poll/select issure reported by Qiang: poll_interrupt() must call
|
||
net_lostconnection() when a loss of connection is reported. Otherwise,
|
||
the system will not remember that the connection has been lost and will
|
||
hang waiting on a unconnected socket later.
|
||
- Similar issues corrected for recvfrom() and send().
|
||
- Telnetd would hang in a loop if recv() ever returned a value <= 0.
|
||
|
||
* Libraries:
|
||
|
||
- fread() could hang on certain error conditions.
|
||
- Can't handle SYSLOG output to a character device from the IDLE task
|
||
(because the IDLE task can't block).
|
||
|
||
* Build System:
|
||
|
||
- Serial was driver was not being built if there is no console
|
||
device. Obviously, the serial driver may be needed even in
|
||
this case.
|
||
|
||
* Additional Bugfixes:
|
||
|
||
- sig_timedwait() and clock_time2ticks.c: Timing "rounding" logic
|
||
- ARM9 Compilation issue with low vectors.
|
||
- readline() return value
|
||
- Others as detailed in the ChangeLog: HID keyboard, LPC17xx bit
|
||
definitions, strndup(), PL2303, SYSLOG error handling, AT25,
|
||
apps/examples.
|
||
|
||
NuttX-6.26
|
||
----------
|
||
|
||
The 93rd release of NuttX, Version 6.26, was made on March 15, 2013,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.26.tar.gz and
|
||
apps-6.26.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release corresponds with SVN release number: r5745
|
||
|
||
Note that all SVN information has been stripped from the tarballs. If you
|
||
need the SVN configuration information, you should check out directly from
|
||
SVN. Revision r5745 should equivalent to release 6.26 of NuttX:
|
||
|
||
svn checkout -r5745 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
|
||
|
||
Or (HTTP):
|
||
|
||
svn checkout -r5745 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* OS Initialization:
|
||
|
||
- Add an additional call-out to support board-specific driver
|
||
initialization during the boot-up phase (available with
|
||
CONFIG_BOARD_INITIALIZE=y).
|
||
|
||
* Tasking:
|
||
|
||
- New interface task_spawn() that is like posix_spawn(), but uses
|
||
entry point addresses like task_create().
|
||
- Additional data restructuring as a continuation of the task group
|
||
changes of NuttX 6.25. These data structures were moved from the
|
||
TCB structure into the task group: pthread join data,
|
||
atexit/on_exit callbacks, waitpid data structures, and message
|
||
queues.
|
||
- TCBs for tasks and pthreads are now separate structures. This
|
||
saves a little memory since tasks do not have to carry the overhead
|
||
for threads and vice versa.
|
||
|
||
* Kernel Build:
|
||
|
||
- Extensive changes were made to support the kernel build mode. In
|
||
this mode, NuttX is built as a monolithic kernel. NuttX is built
|
||
as a separate kernel mode "blob" and the applications are built
|
||
as a separate user mode "blob". The kernel runs in kernel mode and
|
||
the applications run in user mode (with the MPU restricting user
|
||
mode accesses). Access to the kernel from the user blob is only
|
||
via system calls (SVCalls).
|
||
- Extensive changes were made to the syscall, SVCall, and trapping
|
||
logic. Many internal interfaces were renamed.
|
||
- The memory manager was extended to support both kernel- and user-
|
||
mode allocations. Logic within the kernel needs to use the
|
||
correct kernel- or user-space allocator, depending upon the user
|
||
of the allocated memory.
|
||
- The user-space blob now contains a header built in at the beginning
|
||
of the block that provides the same information that was previously
|
||
provided by a kludgy, auto-generated header file (user_map.h).
|
||
- Basic support implemented for the ARMv7-M family with fragments
|
||
also implemetned for the ARMv6-M and MIPS32 families.
|
||
- Kernel build supported added for the LPC17xx Open1788 and for
|
||
the Atmel SAM3U-EK board. All testing is being performed on the
|
||
Open1788 board.
|
||
|
||
* Signals:
|
||
|
||
- Delivery of signals to threads within a task group is now compatible
|
||
with the way that signals are delivered to threads within a process.
|
||
|
||
* Drivers:
|
||
|
||
- Add a driver for the SST29VF NOR FLASH parts.
|
||
- USB device trace/debug feature extended to decode device-specific
|
||
trace events to make the trace output more readable (from Petteri
|
||
Aimonen).
|
||
- USB MSC device driver can not support names of differing sizes
|
||
in the USB descriptor and the SCSI fields (from Petteri Aimonen).
|
||
- Locking added to MMC/SD SPI drivers so that MMC/SD can co-exist on
|
||
the same bus as other SPI devices. Frequency is reset each time
|
||
that the MMC/SD SPI has the bus locked. (from Petteri Aimonen).
|
||
|
||
* ARMv6-M (Cortex-M0):
|
||
|
||
- Added support for the ARM Cortex-M0 family.
|
||
|
||
* nuvoTon NUC120:
|
||
|
||
- Added support for the nuvoTon NUC120 MCU (Cortex-M0).
|
||
|
||
* nuvoTon NUC120 Boards:
|
||
|
||
- Added basic support for the nuvoTon NuTiny-SDK-NUC120 board (Cortex-M0).
|
||
|
||
* LPC17xx:
|
||
|
||
- Added support for the LPC177x and LPC178x families. Most of this is
|
||
the work of Rommel Marcelo.
|
||
|
||
* LPC17xx Boards:
|
||
|
||
- Added support for Zilogic System's ARM development Kit, ZKIT-ARM-1769.
|
||
From Rashid.
|
||
- The port for the WaveShare Open1788 board is now functional. Basic
|
||
OS test and NuttShell (NSH) configurations are functional. More
|
||
driver development and testing is needed (from Rommel Marcelo).
|
||
|
||
* LPC17xx Drivers:
|
||
|
||
- Added an SD card MSI driver for the LPC178x. The driver is marginally
|
||
functional but requires DMA capability to be reliable.
|
||
|
||
* STM32
|
||
|
||
- Support extended to handle the STM32 F3 family (Cortex-M4 with F1-like
|
||
peripherals).
|
||
|
||
* STM32 Boards
|
||
|
||
- Added support the STMicro STM32F3Discovery board (STM32 F3).
|
||
|
||
* Stellaris LM3S/LM4F
|
||
|
||
- Basic support for the LM4F120 family is in place, but untested (mostly
|
||
from Jose Pablo Carballo).
|
||
|
||
* Stellaris LM4F Boards
|
||
|
||
- Add support for the LM4F120 LaunchPad (untested).
|
||
|
||
* Networking:
|
||
|
||
- select() should now allocate a little less memory.
|
||
|
||
* Memory Management:
|
||
|
||
- Extended to support multiple heaps. This is used as part of
|
||
the kernel build in order to support separater user- and
|
||
kernel-mode heaps.
|
||
- The stand-alone memory manger test had to be removed. It
|
||
was too entangled and made extension of the memory manager
|
||
nearly impossible. This is a loss.
|
||
|
||
* Build System:
|
||
|
||
- Several configurations converted to use the kconfig-frontends
|
||
configuration tool. There are still many more that need to
|
||
be converted.
|
||
|
||
* C Library:
|
||
|
||
- Move the workqueue logic into the C library. There is now a
|
||
special user-space version of the work queue (which will only
|
||
be used with a NuttX kernel build).
|
||
- Implementation of itoa() contributed by Ryan Sundberg.
|
||
|
||
* Applications:
|
||
|
||
- The NSH builtin task logic now uses task_spawn() to start builtin
|
||
applications.
|
||
- The OS test now includes a test cased to verify task_restart().
|
||
|
||
Efforts In Progress. The following are features that are partially
|
||
implemented but present in this release. Most are expected to be fully
|
||
available in NuttX 6.27.
|
||
|
||
* LM4F120 LaunchPad port. Code is in place, but nothing has been tested.
|
||
|
||
* WaveShare Open1788 port. This port as actually complete and
|
||
functional. However, there is still ongoing development and
|
||
testing of drivers.
|
||
|
||
* Kernel Build. Much progress has been made, but there kernel build is
|
||
not yet fully functional due to several user resources that are not yet
|
||
properly disentangled from the kernel blob.
|
||
|
||
* Conversion of old configurations to use the kconfig-frontends
|
||
tool is an ongoing effort that will continue for some time.
|
||
|
||
Bugfixes (see the ChangeLog for details). Some of these are very important:
|
||
|
||
* Tasking:
|
||
|
||
- The wrong PID was being signalled with SIGCHILD. It should be
|
||
the PID of the task that create the task group, not the ID of
|
||
the last thread to leave the task group.
|
||
- Added logic so that some internal resources and states are recovered
|
||
when tasks are deleted or restarted. Handle cases where there are
|
||
outstanding timed events pending when tasks are deleted or restarted.
|
||
|
||
* ARMv7-M:
|
||
|
||
- Several fixes to the MPU control logic.
|
||
|
||
* Drivers:
|
||
|
||
- Removable serial drivers race conditions fixed.
|
||
- MAX11802 timing bug (from Petteri Aimonen).
|
||
|
||
* STM32 Drivers:
|
||
|
||
- Handle cases were SPI DMA logic fails if sem_wait is awakened
|
||
by a signal. Need to clear error flags to prevent corruption of
|
||
subsequent transfers. Also, bit count should not be changed while
|
||
the SPI peripheral is enabled (from Petteri Aimonen).
|
||
- Fixes to the OTG FS device driver from Petteri Aimonen.
|
||
- Fix typos in DMA register header file (from Yan T.)
|
||
|
||
* Graphics:
|
||
|
||
- Correction to the hyphen in the SANS 17x22 font (from Petteri
|
||
Aimonen).
|
||
|
||
* Networking:
|
||
|
||
- Corrected errors in the socket poll/select logic. Additional
|
||
state logic was needed to detect if the socket is still connected
|
||
before starting the poll wait. (bug reported by Qiang Yu).
|
||
|
||
* Memory Management:
|
||
|
||
- mallinfo() should hold the memory manager semaphore (from Petteri
|
||
Aimonen.
|
||
|
||
* Build System:
|
||
|
||
- Resolved several build errors reported by Mike Smith.
|
||
|
||
* Applications:
|
||
|
||
- Fixed an NSH memory leak: Needed to detach after creating each
|
||
pthread.
|
||
- readline() now returns EOF on any failure (instead of a negated
|
||
errno value). This is because the underlying read is based on
|
||
logic similar to getc. The value zero (meaning end-of-file)
|
||
was being confused with a NUL. So if a NUL was received, the
|
||
NSH session would terminate because it thought it was the end of
|
||
file.
|
||
|
||
NuttX-6.27
|
||
----------
|
||
|
||
The 94th release of NuttX, Version 6.27, was made on April 28, 2013,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.27.tar.gz and
|
||
apps-6.27.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* OS Initialization:
|
||
|
||
- Add missing registration of /dev/zero. Registration of /dev/null
|
||
should depend upon conditional compilation. From Ken Pettit.
|
||
|
||
* Tasking:
|
||
|
||
- Added a new interface to set aside memory on the task's stack. This
|
||
is used (at least in the kernel build) to hold task arguments.
|
||
- Remove up_assert_code(). One assertion routine is enough.
|
||
|
||
* Kernel Build:
|
||
|
||
- Extensive changes were made to support the kernel build mode. In
|
||
this mode, NuttX is built as a monolithic kernel. NuttX is built
|
||
as a separate kernel mode "blob" and the applications are built
|
||
as a separate user mode "blob". The kernel runs in kernel mode and
|
||
the applications run in user mode (with the MPU restricting user
|
||
mode accesses). Access to the kernel from the user blob is only
|
||
via system calls (SVCalls).
|
||
- Kernel build configurations for the Open1788 board and for the
|
||
STM32F4Discovery now execute correctly.
|
||
- Changes were made to task and thread start-up routines, signal
|
||
handling, data structures, ARMv7-M SVCalls, stack management
|
||
interfaces,
|
||
|
||
* Drivers:
|
||
|
||
- Driver for the ST7567 LCD Display Module from Univision Technology
|
||
Inc. Contributed by Manikandan.S
|
||
- SPI initialize functions renamed so that multiple SPI blocks can
|
||
be initialized.
|
||
- Extended to support the RAMTRON FM25V01 device. Contributed by
|
||
Lorenz Meier
|
||
- Serial drivers: TIOCSERGSTRUCT ioctls now conditioned on
|
||
CONFIG_SERIAL_TIOCSERGSTRUCT
|
||
|
||
* ARMv7-M (Cortex-M3/4):
|
||
|
||
- Added support for modifiable interrupt vectors in RAM
|
||
|
||
* nuvoTon NUC1xx:
|
||
|
||
- Added kernel build support
|
||
|
||
* Freescale Kinetis:
|
||
|
||
- Add kernel build support
|
||
- Add support for the Kinetis L family of Cortex-M0+ MCUs. Contributed
|
||
by Alan Carvalho de Assis.
|
||
|
||
* LPC17xx:
|
||
|
||
- Now holds off sleep mode in the IDLE loop is DMA is in progress
|
||
(because sleep mode will disable CPU SRAM).
|
||
|
||
* LPC17xx Boards:
|
||
|
||
- ZKIT-ARM-1769: Now supports the ST7567 LCD display module. Added
|
||
an nxhello configuration for testing (Manikandan.S).
|
||
- ZKIT-ARM-1769: Add support for both CAN1 and CAN2. Contributed by
|
||
M.Kannan
|
||
|
||
- Open1788: Basic support for the WaveShare Open1788 board is complete
|
||
with working OS test, NSH, and graphics configurations.
|
||
- Open1788: Integrated the LPC178x LCD driver with the WaveShare display.
|
||
Touchscreen support is included, howerver, there appears to be an
|
||
issue with the Open1788 touchscreen interrupt signal.
|
||
- Open1788: Now supports SDRAM (used to provide the LCD framebuffer).
|
||
- Open 1788: Reversed sense of the IDLE LCD. It is now off when the
|
||
LPC17 is sleeping and on when awake. That is much a better visual
|
||
indication of the dynamic CPU load
|
||
|
||
* LPC17xx Drivers:
|
||
|
||
- Added an LCD framebuffer driver for the LPC177x/8x family.
|
||
- Implemented LPC17xx GPDMA support.
|
||
- Integrated the LPC17xx GPDMA support into the SD card driver.
|
||
- SSP driver adapted to work with the LPC178x family.
|
||
- Separate LPC176x and LPC178x GPIO logic; this logic is too different
|
||
to maintain in one file with conditional compilation.
|
||
- Re-design of the GPIO logic for the LPC178x family by Rommel Marcelo.
|
||
|
||
* LPC43xx:
|
||
|
||
- Added kernel build support
|
||
|
||
* STM32:
|
||
|
||
- Added support for kernel mode build.
|
||
- Added architecure support for the STM32 F427/F437 chips. Contributed
|
||
by Mike Smith
|
||
|
||
* STM32 Boards:
|
||
|
||
- Added a configuration to support a kernel mode build of the OS test
|
||
on the STM32F4Discovery
|
||
|
||
* Stellaris LM3S/LM4F:
|
||
|
||
- Added kernel build support
|
||
- Added support for the 7 UARTs on the LM4F120
|
||
|
||
* Stellaris LM4F Boards:
|
||
|
||
- Added scripts and instructions to simplify use of OpenOCD with ICDI
|
||
(JP Carballo)
|
||
- The basic for the Stellaris LM4F120 Launchpad is complete. This
|
||
includes support for OS test and NSH configurations. Additional
|
||
driver development is needed.
|
||
|
||
* Build System:
|
||
|
||
- Directories where the same sources files are used to build different
|
||
objects in the first and second pass kernel builds need to keep those
|
||
objects in separate directories so that they are not constantly
|
||
rebuilt.
|
||
|
||
* Applications:
|
||
|
||
- apps/system/ramtest: Add a simple memory test that can be built
|
||
as an NSH command.
|
||
|
||
* Tools:
|
||
|
||
- kconfig2html is a new tool which will replace the hand-generated
|
||
documentation of the NuttX configruation variables with auto-
|
||
generated documentation.
|
||
|
||
Efforts In Progress. The following are features that are partially
|
||
implemented but present in this release. Most are expected to be fully
|
||
available in NuttX 6.28.
|
||
|
||
* A port to the Freescale Freedom KL25Z is complete but not yet stable
|
||
enough. The KL25Z is a low-cost Cortex-M0+ part with 128KB of FLASH
|
||
and 16KB of SRAM. This is is the effort of Alan Carvalho de Assis.
|
||
|
||
* Conversion of old configurations to use the kconfig-frontends
|
||
tool is an ongoing effort that will continue for some time.
|
||
At this time, only 32% of the configurations have been converted
|
||
to use the kconfig-frontends tools.
|
||
|
||
Bugfixes (see the ChangeLog for details). Some of these are very important:
|
||
|
||
* Tasking:
|
||
|
||
- Fixed a critical bug: When there is pending C buffered output
|
||
and the system is very busy, the a pthread may be blocked at
|
||
a critical point when trying to exit. Blocking at this critical
|
||
point would cause crashes. All entire task/thread exit logic
|
||
paths were reviewed and failsafe mechanisms were put in place
|
||
to assure that exitting tasks never block after task teardown
|
||
has been started.
|
||
|
||
* ARMv6-M:
|
||
|
||
- Fixed parameter passing for all system call inline functions with > 3
|
||
parameters
|
||
- Fixed a major problem: The Cortex-M0 has no BASEPRI register but the
|
||
logic of NuttX-6.26 was using it to manage interrupts. Switch to
|
||
using the PRIMASK instead. This means that hardfaults will (again)
|
||
occur when SVC instructions are executed
|
||
|
||
* ARMv7-M:
|
||
|
||
- Corrected Correct MPU sub-region settings for unaligned regions.
|
||
- In exception handling with CONFIG_NUTTX_KERNEL, need to explicitly
|
||
set and clear the privilege bit in the CONTROL
|
||
- Fixed parameter passing for all system call inline functions with > 3
|
||
parameters
|
||
|
||
* Drivers:
|
||
|
||
- Support for O_NONBLOCK was not supported in the "upper half"
|
||
serial driver.
|
||
- PL2303 compilation errors
|
||
|
||
* Stellaris LM3S/4F:
|
||
|
||
- Corrected typos in alternate function definitions.
|
||
|
||
* LPC17xx Drivers:
|
||
|
||
- Added a work-around for an ADC errata. From Chris Taglia
|
||
- Only one ADC pin was configured. Need to configure all that
|
||
are in the ADC0 set. From MKannan
|
||
|
||
* File Systems:
|
||
|
||
- The FAT logic was not making a distinction between directory
|
||
non-existence and file non-existence so when it you try to
|
||
create a file in a non-existent directory, it would create a
|
||
file with the name of the missing directory. Reported by Andrew
|
||
Tridgell
|
||
- Several fixes to the FAT file system from Ronen Vainish. These
|
||
fixes mostly involve the logic to extend directory clusters for
|
||
the case of long file names but also include a few important
|
||
general fixes (such as for storing 32 bit FAT values)
|
||
- mkfatfs was writing the boot code to the wrong location. From
|
||
Petteri Aimonen
|
||
|
||
* Networking:
|
||
|
||
- Fixed a compilation error when socket options are are disabled.
|
||
Reported by Daniel O'Connor
|
||
|
||
* C Library:
|
||
|
||
- Corrected an error in sscanf. If %n occurs in the format statement
|
||
after the input data stream has been fully parsed, the %n format
|
||
specifier will not be handled. Reported by Lorenz Meier
|
||
- strchr(str, '\0') should return a pointer to the end of the string,
|
||
not NULL. From Petteri Aimonen
|
||
|
||
* Build System:
|
||
|
||
- Fix naming of NuttX target if EXEEXT is defined.
|
||
|
||
* Applications:
|
||
|
||
- OS test: Fix timing error in non-cancelable thread test.
|
||
- NSH: Correct the test of the skip input parameter. Was limiting the
|
||
range to <= count. From Ken Petit.
|
||
|
||
NuttX-6.28
|
||
----------
|
||
|
||
The 95th release of NuttX, Version 6.28, was made on June 14, 2013,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.28.tar.gz and
|
||
apps-6.28.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* File Systems:
|
||
|
||
- SMART FLASH file system (contributed by Add Ken Pettit).
|
||
|
||
* MTD (FLASH) Drivers:
|
||
|
||
- Add support of MTD partitions via a new MTD driver that manages a
|
||
set of MTD devices, each managing a subset of the FLASH region
|
||
managed by the parent MTD driver.
|
||
- Extended the MTD interface to provide an (optional) method to
|
||
perform byte oriented writes if supported by the FLASH part.
|
||
- M25Px driver re-architected to use the byte write capability (when
|
||
possible) and to use 4KB sectors for the erase block size when the
|
||
part supports it (from Ken Pettit).
|
||
|
||
* LCD Drivers:
|
||
|
||
- New interface definitions to support audio devices (from Ken Pettit)
|
||
and alphanumeric, segment LCDs.
|
||
|
||
* Wireless Drivers:
|
||
|
||
- Added new driver for the wireless nRF24L01+ transceiver (from
|
||
Laurent Latil).
|
||
|
||
* Calypso:
|
||
|
||
- Added support for the Pirelli DP-L10 phone (from Craig Comstock via
|
||
Alan Alan Carvalho de Assis)
|
||
|
||
* STM32:
|
||
|
||
- Added an option to conditionally disable the "wfi" sleep mode. This
|
||
is needed with certain JTAG debuggers to to prevent the debug
|
||
session from begin disconnected (from Ken Pettit).
|
||
- Added support for the STM32L (STM32L15X/STM32L16x) family.
|
||
- Added STM32F103C4 and F103C8 chip support (from Laurent Latil).
|
||
- Added a new interface function, stm32_dmacapable() that can be used
|
||
to determine if DMA is possible from the specified memory address
|
||
(from Petteri Aimonen)
|
||
|
||
* STM32 Drivers:
|
||
|
||
- If CONFIG_STM32_DMACAPABLE is defined, the STM32 SPI driver now uses
|
||
stm32_dmacapable() to determine if it is possible to perform DMA
|
||
from the specified address. This change is important for the STM32
|
||
F4 which may have SPI data buffers allocated on the stack in CCM
|
||
memory which cannot support the DMA (from Petteri Aimonen).
|
||
|
||
* STM32 Boards:
|
||
|
||
- Support added for the MikroElektronika Mikromedia for STM32F4
|
||
development board (from Ken Pettit) with the MIO283QT2 LCD and
|
||
touchscreen. Several graphics configurations are included.
|
||
- The HY-mini STM32v board now uses the common SSD1289 driver
|
||
and supported the card detect interrupt. Several new
|
||
configurations also added and some removed (from Laurent Latil).
|
||
- Support added for the R65105-based LCD that comes with some
|
||
HY-Mini STM32v boards (from Christian Faure).
|
||
- Added basic support for the STM32L-Discovery board. Drivers
|
||
for the on-board segment LCD are included.
|
||
- Added support for the STM32 Tiny development board based on the
|
||
STM32 F103C8T6 MCU. This includes support for the nRF24L01+
|
||
wireless on the board (from Laurent Latil).
|
||
|
||
* Stellaris LM3S/LM4F:
|
||
|
||
- Support added for a TI/Stellaris internal FLASH MTD driver (from Max
|
||
Holtzberg).
|
||
|
||
* Stellaris LM4F Boards:
|
||
|
||
- The LM3S6965-EK now has configurations for the UDP discovery tool and
|
||
for the TCP echo server (both from Max Holtzberg)
|
||
|
||
* Atmel ATSAM3/4:
|
||
|
||
- Reorganized, renamed, and updated directory structure to better
|
||
support additional members of the SAM3/4 family.
|
||
- Added support for both the ATSAM4S and ATSAM4L families. The
|
||
ATSAM4S is similar to the ATSAM3U, but the ATSAM4L is quite a
|
||
different beast, really much more akin to the AVR32s SoCs but
|
||
with a Cortex-M4.
|
||
|
||
* Atmel ATSAM3/4 Boards:
|
||
|
||
- Added support for the Atmel SAM4L Xplained Pro development board.
|
||
This board features the ATSAM4LC4C MCU (Cortex-M4 with 256KB FLASH +
|
||
32KB SRAM).
|
||
- Added support for the Atmel SAM4S Xplained developement board. This
|
||
board features the ATSAM4S16C MCU (Cortex-M4 with 1MB FLASH + 128KB
|
||
SRAM).
|
||
|
||
* PIC32MX Boards:
|
||
|
||
- Added support for the 1602 segment LCD on-board the Sure PIC32MX
|
||
board. This board will now also support a USB NuttX console and
|
||
the USB monitor test program.
|
||
|
||
* Build System:
|
||
|
||
- Clean-up of almost all .gitignore files: Made scope of ignore to be
|
||
only the current directory; Ignore .dSYM files in directories where
|
||
.exe's may be built. Also, in Makefiles, clean .dSYM files in
|
||
directories where an .exe may be built.
|
||
- Standardize and consolidated all build-as-an-NSH-application
|
||
configuration settings. Now only CONFIG_NSH_BUILTIN_APPS is
|
||
sufficient to build an application, test, or or example as an NSH
|
||
builtin application.
|
||
- Added support for a generic ARM, ARMv6-M and ARMv7-M Windows EABI
|
||
toolchains.
|
||
|
||
* Libraries:
|
||
|
||
- Added encoder/decoder logic to marshal and serialize special segment
|
||
LCD (SLCD) commands intermixed with normal ASCII data. This is the
|
||
similar to the encoding/decoding logic that is used to marshal
|
||
special commands from a keyboard.
|
||
- Add dprintf() and vdprintf() (the latter from Andrew Tridgell).
|
||
- Add an application that may be built as an NSH builtin command that
|
||
will erase FLASH using a flash_eraseall NSH command (from Ken Pettit).
|
||
|
||
* Applications:
|
||
|
||
- Added an MTD partition test/examples. Currently used with (1) the a
|
||
simulation configuration to test MTD partitions on a RAM emulation
|
||
of FLASH and (2) with the Mikroe STM32F4 configuration.
|
||
- Added a test/example to verify alphanumeric, segment LCDs.
|
||
- Added a simple single threaded, poll based TCP echo server based
|
||
on W. Richard Stevens UNIX Network Programming Book (from Max
|
||
Holtzberg).
|
||
- Added several tests of the SMART block driver and file system (from
|
||
Ken Pettit).
|
||
- Added a runtime configuration for the UDP discover utility (from
|
||
Max Holtzberg).
|
||
- Added an example application to demo the nRF24L01 driver (from
|
||
Laurent Latil).
|
||
- New and modified NSH commands:
|
||
Added a -h option to the df command to show the volume information
|
||
in human readable form (from Ken Petit).
|
||
Add a new mksmartfs command (from Ken Petit).
|
||
|
||
Efforts In Progress. The following are features that are partially
|
||
implemented but present in this release. Most are expected to be fully
|
||
available in NuttX 6.28.
|
||
|
||
* Audio System:
|
||
|
||
- A complete audio subsystem include CODECs, higher level management,
|
||
interface definitions, and audio drivers was contributed by Ken
|
||
Pettit. This work has not been completely verified as of this
|
||
release and so is categorized as a work-in-progress. At present,
|
||
progress is blocked due to issues interfacing with the VS1053
|
||
audio DAC on the Mikroe STM32F4 board.
|
||
|
||
* kconfig-fronted Configuration:
|
||
|
||
- Conversion of old configurations to use the kconfig-frontends
|
||
tool is an ongoing effort that will continue for some time.
|
||
At this time, only 43% of the configurations have been converted
|
||
to use the kconfig-frontends tools.
|
||
|
||
Bugfixes (see the ChangeLog for details). Some of these are very important:
|
||
|
||
* Tasking:
|
||
|
||
- Modify assertion in the priority inheritance logic that is reported
|
||
to cause false alarm assertions.
|
||
|
||
* Kernel Build:
|
||
|
||
- Typo in syscall proxying logic corrected by Ken Pettit.
|
||
|
||
* Networking:
|
||
|
||
- Poll setup/teardown logic should ignore invalid (i.e., negative)
|
||
file descriptors (from Max Holtzberg).
|
||
- When readahead data is available, the network poll() logic should
|
||
set POLLIN (or POLLRDNORM), not POLLOUT (from Max Holtzberg).
|
||
|
||
* LCD Drivers:
|
||
|
||
- Correct power controls in the MIO283QT2 LCD driver.
|
||
|
||
* USB Device Controller Drivers:
|
||
|
||
- Change the default IN request buffer size from 64 to 96. This will
|
||
avoid requests of exactly MAXPACKET size and, hence, avoid so many
|
||
NULL packets. Also, fix the OUT request buffers size to exactly the
|
||
max packet size. It really cannot be any other size.
|
||
|
||
* STM32 Drivers:
|
||
|
||
- Correct some bad STM32 F1 DMA definitions that crept into the system
|
||
a few months ago a broke STM32 F1 DMA (from Laurent Latil)
|
||
- Fixed an error in NULL packet handling in the STM32 F1 USB device
|
||
controller driver: If the NULL-packet needed flag ever got set,
|
||
then it was not being cleared and infinite NULL packets resulted.
|
||
This only affects the CDC/ACM class and was the cause of the
|
||
failures using the USB CDC/ACM device as a NuttX console. With this
|
||
change the USB works well as an alternative NuttX console device for
|
||
the STM32 F1 family.
|
||
- Correct some bad condition compilation in the RCC logic (CONFIG_
|
||
missing from setting names). This affects some STM32 FLASH pre-
|
||
fetch settings (from Lorenz Meier).
|
||
- Change for hardware flow control support for STM32. The change also
|
||
fixes incorrect operation of USART2 and UART5 in current master
|
||
(from Lorenz Meier and Mike Smith).
|
||
- Fixed a backward conditional in USB OTG FS host controller driver
|
||
that prevented detection of disconnection events (from Scott).
|
||
|
||
* LPC17xx Drivers:
|
||
|
||
- I2C interrupt control. Also correction for a single byte read
|
||
timeout error (from M. Kannan).
|
||
|
||
* Freescale Kinetis:
|
||
|
||
- Freedom KL25Z pin multiplexing and LED control corrections (from
|
||
Alan Carvalho de Assis)
|
||
|
||
* PIC32MX:
|
||
|
||
- Fix NULL packet handling in the PIC32 USB device driver. Without
|
||
this fix the CDC/ACM driver cannot be used reliably with the PIC32
|
||
USB. With this change the USB works well as an alternative NuttX
|
||
console device.
|
||
|
||
* Graphics:
|
||
|
||
- Default priorities for NxWidget and NxWM threads should be 100,
|
||
not 50, to be consistent with other default priorities.
|
||
|
||
* Applications:
|
||
|
||
- Remove the CONFIG_EXAMPLES_NXTEXT_NOGETRUN option from the NXTEXT
|
||
example. The test logic was bad for the case where this options is
|
||
not selected. Also, completed the empty Kconfig file.
|
||
- C++ name mangling was occurring when this example is built as an NSH
|
||
built-in application causing the entry to be undefined when called
|
||
from C code.
|
||
- Add some missing NSH library configuration values (from Lorenz
|
||
Meier).
|
||
|
||
NuttX-6.29
|
||
----------
|
||
|
||
The 96th release of NuttX, Version 6.29, was made on July 31, 2013,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.29.tar.gz and
|
||
apps-6.29.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Drivers:
|
||
|
||
- Generalized the SSD1306 driver and added support UG-2832HSWEG04
|
||
which is very similar to the existing support for the
|
||
UG-2864HSWEG01.
|
||
- Added support for a generic bit-bang SPI driver. This includes
|
||
both a common "upper half" driver as well as a platformp-specific
|
||
"lower half" dirvers based on a common "template."
|
||
|
||
* ARMv7-A, Cortex-A5
|
||
|
||
- Added support for the ARMv7-A architecture and the Cortex-A5 in particular.
|
||
|
||
* ARMv7-M, Cortex-M3/4
|
||
|
||
- Modified how some registers are copied during a context switch (with
|
||
lazy FPU register saving). This should save some context switching
|
||
time when the context switch is due to interrupt level processing.
|
||
|
||
* STM32:
|
||
|
||
- Added support for a separate CCM heap. This may be useful for
|
||
segregating allocations for CCM (which cannot be used for DMA)
|
||
from other allocations (that may be used used for DMA).
|
||
|
||
* STM32 Drivers:
|
||
|
||
- DAC: Added support for DAC DMA (contributed by John Wharington).
|
||
- I2C: An I2C driver for the STM32 F3 family (from John Wharington).
|
||
|
||
* Atmel AT91 SAM/4:
|
||
|
||
- Add support for SAM3X and SAM3A chips
|
||
|
||
* Atmel AT91 SAM/4 Drivers:
|
||
|
||
- Re-architect the SAM3/4 SPI driver so that is it compatible with the
|
||
SPI drivers of other MCUs.
|
||
- Added register definition file for the SAM4L LCD peripheral.
|
||
- Added SAM4L PDCA register definition file
|
||
|
||
* Atmel AT91 SAM/4 Boards:
|
||
|
||
- SAM4L-Xplained: Added support for the SPI-based SD card on the I/O1
|
||
module.
|
||
- SAM4L-Xplained: Added a driver for the LED1 segment LCD module.
|
||
- SAM4L-Xplained: Added support for the UG-2832HSWEG04 OLED on the
|
||
SAM4L Xplained Pro's OLED1 module
|
||
- SAM4S-Xplained: Added support for on-board 1MB SRAM
|
||
- Arduino Due: Basic support for the Arduino Due (SAM3X) is now
|
||
included.
|
||
- SAM3U-EK: The touchscreen is now functional.
|
||
|
||
* Atmel AT91 SAMA5D3
|
||
|
||
- Added support for the Atmel AT91SAMA5D3 Cortex-A5 chip family.
|
||
|
||
* Atmel AT91 SAMA5D3 Boards
|
||
|
||
- Added support for the Atmel SAMA5D3x-EK boards which use the AT9
|
||
SAMA5D3x chips (x=1,3,4,5).
|
||
|
||
* Freescale KL25Z Drivers
|
||
|
||
- Freescale KL25Z TSI register definitions and example TSI driver for
|
||
the Freedom KL25Z board from Alan Carvalho de Assis.
|
||
- Added SPI driver and register definitions for the Freescale KL25Z.
|
||
- Added a framework for controlling SPI-related discrete inputs and
|
||
outputs. Taken from work by Alan Carvalho de Assis
|
||
|
||
* Build System:
|
||
|
||
- New sub-directories to hold SPI-related files: includes/nuttx/spi.h
|
||
moved to include/nuttx/spi/.; SPI-related Kconfig info moved from
|
||
drivers/Kconfig to drivers/spi/kconfig.
|
||
- Finally... I changed the naming of configuration variables like
|
||
CONFIG_DRAM_ to CONFIG_RAM_. This has bothered me for a long time
|
||
since most boards don't have DRAM. The more generic RAM naming
|
||
should not produce so much cognitive dissonance
|
||
|
||
* Libraries:
|
||
|
||
- Added CRC16 support.
|
||
|
||
* Applications:
|
||
|
||
- Added Zmodem file transfer support. This may be used as an embedded
|
||
library or may be built as 'sz' and 'rz' commands that can be
|
||
executed from NSH.
|
||
- C++ initializers should be set once and, preferably, in the context
|
||
of the task that uses any C++ statically initialized classes. This
|
||
only becomes an issue if cxxtest or helloxx are built as NSH builtin
|
||
applications. Then you want the initialization done in cxxtext or
|
||
helloxx and not in NSH (and certainly not twice). Added
|
||
configuration options to control who does the C++ initialization.
|
||
NSH now does not do C++ initialization be default and must be
|
||
configured to do otherwise. Conversely, cxxtest and helloxx
|
||
will always do C++ initialization unless configured do otherwise.
|
||
- examples/cxxtext: Add ostream test as provided by Michael.
|
||
- NSH: Added a 'cmp' command that can be used to compare two files
|
||
for equivalence. Returns an indication if the files differ.
|
||
Contributed by Andrew Tridgell (via Lorenz Meier).
|
||
|
||
Efforts In Progress. The following are features that are partially
|
||
implemented but present in this release. They are not likely to be
|
||
completed soon.
|
||
|
||
* Audio System:
|
||
|
||
- A complete audio subsystem include CODECs, higher level management,
|
||
interface definitions, and audio drivers was contributed by Ken
|
||
Pettit. This work has not been completely verified as of this
|
||
release and so is categorized as a work-in-progress. At present,
|
||
progress is blocked due to issues interfacing with the VS1053
|
||
audio DAC on the Mikroe STM32F4 board.
|
||
|
||
* kconfig-fronted Configuration:
|
||
|
||
- Conversion of old configurations to use the kconfig-frontends
|
||
tool is an ongoing effort that will continue for some time.
|
||
At this time, only 45% of the configurations have been converted
|
||
to use the kconfig-frontends tools.
|
||
|
||
Bugfixes (see the ChangeLog for details). Some of these are very important:
|
||
|
||
* File Systems:
|
||
|
||
- Fixed compilation error if no file systems are enabled: Change
|
||
error to ERROR.
|
||
- Read-Ahead/Write buffering: Correct typos that can cause failures
|
||
in some configurations (From Chia Cheng Tsao).
|
||
|
||
* Drivers
|
||
|
||
- Remove the wait for the touchscreen busy bit in the ADS7843E driver.
|
||
From my reading of the ADS7843 spec, it would not be appropriate to
|
||
wait for the BUSY bit to de-asserted anyway (since it is only de-
|
||
asserted when we read the data). Most boards do not even bother to
|
||
provide the BUSY bit.
|
||
- MMC/SD SPI based driver: Driver needs to make sure that the SPI
|
||
mode and data width are correct.
|
||
- ENC28J60: Change buffer ordering to work around Errata. From Dave
|
||
(ziggurat29).
|
||
|
||
* USB Device Controller Drivers:
|
||
|
||
- Fixed a typo in the composite device driver unitialization logic.
|
||
DEV1 should be DEV2 in one case.
|
||
- usbdev.h: Fix some typos that cause compiler errors when
|
||
CONFIG_USBDEV_DMA and CONFIG_USBDEV_DMAMEMORY are selected (From
|
||
Chia Cheng Tsao).
|
||
|
||
* ARM9:
|
||
|
||
- Fix a bug (uninitialized register error) that crept in the ARM9
|
||
boot-up code several years ago. Obviously no one has used the
|
||
ARM9 NuttX port for years!
|
||
|
||
* STM32 Drivers:
|
||
|
||
- Fix STM32 OTF FS endpoint allocation logic. Apparently the same
|
||
endpoint can be allocated as both an IN or an OUT endpoint. The
|
||
existing implementation only supported one allocation, either IN or
|
||
OUT. This resulted in failures to allocate endpoints when used with
|
||
the CDC/ACM + MSC composite driver (From Chia Cheng Tsao).
|
||
- SDIO: Add support for the data block end (DBCKEND) interrupt to
|
||
terminate transfers (From Chia Cheng Tsao).
|
||
- DAC: Fixed numerous DAC driver errors and added support for DAC
|
||
DMA (contributed by John Wharington).
|
||
|
||
* SAM3/4:
|
||
|
||
- SAM4S: Correct configuration of PIO pins for SAM4S B and C peripherals.
|
||
- Need to disable write protection before configuring PIO pins.
|
||
- GPIO configuration logic must protect against re-entrancy.
|
||
- Clocking must be applied to the SMC module for the 3X and 3A family in
|
||
order for the NFC SRAM to be functional.
|
||
- Fixed some errors for interrupts on ports D-F.
|
||
|
||
* SAM3/4 Drivers:
|
||
|
||
- Common SPI driver: Fix SPI mode setting. In the SAM3/4 family, the
|
||
clock phase control (CPHA) is inverted (NPHA). Also fixed an
|
||
incorrect pointer test. Was checking if the wrong pointer was NULL.
|
||
|
||
* SAM3/4 Boards:
|
||
|
||
- SAM3U-EK: Fix polarity of the /PENIRQ signal (it is active low).
|
||
The SAM3U-EK board now runs at 96MHz.
|
||
|
||
* Applications:
|
||
|
||
- apps/examples/nxhello: Minor fix for compilation error when the
|
||
display resolution is low (< 8bpp) due to a typo that has been there
|
||
for a long time. Also Correct default colors when in Y1 code mode.
|
||
- apps/system/ramtest: The RAM test was not correctly built
|
||
into the configuration and build system.
|
||
- apps/examples/composite: Change to prevent some false alarm debug
|
||
assertions (From Chia Cheng Tao).
|
||
|
||
NuttX-6.30
|
||
----------
|
||
|
||
The 97th release of NuttX, Version 6.30, was made on September 14, 2013,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.30.tar.gz and
|
||
apps-6.30.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Common Drivers:
|
||
|
||
- Extended TERMIOS support for serial and CDC/ACM drivers. From
|
||
Mike Smith, Andrew Tridgell and Lorenz Meier.
|
||
- Added option to disable serial port reordering. From Lorenz Meier.
|
||
- Several changes to the USB host control interface and extensions to
|
||
common USB host logic to handle host controllers with multiple
|
||
downstream ports in the root hub.
|
||
- USB device tracing: Extended decoding and stringifying of USB trace
|
||
output to include trace output from class drivers.
|
||
- USB host tracing: Added support for USB host tracing similar in
|
||
some ways to USB device tracing: Stringification is an inherent
|
||
part of the trace decoding (not an option). Only available in the
|
||
SAMA5 USB host drivers now.
|
||
|
||
* Networking / Network Drivers
|
||
|
||
- Support for the Microchip ENCX24J600 Ethernet driver from Max
|
||
Holtzberg
|
||
- CC3000 Networking. Initial support for the TI CC3000 network
|
||
module on the Freescale Freedom-KL25Z board from Alan Carvalho
|
||
de Assis. This is still a work in progress.
|
||
|
||
* ARMv7-A, Cortex-A5
|
||
|
||
- Restructured some MMU-related logic and header files.
|
||
- Hooks added for Cortex-A8, but not yet used.
|
||
|
||
* STM32 Drivers:
|
||
|
||
- STM32 SPI: nbits() interface extended to control bit order as well
|
||
as bit width (from Teemu Pirinen)
|
||
|
||
* STM32 Boards
|
||
|
||
- Olimex STM32-P107: Incorporate ENCX24J600 networking for the Olimex
|
||
STM32 P107 board.
|
||
- LeafLabs Maple Board: Add board support for the LeafLabs Maple and
|
||
Maple Mini boards. From Librae.
|
||
|
||
* Atmel AT91 SAMA5D3x
|
||
|
||
- Added support for the SAMA5 DMAC controllers.
|
||
- DMA-capable drivers for the SAMA5 SPI peripherals.
|
||
- DMA-capable HSCMCI 0/1/2 drivers.
|
||
- Support for PIO interrupts
|
||
- Utilities for intelligent conversions between physical and virtual
|
||
addresses.
|
||
- Added USB host controller drivers for both the OHCI (low- and full-
|
||
speed) peripheral and the ECHI (high-speed) peripheral.
|
||
- Added USB device controller for the SAMA5 UDPHS peripheral (full-
|
||
and high-speed).
|
||
- Added a Two Wire (TWI) driver. This is a variant of I2C.
|
||
|
||
* Atmel AT91 SAMA5D3x-EK Development Boards
|
||
|
||
- Now supports onboard SDRAM. Modified heap initialization logic
|
||
to include SDRAM if configured.
|
||
- Integrated a FAT file system on the on-board SPI-based AT25 serial
|
||
FLASH
|
||
- Integrated HSMCI0 and HSMCI1 support for the microSD and full file
|
||
SD card slots. Includes PIO interrupts for card detection events.
|
||
- Integrated USB OHCI and ECHI host and high-speed peripheral support.
|
||
File system on AT25 now exported via Mass Storage Class. Includes
|
||
PIO VBUS controls.
|
||
- Integrated the TWI driver and the I2C tool. Added support for an
|
||
external AT24 serial EEPROM.
|
||
|
||
* Applications:
|
||
|
||
- apps/examples/cc3000. Initial support for the TI CC3000 network
|
||
module on the Freescale Freedom-KL25Z board from Alan Carvalho de
|
||
Assis. Includes the test to verify the CC3000.
|
||
- apps/examples/usbmsc: apps/examples/usbstorage renamed usbmsc for
|
||
consistency. Change submitted by CCTSAO.
|
||
- apps/system/usbmonitor: The USB monitor has been extended so that
|
||
it can be used with USB device or host trace data.
|
||
|
||
Efforts In Progress. The following are features that are partially
|
||
implemented but present in this release. They are not likely to be
|
||
completed soon.
|
||
|
||
* CC3000 Networking
|
||
|
||
- CC3000 Networking. Initial support for the TI CC3000 network
|
||
module on the Freescale Freedom-KL25Z board from Alan Carvalho
|
||
de Assis. This is still a work in progress.
|
||
|
||
* kconfig-fronted Configuration:
|
||
|
||
- Conversion of old configurations to use the kconfig-frontends
|
||
tool is an ongoing effort that will continue for some time.
|
||
At this time, only 46% of the configurations have been converted
|
||
to use the kconfig-frontends tools.
|
||
|
||
Bugfixes (see the ChangeLog for details). Some of these are very important:
|
||
|
||
* File Systems:
|
||
|
||
- ROMFS: Fix an error where long (>15) file names were read
|
||
incorrectly from a ROMFS file system. From Mike Smith
|
||
- NXFFS: Clean up some compiler warnings.
|
||
|
||
* Common Drivers
|
||
|
||
- MMC/SD driver: Correction for a bad return value when multiple
|
||
block SDIO transfers are suppressed. By Andrew Tridgell.
|
||
- USB HID keyboard and mass storage host-side class drivers: Fix some
|
||
compilation errors and warnings when pre-allocated data structures
|
||
are used.
|
||
- USB device-side class drivers: Fix some compilations errors when
|
||
DUALSPEED (i.e., full- and high-sped) support is enabled.
|
||
- CDC/ACM and PL2303: Don't use max packetsize assigned to the endpoint
|
||
when allocating request buffers; The default value of the endpoint
|
||
max packetsize may be incorrect because the endpoint has not yet
|
||
been configured. Really only an issue for high-speed endpoints.
|
||
- USB Host Mast Storage Class: Fixed a problem that was causing some
|
||
devices to fail to initialize: If device is returning fatal transfer
|
||
errors while attempting to initialize, don't bother with the startup
|
||
retries; abort immediately so that the device will be reset and we
|
||
can try again with a better ready device.
|
||
- USB Host Mast Storage Class: Correct a reference counting error:
|
||
When an MSC device transfer fails while waiting for UnitTestReady,
|
||
the reference count on the class was not being decremented. The end
|
||
result is a memory leak as can be seen by the USB device numbers
|
||
incrementing: sda, sdb, sdc, ...
|
||
- USB Device CDC/ACM: Fix backward conditional compilation in the
|
||
CDC/ACM driver with regard to remote wakeup and self-powered
|
||
capabilities. From the PX4 team via Lorenz Meier,
|
||
|
||
* Networking / Network Drivers
|
||
|
||
- ARP IP harvesting: Correct backward condition in netmask task.
|
||
From Max Holtzberg.
|
||
- Network connection monitor: Fixes a race condition where a loss of
|
||
connection may not be detected when the connection is lost before it
|
||
has been accepted (from Max Holtzberg).
|
||
- TCP/IP Backlog: Fix a critical bug in the TCP/IP backlog
|
||
initialization: Only the first backlog buffer was getting added to
|
||
the free list. From Max Holtzberg.
|
||
- ENC28J60: Fixes and improvements back-ported from the ENCX24J600
|
||
to the ENC28J60 by Max Holtzberg.
|
||
|
||
* STM32 Drivers:
|
||
|
||
- STM32 I2C fixes for the STM32 F3 family from John Wharington.
|
||
- STM32 I2C Correct an error that crept into the STM32 F1 I2C
|
||
driver with some recent changes. From Librae
|
||
- STM32 F4: Added some missing CONFIG_SERIAL_TERMIOS support; Fixed
|
||
some STM32 F4 Timer 8 pin configurations. From CCTSAO.
|
||
- STM32 SDIO: If CONFIG_SDIO_BLOCKSETUP defined, OS would crash. Now
|
||
Generate an error if CONFIG_SDIO_BLOCKSETUP is defined; that
|
||
option is not yet supported by the STM32 SDIO driver. From CCTSAO
|
||
- STM32 I2C Timers: Some CCER bit settings changed. Submitted by
|
||
CCCTSAO.
|
||
- STM32 CAN: Fix access to CAN filter registers. From the PX4 team
|
||
via Lorenz Meier.
|
||
- STM32 Kconfig: Fix STM32 UART7/8 Kconfig names and UART DMA. From
|
||
the PX4 team via Lorenz Meier.
|
||
|
||
* LPC17xx Drivers
|
||
|
||
- Fix #endif with missing #if in USB host header file. Reported
|
||
by Andrew Bradford,
|
||
|
||
* SAM3/4 Boards:
|
||
|
||
- Corrected DMA-related problems: Bad register definitions, parameters
|
||
reversed in a function call.
|
||
- Correct a race condition in the HSMCI driver when an interrupt
|
||
occurs before the wait for the interrupt begins.
|
||
- Peripheral clock setup: Correct a typo in a register name.
|
||
|
||
* Atmel AT91 SAMA5D3
|
||
|
||
- Order of some operations changed in boot-up logic to defer
|
||
enabling of caching of memory regions until SDRAM is initialized.
|
||
- Correct handling of spurious interrupts.
|
||
|
||
* Freescale KL25Z Drivers
|
||
|
||
- KL25Z SPI: Correct typo in name of a function. From Alan Carvalho
|
||
de Assis.
|
||
|
||
* Applications:
|
||
|
||
- apps/examples/composite: Fix a typo that can cause a configuration
|
||
error. From CCTSAO.
|
||
- apps/examples/pwm: Clean-up some configuration confusion.
|
||
- apps/netutils/dhcpd/dhcpd.c: Fixed calculation of the next lease
|
||
address. From Paolo Messina.
|
||
- apps/examples/usbmsc: Don't try to control USB trace if we are
|
||
an NSH built-in task. In that case our attempts are inadequate
|
||
and only interfere with with other logic that is attempting to
|
||
to do the same thing (in NSH or in the USB monitor).
|
||
- apps/examples/usbmsc: IMPORTANT bug fix: Change how the msconn
|
||
works. Because of recent changes the msconn command was hanging.
|
||
This was because the USB MSC start-up logic creates a pthread;
|
||
Now waitpid() will wait until all members of the task group
|
||
exit. So NSH was hanging in waitpid when msconn started even
|
||
though msconn returned. The USB MSC logic really should not use
|
||
a pthread, but we are stuck with that for now. The work-around
|
||
is the msconn now daemonizes itself so that it so that the pthread
|
||
is created in a different task group.
|
||
- apps/nshlib: Fix NSH listing output for the case of a single file.
|
||
From the PX4 team; provided by Lorenz Meier.
|
||
|
||
NuttX-6.31
|
||
----------
|
||
|
||
The 98th release of NuttX, Version 6.31, was made on October 28, 2013,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.31.tar.gz and
|
||
apps-6.31.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* General:
|
||
|
||
- Standardized stack checking logic so the interfaces can be used
|
||
by common stack monitoring logic.
|
||
|
||
* Audio Subsystem and Audio Drivers:
|
||
|
||
- Ken Pettit has finally released his long awaited audio subsystem.
|
||
This is a generic audio subsystem that is appropriate for the
|
||
deeply embedded MCU. Current testing has, however, been focused
|
||
on the VS1053 CODEC chip.
|
||
- Ken Pettit's VS1053 audio CODEC driver is now functional.
|
||
|
||
* Networking / Network Drivers
|
||
|
||
- Add the prefix ETH0 to all PHY configuration selections. This
|
||
will allow us to support to Ethernet MAC drivers with two different
|
||
PHYs (identified with ETH0 and ETH1). Enabled with CONFIG_NETDEV_MULTINIC.
|
||
- Add MII/RMII PHY definitions for the Micrel KSZ8051 PHY.
|
||
- Add GMII/GRMII PHY definitions for the Micrel KSZ9021/31 PHY.
|
||
- New network-optimized, higher-performance sendfile() implementation
|
||
from Max Holtzberg.
|
||
- Added a simple routing table. This table is currenly only used (1)
|
||
when we need to look-up an Ethernet device based on an IP address,
|
||
and (2) in the ARP logic when we need to request the MAC address of
|
||
the router, vs the MAC address of the peer.
|
||
- Make net_close() nonblocking and free unestablished connections if
|
||
no free connections available. From Max Holtzberg.
|
||
- Changed the meaning of the uip_*input functions. They now return
|
||
success when a packet is dropped; This is needed for the ENCX24J600
|
||
driver that must make a decision to return the packet or not: It
|
||
should not retry dropped packets. From Max Holtzberg.
|
||
- David Sidrane has completed integration of the CC3000 networking.
|
||
This is much more than a network driver: It is a complete
|
||
replacement for the NuttX networking with off-chip networking support
|
||
in the CC3000.
|
||
- Numerous enhancements to the ENCX24J600 driver from Max Holtberg.
|
||
|
||
* Other Common Drivers:
|
||
|
||
- The SST25 serial FLASH MTD driver now includes support for the
|
||
SST25VF016B. From David Sidrane.
|
||
- Add a preflight method to the SDIO interface to support the STM32
|
||
DMA usage model. From Mike Smith.
|
||
- Enhanced the MMC/SD SDIO driver to perform DMA preflight operations
|
||
and fail DMA read/write requests that fail preflighting. From Mike
|
||
Smith.
|
||
- Add an ioctl command that can be used to trigger ADC/DAC conversion
|
||
under application control.
|
||
|
||
* File Systems:
|
||
|
||
- Enhanced the FAT32 filesystem code to understand DMA preflight
|
||
failures, and to use the file sector buffer as a bounce buffer when
|
||
a user-supplied buffer is not suitable for DMA. From Mike Smith.
|
||
|
||
* Atmel AT91 SAMA5D3x
|
||
|
||
- Add support so that subsets of the total DRAM (and other external
|
||
memory) can be added to the heap, leaving other memory reserved for
|
||
other purposes (like the LCDC framebuffers).
|
||
|
||
* Atmel AT91 SAMA5D3x Drivers:
|
||
|
||
- Use more descriptive task names when starting the EHCI and OHCI
|
||
monitor tasks.
|
||
- Added a 10/100Base-T Ethernet (EMAC) driver.
|
||
- Added a 1000Base-T Ethernet (GMAC) driver.
|
||
- Added a Real Time Clock (RTC) driver and integrated with the NuttX
|
||
system time logic.
|
||
- Added support for /dev/random using the SAMA5D3x True Random Number
|
||
Generator (TRNG).
|
||
- Added a Watchdog Timer (WDT) driver.
|
||
- Added a Timer/Counter (TC) library with interface that make be used
|
||
by other drivers that need timer support.
|
||
- Added an ADC driver that can collect multiple samples using the
|
||
sequencer, can be trigger by a timer/counter, and supports DMA data
|
||
transfers.
|
||
- Added a touchscreen driver based on the special features of the
|
||
SAMA5D3 ADC peripheral.
|
||
- Added an LCD controller (LCDC) frame buffer driver.
|
||
- Added a CAN driver. However, testing has been delayed because of
|
||
cabling issues.
|
||
- Basic header file support is available for the Image Sensor
|
||
Interface (ISI) camera interface. Work on the camera driver is
|
||
underway and is expected in the next release.
|
||
|
||
* Atmel AT91 SAMA5D3x-EK Development Boards
|
||
|
||
- Add OS test support for the FPU test.
|
||
- Enable the task name feature board configuration sto provide
|
||
prettier ps command output.
|
||
- Added NX and NxWM configurations to verify the LCD and touchscreen.
|
||
There are still some outstanding issues with the NxWM configuration
|
||
as of this release.
|
||
- The TRNG and /dev/random are now enabled by default in the demo
|
||
configuration.
|
||
|
||
* Atmel AT91 SAM3/4 Boards:
|
||
|
||
- Add configuration to select revision 3 of the Arduino Due which has
|
||
some small but important differences. Suggested by gdi@embedders.org.
|
||
|
||
* STMicro STM32:
|
||
|
||
- Add support for the STM32F207ZE chip. From Martin Lederhilger.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- Add configuration for the Spark Core. The initial check-in is
|
||
basically the Maple Mini board and subsequent development by David
|
||
Sidrane is his special Spark emulation hardware. The configuration
|
||
should be very mature when actual Spark hardware is available.
|
||
- Support for the Olimex STM32 P207 board added by Martin Lederhilger.
|
||
- Configuration for the Mikroe STM32F4 board configuration updated for
|
||
audio support by Ken Pettit.
|
||
|
||
* NXP LPC17xx Boards:
|
||
|
||
- zkit-arm-1769: LED1 is now user controllable after booting. From
|
||
Rashid Fatah.
|
||
|
||
* Kinetis KL Drivers:
|
||
|
||
- PIT and TPM register definitions header files for the from Alan
|
||
Carvalho de Assis.
|
||
- Added low-level getc() function for operation with no file system.
|
||
The KL25Z can now support NSH in a very minimal system that does
|
||
not even have a file system.
|
||
|
||
* Kinetis KL Boards
|
||
|
||
- A new configuration called minnsh was added is an experiement to
|
||
see how small we can get the NuttX footprint and still support NSH.
|
||
From Alan Carvalho de Assis..
|
||
|
||
* TI Calypso Phones:
|
||
|
||
- Basic board support for the Motorola C139 (Compal E86) phone. From
|
||
Craig Comstock.
|
||
|
||
* Applications:
|
||
|
||
- Moved several useful examples from apps/examples to apps/system.
|
||
This includes USB MSC, USB CDC/ACM, and USB Composite.
|
||
- New addroute and delroute commands added to NSH in order to manage
|
||
the network routing table.
|
||
- Numerous enhancements and updates to the CC3000 example from David
|
||
Sidrane.
|
||
- Add a new stack monitor daemon that can be used to constantly
|
||
monitor stack usage by all threads.
|
||
- Numerous changes to get NSH working with no file system. Basically
|
||
this suppresses I/O redirection and replaces file I/O with calls to
|
||
low-level console read/write functions. Suggested by Alan Carvalho
|
||
de Assis.
|
||
- apps/system/nxplayer: A new, command-line media player called
|
||
'nxplayer' from Ken Pettit.
|
||
- apps/examples/random: Add a simple test that dumps values from
|
||
/dev/random.
|
||
- apps/examples/adc: Add support so that a ADC driven by software
|
||
triggering can be tested.
|
||
|
||
* Build System:
|
||
|
||
- The MKDEP tools now support a new argument that identifies the
|
||
object file path.
|
||
|
||
Efforts In Progress. The following are features that are partially
|
||
implemented but present in this release. They are not likely to be
|
||
completed soon.
|
||
|
||
* kconfig-fronted Configuration:
|
||
|
||
- Conversion of old configurations to use the kconfig-frontends
|
||
tool is an ongoing effort that will continue for some time.
|
||
At this time, only 48% of the configurations have been converted
|
||
to use the kconfig-frontends tools.
|
||
|
||
Bugfixes (see the ChangeLog for details). Some of these are very important:
|
||
|
||
* Initialzation and Scheduling:
|
||
|
||
- IDLE thread initialization logic should not call group_setupidlefiles()
|
||
if there are no file descriptors (and, hence, no file system).
|
||
- Fix some cornercase error handling logic: If sched_releasetcb() is
|
||
called as part of a failed pthread startup before the flags field in
|
||
the TCB has been initialized, then a crash occurs. Pointed out by
|
||
David Sidrane.
|
||
|
||
* Networking / Network Drivers:
|
||
|
||
- Look up of a device using subnet will fail if the packet is being
|
||
sent out of our subnet (via a router). The fallback here is just to
|
||
use the only device ("eth0") if the subnet lookup fails (this logic
|
||
was extended to handle multiple Ethernet devices by adding a simple
|
||
routing table).
|
||
- Fix some backward conditional logic in send() that enabled the
|
||
check if the ARP address is in the ARP table. From Max Holtzberg.
|
||
- Notify the socket layer from the network monitor if a connection is
|
||
lost before the monitoring callback has been registered. From Max
|
||
Holtzberg.
|
||
- send(): Reset the send timeout when the data is ACKed, not when the
|
||
data is sent. Remove conditions on checking for timeout. From Max
|
||
Holtzberg.
|
||
- Correct how the TCP/IP initial minimum MSS is calculated. Max
|
||
Holtzberg.
|
||
- TCP state machine: Move tcp connection into SYN_RCVD state after
|
||
aception instead of bypassing and moving directly into ESTABLISHED.
|
||
From Max Holtzberg.
|
||
- Numerous fixes to the ENCX24J600 driver from Max Holtberg.
|
||
|
||
* USB Drivers:
|
||
|
||
- Change naming of SELFPOWERED and REMOTEWAKEUP to avoid name
|
||
collisions. Prepend the name of the driver (for example
|
||
CDCACM_SELFPOWERED).
|
||
- CDC/ACM class driver: Change the interval for the interrupt
|
||
endpoint from 0xff (invalid) to 10. This is not a critical
|
||
change but will avoid a complaint from the Linux driver when
|
||
it overrides the 0xff value.
|
||
|
||
* ARM Cortex-A5:
|
||
|
||
- Fix an error in data cache clean and invalidate functions: Fix of
|
||
addresses to cache line boundaries.
|
||
|
||
* Atmel AT91 SAMA5D3x Drivers:
|
||
|
||
- Correct some inconsistencies in the way that USB configuration
|
||
settings are used. This caused compilation errors in SAMA5 OHCI
|
||
when USB debug was ON but USB host tracing was off.
|
||
- When 480MHz UPLL is used to drive OHCI, it should have a divider
|
||
of 10. However, that does not work. A divider of 5 does. Why?.
|
||
- OHCI HCD: Fix a place where DMA-related data needed to be flushed
|
||
to data cache; Fix another where a virtual address was being used
|
||
in a register where a physical address was required.
|
||
- HSMCI Driver: TX DMA disabled. It is just not reliable. No idea
|
||
why. RX DMA is still used.
|
||
- STM32F103C pinmapping corrections from David Sidrane.
|
||
|
||
* Atmel SAMA5D3x-EK Board
|
||
|
||
- Increase the number of pre-allocated watchdog timers. The default
|
||
number of 4 was easily being exhausted in the more complex
|
||
configurations.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32 F4 DMA definitions: Typo fixes for UART7 and UART8 DMA
|
||
configs. From Mike Smith.
|
||
- DMA priority configuration corrections from Mike Smith.
|
||
- Changes to the stm32_dmacapable API. In order to correctly
|
||
verify that a buffer can be transferred, the transfer count and
|
||
the CCR value are required. Implemented stm32_dmacapable for
|
||
stm32f1xx devices. Enhanced stm32_dmacapable for stm32f2xx and
|
||
stm32f4xx devices to check for additional conditions that will cause
|
||
DMA to fail or lose data.
|
||
- STM32 F1 DMA fix from David Sidrane: The DMA_CNDTRx register
|
||
cannot be modified if the DMA channel is disabled.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- Fix compilation errors from bad bit definitions in ADC and PWM
|
||
register. From Martin Lederhilger.
|
||
- DMA-related fixes to the SPI driver from Ken Pettit.
|
||
|
||
* NXP LPC17xx Drivers:
|
||
|
||
- Remove undefined spi_select() prototype. This was causing compile
|
||
time warnings.
|
||
|
||
* NXP LPC17xx Boards:
|
||
|
||
- zkit-arm-1768: MMC/SD is on SPI, not SSP0. From Rashid Fatah.
|
||
|
||
* C Library
|
||
|
||
- scanf() fixes from kfrolov: 1) sscanf() function hangs in the
|
||
following example: sscanf("2", "%u,%u,%u,%u", ...), 2) sscanf()
|
||
returns incorrect number of parsed numbers if some arguments
|
||
can't be parsed: sscanf("=2", "%u,%u,%u,%u",...)==1 instead of
|
||
0, and 3) using of char* instead of const char* in vsscanf
|
||
function leads to warnings from GCC.
|
||
|
||
* Build System
|
||
|
||
- Dependency generation generation was broken for directories that
|
||
keep objects in a sub-directory. The MKDEP tools now support a new
|
||
argument that identifies the object file path.
|
||
- tools/define.sh: 'cut' no longer works as it once did. Script
|
||
adapted to observed behavior.
|
||
|
||
* Applications:
|
||
|
||
- Remove a warning from the NSH library when DHCP is not enabled.
|
||
- Default NSH IP address should be 0x0a000001 (10.0.0.1), not
|
||
0xa0000001 (160.0.0.1). Ditto for the gateway.
|
||
- Add some missing options to the OS test Kconfig file
|
||
- Fix some bad conditional compilation in the USB monitor.
|
||
- Fix default I2C frequency used by the I2C tool: 400KHz instead
|
||
of 4MHz. Suggested by Max Kriegleder.
|
||
- Increase stack size for the system/info command. Ken Petit
|
||
reports that this simple command can exceed its 768 stack size
|
||
under certain conditions. The size is marginal and has been
|
||
increased to 1024 by default but is also now configurable.
|
||
- apps/Makefile: Needs to include external/Make.defs if we want
|
||
allow external applications to participate in the NuttX
|
||
configuration. Suggested by gdi@embedders.org.
|
||
- apps/netutils/telnetd: Missing argument to debug statement
|
||
can cause crashes in certain error conditions. From David
|
||
Sidrane.
|
||
- apps/examples/can: Correct an error in a debug statement. From
|
||
Martin Lederhilger.
|
||
|
||
NuttX-6.32
|
||
----------
|
||
|
||
The 99th release of NuttX, Version 6.32, was made on December 7, 2013,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.32.tar.gz and
|
||
apps-6.32.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* General:
|
||
|
||
- Extension and standardization of stack debug logic. Now includes
|
||
coloration of the IDLE and interrupt stacks as well as the heap.
|
||
Suggested by David Sidrane.
|
||
|
||
* Audio Subsystem and Audio Drivers:
|
||
|
||
- I2S interface definition. Integrates with audio sub-system.
|
||
- VS1053 worker thread stack size is now configurable and assigned a
|
||
name via pthread_setname_np(). From Ken Pettit.
|
||
|
||
* Networking / Network Drivers
|
||
|
||
- Updates and adaptations to support for TI CC3000 wireless module
|
||
from David Sidrane. These updates include multi-threading support
|
||
and interface and header file changes to integrate more seamlessly
|
||
with NuttX applications.
|
||
|
||
* File Systems:
|
||
|
||
- procfs: Add support for a tiny procfs file system. The initial
|
||
offering is little more that a proof of concept but may be developed
|
||
further in subsequent releases.
|
||
- NXFFS: An initial attempt was made to integrate NXFFS with the NAND
|
||
MTD driver. Changes were made to handle bad blocks. However, I
|
||
later realized that NXFFS cannot handle NAND because the way that
|
||
is re-writes blocks is incompatible with the NAND ECC handling.
|
||
These changes were backed-out so as not to introduce turmoil, but
|
||
can be re-enabled if needed via configuration option.
|
||
- NXFFS: Make the start up scan of the media a configuration option.
|
||
It just takes to long and is not really necessary! Those rare cases
|
||
where the scan was helpful can be fixed using MDIOC_BULKERASE IOCTL
|
||
command.
|
||
|
||
* General Drivers:
|
||
|
||
- I2S: A simple character driver was added to support I2S accesses.
|
||
This driver in its current state is intended only to support I2C
|
||
testing and would not be appropriate to used for any real driver
|
||
application.
|
||
|
||
* MTD Drivers
|
||
|
||
- Add a container for an MTD device that can be used to provide a
|
||
simple, lightweight interface to configuration data storage that
|
||
resides on some storage media that is wrapped as an MTD device.
|
||
From Ken Pettit.
|
||
- New interface definition for lower half NAND drivers.
|
||
- MTD Nand: Add MTD NAND driver that will support ONFI devices,
|
||
non-ONFI devices (via table lookup), bad block checking, software
|
||
ECC (Hamming), and will interact with the lower-half, hardware-
|
||
specific, NAND driver. Based on BSD-compatible Atmel sample code.
|
||
- MTD geometry structure is now packed so that it can support larger
|
||
erase block sizes needed by NAND without increasing the size of
|
||
the geometry structure.
|
||
- SST25: Add another SST25 SerialFlash driver, sst25xx.c. This one
|
||
differs from sst25.c in that it supports larger SST25 parts: In
|
||
the larger parts support page write instead of byte/word writes
|
||
like the smaller parts. From Ken Pettit.
|
||
|
||
* USB Drivers
|
||
|
||
- STM32 F1 USB Device: Add support for decoded USB trace strings.
|
||
From David Sidrane.
|
||
|
||
* ARM
|
||
|
||
- Add more ARM9 cache management functions to flush and invalidate
|
||
D-Cache for DMA support.
|
||
|
||
* Atmel AT91 SAMA5D3x Drivers:
|
||
|
||
- Many new drivers including CAN, PWM, SSC/I2S
|
||
- PCK: Add support for programmable clock outputs.
|
||
- NAND: Driver with hardware ECC and DMA support
|
||
|
||
* Atmel AT91 SAMA5D3x Boards:
|
||
|
||
- SAMA5D3x-EK: Add support for the apps/examples/i2schar test.
|
||
- SAMA5D3x-EK: Provides board-specific memory controller initialize
|
||
for NAND flash.
|
||
- SAMA5D3x-EK: Add support for "auto-mounting" NAND MTD block driver
|
||
or NXFFS file system.
|
||
|
||
* Atmel AT91 SAM3/4 Boards:
|
||
|
||
- Basic support for the Atmel SAM4E family. From Mitko.
|
||
|
||
* STMicro STM32:
|
||
|
||
- Added support for the STM32F429. From Ken Pettit.
|
||
- Added support for GPIOK and GPIOJ. From Ken Pettit.
|
||
|
||
* STMicro STM32 Drivers
|
||
|
||
- STM32 F4 OTG FS/HS Device: OTG FS device and host drivers extended
|
||
so that they can support either the OTG FS peripheral or the OTG HS
|
||
peripheral (in FS mode). This was done as a quick way to get USB
|
||
support on the STM32F429 which has only OTG HS. From Ken Pettit.
|
||
- Added header files and driver framework for the STM32F429 LTDC
|
||
framebuffer driver. From Ken Pettit.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- Support for the Spark board was completely by Davide Sidrane. The
|
||
Spark configuration includes integrated CC3000 wireless support, FAT
|
||
file system on the SerialFlash and a composite device that can be
|
||
used both to export the FAT file system and to provide a serial
|
||
interface.
|
||
- The Mikroe-stm32f4 now uses /dev/config for configuration data
|
||
storage. From Ken Pettit.
|
||
- Added support for the STM32F429I-Discovery board from Ken Pettit.
|
||
- Added board support for the ViewTool STM32F103/F107 board with the
|
||
STM32F107VCT6 installed.
|
||
|
||
* NXP LPC31xx Drivers:
|
||
|
||
- USB ECHI HCD: Add a driver for the low-/full-/high-speed variant
|
||
of the EHCI host controller.
|
||
|
||
* NXP LPC31xx Boards:
|
||
|
||
- Board-specific USB host support for the Emedded Artists EA3131 board.
|
||
(Missing PCA9532 controls).
|
||
- Add support for the Olimex LPC-H3131 board. Including USB host
|
||
support (which does not depend on the PCA8532 interface).
|
||
|
||
* Kinetis KL Drivers:
|
||
|
||
- PWM driver for the Freescale Kinetis KL family from Alan Carvalho
|
||
de Assis.
|
||
|
||
* Kinetis KL Boards
|
||
|
||
- Freedom-KL25Z: Add PWM support from Alan Carvalho de Assis.
|
||
|
||
* TI Stellaris LM3S
|
||
|
||
- Don't initialize .data in start-up logic if not running from FLASH.
|
||
|
||
* Applications:
|
||
|
||
- apps/platform: A new home for platform-specific application code.
|
||
- Define a common interface that can be used to manage platform-
|
||
specific configuration data. From Ken Pettit.
|
||
- apps/examples/configdata: A unit test for the MTD configuration
|
||
data driver from Ken Pettit.
|
||
- Aapps/platform/mikroe-stm32f4: dd platform-specific storage of
|
||
configuration data for the Mikroe-stm32f4. From Ken Pettit.
|
||
- apps/examples/cc3000: Fine tuning of memory usage from David Sidrane.
|
||
- apps/system/nxplayer: Play thread stack size is now configurable.
|
||
All NxPlayer threads now have names assigned via pthread_setname_np().
|
||
From Ken Pettit.
|
||
- apps/examples/i2schar: The I2S test based on the I2S character
|
||
driver.
|
||
- apps/examples/hidkbd/hidkbd_main.c: Now calls a function named
|
||
arch_usbhost_initialize() that must be provided by the platform-
|
||
specific code.
|
||
- NSH:
|
||
|
||
- hexdump: Add skip= and count= options to the hexdump command. From Ken Pettit.
|
||
- Allow USB trace without a USB console. From David Sidrane.
|
||
- Mount command updates from Ken Pettit.
|
||
- Add an option to the mkfatfs command to specify FAT12, FAT16, or FAT32.
|
||
|
||
* Tools
|
||
|
||
- tools/mkctags.sh: A script for creating ctags from Ken Pettit.
|
||
|
||
Efforts In Progress. The following are features that are partially
|
||
implemented but present in this release. They are not likely to be
|
||
completed soon.
|
||
|
||
* kconfig-fronted Configuration:
|
||
|
||
- Conversion of old configurations to use the kconfig-frontends
|
||
tool is an ongoing effort that will continue for some time.
|
||
At this time, only 50% of the configurations have been converted
|
||
to use the kconfig-frontends tools.
|
||
|
||
Bugfixes (see the ChangeLog for details). Some of these are very important:
|
||
|
||
* File Systems
|
||
|
||
- FAT: In one error return case, the error return value was not being
|
||
set, making the failure look like success. From David Sidrane.
|
||
- mount: SMART FS must be included in the conditional compilation for
|
||
the set of file systems that require block drivers. From Daniel
|
||
Palmer.
|
||
- SmartFS: Fixed a minor bug with SMART partition number reporting
|
||
that would only be seen if both partition support and multi-root
|
||
directory support are enabled at the same time. From Ken Pettit.
|
||
- Deadlock: The inode semaphore must be re-entrant. Here is the re-
|
||
entrant path that I found: (1) USB host connects to FLASH drive and
|
||
creates /dev/sda, (2) /dev/sda is mounted, (3) FLASH drive is
|
||
removed but /dev/sda is not destroyed because there is still a
|
||
reference on the device because of the mount, (4) umount() is
|
||
called, taking the inode semaphore, now the driver tries to destroy
|
||
the block driver by calling unregister_blockdriver(). But (5)
|
||
unregister_blockdriver() also takes the inode semaphore causing a
|
||
deadlock if the inode semaphore is not re-entrant.
|
||
- FAT: Fix a typo in the FAT16 formatting logic. Was this ever able to
|
||
format a FAT16 volume?
|
||
|
||
* MTD Drivers
|
||
|
||
- MTD Partitions: Fix erase block vs page block confusion. From Ken
|
||
Pettit
|
||
- SST25 Serial Flash: Improved write performance by fixing a bug that
|
||
prevented operation in the faster write mode. From David Sidrane.
|
||
|
||
* USB Drivers:
|
||
|
||
- USB MSC Device: pthread_join() does not work if called from a
|
||
different task group than the pthread. This is correct behavior,
|
||
but still a problem. The correct solution would be configure the
|
||
USB MSC thread to a task, however, this workaround from David
|
||
Sidrane plugs the hole for now.
|
||
- USB CDC/ACM, USB MSC, and Composite Device Classes: Un-initialization
|
||
logic caused re-use of a stale pointer. Changed to a two pass
|
||
un-initialization for the case of the composite driver: Memory
|
||
resources are not freed until the second un-initialization pass.
|
||
From David Sidrane.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 F1 USB Device: Fix some errors that cause crashes when the USB
|
||
was disconnected. From David Sidrane.
|
||
- STM32 F1 USB Device: Correct EP0 state handling logic when buffers
|
||
larger than the EP0 packet size are sent. From David Sidrane.
|
||
- STM32 F1 USB Device: The long outstanding bug involving the handling
|
||
of OUT SETUP commands has been fixed in the STM32 F1 USB device
|
||
driver by David Sidrane.
|
||
- Kconfig: Add missing setup of CAN TSEG1 and TSEG2 values. From
|
||
Martin Lederhilger.
|
||
|
||
* Tools
|
||
|
||
- tools/mkconfig.c: SMART FS must be included in the conditional
|
||
compilation for the set of writable file systems. Noted by Daniel
|
||
Palmer.
|
||
|
||
* Applications:
|
||
|
||
- apps/platform/Makefile: Was not dealing with the bin sub-directory
|
||
correctly.
|
||
- apps/system/composite/composite_main.c: The wrong handle was getting
|
||
nullified. From David Sidrane.
|
||
|
||
NuttX-6.33
|
||
----------
|
||
|
||
The 100th release of NuttX, Version 6.33, was made on January 30, 2014,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-6.33.tar.gz and
|
||
apps-6.33.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 Interfaces
|
||
|
||
- nanosleep() added. sleep() and usleep() are no longer core OS
|
||
interfaces. These have been moved into the library and re-implemented
|
||
as simple wrappers around nanosleep().
|
||
|
||
* File Systems
|
||
|
||
- procfs restructured by Ken Pettit. Added files for MTD status.
|
||
- procfs extended to show uptime and task group status.
|
||
- procfs now shows stack information.
|
||
|
||
* Networking
|
||
|
||
- Add support for the SO_LINGER socket option. Extended from logic
|
||
provided by Jason Jiang. Enabled with CONFIG_NET_SOLINGER.
|
||
- TCP write buffering support added. From Jason Jiang.
|
||
- Changes from Max Holtzberg to improve how network status is
|
||
reported. New controls to manage carrier detect.
|
||
|
||
* Graphics
|
||
|
||
- Massive reshuffling of files with little or no logic changes. This
|
||
reshuffling was necessary to build graphics applications with the
|
||
kernel builds where the graphics application lie in user space and
|
||
the core graphic server likes in kernel space. Moved much logic out
|
||
of nuttx/graphics to a new user library, libnx.
|
||
|
||
* Cortex-A5/A8/A9
|
||
|
||
- Existing Cortex-A5 support updated to include Cortex-A8/9.
|
||
- Add the syscall.h header file needed for the Cortex-A architecture.
|
||
- Start-up logic now supports execution from FLASH with .data and
|
||
.bss in SDRAM. This was not possible prior to this because .bss
|
||
and .data were initialized before SDRAM was configured.
|
||
|
||
* Allwinner A10:
|
||
|
||
- Basic support for the Allwinner A10 (Cortex-A8) is in place.
|
||
|
||
* Allwinner A10 boards
|
||
|
||
- Support for the pcDuino v1 board has been added. This support
|
||
is not yet very mature and still lacks many drivers. It is a
|
||
good starting point, however, if anyone wants to develop A10
|
||
support.
|
||
|
||
* Atmel SAMA5D3X
|
||
|
||
- Start-up logic now supports execution from FLASH with .data and
|
||
.bss in SDRAM. This was not possible prior to this because .bss
|
||
and .data were initialized before SDRAM was configured.
|
||
|
||
* Atmel SAMA5D3X Boards
|
||
|
||
- Partial logic in place to support the OV2640 camera. Still needs
|
||
quite a bit of additional logic to be useful.
|
||
|
||
* ARMv7-M
|
||
|
||
- Add support for high priority, nested interrupts. This change
|
||
effects not only core ARMv-7M logic, but all ARMv7-M MCU logic:
|
||
LM3S, LM4F, LPC17xx, LPC43xx, SAM3, SAM4, and STM32. See
|
||
http://www.nuttx.org/doku.php?id=wiki:nxinternal:highperfints
|
||
|
||
* STMicro STM32
|
||
|
||
- Add clocking support for STM32F107 USB OTG FS (which does not yet
|
||
work)
|
||
- Single-wire UART support for the F1 series from Thomas Grubler.
|
||
|
||
* STMicro STM32 Boards
|
||
|
||
- The Viewtool board can now be configured to support either the
|
||
STM32F103VCT6 or the STM32F107VCT6.
|
||
- The Viewtool STM32F107VCT6 now supports networking with the
|
||
DP83848C module installed.
|
||
- Add support for Viewtool SSD1289-based LCD on the Viewtool
|
||
STM32F103VCT6 board (untested)
|
||
- Add support for the XPT2046 touchscreen controller on the Viewtool
|
||
LCD module connected to the Viewtool STM32F103 board.
|
||
- Added kernel mode build support for the STM3240G-EVAL board. Added
|
||
a new kernel mode NxWM build configuration
|
||
- C++ static constructor logic from the nuttx/configs/stm3240g-eval/
|
||
directory to the apps/platform/stm3240g-eval/up_cxxinitialize.c
|
||
where is belongs so that it is available in user-space in the kernel
|
||
mode build.
|
||
- Add native Windows build support for the Olimex STM32 P107. From
|
||
Max Holtzberg
|
||
- Support for the STM32VL-Discovery board. Contributed by Alan
|
||
Carvalho de Assis
|
||
- Added a configuration for testing simple configurations on the
|
||
PX4FMU v2.
|
||
|
||
* ZiLOG ZNEO Boards
|
||
|
||
- Add an NSH configuration for the Z16F2800100ZCOG ZNEO board.
|
||
- Added support for the Toyaga 16Z ZNEO board. The 16Z board is
|
||
based on the ZiLOG ZNEOZ16F2811AL20EG part. See
|
||
https://github.com/toyaga/16z for further information
|
||
- Developed a patch to work around a compiler error that is revealed
|
||
when building the NSH configuration.
|
||
|
||
* Architecture-Independent Drivers
|
||
|
||
- OV2640 Camera Driver.
|
||
- Support for the Sharp Memory LCD from Librae.
|
||
|
||
* Library
|
||
|
||
- Pattern matching logic extended to handle set of characters and
|
||
ranges of character values. From Ken Pettit.
|
||
- sleep() and usleep() moved intot the C library. These are not
|
||
longer core OS interfaces; they are simple wrappers for the
|
||
nanosleep().
|
||
- Add an implementation of gets_s().
|
||
- Extend fopen() to include support for C11 exclusive open ("x")
|
||
open mode.
|
||
- Add an implementation of stpcpy()
|
||
- strtol(), strtoll, strtoul(), strtoull(), and strtod() from
|
||
libc/string to libc/stdlib where they belong.
|
||
|
||
* Header Files
|
||
|
||
- Add rsize_t to include/sys/types.h
|
||
- Add the C11 thread.h header file
|
||
|
||
* Configuration/Build System
|
||
|
||
- Top level Makefile now supports qconfig and/or gconfig targets that
|
||
may be used for configuration. These may be used if you build
|
||
kconfig-frontends with support for kconfig-qconf and/or
|
||
kconfig-gconf.
|
||
- Add CONFIG_DEBUG_NOOPT. Now you can independently enable/disable
|
||
debug symbols and optimization
|
||
- File system related header files moved to include/nuttx/fs
|
||
- Video related header files moved to include/nuttx/video
|
||
- Changes for native Windows build: fix creation of a .version file
|
||
if one does not exist. Make sure that the APPDIR environment
|
||
variable is set before configuring. From Max Holtzberg.
|
||
- Board configuration sub-directory can now be specified. The default
|
||
need not be used. This is only useful when CONFIG_ARCH_BOARD_CUSTOM
|
||
is selected and there is no meaningful default sub-directory.
|
||
- Many functions renamed to better conform with the naming standard:
|
||
up_buttoninit() renamed to board_button_initialize(), up_buttons()
|
||
renamed to board_buttons(), up_irqbutton() renamed to
|
||
board_button_irq(), up_ledinit() renamed to board_led_intialize(),
|
||
up_ledon() renamed to board_led_on(), and up_ledoff() renamed to
|
||
board_led_off(). All prototypes removed from board.h header files.
|
||
Now ONLY prototypes in include/nuttx/arch.h.
|
||
|
||
* Applications
|
||
|
||
- NSH: Refactor. Separate NSH command handling and command execution
|
||
from NSH line parsing.
|
||
- NSH: Will now support multiple commands on a command line, each
|
||
separated with a semi-colon.
|
||
- NSH: Add support of commands enclosed in back quotes as command
|
||
arguments.
|
||
- NSH: Can now handle arguments that are concatenations of constant
|
||
strings, command return data, application return data, and
|
||
environment variables.
|
||
- NSH: Add true and false commands.
|
||
- NSH: Add support for while-do-done and until-do-done loops. These
|
||
only work when executing a script file because they depend on the
|
||
ability to seek in the file to implement the looping behaviors.
|
||
Can be conditionally compiled out to reduce footprint.
|
||
- NSH: Loosen up if-then-else-fi syntax to allow a command to be on
|
||
the same line as the then or else tokens like:
|
||
"if true; then echo true; else echo false; fi". More like bash.
|
||
- NSH: Add a break command that can be executed with a loop to
|
||
terminate the loop immediately.
|
||
|
||
- system/inifile: A simple .INI file parser.
|
||
- system/vi: Add support for a tiny, VI work-alike editor. This is
|
||
a minimal full screen editor that works with a terminal emulator
|
||
that using VT100 commands.
|
||
|
||
Efforts In Progress. The following are features that are partially
|
||
implemented but present in this release. They are not likely to be
|
||
completed soon.
|
||
|
||
* kconfig-fronted Configuration:
|
||
|
||
- Conversion of old configurations to use the kconfig-frontends
|
||
tool is an ongoing effort that will continue for some time.
|
||
At this time, only 53% of the configurations have been converted
|
||
to use the kconfig-frontends tools.
|
||
|
||
Bugfixes (see the ChangeLog for details). Some of these are very important:
|
||
|
||
* Core OS
|
||
|
||
- Added missing sem_timedwait() system call.
|
||
|
||
* Networking
|
||
|
||
- Prevent tcp_connect callback from being double freed. From Max
|
||
Holtzberg
|
||
- uiplib: Support new definitions and state passing for network
|
||
device status. From Maz Holtzberg.
|
||
|
||
* File Systems
|
||
|
||
- FAT: (1) A correction to FAT cluster allocation, and (2) Fix to some
|
||
root directory logic that was conditionally done only for FAT 32.
|
||
Apparently this needs to done for all FAT types. Both from Andrew
|
||
"Tridge" Tridgell via Lorenz Meier.
|
||
|
||
* Binary Formats
|
||
|
||
- Fix a small memory leak when attempting to load a program from a file.
|
||
|
||
* Cortex-A8/9
|
||
|
||
- Fix some errors in the cache invalidation logic (only seem to matter
|
||
for Cortex-A8).
|
||
- Add more nop's after enabling the MMU. The cortex-a8 seems to need
|
||
these
|
||
|
||
* Graphics
|
||
|
||
- Fix a typo that caused a compilation error when
|
||
CONFIG_NXCONSOLE_BPP < 8. From Librae
|
||
|
||
* ARMv7-M
|
||
|
||
- Correct alignment of RAM vector table.
|
||
- Interrupt handling: Do not disable and enable the IRQ on each
|
||
entry, (2) this interferes with controlling the IRQ interrupt
|
||
setting from interrupt handlers, and (3) up_disable_irq() does
|
||
not work anyway so that this has never done anything.
|
||
- Fix all implementations of up_disable_irq() for all Cortex-M3 and
|
||
M4 architectures: To enable an interrupt on the Cortex-M3/4 CPU,
|
||
you need to set a bit in the ISER register. To disable the
|
||
interrupt, you need to set a bit in the ICER register. Existing
|
||
logic was trying to disable interrupts by clearing the bit in the
|
||
ISER register. That will not work; writing a '0' to the ISER
|
||
register has no effect. That means that up_disable_irq() was
|
||
doing nothing! It turns out that that is not really important
|
||
because up_disable_irq() is not really used for that purpose. But
|
||
some spurions STM32 ADC interrupts have been reported to me and this
|
||
turned out to be the cause in that case. Thanks to Manuel St<53>hn for
|
||
the tip.
|
||
|
||
* STMicro STM32
|
||
|
||
- Fix configuration and pin definitions that would prevent building
|
||
USB for the connectivity and performance lines.
|
||
- STM32L15xx: Fix a typo in USB pin definitions
|
||
- Fix pin definition names for SPI2 MOSI and MISO. Noted by Brian Webb
|
||
- Various fixes for STM32F103ZE SPI3 pin mapping definitions. From
|
||
Steve Redler IV
|
||
|
||
* STMicro STM32 Boards
|
||
|
||
- Olimex STM32-P107: Failed to build if SPI3 for UEXT is not remapped.
|
||
From Max Holtzberg
|
||
|
||
* x86 Boards
|
||
|
||
- Add a configuration option to select the -m32 compiler option when
|
||
building for a 32-bit target on a native 64-bit compiler. So far,
|
||
only used for the qemu/i486 configuration.
|
||
- Patch from Matt Campbell to fix 'Error: .size expression for idle_stack
|
||
does not evaluate to a constant".
|
||
|
||
* Library
|
||
|
||
- strftime(): Needs null termination on the generated string. From
|
||
Max Holtzberg.
|
||
- Typo in ctype.h macro name: iscntrl(), not iscontrol().
|
||
- If there are no arguments (argc == 1), then getopt() will leave the
|
||
optind variable in an undefined state (2014-1-20).
|
||
- ARMv7-M memcpy(): Assembler changes with the gcc-47 distribution
|
||
from ARM mean that we need to be explicit about branch sizes; one
|
||
or more of the wide branch opcodes results in bad table branching.
|
||
From Mike Smith.
|
||
|
||
* Configuration/Build System
|
||
|
||
- Fixes for some tools/ for Windows build issues from Max Holtzberg.
|
||
- Config.mk: 'cypath' must be called if we are using a Windows native
|
||
toolchain with the Cygwin 'make' to convert paths to proper
|
||
Windows paths. From Richard Cochran.
|
||
- ARM Makefile: Dependency directory list is now computed from the
|
||
VPATH. From Richard Cochran.
|
||
- builtin/Makefile: Fixes for native Windows build from Max Holtzberg.
|
||
- Refactor some configuration dependencies: NSH networking features
|
||
should depend on netutil selections; netutil selections, in turn,
|
||
should depend on networking selections.
|
||
|
||
* Applications
|
||
|
||
- NSH: Modified the df -h logic to eliminate truncating numbers in
|
||
conversion (like 7900 -> 7M). From Ken Pettit.
|
||
|
||
NuttX-7.1
|
||
---------
|
||
|
||
The 101st release of NuttX, Version 7.1, was made on March 15, 2014,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-7.1.tar.gz and
|
||
apps-7.1.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
The previous NuttX version was 6.33. The NuttX minor version number is
|
||
incremented on each release, but the major version number is incremented
|
||
only when an incompatibility with previous versions is included in the
|
||
release. In this case, the legacy, manual configuration is no longer
|
||
supported by the NuttX build system beginning with NuttX 7.1. Only the
|
||
newer configurations generated by the kconfig-frontends tools will generate
|
||
viable NuttX configurations.
|
||
|
||
All board configurations in the NuttX source tree have been converted to
|
||
use the newer configuration, but if you have some older style configurations
|
||
for you board, you will need to convert those configurations to use the
|
||
kconfig-frontends tools before taking any new code from the repository. See
|
||
http://www.nuttx.org/doku.php?id=wiki:howtos:convertconfig for some
|
||
guidelines.
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core OS:
|
||
|
||
- System time logic now includes logic to measure and calculate the
|
||
CPU load percentage (from David Alessio). This CPU load logic
|
||
extended to keep counts on each thread. The per-thread CPU is
|
||
now reported in the procfs under <pid>/loadavg An asynchronous,
|
||
"external" clock may be used to drive the CPU load calculations
|
||
for more accurate measurements when needed.
|
||
|
||
* File Systems:
|
||
|
||
- As mentioned above, the per-thread CPU load information is now
|
||
reported in the procfs under <pid>/loadavg.
|
||
- Many file system interfaces have been extended to operate on the
|
||
top-level NuttX pseudo filesystem. These include rmdir, mkdir,
|
||
rename, and unlink. This capability can be disabled with
|
||
CONFIG_DISABLE_PSEUDOFS_OPERATIONS in order to keep the footprint
|
||
small.
|
||
|
||
* Networking:
|
||
|
||
- Numerous updates and improvements to the CC3000 driver from David
|
||
Sidrane.
|
||
|
||
* Common Drivers:
|
||
|
||
- Defined a mouse interface that is very similar to a touchscreen
|
||
interface, but allows reporting of all mouse buttons. Also, unlike
|
||
touchscreen drivers, mouse drivers need to report positional data
|
||
with no button is pressed so that the mouse position can drive a
|
||
cursor.
|
||
- Added support for a USB HID boot mouse device. Cursor support is
|
||
not integrated and must be provided by the application based upon
|
||
the reported mouse data.
|
||
- Support added for the MIO283QT9A LCD from Toby Duckworth.
|
||
|
||
* Atmel SAMA4E:
|
||
|
||
- Added complete architecture support for the Atmel AT91 SAM4E
|
||
Cortex-M4F parts.
|
||
|
||
* Atmel SAM4E Board Support:
|
||
|
||
- Add board support for the SAM4E-EK board.
|
||
|
||
* Atmel SAM4E Drivers:
|
||
|
||
- Added logic to manage the Cortex-M Cache Control block.
|
||
- Developed and integrated an Ethernet MAC driver for the SAM4E.
|
||
- Backported the SAMA5 SPI driver to the SAM3/4 architecture. The
|
||
SAMA5 version supports both multiple SPI peripherals as needed by the
|
||
SAM3A and SAM3X and also supports DMAC (but not PDC) needed by the
|
||
SAM4E.
|
||
|
||
* Atmel SAM D20:
|
||
|
||
- Added basic architecture support for the Atmel AT91 SAM D20
|
||
Cortex-M0+ parts.
|
||
|
||
* Atmel SAM D20 Board Support:
|
||
|
||
- Added basic support for SAM D2 Xplained Pro board. Currently, the
|
||
NuttShell (NSH) works reliably over a serial port. An SPI driver
|
||
has also been developed. Work with the SAM D20 has been temporarily
|
||
stopped, however, in order to focus on the SAM4E-EK.
|
||
|
||
* TI Tiva TMC4C123G:
|
||
|
||
- Added architecture support for the TI Tiva TM4C123G parts. This was
|
||
merged into the existing support for the LM3S and LM4F families.
|
||
All directory, file, and function references changed from lm to tiva.
|
||
|
||
* TI Tiva TMC4C123G Board Support:
|
||
|
||
- Added basic board support for the TM4C123G-Launchpad. As of this
|
||
release the TM4C123G-Launchpad board support is untested and likely
|
||
incomplete.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- The Mikroe STM32F4 can now support the newer MIO283QT9A LCD. From
|
||
Toby Duckworth.
|
||
- Miscellaneous changes to better support FPU on STM32F429 Discovery
|
||
from David Alessio.
|
||
|
||
* NXP LPC2378 Drivers:
|
||
|
||
- Incorporated I2C and SPI drivers for the LPC23xx from Lizhuoyi.
|
||
|
||
* QEMU i486 Drivers:
|
||
|
||
- New QEMU keyboard and VGA drivers from Lizhuoyi.
|
||
|
||
* Documentation:
|
||
|
||
- Added a coding standards document. See
|
||
http://www.nuttx.org/doku.php?id=documentation:codingstandard
|
||
|
||
* Configuration/Build System:
|
||
|
||
- A configuration option, CONFIG_DEFAULT_SMALL, was added to select
|
||
default values for configuration variables based upon whether you
|
||
want a smaller footprint or more features. This is not very useful
|
||
if you are modifying existing configurations because then the
|
||
default values do not apply.
|
||
- CONFIG_DEFAULT_SMALL has been defined on all tiny MCU configurations
|
||
so that they do not grow so rapidly when new, optional features are
|
||
added.
|
||
- The legacy, manual configuration is no longer supported by the
|
||
NuttX build system. Only the newer configurations generated by
|
||
the kconfig-frontends tools will generate viable NuttX
|
||
configurations. All board configurations in the NuttX source tree
|
||
have been converted to use the newer configuration, but if you have
|
||
some older style configurations for you board, you will need to
|
||
convert those configurations to use the kconfig-frontends tools. See
|
||
http://www.nuttx.org/doku.php?id=wiki:howtos:convertconfig for some
|
||
guidelines.
|
||
|
||
* Applications:
|
||
|
||
- NSH can now use an EMACS-like command line editor. This CLE, is
|
||
really more like the traditional readline than is the default, tiny
|
||
the NuttX readline .
|
||
- The touchscreen example can now be configured to work with either a
|
||
touchscreen or a mouse device.
|
||
- Several NSH commands can now be used to operate on objects in the
|
||
top-level pseudo-filesystem: rmdir, mkdir, mv, and rm. This
|
||
capability can be disabled with CONFIG_DISABLE_PSEUDOFS_OPERATIONS
|
||
in order to keep the footprint small.
|
||
- If both the CPU load feature and the procfs features are enabled,
|
||
then the NSH 'ps' command will show the CPU load used by each
|
||
thread.
|
||
|
||
Bugfixes (see the ChangeLog for details). Some of these are very important:
|
||
|
||
* Core OS:
|
||
|
||
- task_terminate() always returned an error because the return value
|
||
was not being set correctly (from Gosha).
|
||
- nanosleep() Fix a missing call to re-enable interrupts (from Jason
|
||
Jiang).
|
||
|
||
* File Systems:
|
||
|
||
- Fixed an error in the FAT logic that can cause file corruption. The
|
||
error conditions are rare and only seen with very large files (from
|
||
Andrew Tridgell). This replaces a previous, partial fix for the same
|
||
problem.
|
||
- Fixed memory leaks in the NXFFS open() and stat() implementations
|
||
(from Lzyy).
|
||
- The interfaces include opendir(), readdir(), et al, were modified so
|
||
that errors will not be reported if you attempt to list a empty
|
||
pseudo-directory.
|
||
|
||
* Networking:
|
||
|
||
- Fix one place where the connection reference count was not being
|
||
decremented in the socket close() logic. This is really a cosmetic
|
||
change BUT when CONFIG_DEBUG_NET is enabled, it will cause assertions.
|
||
- Backed out a small part of the NuttX 6.33 write buffering changed.
|
||
David G says that this causes problems in connecting to a server.
|
||
- In DHCPD, there was a place where the logic was calling ntohl()
|
||
inappropriately; the address was already in the correct order. How
|
||
could DHCPD have worked with this bug?
|
||
|
||
* TI Tiva/Stellaris Drivers:
|
||
|
||
- Fixed cut'n'paste error that prevented UARTS2-7 from being used with
|
||
the LM4F120 Launchpad.
|
||
- Fixed several errors there were unmasked with UARTs > UART2 are
|
||
enabled (grom Gosha).
|
||
|
||
* Allwinner A10 Drivers:
|
||
|
||
- Fixed cut'n'paste error that prevented UARTS2-7 from being used with
|
||
the pcDuino.
|
||
|
||
* NXP LPC17xx Drivers:
|
||
|
||
- Fix an compilation error that crept into the LPC17xx USB host driver.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- Fix cloned typo in the serial driver: FLOWCONTROL vs FLOWCONROL.
|
||
- Disable SPI before changing DPI CR1 register (from David Sidrane).
|
||
- stm32 TIM: Set the timer CCMR when selecting timer channel. From
|
||
David Sidrane.
|
||
- Fix typo in a Makefile: stm32_pwm.c not stm32_psm.c. Noted by Max
|
||
Kriegleder.
|
||
|
||
* Library:
|
||
|
||
- More sscanf() bug fixes from David Sidrane.
|
||
|
||
* Header files:
|
||
|
||
- cstdbool: Ignore _Bool8 if CONFIG_C99_BOOL8=y
|
||
|
||
* Configuration/Build System:
|
||
|
||
- Several changes to restore the broken native Windows build
|
||
|
||
* NuttShell (NSH):
|
||
|
||
- Use strncpy vs strcpy in the Telnet console logic to avoid
|
||
overruning the username and password buffers (from Bertold Van den
|
||
Bergh).
|
||
- Add a newline after printing the file in the 'cat' command. This
|
||
prevents the NSH prompt from be in the same line as the final line
|
||
of the file in the case where there is no newline at the end of the
|
||
file.
|
||
|
||
NuttX-7.2
|
||
---------
|
||
|
||
The 102nd release of NuttX, Version 7.2, was made on April 29, 2014,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-7.2.tar.gz and
|
||
apps-7.2.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:
|
||
|
||
- Add support for CLOCK_REALTIME. From Macs N.
|
||
|
||
* Network Utilities:
|
||
|
||
- Add a very primitive NTP client.
|
||
- DNS resolver: Long needed major clean up for coding style and
|
||
unification of naming conventions (resolv vs dns).
|
||
|
||
* Common Drivers:
|
||
|
||
- Add a new MTD driver that can be used to contain another driver and
|
||
force its apparent sector size to be 512 bytes.
|
||
- If DCD can support queuing of stall requests, then the USB MSC stall
|
||
work around delays are not necessary.
|
||
- Redesign threading module used with the USB MSC driver. It was using
|
||
pthreads before and these were changed to a kernel thread. The reason
|
||
for this has to do with task grouping: A pthread is a memory of the
|
||
group of the task that started it. A kernel thread is independent of
|
||
the task that started in (other than knowing it as the parent). This
|
||
allows me to remove so kludge logic to "deparent" the pthread on
|
||
startup.
|
||
- Update the MIO183QT-9A LCD driver to support reading from the LCD.
|
||
From Toby Duckworth.
|
||
- Timer "upper half" driver and l"lower half" interface definition from
|
||
Bob Doiron.
|
||
|
||
* Atmel SAM4E/4S Board Support:
|
||
|
||
- All SAM4E configurations updated to run with 120MHz CPU speed and
|
||
with the CMCC enabled.
|
||
- Support for the SAM4S Xplained Pro board from Bob Doiron.
|
||
- Add watchdog driver. From Bob Doiron.
|
||
|
||
* Atmel SAM4E/4S Drivers:
|
||
|
||
- Add a USB full speed device driver (UDP) for the SAM4E.
|
||
- Add support in HSMCI and SPI drivers to invalidate cached memory if
|
||
the CMCC is enabled.
|
||
- Add logic to handle SPI word widths > 8
|
||
- Port RTC driver from SAMA5 to SAM3/4. From Bob Doiron.
|
||
- HSMCI: Extensions from Bob Doiron needed to support PDC-based HSMCI
|
||
DMA transfers. Verified on the SAM4S Xplained Pro.
|
||
|
||
* Atmel SAMA5:
|
||
|
||
- Add support for the SAMA5D36 chip.
|
||
- Add functions to calculate PLLACK, PCK, and MCK frequencies given
|
||
the main clock frequency.
|
||
- Implemented RAM functions. When booting directly into NOR flash,
|
||
reconfiguring the PLL while executing out of NOR FLASH causes
|
||
crashes. This was fixed by David Sidrane by implementing RAM
|
||
functions. The killer code is copied and executed from ISRAM and
|
||
the crash is avoided.
|
||
|
||
* Atmel SAMA5 Drivers:
|
||
|
||
- Add support for the SAMA5D3 DBGU.
|
||
|
||
* Atmel SAMA5 Board Support:
|
||
|
||
- Add a board support configuration for the Atmel SAMA5D3 Xplained
|
||
board running out of SDRAM. When booting from SDRAM, start-up logic
|
||
needd to query the PMC registers to determine the MCK, PCK, etc.
|
||
- For all SAMA5 boards, added support for 528MHz clocking.
|
||
|
||
* TI Tiva/Stellaris:
|
||
|
||
- Modify the logic to disables the interrupts and sets the default
|
||
interrupt priority so that it uses the ICTR to get the number of
|
||
interrupt lines/registers. This is instead of using some fixed
|
||
number of initializations based a priori knowledge of the number
|
||
of interrupt lines in the MCU.
|
||
|
||
* STMicro STM32
|
||
|
||
- Add support for the STM401RE. From Frank Bennett.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F4Discovery: Add support to register keyboard and mouse
|
||
classes if so configured. From Leo.
|
||
- Add support for the Nucleo-F401RE board. From Frank Bennett.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- Add STM32 Ethernet IGMP hashing support. From Manuel St<53>hn.
|
||
- OTG FS Host: USB host tracing added by Leo.
|
||
|
||
* Freescale Kinetis
|
||
|
||
- Modify the logic to disables the interrupts and sets the default
|
||
interrupt priority so that it uses the ICTR to get the number of
|
||
interrupt lines/registers. This is instead of using some fixed
|
||
number of initializations based a priori knowledge of the number
|
||
of interrupt lines in the MCU.
|
||
|
||
* NXP LPC17xx
|
||
|
||
- Modify the logic to disables the interrupts and sets the default
|
||
interrupt priority so that it uses the ICTR to get the number of
|
||
interrupt lines/registers. This is instead of using some fixed
|
||
number of initializations based a priori knowledge of the number
|
||
of interrupt lines in the MCU.
|
||
|
||
* ZiLOG ZNEO Drivers
|
||
|
||
- Added ZNEO ESPI driver.
|
||
|
||
* Library:
|
||
|
||
- Finish incomplete support for ferror(). From Macs N.
|
||
|
||
* Documentation:
|
||
|
||
- UsbTrace.html: Add some discussion of the USB monitor.
|
||
|
||
* Configuration/Build System:
|
||
|
||
- compiler.h: Add macro UNUSED() that can be used to eliminate
|
||
warnings about variables that are set to values that are not
|
||
used.
|
||
|
||
* Debugging Support:
|
||
|
||
- Add a configuration option to enable dumping of the USB trace buffer
|
||
on assertion.
|
||
|
||
* Applications:
|
||
|
||
- IGMP Example: Fill out Kconfig file; update makefile so that the
|
||
IGMP example can be used as an NSH built-in application. From Manuel
|
||
St<53>hn.
|
||
- lcdrw Example: Fill out empty Kconfig file.
|
||
- touchscreen Example: Add a configuration option to indicate if
|
||
architecture-specific initialized is required, yes or no.
|
||
- System usbmsc: Back out the USBMSC daemon... it is no longer needed
|
||
with the recent fix to the USBMSC class driver.
|
||
- NSH: malloc/free IOBUFFER for 'cat' and 'hexdump' commands instead of
|
||
using the stack. From Bob Doiron.
|
||
- cpuhog, serialblaster, and serialrx Examples: Stress test examples
|
||
added by Bob Doiron.
|
||
|
||
Bugfixes (see the ChangeLog for details). Some of these are very important:
|
||
|
||
* Core OS:
|
||
|
||
- errno_get_errno_ptr() and getpid(): Add some checks. If these
|
||
functions are called very early in initialization before the tasking
|
||
structures are initialized, they would not behave properly.
|
||
|
||
* Networking:
|
||
|
||
- IGMP-related bug fixes from Manuel St<53>hn.
|
||
- In netdev_findbyaddr(), skip network devices that are in the "down"
|
||
state. It does not make sense to consider an address match with a
|
||
"down" device. From Brennan Ashton.
|
||
|
||
* Network Utilities:
|
||
|
||
- DHCPD: The correct value of the PAD option. Should be zero, not
|
||
one. From Brennan Ashton.
|
||
- Corrections to the NTP client from Manuel Stuehn.
|
||
|
||
* Common Drivers:
|
||
|
||
- usbhost.h: Fix some USB HID-related conditional compilation. From Leo.
|
||
- USB HID mouse driver: Don't include NAKs from the device in the error
|
||
count. From Leo.
|
||
|
||
* TI Tiva/Stellaris:
|
||
|
||
- Add corrected control logic for TM4C125GXL based on logic from Daniel
|
||
Carvalho with modifications. The LM4F120 also works well with this
|
||
change.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 F2 SPI: Correct a mapping for SPI MOSI pin. From dlsitzer.
|
||
- OTG FS Host: Fixes related to low-speed devices and interrupt
|
||
endpoints from Leo. Necessary in order to use a USB HID mouse
|
||
device.
|
||
- STM32 SDIO: The dmaflight method must be conditioned on
|
||
CONFIG_SDIO_PREFLIGHT. Noted by Pelle Windestam.
|
||
- Sourceforge Ticket #26. up_prioritize_irq should not be called
|
||
if CONFIG_ARCH_IRQPRIO is not defined.
|
||
|
||
* Atmel SAM3/4:
|
||
|
||
- Fix some backward conditional compilation in the start-up logic.
|
||
- Fix initialization of the default interrupt priorities. This is
|
||
a critical bug fix!
|
||
- SAM4S: Fix error in macros that disable peripheral clocking. From
|
||
Bob Doiron.
|
||
|
||
* Atmel SAMA5:
|
||
|
||
- Fix double mapping of SDRAM when executing out of SDRAM. In this
|
||
case, the SDRAM was already mapping in arm_head.S.
|
||
- In clock configuration, the BMS bit handling was fixed to match
|
||
what the HW really does. From David Sidrane.
|
||
- TLB Bufferable bit did not do what I thought it was going to do.
|
||
I though I was selecting a write-through cache, but the result was
|
||
that all caching was disabled and NOR FLASH accesses were very slow.
|
||
- Move the un-definitions of __ramfuncs__ from the clock configuration
|
||
.c file to the .h file. Otherwise, the attribute will be applied
|
||
differently for the prototype and the function definition.
|
||
Sourceforge patch 38 from Luciano Neri.
|
||
|
||
* Atmel SAMA5 Drivers:
|
||
|
||
- Fix a case in the UDPHS driver where received status was not being
|
||
cleared, causing OUT SETUP commands to fail.
|
||
- TWI data sending fails to increment the number of byes transferred
|
||
on first byte sent. from David Sidrane.
|
||
- If running from SDRAM, then BOARD_MCK_FREQUENCY is not a constant
|
||
and cannot be used in conditional compilation. All drivers fixed
|
||
EXCEPT for the PWM and Timer/Counter drivers which will need some
|
||
more extensive redesign.
|
||
|
||
* Atmel SAMA5 Boards:
|
||
|
||
- SAMA5D3x-EK: The red LED is controlled by PE24 which is also the
|
||
camera/ISI interface reset line. So if the a camera is installed,
|
||
then we must avoid controlling the red LED or we inadvertently
|
||
also reset the camera module. Noted by David Sidrane.
|
||
- Header files reference type xcpt_t in certain configurations and
|
||
so must include nuttx/irq.h. This is Sourceforge bug 25 submitted
|
||
by Luciano Neri.
|
||
|
||
* NXP LPC17xx Drivers
|
||
|
||
- arm/src/lpc17xx/Kconfig and lpc17_ethernet.c: The default interrupt
|
||
priority should be default, not the highest priority (2014-4-19).
|
||
|
||
* ZiLOG ZNEO
|
||
|
||
- Fix calculation of timer reload and prescaler. The timer frequency
|
||
was way too fast.
|
||
|
||
* Library:
|
||
|
||
- strncpy(): Change ordering of test and copy. Logic would have
|
||
failed if n=0; one byte was always copying before testing
|
||
for the end of the copy.
|
||
- Fix a counting error in the return value from sscanf(). Noted by
|
||
kfrolov. Also, sscanf() should return EOF if no values were
|
||
converted.
|
||
- Fix a logic error in ftell(). It was simply using the file offset
|
||
and did not take into account data buffered in memory. From Macs N.
|
||
- sccanf(): Use stroul() vs strol() with %u format otherwise, range
|
||
of values is restricted because of sign bit. From kfrolov.
|
||
|
||
* Configuration/Build System:
|
||
|
||
- Fix a build error that occurs when only USB device tracing is enabled.
|
||
|
||
* NuttShell (NSH):
|
||
|
||
- Fix NuttShell version number display in the NSH welcome message.
|
||
version.h was not being included.
|
||
|
||
* Other Applications:
|
||
|
||
- sysinfo: CONFIG_VERSION_BUILD is a string an needs to be
|
||
printed with %s, not %d. Noted by Librae.
|
||
- nxplayer: Compilation failure in one configuration reported by
|
||
Manuel Stuhn.
|
||
- System sdcard: Remove an STM32 dependency. From Bob Doiron.
|
||
- telnetd Example: Naming is confused. In someplaces 'telnetd',
|
||
and in others 'shell.' All changes to telnetd. Noted by Pelle
|
||
Windestam.
|
||
|
||
NuttX-7.3
|
||
---------
|
||
|
||
The 103rd release of NuttX, Version 7.3, was made on June 25, 2014,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-7.3.tar.gz and
|
||
apps-7.3.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:
|
||
|
||
- Dynamic loader: Framework to support Pascal P-Code as a binary
|
||
format that can be exec'ed from a file system.
|
||
- Dynamic Loader: Extend the binfmt interface to handle error
|
||
conditions where format-specific clean-up is needed in the event
|
||
of error conditions. This is needed by the P-Code binfmt.
|
||
|
||
* Networking
|
||
|
||
- IOB: Add a generic I/O buffer chain logic. This logic uses small,
|
||
pre-allocated buffers that can be chained together to support
|
||
transfers of any size, using fewer resources and also without
|
||
committing in advance to a TCP window size. There is now only
|
||
one I/O type used in the networking and it is these I/O buffer
|
||
chains.
|
||
- TCP Write Buffering: TCP write buffering logic converted to use
|
||
I/O buffer chains.
|
||
- TCP Read-Ahead Buffering: TCP read-ahead buffering logic converted
|
||
to use I/O buffer chains.
|
||
- Includes logic to support throttling of read-ahead buffering if
|
||
the read-ahead buffering is competing with write buffering for
|
||
I/O buffers.
|
||
- Raw Sockets: Add support for the AF_PACKET socket family. From
|
||
Daniel Lazlo Sitzer.
|
||
|
||
* Common Drivers:
|
||
|
||
- W25 Serial FLASH driver extended by Mark Whitehorn to support the
|
||
8Mbit W25Q80BV part.
|
||
- Add support for Fujitsu MB85RS1MT RAMTRON part. From Charles Ash.
|
||
- Enhancements to the generic timer interface to support capture mode
|
||
from Bob Doiron.
|
||
- Add an rxflowcontrol method to the serial interface to better
|
||
support RX flow control. This involves common changes in addition to minor updates to all MCU-specific serial drivers (only fully implemented for the STM32). From Jussi Kivilinna.
|
||
|
||
* Atmel SAM4C
|
||
|
||
- Add support for the SAM4CM family. From Max Neklyudov.
|
||
|
||
* Atmel SAM4E/4S Drivers:
|
||
|
||
- RTT driver from Bob Doiron. Also added high resolution RTC
|
||
emulation using the RTT for the sub-second counter.
|
||
|
||
* Atmel SAM4E/4S Board Support:
|
||
|
||
- The SAM4S Xplained Pro now uses the extended timer/counter
|
||
features. From Bob Doiron.
|
||
- Added a touchscreen and LCD driver for the SAM4E-EK board (the LCD,
|
||
however, not yet fully functional).
|
||
|
||
* Atmel SAMA5:
|
||
|
||
- Optimized, high performance, assembly language memcpy(). This is
|
||
the same optimized memcpy() function that Mike Smith brought in
|
||
for the ARMv7-M with minor tweaks by David Sidrane to work with
|
||
the ARMv7-A.
|
||
- Basic support added for the SAMA5D4 family.
|
||
|
||
* Atmel SAMA5 Drivers:
|
||
|
||
- SAMA5D4: New drivers unique to the SAMA5D4: XDMAC, SAIC, and
|
||
others.
|
||
|
||
* Atmel SAMA5 Board Support:
|
||
|
||
- SAMA5D4-MB: Initial board support for the SAMA5D4-MB/EK boards.
|
||
|
||
* STMicro STM32
|
||
|
||
- Add support for the STM32152 and STM32162 Medium+ density parts
|
||
(plus miscellaneous other improvements to the original STM32151
|
||
logic). From Jussi Kivilinna and Sami Pelkonen.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- Support for the Olimex STM32 H405 board contributed by Martin
|
||
Lederhilger.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- Implement the rxflowcontrol method to the serial interface to better
|
||
support RX flow control. From Jussi Kivilinna.
|
||
|
||
* NXP LPC17xx Drivers:
|
||
|
||
- Added support for the RTC, ADC, DAC, Timers, PWM and MCPWM
|
||
drivers. From Max (himax).
|
||
|
||
* NXP LPC17xx Boards:
|
||
|
||
- Support for the RTC, ADC, DAC, Timers, PWM and MCPWM integrated
|
||
in the LPCXpresso LPC1768 board support. From Max (himax).
|
||
|
||
* Library:
|
||
|
||
- Add support for seek-able streams.
|
||
|
||
* Configuration/Build System:
|
||
|
||
- Restructured network directories, header files, and naming to
|
||
better modularize the networking and to better integrate the
|
||
networking with the rest of NuttX.
|
||
|
||
* Applications:
|
||
|
||
- prun: An NSH built-in application that can be used to run
|
||
Pascal P-Code programs either programatically or from the NSH
|
||
command line.
|
||
- netpkt: A "raw" socket test from Lazlo Sitzer.
|
||
- hex2bin: A library and built-in task to convert from
|
||
Intel HEX to binary format. It can write the binary data to a file or it can store the binary data to memory (to support, for example, a loader).
|
||
|
||
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:
|
||
|
||
- Dynamic Loader: Fix an error in a symbol table search function.
|
||
Noted by Pelle Windestam.
|
||
- Dynamic Loader: Fix a critical error in exec(); argv was not
|
||
being passed.
|
||
- mq_notify: Test for a valid signal number was inverted; this
|
||
function could not have been working correctly before??? From
|
||
eero.nurkkala.
|
||
- Fix typo in conditional compilation: CONFIG_CLOCK_MONOTONIC vs.
|
||
CLOCK_MONOTONIC. From Manuel St<53>hn.
|
||
|
||
* Graphics
|
||
|
||
- Fix typos in several RGB conversion macros.
|
||
|
||
* Networking:
|
||
|
||
- Modify TCP timout handling to provent situations where connections
|
||
may not be freed. From Max Holtzberg.
|
||
- Improved TCP fallback allocation logic from Max Holtzberg. Also,
|
||
fallback mechanism is disabled when SO_LINGER is to prevent
|
||
deadlocks.
|
||
- Write Buffering: Add checks from buffer allocation failures. From
|
||
Max/Himax.
|
||
|
||
* Network Utilities:
|
||
|
||
- webserver: httpd_fs_open() should return OK on success and ERROR on
|
||
failure, not 1 and 0.
|
||
|
||
* Common Drivers:
|
||
|
||
- Make sure that all references to up_prioritize_irq() are
|
||
conditioned on CONFIG_ARCH_IRQPRIO. Problem noted by Mike Smith.
|
||
- CC3000: Correct SPI mode for CC3000 is CPOL=0 CHPA=1. From Jussi
|
||
Kivilinna.
|
||
- CC3000: Fix a race condition in thread start-up logic. From Jussi
|
||
Kivilinna.
|
||
- CC3000: Additional fixes including a compilation failure if POLL is
|
||
enabled. From Jussi Kivilinna.
|
||
|
||
* USB Drivers:
|
||
|
||
- CDC/ACM and PL2303 device: Reset RX head to avoid resending last
|
||
serial data when USB cable disconnected/re-connected. From
|
||
Lizhuoyi.
|
||
|
||
* TI Tiva/Stellaris Boards:
|
||
|
||
- The Nucleo-F401RE has no on-board crystals and, hence, needs to run
|
||
with the PLL input from the on-chip HSI clock.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- Serial: Handle configuration for the case of 8-bit data with
|
||
parity. From Freddie Chopin.
|
||
|
||
* Atmel SAM3/4 Boards:
|
||
|
||
- There was a cloned error in all SAM3/4 board configurations (and
|
||
for a few other architectures as well). Button interrupts not
|
||
being disabled after being detached. As a result, unexpected
|
||
interrupts could be received after the button interrupt was
|
||
detached.
|
||
|
||
* Atmel SAMA5:
|
||
|
||
- Fix some critical typos in the SAMA5D3 DMA definitions.
|
||
|
||
* STMicro STM32 Drivers
|
||
|
||
- I2C: Add an alternative I2C implementation for the STM32 F103 that
|
||
works around errata in that specific part. From Patrizio Simona.
|
||
- RTCC: Add retry logic to RTC initialization. It sometimes takes
|
||
longer for the RTC to initialize, at least as noted on an F2 part.
|
||
From Daniel Lazlo Sitzer.
|
||
|
||
* NXP LPC17xx Drivers
|
||
|
||
- GPDMA: Fix an error when DMA is started: The read-modify-write
|
||
fails when the DMA is started. This is because the value read is
|
||
not the same as the value set (on write it is the number of
|
||
transfers to do; on read it is the number of transfers completed).
|
||
From Lizhuoyi.
|
||
|
||
* Library:
|
||
|
||
- snprintf(): If the size passed to snprintf() is zero, then
|
||
snprintf() must write nothing, but instead return the size of the
|
||
buffer needed to hold the entire string. From Sami Pelkonen.
|
||
|
||
* Configuration/Build System:
|
||
|
||
- The alternate console device CONFIG_NSH_CONDEV must not be defined
|
||
unconditionally. This causes errors when using Telnet sessions.
|
||
This was solved by adding CONFIG_NSH_ALTCONDEV: CONFIG_NSH_ALTCONDEV enables or disables the feature then, if
|
||
enabled, CONFIG_NSH_CONDEV provides the alternative console
|
||
device name.
|
||
- Many files: Convert all old-style GCC variadic macros to the C99
|
||
form. Recent GCC changes tightens up that behavior and can cause
|
||
some problems (at least for the IAR compiler for some reason).
|
||
Noted by Bob Grimes.
|
||
- tools/configure.sh: In-place SED edit messes up permissions on
|
||
windows. From Hannes Delago.
|
||
|
||
* Build Tools:
|
||
|
||
- tools/mkfsdata.pl: Apparently, the trailing the 0x00 in http
|
||
server files is seen as a bug in javascript and images. From
|
||
Max/Himax.
|
||
|
||
* Other Applications:
|
||
|
||
- I2C Tool: Fix to show the updated register address on each
|
||
fetch (vs. showing the same starting address each time). From
|
||
Ryan VanSickle.
|
||
- CLE was not returning the terminating newline character. But
|
||
reported by Max kriegleder.
|
||
|
||
NuttX-7.4
|
||
---------
|
||
|
||
The 104th release of NuttX, Version 7.4, was made on August 15, 2014,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-7.4.tar.gz and
|
||
apps-7.4.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:
|
||
|
||
- Beginnings of a crypto/ subsystem from Max Neklyudov
|
||
- Tickless operation: NuttX now supports a mode with no periodic
|
||
timer interrupts. Rather, timed events are handle via an interval
|
||
timer. This (1) lowers the rate of interrupt processing to timer
|
||
events, (2) gives much high timing resolution, and (3) allows lower
|
||
power modes of operation where the CPU is not constantly being
|
||
interrupted by the timer.
|
||
- Restructured the OS files under sched/ to better support the already
|
||
modular nature of the RTOS.
|
||
|
||
* Networking
|
||
|
||
- Substantial directory and header file reorganization and renaming to
|
||
make the NuttX networking implementation more modular.
|
||
- Add network device ioctl to access PHY registers. From Daniel Lazlo
|
||
Sitzer
|
||
|
||
* Binary Loader:
|
||
|
||
- Various changes associated with symbol tables from Pelle Windestam.
|
||
|
||
* Graphics:
|
||
|
||
- colorcmp(): New utility to compare two colors.
|
||
- The initial background color is now configurable. Includes logic to
|
||
eliminates multiple background updates to get the right color.
|
||
- Minor configuration changes to handle mouse X/Y and touchscreen
|
||
X/Y differently.
|
||
|
||
* File System/Block Drivers:
|
||
|
||
- SmartFS: Increase some variables from uint16_t to uint32_t to handle
|
||
larger device sizes. From Ken Pettit.
|
||
- Add configurable AES encryption support to the block-to-character
|
||
(BCH) driver. This allows any block device to be accessed as an
|
||
encrypted character device. From Max Nekludov
|
||
- Add an MTD layer that will add read-ahead or write buffering to any
|
||
MTD driver (incomplete).
|
||
- Automounter: Add support for an auto-mounter that will automatically
|
||
mount and unmount a file system a media is inserted and removed
|
||
|
||
* Audio/Audio Drivers
|
||
|
||
- WM8904 audio CODEC driver.
|
||
- PCM .WAV file decoder. Fast forward implemented with sub-sampling
|
||
(currently no rewind support).
|
||
- Add a NULL audio device that can be used to simply unit-level testing
|
||
of audio decoders.
|
||
- Audio subsystem now supports interfaces for fast-forward and rewind
|
||
needed by CMediaPlayer; add hooks for equalizer settings needed by
|
||
the WM8904 CODEC.
|
||
|
||
* Other Common Drivers:
|
||
|
||
- MTD: Extend erase block size to 18-bits in order (decrease block
|
||
size to 14-bits) to handle parts with large erase blocks. From Kosma
|
||
Moczek
|
||
- maxTouch: Add support for the Atmel maXTouch touchscreen controller.
|
||
|
||
* Host Simulation:
|
||
|
||
- Provides the timers needed to support the Tickless mode of operation.
|
||
|
||
* Atmel SAM4C:
|
||
|
||
- Add SAM4CM IPC register header file. From Max Neklyudov
|
||
- Various fixes PMC and clock configuration for the SAM4CM port from
|
||
Max Neklyudov
|
||
|
||
* Atmel SAM4E/4S Drivers:
|
||
|
||
- SAM4 AES driver. Contributed by Max Neklyudov
|
||
|
||
* Atmel SAMA5:
|
||
|
||
- Add logic to redirect all SAMA5D4 interrupts to the AIC
|
||
- Add a configuration option to reserve DRAM for a framebuffer when
|
||
executing out of DRAM. This optional was available before when
|
||
executing out of NOR, but needs to work a little differently in
|
||
this case.
|
||
- Add SAMA5 slow (32.768KHz) clock support.
|
||
- Add support for the ARM L2CC-PL310 L2 cache. The system runs with
|
||
L2CC cache enabled but there is some issues still with the LCD DMA;
|
||
I suspect that the memory timing configuration for L2CC needs to
|
||
be tuned.
|
||
- Provides the timers needed to support the Tickless mode of operation.
|
||
|
||
* Atmel SAMA5 Drivers:
|
||
|
||
- XDMAC-based HSCMI driver for the SAMA5D4
|
||
- Adapt the SAMA5D3 LCDC driver to work with the SAMA5D4 which has
|
||
no hardware cursor.
|
||
- PIO: Add a new interface sam_pio_forceclk() that can be used to
|
||
force PIO clocking on. I am afraid I was too conservative with
|
||
PIO clocking in the initial design; this is the price.
|
||
- TWI: Now supports the up_i2creset() method.
|
||
- TWI: Use sam_pio_forceclk() so that we can read the current state
|
||
of an open-drain output in the TWI reset logic.
|
||
- SSC: SCC Frame Synch Delay and Start Delay are now configurable.
|
||
- PCK: Add the slow clock and the main clocks as options for the
|
||
PCK configuration.
|
||
- Timer/Counter: Can now handle non-constant BOARD_MCK_FREQUENCY. Also
|
||
now supports methods to attach client interrupt handlers
|
||
- One shot and free-running timers. These are wrappers around the low
|
||
level timer/counter logic to provide one-shot and free-running
|
||
timers. These were developed to support the Tickless operation, but
|
||
can be used for any purpose.
|
||
|
||
* Atmel SAMA5 Board Support:
|
||
|
||
- Add a boot loader that runs from ISRAM and loads an Intel HEX file
|
||
into DRAM.
|
||
- Add a configuration that will load a bootloader into AT25 Serial
|
||
FLASH
|
||
- SAMA5D4-EK NSH configuration supports many more features: RTC, HSCMI
|
||
card detection, maXTouch touchscreen, TM7000 LCD, the command line
|
||
media player (currently using the NULL audio device), automounter,
|
||
and others.
|
||
- SAMA5D4-EK: Add an NxWM configuration using the TM7000 LCD with
|
||
the maXTouch multi-touch touchscreen.
|
||
- SAMA5D4-EK NxWM: Uses new, larger icons in configuration instead of
|
||
scaling.
|
||
- SAMA5D4-EK NxWM: The NxPlayer and audio system are now enabled in
|
||
the default configuration (but currently using the NULL audio
|
||
device). The automounter is used to automatically mount media
|
||
on an SD card.
|
||
- SAMA5D3x-EK: Add a configuration to support the command line
|
||
NxPlayer and to verify the WM8904 CODEC driver.
|
||
|
||
* STMicro STM32:
|
||
|
||
- Add support for the STM32F103RC and RD. From Kosma Moczek
|
||
- Add a procfs entry to show the state of the CCM heap usage.
|
||
From Pelle Winderstam
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- Unconfigure GPIO pins when closing a serial port to prevent back
|
||
effects from back-powering on the TX pin. From Kosma Moczek
|
||
|
||
* NXP LPC17xx Drivers:
|
||
|
||
- ADC: Added burstmode ADC conversion mode, with CONFIG_ADC_BURSTMODE
|
||
option in Kconfig. From Max
|
||
- Ethernet: Added option to use the kernel worker thread to do most of
|
||
the workload with CONFIG_NET_WORKER_THREAD option in Kconfig. From Max
|
||
- Ethernet: Critical bugfix: From time to time (after some hours) the
|
||
Ethernet receiver would lose one receive interrupt and the IP stack
|
||
never recover because there is no receive watchdog as the transmit
|
||
watchdog. From Max
|
||
|
||
* NXP LPC17xx Boards:
|
||
|
||
- mbed: Port ADC, DAC, and PWM logic from the configs/zkit-arm-1769.
|
||
From Max
|
||
- mbed: Eliminated a problem with PHY DP83848C : it doesn't need a
|
||
specific initialization on mbed. From Max
|
||
|
||
* Library:
|
||
|
||
- Adds support for localtime. From Max Neklyudov
|
||
|
||
* Configuration/Build System:
|
||
|
||
- Make variable definitions 'static const' when possible to save RAM
|
||
usage. From Kosma Moczek
|
||
|
||
* Applications:
|
||
|
||
- sysem/mdio: New PHY tool from Daniel Lazlo Sizter.
|
||
- NSH: Networking logic modified to handler the case of SLIP
|
||
transport. From Max Neklyudov.
|
||
- NSH: Add a configuration to use a USB keyboard for the stdin
|
||
device.
|
||
- NSH: Software assigned MAC address is now configurable. From Lazlo.
|
||
- NSH: Also add an option to let platform-specific logic select the
|
||
MAC address.
|
||
- NSH: There is now a configuration option that will bring up the
|
||
network on an separate thread. Since the network bring-up is
|
||
asynchronous, there are no serial console start-up delays due
|
||
to the network negotiation time.
|
||
- NxPlayer: Changes to integrate with Ken's NxWM::CMediaPlayer.
|
||
- NxPlayer: Add interfaces for fast-forward and rewind needed by
|
||
CMediaPlayer; add interface for equalizer settings needed by the
|
||
WM8904.
|
||
- NxPlayer: Supports new way of identifying the end of the audio
|
||
stream (see the Audio section above).
|
||
- Sudoku: Add a sudoku game.
|
||
|
||
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):
|
||
|
||
* Graphics:
|
||
|
||
- NxConsole: Fix scrolling for the case of the framebuffer device. In
|
||
this case, the logic for clearing the vacated region at the bottom
|
||
was missing so garbage would scroll up from the last, uncleared
|
||
line.
|
||
|
||
* Networking:
|
||
|
||
- Important fix to the read-ahead buffer queue management: Consumed
|
||
bytes were being trimmed from the head of the queue, but the queue
|
||
head itself was not being updated. From Rony XLN.
|
||
- Fix an error in SLIP escaping. From Max Neklyudov
|
||
|
||
* Network Utilities:
|
||
|
||
- Fix an include file ordering problem when CONFIG_NET_STATISTICS=y.
|
||
- Move statistics from uip.h to new netstats.h to remove a circular
|
||
inclusion problem
|
||
- Various fixes for networking and tiny webserver from Max
|
||
- webclient: Fix to offset calculation from Rony Xln. Prevents 0x0a
|
||
at the beginning of lines.
|
||
- webserver: Fix some configuration usage issues. From Max.
|
||
- webserver: Missing logic to close sockets on loop termination.
|
||
|
||
* File System / Block Drivers:
|
||
|
||
- SmartFS: Fix for a bug that would show up if CONFIG_MTD_BYTE_WRITE
|
||
was not selected and the SMART sector size was larger than the MTD
|
||
device's block size (like it would be if using SMARTFS on larger
|
||
flash devices). From Ken Pettit.
|
||
|
||
* Audio:
|
||
|
||
- Change how the end of the audio stream is detected by the leaf audio
|
||
component. This used to be done by looking for the first partial
|
||
buffer. That does not work with the in-place sub-sampling performed
|
||
by the PCM decoder: That always reduces the size of the buffer so
|
||
that all buffers only partially filled by the time they get to the
|
||
leaf. Now, a flag is set in the audio buffer flags set to indicate
|
||
the final buffer in the stream.
|
||
|
||
* Common Drivers:
|
||
|
||
- RAMLOG putc() method needs to set the errno and return EOF on a
|
||
failure.
|
||
- Add missing configuration option to select the MAX11802 touchscreen
|
||
controller. From Petteri Aimonen
|
||
|
||
* Atmel SAMA5D3/4:
|
||
|
||
- Fix logic in conversion of physical and virtual DRAM addresses when
|
||
running out of DRAM. This is an important bug fix for the SAMA5D3
|
||
and 4 when running out of DRAM .
|
||
- Critical SAMA5D3 and 4 bug fix: PIO clocking must be enabled for
|
||
all input pins or else the value that is read never changes.
|
||
|
||
* Atmel SAMA5D3/4 Drivers:
|
||
|
||
- OHCI: Fix an error in a DEBUGASSERT statement. Caused an
|
||
assertion to fire inappropriately when a low- or full-speed device
|
||
was removed and CONFIG_DEBUG=y
|
||
- OHCI: Pointers to allocated port values were not being
|
||
nullified after being deallocated. This caused some assertions
|
||
to fire when debug was enabled
|
||
- SSC: Needs to account for data offset in audio buffer
|
||
|
||
* ARMv7-M:
|
||
|
||
- Correct the initial value of the BASEPRI register. This was
|
||
apparently never being initialized! From Max
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- I2C: Fix missing configuration of GPIO pins in I2C driver. Fix
|
||
from Alex D.
|
||
- STM32 OTGFS device: Various changes to try to reduce that amount of
|
||
time in interrupts handles and with interrupts disabled. From
|
||
Petteri Aimonen
|
||
|
||
* Atmel SAM3/4 Drivers:
|
||
|
||
- Ethernet: Wrong bits being cleared before OR-ing in new settings.
|
||
- Ethernet: Fix an error in the function that determines the number
|
||
of free TX descriptors. This is an important bugfix on busy
|
||
networks.
|
||
- I2C: Test for read or write operation was reversed. How could
|
||
this have worked before?
|
||
|
||
* Atmel SAM3/4 Boards:
|
||
|
||
- SAM4S Xplained-Pro: Correct description of LEDs and usage. From
|
||
Kosma Moczek
|
||
|
||
* Atmel SAMA5:
|
||
|
||
- PIO: Fix definitions that could disable PIO interrupt support if only
|
||
PIOE interrupts were enabled
|
||
- PIO: Macro SAM_PION_VBASE is not define-able for the SAMA5D4 and must
|
||
be replaced with a table lookup.
|
||
- PIO: Fix a typo in Schmitt trigger configuration; Configure pin as a
|
||
vanilla input first so that final pin configuration is more read-able
|
||
(i.e., easier to debug)
|
||
- PIO: Logic for Schmitt trigger selection backward
|
||
- SAMA5D4: Correct system timer frequency. Input clock is MCK/2, not MCK.
|
||
|
||
* Atmel SAMA5 Drivers:
|
||
|
||
- Ethernet: Wrong bits being cleared before OR-ing in new settings.
|
||
- Ethernet: Fix an error in the function that determines the number
|
||
of free TX descriptors. This is an important bugfix on busy
|
||
networks.
|
||
- HSMCI: The 8-byte SCR transfer was failing silently with the DMA
|
||
transfer, leaving the SD card in single bit mode. Fixed by adding
|
||
a non-DMA read transfer mode.
|
||
- HSMCI: Fix a problem on card insertion/removal callback handling.
|
||
Interrupts were being disable so that the callbacks occurred with
|
||
interrupts disabled. This resulted in loss of some interrupts and
|
||
some not-so-good behaviors. The solution is to perform all
|
||
callbacks on the work thread unconditionally
|
||
|
||
* Atmel SAMA5 Boards:
|
||
|
||
- PIO: Fix some cloned errors in SAM GPIO interrupt setup
|
||
|
||
* NXP LPC17xx Drivers:
|
||
|
||
- Ethernet: Comment out an assertion that is reported to fire
|
||
inappropriately. From Max
|
||
|
||
* Library:
|
||
|
||
- stdint.h: Correct naming of [U]INT_LEASTn_{MAX|MIN} and
|
||
[U]INT_FASTn{MAX|MIN}. From Kosma Moczek
|
||
- unistd.h: POSIX definitions should be defined to a value. rom Kosma
|
||
Moczek
|
||
- Fixes associated with rint() and related interfaces in the math
|
||
library.
|
||
|
||
* Configuration/Build System:
|
||
|
||
- NAME_MAX not available on SunOS; use FILENAME_MAX or MAXNAMELEN.
|
||
Noted by Douglas Beattie
|
||
|
||
* Applications:
|
||
|
||
- NSH: if # appears on line, need to comment ignore additional
|
||
commands on the line
|
||
- NxPlayer: Check for file read errors and end-of-file with zero
|
||
bytes read. Other error handling corrected as well.
|
||
- NxPlayer: NxPlayer needs to set curbyte field to zero before
|
||
enqueuing a buffer. Otherwise, it looks like beginning of the
|
||
buffer has already been consumed.
|
||
|
||
NuttX-7.5
|
||
---------
|
||
|
||
The 105th release of NuttX, Version 7.5, was made on September 28, 2014,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-7.5.tar.gz and
|
||
apps-7.5.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:
|
||
|
||
- Watchdog Timer Allocation: (1) If we run out of pre-allocated
|
||
watchdog times, the logic will now allocate additional timers
|
||
from the heap. A reserve of pre-allocated watchdog timers is
|
||
maintained so that there will always be timers available for
|
||
interrupt handlers. (2) Added support for statically allocated
|
||
watchdog timer
|
||
- Address Environment Support: (2) New OS APIs integrated into all
|
||
platform-specific context switching logic (up_block_task(),
|
||
up_unblock_task(), _exit(), and others).
|
||
- Kernel Build Support: (1) The MPU based "kernel build" renamed to a
|
||
protected build (CONFIG_BUILD_PROTECTED); added support for the a
|
||
new MMU-based "kernel build" (CONFIG_BUILD_KERNEL), (2) The system
|
||
call library can now be built with CONFIG_NUTTX_KERNEL. New
|
||
selection: CONFIG_LIB_SYSCALL.
|
||
- System Startup: Add configuration options to start the system from
|
||
a program on a file system (versus an address in memory).
|
||
- Startup Parameter Passing. There used to be two ways to pass
|
||
parameters to new tasks, depending upon the configuration: Either
|
||
(1) argv[] as created as an array with each string strdup'ed. Or
|
||
(2) argv[] array and strings were created on the stack before the
|
||
new task was started. Now, there is only one way, way (1). Way
|
||
(2) might be slightly more compact, but this is not worth carry the
|
||
complexity of two different ways of doing the same thing.
|
||
- Board Initialization: Add capability to perform initial board
|
||
initialization on a separate worker thread. This is needed because
|
||
there are many cases where initialization logic cannot execute on
|
||
the start-up/IDLE thread. That is because blocking or waiting is
|
||
not permitted on the IDLE thread.
|
||
|
||
* Memory Management:
|
||
|
||
- Granule Allocator: (1) Add a new function to reserve un-allocatable
|
||
regions in the granule heap. (2) Add interfaces to support
|
||
un-initializing a granule allocator.
|
||
- Page Allocator: Add a simple physical page allocator based on the
|
||
existing NuttX granule allocator. I am not certain if the granule
|
||
allocator is sufficiently deterministic for long range use, but it
|
||
gets get a page allocator in place for testing very quickly.
|
||
- Remove CONFIG_MM_MULTIHEAP. Non-multiheap operation is no longer
|
||
supported.
|
||
- sbrk(): sbrk() is now supported in the kernel build to permit
|
||
dynamically sized, per-process heaps.
|
||
- Per-Process Heaps: Space at the beginning of the process data space
|
||
is now reserved for user heap management structures. In the kernel
|
||
build mode, these heap structures are shared between the kernel and
|
||
use code in order to allocate user-specific data.
|
||
- User Heap Management: When a privileged thread exits, we have to
|
||
use the kernel allocator to free memory; when an unprivileged thread
|
||
exits, we don't have to do anything... heap memory will be cleaned
|
||
up when the address environment is torn down.
|
||
- Inter-Process Shared Memory Support: (1) Add implementation and
|
||
documentation for shmget(), shmctl(), shmat(), and shmdt(). (2)
|
||
Add system system calls to support the user call gate to the shared
|
||
memory interfaces. (3) Add platform-specific interface definitions
|
||
needed to support the shared memory feature.
|
||
- Virtual Page Allocator: Add support for a per-process virtual page
|
||
allocator. This is a new member of the task_group_s structure. The
|
||
allocator must be initialized when a new user process is started and
|
||
uninitialize when the process group is finally destroyed. It is
|
||
used by shmat() and shmdt() to pick the virtual address onto which
|
||
to map the shared physical memory.
|
||
|
||
* File Systems/Block Drivers/MTD:
|
||
|
||
- SMART FS and SMART FS procfs updates from Ken Pettit.
|
||
- The MTD Read-ahead/Write buffer layer appears is now functional.
|
||
|
||
* Binary Formats:
|
||
|
||
- Add logic to initialize the per-process user heap when each user
|
||
process is started.
|
||
|
||
* Graphics:
|
||
|
||
- Change all occurrences of NxConsole to NxTerm.
|
||
|
||
* Networking:
|
||
|
||
- PHY Interrupts: (1) Standardize a PHY interrupt attachment
|
||
interface. (2) Add support for an ioctl that can be used to notify
|
||
an application when there is a change in the network status
|
||
signalled by a PHY interrupt.
|
||
- Improved Send Logic: In the past, the first packet send to a new
|
||
network peer would fail; there would be no entry in the ARP table
|
||
for the peer and so an ARP request could replace that first packet.
|
||
Now as an option if CONFIG_NET_ARP_SEND=y, all send logic will (1)
|
||
check if the peer MAC address is in the ARP table and, if not, (2)
|
||
send ARP requests periodically to get the mapping and (3) wait for
|
||
the ARP response. Then (4) when the ARP response is received then
|
||
the actual send logic will be initiated. Thus there may be a delay
|
||
with the first packet sent to a new peer, but the packet should not
|
||
be lost
|
||
|
||
* Host Simulation:
|
||
|
||
- Emulated SPI FLASH driver for the sim target from Ken Pettit.
|
||
|
||
* Intel x86:
|
||
|
||
- The default host is now x86_64 and the -m32 option will be
|
||
automatically selected for simulation builds.
|
||
|
||
* Intel 8051 Family:
|
||
|
||
- Removed all support for the 8051 family architecture from the NuttX
|
||
source tree. The obsoleted code along with the removal patch can
|
||
now be found at misc/Obsoleted/. This code was removed because (1)
|
||
although some functionality has been demonstrated, I am not aware of
|
||
any really successful ports of NuttX to any 8051, and (2) the 8051,
|
||
with its hardware stack, forces limitations and complications to the
|
||
other architectures and make growth and development of NuttX more
|
||
complex.
|
||
|
||
* ZiLOG ZNeo Boards:
|
||
|
||
- configs/16z: Support for this board has been removed from the NuttX
|
||
source tree (but still can be found in the misc/Obsoleted
|
||
directory). This port is not ready for usage but may return to the
|
||
NuttX tree at some point in the future.
|
||
|
||
* Atmel SAM3/4 Boards:
|
||
|
||
- SAM4E-EK: Add (1) a fully-functional ILI9341-based LCD driver and
|
||
(2) a fully-functional NxWM configuration.
|
||
|
||
* ARMv7-A:
|
||
|
||
- Address Environments: Add support for application address
|
||
environments using the Cortex-A MMU. Implement standardized
|
||
platform-specific interfaces of NuttX address environment
|
||
support.
|
||
- Cache Operations: Implement standardized, platform-specific cache
|
||
operations. These are called from the ELF loader in order to flush
|
||
D-cache and invalidate I-cache after an ELF module has been loaded
|
||
into memory. With this change, ELF modules work correctly on the
|
||
SAMA5/Cortex-A platform.
|
||
- Kernel Build: (1) Add implementations of system call gate. (2) Add
|
||
CRT0 start-up file that can be linked with separately built user
|
||
programs. (3) Add support for delivery of use-mode signals in the
|
||
kernel build. (4) Add logic to initialize the per-process user heap
|
||
when each user process is started. (5) ARMv7-A exception handling
|
||
needs to work a little differently if we support user mode
|
||
processes. This is because R13 and R14 are paged differently
|
||
between user and SVC mode.
|
||
- Shared Memory Support: (1) Add logic necessary to handle remapping
|
||
of shared memory on context switches. (2) Extend virtual/physical
|
||
address conversions to include addresses in shared memory. (3) Add
|
||
implementation of platform-specific shared memory support.
|
||
|
||
* Atmel SAMA5D Drivers:
|
||
|
||
- Implement all network ioctls, including the new ioctl to setup PHY
|
||
event notifications.
|
||
- In kernel build with address environment, need logic to map user
|
||
virtual addresses to physical addresses, and vice versa.
|
||
|
||
* Atmel SAMA5D Boards:
|
||
|
||
- SAMA5D3 Xplained, SAMA5D3-EK, and SAMA5D4-EK: Convert existing
|
||
board specific PHY interrupt interfaces to use newly defined
|
||
standard interface.
|
||
- SAMA5D4-EK: Add a configuration for testing the kernel build
|
||
configuration. There are configurations to boot either from an SD
|
||
card or from and in-memory ROMFS file system.
|
||
- SAMA5D4-EK: Add documentation/support for Rev E. board.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- Ethernet: Modified to support the change to the network ioctl
|
||
signature changes. Also add support for new ioctl to setup PHY
|
||
event notifications.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F4Discovery with STM32F4DIS-BB: Add a network enabled NSH
|
||
configuration for the STM32F4Discovery board with the STM32F4DIS-BB
|
||
base board installed. Includes support for the microSD card slot on
|
||
the STM32F4DIS-BB base board.
|
||
|
||
* TI Tiva Drivers:
|
||
|
||
- Add support for the TI CC3200. From Jim Ewing.
|
||
|
||
* TI Tiva Boards:
|
||
|
||
- Add support for the TI CC3200 Launchpad. From Jim Ewing.
|
||
|
||
* C Library:
|
||
|
||
- Re-implemented poll() delay using sem_timedwait().
|
||
|
||
* Configuration/Build System:
|
||
|
||
- Export Target: In the kernel or protected builds, (1) only the user
|
||
libraries should be exported, (2) do not copy internal header files
|
||
or build scripts if this is a kernel or protected build, and (3)
|
||
needs to bundle up the user C startup file (crt0), not the kernel
|
||
head object for the kernel and protected builds.
|
||
- Add logic that will permit us to build user libraries with different
|
||
CFLAGS than kernel code. This is needed because we need the
|
||
-fno-common option when building ELF code to prevent SHN_COMMON
|
||
relocations.
|
||
|
||
* Applications:
|
||
|
||
- NSH: Extend the NSH network initialization logic. There is now an
|
||
option that will create a network monitor thread that will monitor
|
||
the state of the link. When the link goes down, the code will
|
||
attempt to gracefully put the Ethernet driver in a down state; When
|
||
the link comes back, the code will attempt to bring the network back
|
||
up.
|
||
- ELF Example: The ELF test/example has been extended so the
|
||
individual ELF test programs can link against the SYSCALL library
|
||
(if it is available) or against the C library to eliminate or
|
||
minimize the need for symbol tables.
|
||
- Change all occurrences of NxConsole to NxTerm.
|
||
- MTDRWB Example: Add an example to test MTD R/W buffering.
|
||
- OS Test Example: Add a trivial test of sem_timedwait.
|
||
|
||
* Application Configuration/Build System:
|
||
|
||
- Import Target: (1) Add logic that will allow building applications
|
||
against a NuttX export package (vs. the nuttx/ source tree). (2)
|
||
Add .config file to export package. (3) Create apps/import. Create
|
||
apps/import/Make.defs that does things like define CFLAGS; ELF build
|
||
requires -fno-common in CFLAGS. Copy some base logic from
|
||
nuttx/tools/Config.mk to apps/import/Make.defs. (4) Add
|
||
apps/import/scripts/gnu-elf.ld GCC linker script for ELF import
|
||
builds.
|
||
- All Makefiles: (1) Add an install target to all makefiles. For
|
||
the import build, the top-level Makefile now does two passes: (1)
|
||
builds libapp.a, then (2) installs the programs into apps/bin. (2)
|
||
Add program installation for CONFIG_BUILD_KERNEL in all Makefiles
|
||
that build a main(). (3) For kernel build, the object file
|
||
containing main cannot go into library because of name collisions.
|
||
The object file must be handled as a special case in every Makefile.
|
||
- All Built-In Programs: With kernel build (CONFIG_BUILD_KERNEL),
|
||
entry point to all tasks is main(), not some xyz_main().
|
||
- NSH: Several commands must be disabled in the kernel build because
|
||
they depend on interfaces that are not available outside of the
|
||
kernel: dd, df, losetup, mkfatfs, mkdr, and ps.
|
||
- apps/tools/: (1) Add mkimport.sh to expload an NuttX import package
|
||
and install in apps/import. (2) Add mkromfsimg.sh script to create
|
||
a BOOT ROMFS filesystem image.
|
||
- ELF and NxFLAT Examples: Do not build test cases that use
|
||
task_create() if there is an address environment.
|
||
|
||
* Tools:
|
||
|
||
- refresh.sh: Add a tool to make refreshing configurations easier
|
||
when you want to do a lot of them.
|
||
- mksyscall.c: Build syscalls that do not need header files.
|
||
- mkexport.sh: Add .config file to export package.
|
||
- See above for new apps/tools scripts.
|
||
|
||
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:
|
||
http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
|
||
|
||
* XMega: There are some fragments in place for an XMega port. That
|
||
port has not really started, however.
|
||
|
||
* Galileo: Similarly, there are fragments in place for an Intel Galileo
|
||
port. The port not been started in earnest either.
|
||
|
||
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:
|
||
|
||
- Kernel build fixes: (1) IDLE TCB setup needs to indicate that the
|
||
IDLE thread is a privileged, kernel thread. (2) Don't build
|
||
task_create() or task_spawn() interfaces if there is an address
|
||
environment. (3) posix_spawn() kernel proxy thread should be a
|
||
kernel thread, not a user task.
|
||
- Several pthread interfaces: Add const storage class to phthread
|
||
parameters. From Freddie Chopin.
|
||
- sched/clock: Remove vestiges of g_tickbias; need, instead, to apply
|
||
time bias to g_basetime in order to provide the correct system time.
|
||
- System Calls: (1) Several typos fixed; corrected integration of
|
||
exevc(), execvl(), posix_spawn, and posix_spawnp system calls. (2)
|
||
If we are configured to use a kernel stack while in SYSCALL handling,
|
||
then we need to switch back to the user stack to deliver a signal.
|
||
|
||
* File Systems/Block Drivers/MTD:
|
||
|
||
- procfs: Fix some procfs breakage introduced by reorganizing some
|
||
non-reorganizable data structures. From Ken Pettit.
|
||
- AT45: In at45db_bwrite , the buffer is not increased when writing
|
||
more than 1 page. Sourceforge bug #34.
|
||
|
||
* Binary Formats:
|
||
|
||
- ELF relocations. Some relocation types do not have a named symbol
|
||
associated with them. The design did not account for that case.
|
||
- ELF Loader: Critical bugfix.. BSS was not being cleared.
|
||
|
||
* Memory Management:
|
||
|
||
- Granule allocator initialization uses wrong allocator to setting
|
||
aside kernel memory.
|
||
- Add a flag to group structure: If the group is created by a kernel
|
||
thread, then all resources in the group must be privileged.
|
||
|
||
* Cryptogrphic Support:
|
||
|
||
- crypto/cryptodev.c: Path segments reversed in include file path. Noted by Brennan Ashton.
|
||
|
||
* Common Drivers:
|
||
|
||
- Common CAN upper-half: In can_txdone, waiters on the semaphore
|
||
should be informed regardless of the return value of can_xmit. First
|
||
it returns -EIO if there are no new packets, and second the
|
||
information of the waiters is about the last transferred packet.
|
||
From Daniel Lazlo Sitzer.
|
||
|
||
* ARM:
|
||
|
||
- System Calls: Fix a typo in system call when fetching parameter from
|
||
the stack: regs[REG_PC]+4 is the address, not regs[REG_PC+4].
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 F401 UART: Correct support for USART6 on this chip. From
|
||
Freddie Chopin.
|
||
- STM32 FLASH fixes: use size_t instead of uint16_t, make interface
|
||
more generic. From Freddie Chopin.
|
||
- Fix for UART7 and UART8 on STM32 clock enable from Aton.
|
||
- CAN: At the end of the interrupt handler, the interrupts were being
|
||
disabled, if all packets have been transferred when the interrupt
|
||
handler was invoked. This is problematic, because the interrupt
|
||
handler calls can_txdone of the upper half which can enqueue new
|
||
packets to send. Removed the block altogether, because can_txdone
|
||
calls can_xmit which disables interrupts if there are no new packets
|
||
to send. From Daniel Lazlo Sitzer.
|
||
- Additional STM32 CAN correction suggested by Max Holtzberg.
|
||
|
||
* STMicro ST32 Boards:
|
||
|
||
- configs/mikroe-stm32f4: Fix a few compile bugs and minor corrections
|
||
to the mikroe-stm32f4 configuration source. From Ken Pettit.
|
||
|
||
* ARM9/ARMv7-A:
|
||
|
||
- System Calls: Fix ARM7/9 and Cortex-A SYSCALLs: For threads in SVC
|
||
mode, the SVC instructions clobbers R14. This must be taken account
|
||
in the inline assembly.
|
||
- Task Setup: All tasks, even user mode tasks, must start in
|
||
supervisor mode until they get past the start-up trampoline.
|
||
- ARMv7-A: Modify up_fullcontextrestore() for CONFIG_BUILD_KERNEL.
|
||
It changed CPSR while in kernel. That will crash if the new CPSR is
|
||
user mode while executing in kernel space. Fixed by adding a
|
||
SYS_context_restore system call. There is an alternative, simpler
|
||
modification to up_fullcontextrestore() that could have been done:
|
||
It might have been possible to use the SPSR instead of the CPRSR and
|
||
then do an exception return from up_fullcontextrestore(). That
|
||
would be more efficient, but I never tried it.
|
||
|
||
* Atmel SAM3/4 Boards:
|
||
|
||
- SAM3X/Arduino Due: Fix typo in sam3x_periphclks.h; add SCLK
|
||
definitions to board.h header file. From Fabien Comte.
|
||
- SAM3 RTT: Only SAM4 family has RTTDIS bit in the MR register.
|
||
SourceForge bug #33 from Fabien Comte.
|
||
|
||
* C Library:
|
||
|
||
- sscanf(): NuttX libc tried to guess how many characters to parse,
|
||
extracted them into a buffer, then ran strtol() on that buffer.
|
||
That guess was often wrong. A better approach would be to call
|
||
strtol() directly on the input data, using the endptr return value
|
||
to determine how many characters to skip after parsing. From Kosma
|
||
Moczek.
|
||
- Corrected atan2 implementations from Denis Arnst.
|
||
- Change to lib_dtoa() to fix precision error from trailing zeroes.
|
||
From Bob Doiron.
|
||
|
||
* Applications:
|
||
|
||
- Fix NSH PS command: If there are no arguments, it could print
|
||
garbage for argument list.
|
||
|
||
* Configuration/Build System:
|
||
|
||
- Null Example: Need to include config.h it order know if this is or
|
||
is not a kernel build. This problem still exists in several other
|
||
file that may need to define main().
|
||
|
||
NuttX-7.6
|
||
---------
|
||
|
||
The 106th release of NuttX, Version 7.6, was made on November 26, 2014,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-7.6.tar.gz and
|
||
apps-7.6.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:
|
||
|
||
- Moved name semaphore and message queue support out of the OS and
|
||
into the VFS. These improves the architecture by unifying the
|
||
management of named resources, removes redundant resource management
|
||
logic, and makes named semaphores and message queues visible in the
|
||
file system. By default, these are visible at /var/lock and
|
||
/var/mqueue.
|
||
- Add SIGPOLL for use as part of the AIO implementation.
|
||
- Remove CONFIG_MAX_TASK_ARGS configuration. There is now no
|
||
predetermined limit on the number of arguments that may be passed
|
||
to a new task on start-up.
|
||
|
||
* Work queues:
|
||
|
||
- Add support for priority inheritance on the low priority worker
|
||
queue. That is, if a higher priority thread has scheduled work, the
|
||
priority of the low priority worker thread(s) will be boost to the
|
||
priority of the queuing thread. At work is performed at at least
|
||
thread priority of the scheduling thread. If there are multiple
|
||
worker threads, then all threads get reprioritized. Currently
|
||
only implemented for AIO.
|
||
- Add support for multiple low-priority work queue threads. This
|
||
allows individual worker threads to block indefinitely for I/O as
|
||
necessary without halting the entire work queue.
|
||
|
||
* VFS/General Drivers:
|
||
|
||
- Implement create() (as a macro).
|
||
- Add pread() and pwrite(). Also added pread() and pwrite()
|
||
system calls.
|
||
- AIO: Add aio_read(), aio_write(), aio_return(), aio_error(),
|
||
aio_suspend(), aio_canel(), lio_listio(), and aio_fsync(). This
|
||
logic minimizes the creation of new threads by using the new
|
||
features also added to the low priority work queue with this
|
||
release. It uses the new low priority worker thread interface
|
||
to adjust the priority of the worker thread according to the
|
||
priority of the AIO client thread
|
||
- Implement standard syslogmask() to control logging (also removing
|
||
the non-standard syslog_enable()).
|
||
|
||
* File Systems/Block Drivers/MTD:
|
||
|
||
- Extend MTD support to the M25P16. From S<>bastien Lorquet.
|
||
|
||
* Drivers:
|
||
|
||
- BCH (Block-to-Character): Add support for seeking in BCH. From
|
||
S<>bastien Lorquet.
|
||
|
||
* Graphics Support/Graphics-Related Drivers:
|
||
|
||
- Add support for a generic ILI9341 LCD driver. From Marco Krahl.
|
||
- Add ANSI/VT100 foreground and background color commands.
|
||
- Add driver for ST7565 LCD that works with NHD-C12864KGZ display. From Pierre-noel Bouteville.
|
||
|
||
* Networking:
|
||
|
||
- Verify that multiple networks can be supported.
|
||
- Add support for the case where there are multiple networks: One
|
||
being Ethernet and the other not (SLIP, PPP, ...). The primary
|
||
difference from the standpoint of the stack is that (1) ARP may or
|
||
may not be necessary, (2) the size of the link layer header will
|
||
vary, and (3) different MTUs and TCP receive windows may be used
|
||
with each link. Suggested by Brennan Ashton.
|
||
- Extensions to UDP and TCP connection structures for the case of
|
||
multiple networks. In this case, assigned port numbers only have to
|
||
be unique with respect to the IP address. So, for example, you
|
||
could have multiple port 80's, one on each network.
|
||
|
||
* Host Simulation:
|
||
|
||
- Removed the old, strange up_stdio.c and implemented a simulated UART
|
||
driver to provide the console input. The new logic starts a
|
||
separate, Linux domain pthread to read the console input in raw mode
|
||
and provides the incoming data to NuttX via standard NuttX domain
|
||
IPCs.
|
||
- Add support for 64-bit longjmp/setjmp in simulator platform. This
|
||
will permit operation of the simulation natively on a 64-bit
|
||
platform.
|
||
|
||
* ARMv7-M:
|
||
|
||
- Add ARMv7-M CMSIS ITM header file and library. From Pierre-noel
|
||
Bouteville.
|
||
- Add ARMv7-M CMSIS DWT and TPI header files. From Pierre-noel
|
||
Bouteville.
|
||
- Add ARMv7-M support to use ITM for SYSLOG debug output. Includes
|
||
logic from Pierre-noel Bouteville.
|
||
|
||
* Atmel SAM3/4 Drivers:
|
||
|
||
- Add support for SAM3/4 basic serial TERMIOS and flow control.
|
||
There are issues with IFLOW control: PDC or DMAC support is
|
||
required.
|
||
|
||
* Atmel SAM3/4 Boards:
|
||
|
||
- SAM4E-EK: Add support for PHY interrupt.
|
||
|
||
* Atmel SAMA5D Boards:
|
||
|
||
- SAMA5D3-Xplained: Add a configuration that provides a simple test
|
||
for the EMAC and GMAC on the SAMA5D3 working together.
|
||
- SAMA5D4-EK: Add a configuration that provides a simple test for the
|
||
EMAC0 and EMAC1 on the SAMA5D4 working together.
|
||
|
||
* Freescale KL:
|
||
|
||
- Add an I2C header file for the Freescale KL family. From Alan
|
||
Carvalho de Assis.
|
||
|
||
* NXP LPC32xx:
|
||
|
||
- Add support for tickless operation using the NXP LPC43xx. From
|
||
Brandon Warhurst.
|
||
|
||
* SiLabs EFM32:
|
||
|
||
- Add a basic port for the SiLabs EFM32 family. Includes many files
|
||
contributed by Pierre-noel Bouteville .
|
||
|
||
* SiLabs EFM32 Boards:
|
||
|
||
- Add board support for the EFM32 Gecko Starter Kit.
|
||
- Add board support for the Olimex EFM32G8809128 STK. NOTE: I am
|
||
unable to test this configuration due to tool-related issues.
|
||
- Add board support for the SiLbas EFM32GG Giant Gecko Starter kit.
|
||
|
||
* STMicro STM32:
|
||
|
||
- Add support for the STM32 F411RE from Serg Podtynnyi.
|
||
- Add support for the STM32F103RG. From Murilo Ponte.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 F4: Add logic that implement true high speed support for the
|
||
STM32 OTGHS peripheral and concurrent support for both LS and HS
|
||
OTG. New OTGHS drivers provided for both device and host. From
|
||
Brennan Ashton.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32 Nucleo-F411RE: Extend this board configuration to also support
|
||
the Nucleo-F411RE. From Serg Podtynnyi.
|
||
- Add support for the STM32F429i Discovery's LCD (SPI based). From
|
||
Marco Krahl.
|
||
- configs/stm32f100rc_generic: Removed this generic board configuration.
|
||
I have decided to stop support of generic board configurations. Generic
|
||
board configurations do not provide support for any specific hardware
|
||
but can be useful only if there are not other examples for the setup
|
||
for a particular architecture. Not the case here.
|
||
|
||
* C Library:
|
||
|
||
- Add a mostly bogus wchar.h header file. This file is mostly bogus
|
||
because none of the wide character operations are currently
|
||
supported in the Nuttx C library. The file does provide the wchar_t
|
||
types needed by some software, however.
|
||
- Add isatty() function. From Alan Carvalho de Assis.
|
||
- Add mktemp(), mkstemp(), tmpnam() and tempnam().
|
||
|
||
* Configuration/Build System:
|
||
|
||
- Add a PRELINK macro to Config.mk. From Kriegleder.
|
||
- compiler.h: Defines inline functions as not instrumented - this is
|
||
relevant for anyone using instrumentation. From Lorenz Meier.
|
||
|
||
* Applications:
|
||
|
||
- apps/interpreter/bas: Added in the Michael Haardt's BAS 2.4 adapted
|
||
for use by NuttX by Alan Carvalho de Assis. Includes support for
|
||
VT100 terminals and color commands.
|
||
- Examples: Added bastest/ which holds a special version of Michael
|
||
Haardt's BAS 2.4 test files adapted for use by NuttX on a ROMFS file
|
||
system.
|
||
- Examples: Add a simple UDP relay bridge for testing configurations
|
||
with multiple networks. Includes a host-side test driver for
|
||
testing the bridge.
|
||
- Netutils: Add implementation of timeouts for the netutils webclient.
|
||
From Brennan Ashton
|
||
- NSH: Add support for a custom NSH ROMFS startup image header file
|
||
location. From Martin Lederhilger.
|
||
- OS test: Add a simple test of named semaphores.
|
||
- OS test: Add AIO test case in OS test.
|
||
|
||
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:
|
||
http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
|
||
|
||
* XMega: There are some fragments in place for an XMega port. That
|
||
port has not really started, however.
|
||
|
||
* Galileo: Similarly, there are fragments in place for an Intel Galileo
|
||
port. The port not been started in earnest either.
|
||
|
||
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):
|
||
|
||
I ran cppcheck against the entire code base and correct many latent bugs
|
||
including things as serious as memory leaks, two locations where interrupts
|
||
were be disabled but never re-enabled, and errors in the Tickless mode of
|
||
operation. My thanks to the developers of cppcheck! I am impressed!
|
||
|
||
* Core OS:
|
||
|
||
- vfork(): Now that arguments are kept on the stack, the way that
|
||
arguments are passed from parent to child in vfork() must change.
|
||
This bug has always been present, but was not visible with the
|
||
old strdup() way of passing arguments.
|
||
- vfork() problem: If we get to vfork() via system call, then we
|
||
need to clone some system call information so that the return form
|
||
the cloned system call works correctly.
|
||
- Fixes to tickless operation code, especially in alarm mode. From
|
||
Brandon Warhurst.
|
||
- Fix an important bug in the watchdog timer creation logic.
|
||
- Calling mq_timedreceived() with immediate timeout was getting stuck
|
||
and not timing out. Immediate timeout is achieved by setting absolute
|
||
timeout value to past time, for example abstime={ .tv_sec=0,
|
||
.tv_nsec=0 }. However absolute time was converted to relative time
|
||
using unsigned integer arithmetic and resulted large ticks count by
|
||
clock_abstime2ticks, instead of expected negative ticks value.
|
||
Change corrects clock_abstime2ticks() to return negative ticks, if
|
||
absolute time is in the past. From Jussi Kivilinna.
|
||
|
||
* Memory Management:
|
||
|
||
- Fix a place in the memory manager where it explicitly assumed that
|
||
the size of a pointer is 4 bytes. That assumption was OK if the
|
||
actual size is smaller but made the heap unstable when used with
|
||
the x86_64 host simulation.
|
||
- Granule Allocator: If the INTR granule allocator mode is enabled,
|
||
there is no semaphore to destroy. From Lorenz Meier.
|
||
|
||
* Networking:
|
||
|
||
- Network routing: I don't think that the net_route() function has
|
||
ever worked correctly. The source IP was updated in the match
|
||
struct instead of the route IP. From Brennan Ashton.
|
||
- Move and rename IP header flag definitions. The problem fixed here
|
||
is that there IP header flag definitions were not available when TCP
|
||
was disabled. The IP flags are used in ICMP and IGMP.
|
||
- Network routing: Refuse to perform routing table lookups for the
|
||
Broadcast IP address. From Brennan Ashton.
|
||
- Network routing: Add logic to netdev_findbyaddr() to return the
|
||
correct network device for the case where a broadcast
|
||
address is used. This change caused trivial ripples through other
|
||
files because additional parameters are required for
|
||
netdev_findbyaddr() when CONFIG_NET_MULTINIC.
|
||
|
||
* File Systems/Block Drivers/MTD:
|
||
|
||
- NXFFS Dump: Fix problems with redefinitions of fdbg macro. With the
|
||
fix to the syslog prototype, a LOG priority must now be the first
|
||
parameter. Fixed by replacing all occurrences of fdbg with
|
||
syslog(LOG_DEBUG, and eliminating the macro redefinitions. Noted
|
||
by Sebastien Lorquet.
|
||
- poll() was not waking up from signals (for example mq_notify()
|
||
events). From Jussi Kivilinna.
|
||
- poll(): Add proper handling for sem_timedwait errnos. From Jussi
|
||
Kivilinna.
|
||
- include/nuttx/fs/fs.h: Fix typo in conditional compilation. From
|
||
Alan Carvalho de Assis.
|
||
|
||
* Graphics/Graphic-Related Drivers:
|
||
|
||
- Remove warnings when CONFIG_NXTK_BORDERWIDTH is set to zero. From
|
||
Pierre-Noel Bouteville.
|
||
|
||
* Common Drivers:
|
||
|
||
- Make standard syslog and vsyslog POSIX compliant (also modify
|
||
non-standard syslog functions for compatibility).
|
||
- R/W buffering: Fix typo that can cause compilation error.
|
||
|
||
* Atmel SAM3/4:
|
||
|
||
- SAM4S: Add missing SPI0 clock configuration macro for the SAM4S. From spasbyspas.
|
||
|
||
* Atmel SAM3/4 Drivers:
|
||
|
||
- SAM4E-EK: Fix an error in a USART1 pin number.
|
||
|
||
* Atmel SAMA5D3/4 Drivers:
|
||
|
||
- SAMA5DF4: Fix several typos that will prevented EMAC1 from
|
||
initializing properly.
|
||
|
||
* NXP LPC43xx:
|
||
|
||
- Fixes to allow compile of lpc43_gpioint.c. From Brandon Warhurst.
|
||
|
||
* STMicro STM32:
|
||
|
||
- Add missing ADC pinmap definitions for the STM32 F103R from Martin
|
||
Lederhilger.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 EXTI: Correct STM32 RTC EXTI bit definition. From Lazlo.
|
||
- STM32 IWDG, WWDG, DBGMCU: Fix watchdog stop bit usage. From Lazlo.
|
||
- STM32 OTGFS: Correct a typo in the STM32 OTGFS register bit definitions.
|
||
|
||
* ARM:
|
||
|
||
- ARM up_internal.h: Add protection from C++ name mangling in the
|
||
ARM up_internal.h. From Lorenz Meier.
|
||
|
||
* MicroChip PIC32MX:
|
||
|
||
- PIC32MX7: DEVCFG0 bit 2 must be set. Writing bit 2 as zero can
|
||
brick the CPU on some versions. From Cris Kvist.
|
||
|
||
* C Library:
|
||
|
||
- The implementation of access() as vararg macro has the issue that
|
||
any function call with the same name (even in a C++ class) will
|
||
match with it and result in a compile error. Replaced with a small
|
||
function. This resolves the compile issue, and shouldn<64>t have
|
||
negative side effects for users of the function. From Lorenz Meier.
|
||
- The definition of strncpy() is that empty space should be zero-
|
||
filled, the change adds the zero filling (See the POSIX spec here:
|
||
http://pubs.opengroup.org/onlinepubs/7908799/xsh/strncpy.html). From
|
||
Lorenz Meier.
|
||
- limits.h: Remove the definition of INT_FAST32_MIN which is already
|
||
defined in stdint.h (the correct location). From Lorenz Meier.
|
||
|
||
* Applications:
|
||
|
||
- apps/: Correct everything under apps to use the corrected syslog
|
||
interfaces. Remove any non-portable uses of syslog.
|
||
- NSH: Fix ls -l output for regular files.
|
||
- NSH: Fix reversed in/out file closing in DD command when an error
|
||
occurs. From Ken Pettit.
|
||
- NSH: Add logic to restart the console wait if an error occurs
|
||
while reading from the console. In USB console startup, the logic
|
||
must be able to open the USB serial and receive 3 newlines.
|
||
However, it the USB driver is disconnected or otherwise fails before
|
||
the 3 newlines are received, the receive loop becomes a killer,
|
||
infinite loop, CPU hog. Noted by spasbyspas.
|
||
- Netutils: Fix memcpy of host address in netlib_gethostaddr(). From
|
||
Brennan Ashton.
|
||
- Netutils: If you make a DNS request before the DNS address it would
|
||
cause an assertion. The state of the IP setting is not something the
|
||
application should be aware of, it should only be concerned with
|
||
whether or not the name was resolved. From Brennan Ashton.
|
||
- Netutils: Fix md5 hashing when digest[$i] islower that 16. From
|
||
Sergey.
|
||
- Stack Monitor: Fix compile problems introduced when the syslog()
|
||
prototype changed; Also update Makefile for kernel build From
|
||
Radoslaw Adamczyk.
|
||
- Examples: Update NxTerm makefile for kernel-build issues. From
|
||
Radoslaw Adamczyk.
|
||
- Examples: Fixes to keypadtest from Pierre-Noel Bouteville.
|
||
- Examples: These examples all set the IP address of eth1 but the
|
||
netmask and gateway of eth0 if DHCP is enabled: discover, tcpecho,
|
||
webserver, xmlrpc. That can't be right.
|
||
|
||
NuttX-7.7
|
||
---------
|
||
|
||
The 107th release of NuttX, Version 7.7, was made on January 26, 2015,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-7.7.tar.gz and
|
||
apps-7.7.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:
|
||
|
||
- Task exit handling: Add logic to clean up after task_delete() or
|
||
pthread_cancel() if the task happens to be waiting on a semaphore
|
||
when was is cancelled.
|
||
- Stack coloration: Removed CONFIG_DEBUG_STACK and replaced it with
|
||
CONFIG_STACK_COLORATION that does the same thing but without enabling
|
||
debug. From David Sidrane.
|
||
|
||
* Common Drivers:
|
||
|
||
- Discrete joystick driver: Added an interface definition and upper
|
||
half driver for a discrete joystick device (where X/Y changes are
|
||
indicated with button presses).
|
||
- Analog joystick driver: Added an interface definition and upper
|
||
half driver for a analog joystick device (where X/Y positions are
|
||
sampled, numeric values).
|
||
- Add driver support for the ADXL345 accelerometer. From Alan
|
||
Carvalho de Assis
|
||
- Generic serial driver: Add watermark levels to the serial RX flow
|
||
control logic. Modify the rxflowcontrol method to accept the number
|
||
of bytes in the buffer and a boolean indication of which watermark
|
||
was crossed.
|
||
|
||
* File Systems/Block Drivers/MTD:
|
||
|
||
- Add procfs write support. From Ken Petit.
|
||
- Implemented wear-leveling in the SmartFS. From Ken Pettit.
|
||
- MMC/SD Interface: MMCSD SDIO: Add support for a new
|
||
SDWAIT_WRCOMPLETE condition. The previous logic used a busy-wait
|
||
loop to poll the card R1 status to determine when the card was
|
||
ready for the next transfer. That busy-wait can be quite long --
|
||
up to hundreds of milliseconds. An alternative is to look the SD D0
|
||
pin which will change state when the card is no longer busy. This
|
||
change avoids the busy-wait poll by reconfiguring the SD D0 pin as a
|
||
GPIO interrupt, then waiting for the card to become ready without
|
||
taking up CPU cycles. From David Sidrane.
|
||
|
||
* Drivers:
|
||
|
||
- Add support for a generic EEPROM driver that accesses EEPROM as a
|
||
character driver (vs. an MTD driver). From S<>bastien Lorquet.
|
||
|
||
* Graphics Support:
|
||
|
||
- Many new fonts converted for use with NuttX and added by
|
||
Pierre-noel Bouteville
|
||
|
||
* Networking:
|
||
|
||
- IPv4 support is now conditioned on CONFIG_NET_IPv4.
|
||
- Implemented and verified IPv6 support conditioned on
|
||
CONFIG_NET_IPv6. Either IPv4 or IPv4 or both may be selected.
|
||
Sockets, of course, must be bound to one or the other. Added support
|
||
for IPv6 ioctls to manipulate IP addresses.
|
||
- Integrated support for ICMPv6 and the ICMPv6 Neighbor Discovery
|
||
Protocol and ICMPv6 ECHO request/reply needed to support ping logic.
|
||
- All Ethernet drivers: Modified to support. Most, however, are
|
||
still missing address filtering logic required for ICMPv6 Neighbor
|
||
Discovery Protocol. See
|
||
http://www.nuttx.org/doku.php?id=wiki:howtos:ipv6#ethernet_driver_requirements
|
||
- Also added missing raw/packet socket support to all Ethernet drivers.
|
||
|
||
* Host Simulation:
|
||
|
||
- Add a configuration build and test the Traveler first person game
|
||
using the simulator.
|
||
- Add an X11 mouse-based simulation of an analog joystick device
|
||
|
||
* Atmel SAMA5D Boards:
|
||
|
||
- Add analog Joystick shield support for the SAMA5D3 Xplained board.
|
||
|
||
* Freescale KL Drivers:
|
||
|
||
- Add GPIO interrupt capability for the KL architecture. From Alan
|
||
Carvalho de Assis
|
||
|
||
* Freescale KL Boards:
|
||
|
||
- Freedom-KL25Z: Add board support for the ADXL345 accelerometer. From
|
||
Alan Carvalho de Assis
|
||
- Freedom-KL25Z: Update the Freedom KL25Z board CC3000 support to use
|
||
the current CC300 interfaces. From Alan Carvalho de Assis
|
||
|
||
* NXP LPC43xx Boards:
|
||
|
||
- A port of NuttX to the LPC4357-EVB from Toby Duckworth. This port
|
||
is a leverage of the LPC3330-Xplorer port and still have a some
|
||
misinformation from that port that needs to be updated for the
|
||
LPC4357-EVB.
|
||
|
||
* SiLabs EFM32 Drivers:
|
||
|
||
- Serial: Add support for serial termios TCGET and TCSET. For the
|
||
moment, only set/get speed is implemented. From Pierre-noel
|
||
Bouteville.
|
||
- RMU: Add support for the EFM32 reset management unit (RMU). From
|
||
Pierre-noel Bouteville.
|
||
|
||
* SiLabs EFM32 Boards:
|
||
|
||
- Add support for timer/PWM on the EFM32GG. From Pierre-noel
|
||
Bouteville
|
||
|
||
* STMicro STM32:
|
||
|
||
- Enable support for the STM32 F102. From the PX4 team.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 F429 LTDC: Add interface to perform hardware accelerated layer
|
||
operation. Provides access to a reference of a specific ltdc layer.
|
||
From Marco Krahl
|
||
- STM32 F429 LTDC support: Implemented LTDC framebuffer support for the
|
||
generic nuttx framebuffer interface. Also implements the interface to
|
||
perform hardware accelerated layer operation by the ltdc controller
|
||
and dma2d controller later. From Marco Krahl.
|
||
- STM32: Add support for the internal low speed clock (LSI) as a
|
||
source of the RTC clock. Some boards do not have the external
|
||
32kKhz oscillator installed, for those boards we must fallback to
|
||
the crummy internal RC clock. From Kevin Hester
|
||
- STM32 SDIO: Add support for the new SDWAIT_WRCOMPLETE condition.
|
||
From David Sidrane
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- Add a discrete Joystick support for the STM3210E-EVAL.
|
||
- Add analog Joystick shield support for the Nucleo F4x1RE boards.
|
||
- STM32 F429i-Disco: Add support for initializing of the ltdc
|
||
controller and the lcd device connected on the stm32f429i-disco.
|
||
From Marco Krahl.
|
||
- Removed the px4-v2_upstream configuration. This was not the
|
||
official configuration for the PX4 board and has led to confusion
|
||
by NuttX users. The board configuration also requires some ongoing
|
||
maintenance and customization to support ongoing PX4 testing and
|
||
evaluation. It is best retained the PX4 repositories where it can
|
||
be properly maintained and not in the upstream NuttX repository.
|
||
|
||
* TI Tiva:
|
||
|
||
- Add support for the TI Tiva TM4C 129X family. Some unverified
|
||
support for the TM4C 1294 is also in place.
|
||
|
||
* TI Tiva Drivers:
|
||
|
||
- Added support for Tiva I2C driver. Verified on the Tiva TM4C123G
|
||
and TM4C129X.
|
||
- Added a Tiva TM4C129X Ethernet driver.
|
||
- Add a timer library for generic support of Tiva timers
|
||
- Add a driver lower half for drivers/timer.c. Only 32-bit periodic
|
||
timers are supported. This provides userspace access to timers.
|
||
|
||
* TI Tiva Boards:
|
||
|
||
- TM4C123G Launchpad: Add initialization logic for an external AT24
|
||
EEPROM. This is intended only to support testing of the Tiva I2C
|
||
driver.
|
||
- Board support for the Tiva DK-TM4C129x Connected Development Kit.
|
||
- DK-TMC129X: Add an IPv6-enabled NSH configuration.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- Added support for a variadic ioctl() function. The ioctl()
|
||
interface is a non-standard, Unix interface. NuttX has always used
|
||
the older, three-parameter version. Most contemporary systems now,
|
||
however, use a variadic form of the ioctl() function. Added an
|
||
option to insert a shim layer to adapt the three-parameter ioctl()
|
||
to use the variadic interface form. Internally, the ioctl handling
|
||
is the same three-parameter logic. The only real complexity to the
|
||
shim is in how the system calls must be handled.
|
||
- Added sys/custom_file.h. Used when CUSTOM_FILE_IO is define and
|
||
avoids re-definition errors about the FILE define. From Thomas
|
||
Gruber via the PX4 repository
|
||
- Add CRC8 support to the C library. From Ken Pettit.
|
||
- math.h: Added support for the expm1 functions. From Brennan Ashton
|
||
|
||
* Applications:
|
||
|
||
- apps/examples/djoystick: Add a test of the discrete joystick
|
||
driver.
|
||
- apps/examples/ajoystick: Add a test of the analog joystick
|
||
driver.
|
||
- apps/examples/ltdc: Add ltdc test example. From Marco Krahl
|
||
- apps/system/lm75: Add a tiny application to read the temperature
|
||
from an LM-75 (or compatible) temperature sensor
|
||
- apps/examples/timer: Add a trivial test of the timer driver
|
||
|
||
- apps/system/cu: Add a minimalist implementation of the 'cu'
|
||
terminal program (part of Taylor UUCP for ages). Using it, you can
|
||
simply open a serial port and interact with it. Using '~.' you can
|
||
leave the terminal program and drop back to nsh. This might come
|
||
in handy for people that have e.g. GSM modems, GPS receivers or
|
||
other devices with text based serial communications attached to
|
||
their Nuttx systems. From Harald Welte
|
||
- apps/interpreters/micropython: A port of Micro Python to NuttX.
|
||
Contributed by Dave Marples
|
||
|
||
- apps/netutils/dnsclient: Can select to be either IPv4 or IPv6, but
|
||
not both (IPv6 still does not compile)
|
||
- apps/netutils/netlib: Add new library functions to manipulate IPv6
|
||
addresses.
|
||
- apps/examples/nettest: Update test so that it can be used to test
|
||
IPv6 TCP sockets
|
||
- apps/examples/udp: The UDP test example has been extend to support
|
||
IPv6 domain sockets
|
||
|
||
- apps/nshlib: Add logic to initialize IPv6 addresses
|
||
- apps/nshlib: Add the ping6 command to support checking IPv6 networks.
|
||
- apps/nshlib: Clean up network status presentation for IPv6
|
||
|
||
Efforts In Progress. The following are features that are partially
|
||
implemented but present in this release. They are not likely to be
|
||
completed soon.
|
||
|
||
* IPv6. While basic IPv6 support was completed in NuttX-7.7,
|
||
there are lingering issues with getting IPv6 compatibility
|
||
with applications and network utilities.
|
||
|
||
* 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:
|
||
http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
|
||
|
||
* XMega: There are some fragments in place for an XMega port. That
|
||
port has not really started, however.
|
||
|
||
* Galileo: Similarly, there are fragments in place for an Intel Galileo
|
||
port. The port probably will not happen (I gave my Galileo board away!).
|
||
|
||
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:
|
||
|
||
- POSIX message queues: msg type should be char * not void * in
|
||
mq_send, mq_timedsend, mq_receive, and mq_timedreceive. Noted by
|
||
Pierre-Noel Bouteville
|
||
- POSIX message queues: In message queue creation return ENOSPC error
|
||
if size exceeds the configured size of pre-allocated messages; Use
|
||
ENOSPC vs ENOMEM per OpenGroup.org. From Pierre-Noel Bouteville.
|
||
- Task Names: strncpy() will not copy the terminating \0 into the
|
||
destination if the source is larger than the size of the
|
||
destination. Ensure that the last byte is always zero and let
|
||
strncpy() only copy CONFIG_TASK_NAME_SIZE bytes. The issue of
|
||
unterminated names can be observed in ps when creating a pthread
|
||
while CONFIG_TASK_NAME_SIZE is set to 8. From Daniel Willmann
|
||
|
||
* Memory Management:
|
||
|
||
- Granule allocator: Fixes some issues found by the PX4 team using
|
||
Coverity. From Pavel Krienko
|
||
|
||
* Networking:
|
||
|
||
- Several fixes correcting issues with the CC3000 networking. From
|
||
Jussi Kivilinna
|
||
- CC3000 Fix: Data can be unaligned. When dereferenced as an input
|
||
ntosh(), a bad value is returned. Reported by Alan Carvalho de
|
||
Assis
|
||
- Correct naming of fields in struct sockaddr_in6: sin6_port and
|
||
sin6_family, not sin_port and sin_family.
|
||
- accept(): Correct the value returned by accept() in the case where
|
||
net_lockingwait() is called. It was returning -1 and losing the
|
||
errno value. Noted by Rony Xln
|
||
|
||
* Common Drivers:
|
||
|
||
- Loop device should return -EINTR is interrupted by a signal.
|
||
- M25P serial flash driver: Add subsector size of the M24P16 part.
|
||
From Lazlo
|
||
- Common serial driver: In case a thread is doing a blocking operation
|
||
(e.g. read()) on a serial device, while it is being terminated by
|
||
pthread_cancel(), then uart_close() gets called, but the semaphore
|
||
is still blocked. This means that once the serial device is opened
|
||
next time, data will arrive on the serial port (and driver
|
||
interrupts handled as normal), but the received characters never
|
||
arrive in the reader thread. The problem was fixed by re-
|
||
initializing the semaphores on the last uart_close() on the device.
|
||
From Harald Welte
|
||
- Pipes: Fixes some issues found by the PX4 team using Coverity. From
|
||
Pavel Krienko
|
||
- CDC/ACM driver: Fixes some issues found by the PX4 team using
|
||
Coverity. From Pavel Krienko
|
||
|
||
* NXP LPC43xx Drivers:
|
||
|
||
- LPC4357: Changes required to get USART 2 & 3 working on the
|
||
lpc4357-evb. From Toby Duckworth.
|
||
|
||
* STMicro STM32:
|
||
|
||
- Several fixes correcting issues with the STM32 header files from
|
||
Jussi Kivilinna
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- Ported Tridge's STM32 I2C noise resilience logic from the PX4
|
||
repository.
|
||
- STM32 F2 and F4: Set the GPIO_SPEED_50MHz on all F2 and F4 SPI pin
|
||
configurations. This is based on an F411 SPI1 errata but the fixed
|
||
is generalized to all SPI and all F2 and F4. Discovered and fixed
|
||
by Sebastien Lorquet.
|
||
- Fix for STM32 OTGHS device driver working in FS mode. From Ken
|
||
Pettit.
|
||
- For STM32 OTG HS DEV (in FS mode): Disable ULPI clock enable in RCC
|
||
AHB1 Register. If Both ULPI and the FS clock enable bits are set in
|
||
FS mode, then the ARM never awakens from WFI due to a chip issue.
|
||
This is only an issue if you are using the internal PHY. From Ken
|
||
Pettit.
|
||
- STM32 F429 LTDC: Add missing clut register definition. From Marco
|
||
Krahl
|
||
- STM32 serial: fix declaration and definition of up_receive() and
|
||
up_dma_receive() to match fields in the interface definition of
|
||
struct uart_ops_s. From Freddie Chopin.
|
||
|
||
* TI Tiva Drivers:
|
||
|
||
- Fix Tiva IRQ control logic; was limited to only 64 IRQs. That is a
|
||
problem for higher numbered IRQs on many platforms
|
||
|
||
* C Library/Header Files:
|
||
|
||
- avsprintf(): Fix a bug in usage of va_list on x86. On x86,
|
||
va_list is a pointer to a single copy on the stack. avsprintf()
|
||
calls lib_vsprintf() twice and so traverses the va_list twice using
|
||
va_start. va_start modifies that single copy on the stack so that
|
||
the second call to lib_vsprintf() fails. This appears to be an
|
||
issue with x86 only so far.
|
||
- stdint.h: Don't use hex values to specify minimum values of fixed
|
||
width, signed values. Hex values are inherently unsigned and not
|
||
usable for this purpose in all contexts.
|
||
- strncpy(): Would trash a lot of memory if n == 0. From Yasuhiro
|
||
Osaki.
|
||
- sscanf(). Accept %X and %F as well as %x %f as a format specifiers.
|
||
From S<>bastien Lorquet
|
||
|
||
* Applications:
|
||
|
||
- apps/examples/romfs: fix romfs example builtin app registry issue.
|
||
From Librae
|
||
- apps/system/cdcacm, composite and usbmsc: Fix some strangely placed
|
||
conditional compilation. Looks like an automated update went awry
|
||
- apps/netutils/telnetd: Add protection when CONFIG_SCHED_HAVE_PARENT
|
||
is enabled: Call sigaction with SA_NOCLDWAIT so that exit status is
|
||
not retained (no zombies) and block receipt of SIGCHLD so that
|
||
accept is not awakened by a signal. If accept() is awakened by a
|
||
signal, do not do anything crazy like exit. Most from Rony Xln
|
||
- apps/nshlib/: NSH TFTP get command: Wrong file name used for the
|
||
destination. From Lazlo
|
||
|
||
NuttX-7.8
|
||
---------
|
||
|
||
The 108th release of NuttX, Version 7.8, was made on February 11, 2015,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-7.8.tar.gz and
|
||
apps-7.8.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
This release is primarily a bugfix release for the NuttX-7.7 version that
|
||
was release just two weeks prior. That release included substantial
|
||
modifications in the NuttX networking to accommodate support for IPv6. This
|
||
release follows close behind NuttX-7.7 in order to correct some the problems
|
||
discovered in that networking code. This release does, however, include a
|
||
small number of new features and bug fixes unrelated to NuttX networking.
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core OS:
|
||
|
||
- Tickless Mode: added limit of maximum delay that can be request
|
||
by the scheduler tickless logic. This is necessary so that the
|
||
tickless logic does not request a delay beyond the capability of the
|
||
underlying hardware. From Macs Neklyudov.
|
||
|
||
* Common Drivers:
|
||
|
||
- VFS Unlink: Add an unlink method to both the character and block
|
||
driver interface. This is important because if the driver inode is
|
||
unlinked and there are no open references to the driver, then the
|
||
driver resources will be stranded. On the unlink call, the driver
|
||
has the opportunity (1) check if there an any open references, and
|
||
if not, (2) free the driver resources.
|
||
- Pipes and FIFOs: Implement the unlink method. If the pipe/FIFO is
|
||
unlinked, it will marked the pipe/FIFO as unlinked. If/when all
|
||
open references to the driver are closed, all of the driver
|
||
resources will be freed.
|
||
- Added an option to use the syslog'ing device as the system console.
|
||
This option enables a low-level, write-only console device at
|
||
/dev/console (similar to the low-level UART console device). From
|
||
Pierre-noel Bouteville.
|
||
|
||
* File Systems/Block Drivers/MTD:
|
||
|
||
- RAM/ROM disk: Add logic to dispose of the driver and RAM buffer
|
||
when the RAM disk has been unlinked and all open references to the
|
||
RAM disk have been closed. Add new parameters to romdisk() to
|
||
specify what should be done with the RAM/ROM buffer in this case --
|
||
Should it be freed or not? Changed all calls to ramdisk() to use
|
||
these new parameters.
|
||
|
||
* Networking:
|
||
|
||
- Add support for local, Unix domain sockets. Support included for
|
||
both SOCK_STREAM and SOCK_DGRAM style local socket.
|
||
- UDP enhancement: Add UDP read-ahead support. In addition to
|
||
eliminating the main reason for lost UDP packets, then change
|
||
enables support for for poll/select on UDP sockets and also non-
|
||
blocking UDP sockets. From Macs Neklyudov.
|
||
- SLIP interface improvements. From Macs Neklyudov.
|
||
- IPv6 Neighbor Solicitation: Added logic to support verification
|
||
that we have the IPv6 address in the Neighbor Table before sending
|
||
any packets. If not, then the Neighbor Solicitation message is
|
||
sent. This feature is important because otherwise the first packet
|
||
sent to a remote peer will fail (it would have been replaced with a
|
||
Neighbor Solicitation).
|
||
- IPv6 Autonomous Auto-Configuration: Added support for sending
|
||
ICMPv6 Router Solicitation and receiving Router advertisement. The
|
||
local IPv6 address, mask, and router address are then auto-configured
|
||
from the response..
|
||
- IPv6 Router Support: Add logic to behave like a router (if so
|
||
configured) only in the sense that NuttX will send the router
|
||
advertisement message in response to any received router solicitation
|
||
messages. Thus, one NuttX node in a network can configure the IPv6
|
||
addresses of all other nodes in the network.
|
||
- Optional IPv6 address filtering added to all Ethernet drivers for
|
||
the all-routers multicast address.
|
||
|
||
* Atmel AVR:
|
||
|
||
- Added architecture support for the Atmel AVR ATMega1284P MCU. From
|
||
Jedi Tek'Unum.
|
||
|
||
* Atmel AVR Boards:
|
||
|
||
- Added support for the LowPowerLab MoteinoMEGA that is based on the
|
||
Atmel AVR ATMega1284P MCU. From Jedi Tek'Unum.
|
||
|
||
* Atmel SAMA4:
|
||
|
||
- Add support for Tickless mode of operation for the SAM4CM platform.
|
||
From Macs Neklyudov.
|
||
|
||
* Atmel SAMA4 Drivers:
|
||
|
||
- Ethernet: The SAM4E Ethernet driver can now be configuration to
|
||
perform all network processing on the work queue. This greatly
|
||
reduces the amount of interrupt level processing to service Ethernet
|
||
packets.
|
||
- SAM4E Ethernet: Add support multicast address matching and IPv6.
|
||
|
||
* Atmel SAMA4 Boards:
|
||
|
||
- SAM4E-EK: The nsh configuration now configures the Ethernet driver
|
||
for execution on the work thread.
|
||
|
||
* Atmel SAMA5D Drivers:
|
||
|
||
- SAMA5D4 Ethernet: The SAMA5D4 Ethernet driver can now be configuration
|
||
to perform all network processing on the work queue. This greatly
|
||
reduces the amount of interrupt level processing to service Ethernet
|
||
packets.
|
||
- SAMA5D3 and SAMA5D4 Ethernet: Add support multicast address matching
|
||
and IPv6.
|
||
|
||
* Atmel SAMA5D Boards:
|
||
|
||
- SAMA5D4-EK; Added a configuration to testing IPv6.
|
||
- SAMA5D4-EK: Converted the nsh and ipv6 configurations to configure
|
||
the Ethernet driver to use the work queue (vs. interrupt level
|
||
processing).
|
||
|
||
* Freescale KL:
|
||
|
||
- Add architectural support for the K26Z128VLH4 chip. From Derek B. Noonburg.
|
||
|
||
* Freescale KL Boards:
|
||
|
||
- Add board support for the Freedom KL26Z board. From Derek B. Noonburg.
|
||
|
||
* NXP LPC17xx Drivers:
|
||
|
||
- Ethernet: Add support multicast address matching and IPv6.
|
||
|
||
* SiLabs EFM32:
|
||
|
||
- Add configurable option to unconditionally enable LE clocking. Even
|
||
you don't use core clock LE as source for LFA or LFB, to read are
|
||
write any register not clocked by HFPERCLK or HFCORECLK, HFCORECLKLE
|
||
should be enabled. From Pierre-noel Bouteville.
|
||
|
||
* SiLabs EFM32 Drivers:
|
||
|
||
- EFM32 RTC: RTC driver using BURTC. From Pierre-Noel Bouteville.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- AES: Add driver for STM32L162XX AES peripheral. From Juha Niskanen.
|
||
- Ethernet: The STM32 Ethernet driver can now be configuration to
|
||
perform all network processing on the work queue. This greatly
|
||
reduces the amount of interrupt level processing to service Ethernet
|
||
packets.
|
||
- Ethernet: Add support multicast address matching and IPv6.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- Added an IPv6 configuration for the STM32F4-Discovery board (with the
|
||
STM32-DISCO_BB base board).
|
||
- Converted all STM32F4-Discovery configurations (with base board) to
|
||
configure the Ethernet driver to use the work queue (vs. interrupt
|
||
level processing).
|
||
|
||
* TI Tiva Drivers:
|
||
|
||
- Added support for TM4C123G timers. From Calvin Maguranis.
|
||
- Added a Tiva ADC driver. From Calvin Maguranis.
|
||
|
||
* TI Tiva Boards:
|
||
|
||
- Added TM4C123G timers on the TM4C123G Launchpad. From Calvin Maguranis.
|
||
- Added Tiva ADC support to the TM4C123G-Launchpad. From Calvin Maguranis.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- Math Library: Added support for inverse hyperbolic functions,
|
||
isfinite(), error functions, nan(), copysign(), and trunc()
|
||
functions. From Brennan Ashton.
|
||
|
||
* Applications:
|
||
|
||
- apps/examples/ustream: Add a simple test of Unix domain stream
|
||
sockets.
|
||
- apps/examples/udgram: Add a simple test of Unix domain datagram
|
||
sockets.
|
||
- apps/netutils/netlib: Add utilities to convert to/from prefix
|
||
lengths from/to 128-bit network masks.
|
||
- apps/nshlib: Modify the NSH IPv6 ifconfig command to show the more
|
||
standard post-pended prefix value, rather than the full 128-bit
|
||
netmask.
|
||
|
||
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:
|
||
http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
|
||
|
||
* 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:
|
||
|
||
- Work Queues: Fix a backward calculation when determining the time
|
||
to the next interesting event. . From Liio Chen via the PX4
|
||
repository.
|
||
- clock_systimespec(): Fixes for compilation errors in certain
|
||
configurations. From Macs Neklyudov.
|
||
|
||
* Graphics
|
||
|
||
- Fixed a problem with one of the font files. From Pierre-noel Bouteville.
|
||
|
||
* Networking:
|
||
|
||
- IOB Deadlock: There were issues with the TCP write-ahead buffering
|
||
if CONFIG_NET_NOINTS was enabled: There is a possibility of
|
||
deadlocks in certain timing conditions: The network should never
|
||
wait for TCP read-ahead buffering space to be available. It should
|
||
drop the packets immediately if no buffering is available. This was
|
||
fixed by duplicating most of the IOB interfaces: The versions that
|
||
waited are still present (like iob_alloc()), but now there are non-
|
||
waiting versions of the same interfaces (like iob_tryalloc()). The
|
||
TCP read-ahead logic now uses only these non-waiting interfaces.
|
||
- TCP Deadlock: Fix another deadlock when CONFIG_NET_NOINTS is enabled.
|
||
tcp_write_buffer_alloc() calls sem_wait() with network locked. That
|
||
worked if CONFIG_NET_NOINTS was not defined because interrupts are
|
||
automatically restored when the wait happens. But with
|
||
CONFIG_NET_NOINTS=y, the wait blocks with the network locked -- bad
|
||
style and also can lead to a deadlock condition.
|
||
- ARP response waiting: Fixes another CONFIG_NET_NOINTS issue. When
|
||
called sem_timedwait() with the network locked, the network stays
|
||
locked while we wait which is not what we want (without CONFIG_NET_NOINTS,
|
||
interrupts are re-enabled while we wait and all is well).
|
||
- TCP accept(): Fix a major TCP bug introduced with the NuttX-7.7
|
||
IPv6 changes: Some connection logic was reordered; setting the
|
||
socket as 'connected' got moved to BEFORE the point where the check
|
||
was made if the socket was already connected. The resulting behavior
|
||
was odd: Telnet would connect, but then when you exit and reconnect,
|
||
it would fail to connect. But then if try again, it would connect
|
||
okay. So the symptom was connect-fail-connect-fail-...
|
||
- Lots of build problems introduced into multiple NIC support with the
|
||
IPv6 changes of NuttX-7.7. Many places where conditional logic based
|
||
on CONFIG_NETDEV_MULTINIC is confused with CONFIG_NET_MULTILINK.
|
||
Lots of code changed with IPv6 that was never compiled with MULTINIC
|
||
enabled.
|
||
|
||
* Common Drivers:
|
||
|
||
- Pipes and FIFOs: Fix a race condition between FIFO buffer operations
|
||
and the opening and closing of FIFOs which necessary when the FIFOs
|
||
are used to support Unix domain, datagram sockets. The default
|
||
policy is the deallocate FIFO buffering when the last client closes
|
||
the pipe. When when used for datagram communications, packets left
|
||
in the FIFO will be lost. Some like UDP read-ahead is needed: The
|
||
buffered data in the FIFO needs to be retained until the reader gets
|
||
a chance to re-open the FIFO. Added an ioctl (PIPEIOC_POLICY) to
|
||
control the buffer policy. Default (0) is the legacy behavior; Unix
|
||
domain datagram logic sets the alternative policy so that the packet
|
||
data persists after the FIFO is closed.
|
||
- RAMTRON: Table of parts is not terminated properly if
|
||
CONFIG_RAMTRON_FRAM_NON_JEDEC is not defined. Noted by David
|
||
Sidrane.
|
||
|
||
* All Architectures:
|
||
|
||
- Removed all occurrences of up_maskack_irq() that disables interrupts
|
||
with up_ack_irq() that only acknowledges the interrupts. This is only
|
||
used in interrupt decoding logic. Also remove the logic that
|
||
unconditionally re-enables interrupts with the interrupt exits. This
|
||
interferes with the drivers ability to control the interrupt state.
|
||
This is a necessary, sweeping, global change and unfortunately
|
||
impossible to test.
|
||
|
||
* ARM
|
||
|
||
- ARMv7-A and ARMv7-M memcpy(): Optimized ARM assembly language
|
||
memcpy's were not returning a value in R0 they are required to do.
|
||
From David Sidrane.
|
||
- ARMv7-A interrupt handler should not automatically re-enable interrupts
|
||
on interrupt return. That interferes with the driver's ability to
|
||
manage interrupts. Analogous change made to all other architectures
|
||
as well (ARM7, ARM9, HC, SH, x86, z16, z80, etc,. See above.).
|
||
|
||
* STMicro STM32:
|
||
|
||
- GPIO Interrupts: Disabling any of EXTI 5-9 interrupts was disabling
|
||
interrupts for all EXTI 5-9. Same issue with EXTI 10-15. From Jussi
|
||
Kivilinna.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- RTCC: Fix for recent changes that caused compilation failrues with
|
||
STM32L15XX configurations. From Jussi Kivilinna.
|
||
- SPI: The source clock for SPI 4,5, and 6 should be PCLK2, not PCLK1
|
||
(for F411, F427, and F429). Per David Sidrane.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- execl(): Fix bad logic in counting the number of arguments.
|
||
execl() parameter passing could never have worked. Noted by
|
||
Pierre-noel Bouteville.
|
||
|
||
* Applications:
|
||
|
||
- Fix for building with parallel make. Build-server sometimes failed
|
||
'make -j24' with errors in the builtin line or or sometimes silently
|
||
succeeds but generated builds that contain a random subset of
|
||
configured NuttX applications. There are two root causes for this:
|
||
(1) Recipes for building builtin_list.h and builtin_proto.h are
|
||
not linearizable, and (2) Nothing ensures that 'make context' is run
|
||
first for apps/builtin. This change address both issues. From Juha
|
||
Niskanen.
|
||
|
||
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:
|
||
http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
|
||
|
||
* 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 initialisation 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 verifed 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.
|
||
|
||
NuttX-7.10
|
||
----------
|
||
|
||
The 110th release of NuttX, Version 7.10, was made on June 9, 2015,
|
||
and is available for download from the SourceForge website. Note
|
||
that release consists of two tarballs: nuttx-7.10.tar.gz and
|
||
apps-7.10.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
file for build information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Binary Loader:
|
||
|
||
- ARMv-7M, binfmt/, STM32: Add support uClibc++ exceptions. This
|
||
involved additional handling for relative relation types, additional
|
||
support for unwinding, as well as additional changes. The
|
||
culmination of a big effort from Leo Aloe3132.
|
||
|
||
* Graphics/Graphic Drivers:
|
||
|
||
- RA8875 LCD driver contributed by Marten Svanfeldt.
|
||
|
||
* File Systems/Block Drivers/MTD:
|
||
|
||
- Union File System: Add support for a union file system that can be
|
||
used to overlay and merge the content of two mounted file systems.
|
||
|
||
* USB Host:
|
||
|
||
- USB Hub Support: Bring in USB hub-related files from
|
||
https://github.com/kaushalparikh/nuttx. This is the work of Kaushal
|
||
Parikh. This is quite a bit more hub logic was needed in before the
|
||
USB hub support was fully functional. This involved changing many
|
||
USB host controller driver interfaces and modifications to many
|
||
drivers.
|
||
- USB host CDC/ACM class driver: Added initial implementation of a
|
||
host-side CDC/ACM driver. Initial version was a great learning
|
||
experience, but probably should be partially redesigned (as
|
||
discussed in the top-level TODO file).
|
||
- IPv6 Routing: Complete implementation of the IPv6 routing logic.
|
||
From Max Neklyudov.
|
||
|
||
* Networking:
|
||
|
||
- Local Sockets: Add poll support for Unix stream sockets. From Jussi
|
||
Kivilinna.
|
||
- net/: ARP, ICMP, ICMPv6, PKT, TCP, and UDP now all receive event
|
||
notifications from both network device packet processing, but now
|
||
also from Device-specific events such as when the network goes down.
|
||
The device notification callback structure is now supports dual
|
||
linkages so that the client can receive notifications from both
|
||
source; The device structure now includes a list of clients that
|
||
want to receive device related notifications. This prevents network
|
||
actions from hanging when the device goes down and will be an
|
||
essential part of future support for removable network devices.
|
||
Some of the core logic was contributed by Max Neklyudov.
|
||
- TUN: Misc. improvements to the TUN driver, mostly related to poll().
|
||
Also several bugfixes. From Max Neklyudov.
|
||
|
||
* Simulation Platform:
|
||
|
||
- Simulator: Add logic to test localtime and TZ database. See
|
||
apps/system/README.txt for info.
|
||
- Simulation: Add a configuration for testing the Union File System.
|
||
|
||
* Calypso:
|
||
|
||
- Calypso Compal-E86: Updates for execution out of FLASH on the C139
|
||
phone. From Craig Comstock.
|
||
|
||
* Atmel SAMD/L:
|
||
|
||
- SAML21 Support: And chip definitions, configuration framework,
|
||
memory map and pin configuration files for SAML21 support.
|
||
|
||
* Atmel SAMD/L Boards:
|
||
|
||
- SAML21-Xplained: Add a board support for the SAML21 Xplained Pro.
|
||
This is based on the similar SAMD20 Xplained Pro board.
|
||
|
||
* Freescale/NXP KL:
|
||
|
||
- KL25Z64: Added support for the KL25Z64. The KL25Z64 is a lower
|
||
memory variant of the KL25Z128 and is used on the Teensy LC. From
|
||
Michael as SourceForge patch 50.
|
||
|
||
* Freescale/NXP KL Boards:
|
||
|
||
- Teensy-LC: Add board support for the Teensy LC board. Support is
|
||
based off the Freedom KL25Z board. LED, PWM, and UART0 have been
|
||
tested. The SPI pins are mapped correctly but have not yet been
|
||
tested. From Michael Hope as SourceForge patch 51.
|
||
|
||
* NXP LPC111x:
|
||
|
||
- LPC111x: Support for the LPC11xx family (the LPC1115 MCU in
|
||
particular). Contributed by Alan Carvalho de Assis.
|
||
|
||
* NXP LPC111x Boards:
|
||
|
||
- LPCXpresso LPC1115: Support for the LPCXpression LPC1115
|
||
board. Contributed by Alan Carvalho de Assis.
|
||
|
||
* NXP LPC17xx Drivers:
|
||
|
||
- LPC17xx Ethernet: Add support for the Micrel KSZ8041 PHY to the
|
||
LPC17xx Ethernet driver.
|
||
|
||
* NXP LPC17xx Boards:
|
||
|
||
- Lincoln60: Add a network enabled configuration for the Lincoln60
|
||
board.
|
||
|
||
* Atmel SAM3/4 Drivers:
|
||
|
||
- SAM4CM: Add support for optical mode for the SAM4CM UART1. From
|
||
Max Neklyudov.
|
||
|
||
* Freescale (NXP) Kinetis:
|
||
|
||
- Kinetis K20: Basic support for the Kinetis K20 architecture. Taken
|
||
from PX4. This is the work of Jakob Odersky.
|
||
|
||
* Atmel SAMV7 Boards:
|
||
|
||
- SAMV71-Xplained w/maXTouch Xplained Pro: A TWIHS fix was the last
|
||
barrier to getting the touchscreen working in the maXTouch Xplained
|
||
Pro LCD. Added the NxWM integrated graphics demonstration
|
||
configuration.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32: Added support for STM32F302K8 and STM32F302K6. From Ben Dyer
|
||
via PX4/David Sidrane.
|
||
- STM32F205RG: Add basic support for the STM32F205RG. From SourceForge
|
||
Ticket 40 (anonymous, 2015-05-31).
|
||
- STM32 F3: Add DBGMCU register definitions for the F3 family. From
|
||
Greg Meiste.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 LCDC: Defined a second interface for the dma2d controller.
|
||
LTDC only controls the display visibility but the DMA2D controller
|
||
changes the content of the frame buffer (buffer of the layer). From
|
||
Marco Krahl.
|
||
- STM32 PVD: Added support for STM32's Programmable Voltage Detector
|
||
(PVD) feature. By Dmitry Nikolaev, submitted by Juha Niskanen.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F429i-Disco: Add support for the new DMA2D features to the LTDC
|
||
configuration. From Marco Krahl.
|
||
|
||
* TI Tiva Boards:
|
||
|
||
- TM4C1294 Launchpad: Added TM4C1294NCPDT EN0_LED2 (10/100-Base-Tx);
|
||
removed all booster pack pin definitions. From Frank Sautter.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- libc: Add an option to disable support for long long formats in
|
||
lib_vsprintf(). On very tiny platforms, this reduces the footprint
|
||
by omitting large libgcc.a libraries to perform the 64-bit
|
||
arithmetic operations. From Alan Carvalho de Assis.
|
||
|
||
* Applications: apps/system:
|
||
|
||
- nuttx/zoneinfo: Add logic to build a ROMFS file system
|
||
containing the timezone data.
|
||
|
||
* Applications: apps/nshlib:
|
||
|
||
- Add poll support for Unix stream sockets. From Jussi Kivilinna.
|
||
- Enhancements to NSH ifconfig for case of multi-link operation, TUN
|
||
device and local connections. From Max Neklyudov.
|
||
- Enhanced output to NSH ping command from Max Neklyudov.
|
||
- The NSH mount command now recognizes the Union filesystem type when
|
||
listing mounted file systems.
|
||
|
||
* Applications: apps/netutils:
|
||
|
||
- apps/netutils/thttpd/ and apps/examples/thttpd/: Add support for
|
||
using binfs/ with the Union FS instead of NXFLAT. NXFLAT is
|
||
probably the better solution but recently compiler changes make it
|
||
unusable. binfs or ELF are fallback binary formats. This commit
|
||
adds an option to use binfs with the Union FS.
|
||
|
||
* Applications: apps/examples:
|
||
|
||
- Modify/simpify apps/examples build files. From Roman Saveljev.
|
||
- apps/examples/ltdc: Add testing support for the STM32 LTDC's 2D DMA.
|
||
From Marco Krahl.
|
||
- apps/examples/ostest: Add a test of nested signals. There are no
|
||
failures to handle signals but neither am I getting any nested signal
|
||
handling.
|
||
- apps/examples/elf: Add configuration options to support building the
|
||
hello++4 example that depends upon having uClibc++ available. Also
|
||
add hello++5 to the ELF example From Leo aloe3132.
|
||
- apps/examples/unionfs: Add a test of the union file system to
|
||
apps/examples.
|
||
|
||
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:
|
||
http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
|
||
|
||
* 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:
|
||
|
||
- boardctl(): Add missing case causing that caused failures of PWM
|
||
test.
|
||
- pthread_kill(): Re-implemented pthread_kill(). It was just a simple
|
||
wrapper around kill() but since the correct dispatching of signals
|
||
for multi-threaded task groups has been implemented, calling kill()
|
||
does not do what pthread_kill() is supposed to do. The corrected
|
||
implementation of pthread_kill() will direct the signal specifically
|
||
to the specific pthread and no other.
|
||
- uint32_t callbacks: Update the type passed to watchdog timer
|
||
handlers. Using uint32_t is a problem for 64-bit machines because
|
||
it it too small to pass a pointer. uintptr_t is a more appropriate
|
||
type.
|
||
- mq_timedreceive(): move the location where the errno value is set;
|
||
the ETIMEDOUT errno setting was being overwritten by subsequent
|
||
actions before returning. Noted by Freddie Chopin.
|
||
- POSIX message queues: Move mq_setattr() and mq_getattr() from
|
||
nuttx/libc/mqueue to nuttx/sched/mqueue. Also add syscall support
|
||
for mq_setattr() and mq_getattr(). This is necessary in protected
|
||
and kernel builds because in those cases the message queue
|
||
structure is protected and cannot be accessed directly from user
|
||
mode code.
|
||
|
||
* File Systems/Block Drivers/MTD:
|
||
|
||
- MTD: Increase the size of the fields in the geometry structure
|
||
(again) to support larger FLASH sizes. Needed by Sebastien Lorquet.
|
||
|
||
* Common Drivers:
|
||
|
||
- poll(): Fix resource leak and memory corruption on poll failure.
|
||
From Jussi Kivilinna.
|
||
|
||
* USB Host:
|
||
|
||
- LPC31xx and SAMA5Dx EHCI: Fix cache related problem in LPC31 and
|
||
SAMA5Dx EHCI drivers. All buffers are now aligned with the cache
|
||
line size in both starting address and in length. This cause major
|
||
problems in unlucky builds where the USB host buffers where
|
||
unaligned and abutting other data. The cache flush and invalidate
|
||
operations could be subverted by accesses to adjacent data or could
|
||
have unexpected side effects. This bug has been in the ECHI drivers
|
||
forever, but was only revealed due to unlucky memory allocations
|
||
during the integration of the hub feature.
|
||
|
||
* USB Device:
|
||
|
||
- All USB device class drivers: There needs to be a check to make
|
||
sure that the size of a returned string does not exceed the size of
|
||
the allocated request buffer. Strings such as vendor names or
|
||
product names will be truncated to fit in the request buffer.
|
||
|
||
* Networking:
|
||
|
||
- TCP: Correct failures in long Telnet sessions by increasing th
|
||
size of the number of bytes sent from uint16_t to uint32_t. This
|
||
avoids an integer overflow that causes a long Telnet session to be
|
||
closed unexpectedly. From Rony XLN.
|
||
- Network locks: Correct some network lock logic: Two error
|
||
conditions where the network was not being unlocked and one where it
|
||
was getting unlocked twice. From Jussi Kivilinna.
|
||
- Local Sockets: Local stream sockets had problem of double releasing
|
||
pipes (both server and client attempt release), which causes wrong
|
||
pipe pair being closed in multi-client case. Solve by adding per
|
||
connection instance ID to pipe names. From Jussi Kivilinna.
|
||
- TCP: Fix an important TCP networking bug: 16-bit flags was being
|
||
converted to 8-bits in a few locations, causing loss of status
|
||
indications.
|
||
- TCP: net_startmonitor() always returned OK. In the race case
|
||
where a socket has already been closed, it correctly handled the
|
||
disconnection event but still returned OK. Returning OK caused the
|
||
callers of net_startmonitor() to assume that the connection was
|
||
okay, undoing the good things that net_startmonitor() did and
|
||
causing the socket to be incorrectly marked as connected. This
|
||
behavior was noted by Pelle Windestam.
|
||
- setsockopt() failed when setting timeouts to values less tha 100
|
||
msec. That is because the timeout is limited to stops of 1
|
||
decisecond and because the conversion of structure timeval was
|
||
truncating the microsecond remainder. The utility
|
||
net_timeval2dsec() now accepts and option to determine how it
|
||
handles the remainder: truncate, discarding the remainder, use
|
||
the remainder to round to the closed decisecond value, or use any
|
||
non-zero remainder to the next larger whole decisecond value. Bug
|
||
discovered by Librae.
|
||
- TCP: In the TCP connection operation, it was trying to setup the
|
||
network monitor BEFORE the socket was successfully connected. This,
|
||
of course, has ALWAYS failed because the socket is not yet connected
|
||
and the TCP state is not yet correct for a connected socket. However,
|
||
because of other changes net_startmonitor() now returns a failure
|
||
condition that causes worse problems when trying to connect. The fix
|
||
is to move the logic that starts the network monitor to AFTER the
|
||
socket has been successfully connected.
|
||
|
||
* Atmel SAM3/4 Drivers:
|
||
|
||
- SAM4CM and SAMA5D Free-running timer: Logic that samples the free
|
||
running counter reads the pending interrupt status register and can
|
||
cause interrupts to be lost. So, if when the status register is
|
||
read, the logic must also handle the timer overflow event. Found
|
||
and fixed by Max Neklyudov.
|
||
|
||
* Atmel SAMA5 Drivers:
|
||
|
||
- SAM3/4 Serial: When reconfigured, serial does not receive bytes
|
||
from UART. This happens because RX interrupt was disabled in the
|
||
setup routine. Fixed this I save interrupt configuration before
|
||
UART shutdown and restore it after. From Max Neklyudov.
|
||
|
||
* NXP LPC17xx Drivers:
|
||
|
||
- LPC176x GPIO: Reorder steps when an output GPIO is configured in
|
||
order to avoid transient bad values from being output. From Hal
|
||
Glenn.
|
||
- LPC17 USB OHCI: Correct some initialization of data structures.
|
||
When hub support is enabled, it would overwrite the end of an array
|
||
and clobber some OS data structures.
|
||
- LPC17xx Ethernet: Review, update, and modify the Ethernet driver so
|
||
that it works better with CONFIG_NET_NOINTS=y. Also, update all
|
||
LPC17xx networking configurations so that they have
|
||
CONFIG_NET_NOTINTS=y selected.
|
||
|
||
* SiLabs EMF32 Drivers:
|
||
|
||
- EFM32 SPI: Add missing SPI GPIO pin initialization. From Pierre-noel
|
||
Bouteville.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32 F3: Added missing EXTI definitions for the STM32 F3; Correct
|
||
an error the port D base address in the STM32 F30x and F37x memory
|
||
maps. From Greg Meiste.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM23 RTC: Fix an error introduced into stm32_pwr_enablebkp().
|
||
That function must preserve the previous state of backup domain
|
||
access on return.
|
||
- STM32 RTC counter: Now need to enable backup domain write access
|
||
when setting the time. From Darcy Gong.
|
||
- STM32 OTG FS and HS: Added protection in the event that out-of-bound
|
||
endpoint numbers are received. From David Sidrane.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F429i Disco: (1) Fix a bad return value if the LCD driver is
|
||
already initialized. (2) The LCD driver initialization is now
|
||
performed during the early boot sequence. (3) Increased the size
|
||
of the message queue from 32 to 64 in the lcd configuration. From
|
||
Marco Krahl.
|
||
|
||
* TI Tiva
|
||
|
||
- Fixes for Tiva TM4C1294NCPDT. From Frank Sautter.
|
||
|
||
* Atmel SAMV71 Drivers:
|
||
|
||
- SAMV7 TWIHS: Fix SAMV TWIHS logic that performs multi-message
|
||
transfers with and without repeated starts.
|
||
|
||
* Atmel SAMA5D3/4 Dirvers:
|
||
|
||
- SAMA5 CAN: Fix SAMA5 CAN frame construction. From Max Holtzberg.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- stdlib.h: MAX_RAND should be RAND_MAX.
|
||
- assert.h: Wrap definitions of assertion macros in do while so that
|
||
they are valid C statements. Numerous places throughout the code
|
||
where semicolons were missing at the end of an assertion also had to
|
||
be fixed. Suggested by orbitalfox.
|
||
- inetntoa(): Correct errors in printing IP address when type char is
|
||
signed and the value is >= 128. From Max Neklyudov.
|
||
|
||
* Tools:
|
||
|
||
- Tools: Fix test for the existence of the apps/ directory in
|
||
configure.c. Fix backward interpretation of options, -l was selecting
|
||
Windows and -w was selecting Linux. This was SourceForege Ticket #39.
|
||
|
||
* Applications: apps/nshlib:
|
||
|
||
- apps/nshlib/nsh_timcmds.c: Check return values from time functions.
|
||
- apps/nshlib/: Fix handling of gmtime_r return value in time commands.
|
||
gmtime_r returns a pointer, not an int.
|
||
|
||
* Applications: apps/netutils:
|
||
|
||
- apps/netutils/ntp: Fix mismatched sched_lock/unlock. Noted by Juha
|
||
Niskanen.
|
||
|
||
* Applications: apps/examples:
|
||
|
||
- apps/examples/nxlines: Fix missing right bracket that causes
|
||
compile error when CONFIG_NX_XYINPUT=y. From Librae.
|
||
- apps/examples: When boardctl() fails, need to print errno not the
|
||
returned value which will always be -1.
|
||
- apps/examples: Correct use of the BOARDIOC_GRAPHICS_SETUP boardctl()
|
||
call.
|
||
|
||
NuttX-7.11 Release Notes
|
||
------------------------
|
||
|
||
The 111th release of NuttX, Version 7.11, was made on August 13 2015,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.11.tar.gz and
|
||
apps-7.11.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/patacongo/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core OS:
|
||
|
||
- clock_gettime(): Use up_timer_gettime for CLOCK_MONOTONIC in
|
||
tickless mode. From Max Neklyudov.
|
||
- waitpid(): Implement WNOHANG for waitpid() only and for the case of
|
||
CONFIG_SCHED_HAVE_PARENT not selected. From Max Neklyudov.
|
||
- SCHED_SPORADIC: Add a sporadic scheduler to NuttX.
|
||
- Extend the processor-specific interface to include information to
|
||
support the Sporadic Scheduler.
|
||
- sem_tickwait(): Added this function for internal use within the OS.
|
||
It is a non-standard but more efficient version of sem_timedwait()
|
||
for use in higher performance device drivers.
|
||
|
||
* Binary Loader:
|
||
|
||
* Graphics/Graphic Drivers:
|
||
|
||
- Graphics: Implement anti-aliasing in order to clean the drawing of
|
||
all edges. Anti-aliasing is supported in the horizontal, raster
|
||
direction only.
|
||
- SSD1306 LCD Driver: Modify the SSD1306 LCD driver to support either
|
||
the SPI or I2C interface. From Alan Carvalho de Assis.
|
||
|
||
* File Systems/Block Drivers/MTD:
|
||
|
||
- mount: Add the ability to mount a file system on top of en existing
|
||
node in the psuedo-file system.
|
||
- epoll(): Add a very simple epoll layer just around poll calls. To
|
||
satisfy build app requirements. From Anton D. Kachalov.
|
||
|
||
* Common Device Drivers:
|
||
|
||
- IOCTL: Add relay IOCTL definitions. From Max Neklyudov.
|
||
- I/O Expander Framework: Add an I/O expander driver framework. From
|
||
Sebastien Lorquet
|
||
- NXP PCA9555 I/O Explander. Add PCA9555 driver.From Sebastien
|
||
Lorquet
|
||
- BMP180 Barameter: Add support to Bosch BMP180 barometer. From
|
||
Alan Carvalho de Assis.
|
||
- CAN IOCTLs: Add CAN IOCTL command definitions to manage CAN message
|
||
filtering
|
||
- CAN Driver: Add configuration to support DLC to byte conversions
|
||
needed for CAN FD mode.
|
||
- SPI Slave Interface: Add a definition of an SPI slave interface.
|
||
- LM92 Temperature Sensor: Add a driver for the LM92 temperature
|
||
sensor. Contributed by Paul Alexander Patience.
|
||
- AS5048B Rotary Magnetic Sensor: Add support for an AS5048B rotary
|
||
magnetic sensor. From Paul Alexander Patience.
|
||
- Ramtron Driver: Update to include supportf for newer RAMTRON parts.
|
||
From David Sidrane.
|
||
- MB7040 Sonar Driver: Add support for a MB7040 sonar driver. From
|
||
Paul Alexander Patience.
|
||
- ms5805 Altimeter Driver: Add support for an MS5805 altimeter. From
|
||
Paul Alexander Patience.
|
||
|
||
* Networking:
|
||
|
||
- DNS Client: Implement the low-level network DNS packet protocol to
|
||
request and receive IPv6 address mappings.
|
||
- NetDB: Add support for a DNS host name resolution cache. This can
|
||
save a lot of DNS name server lookups (but might also have the
|
||
negative consequence of using stale IP address mappings.
|
||
- NetDB: Name resolution logic now supports lookups from a file like
|
||
/etc/hosts.
|
||
- Network Initialization: Add CONFIG_NETDEV_LATEINIT that can be
|
||
used to suppress calls to up_netinitialize() from early in
|
||
initialization.
|
||
- FTMAC100 Ethernet MAC Driver. Add support for Faraday FTMCA100
|
||
Ethernet MAC/ From Anton D. Kachalov.
|
||
- UDP Networking: Add support for send() for connected UDP sockets.
|
||
|
||
* Crypto:
|
||
|
||
- Add CFB and MAC AES modes. From Max Neklyudov.
|
||
|
||
* Simulation Platform:
|
||
|
||
- Simulation: Implement board_power_off() for the simulation platform.
|
||
This allows for a graceful exit from the simulation.
|
||
|
||
* MoxaRT:
|
||
|
||
- MoxaRT SoC: Add support for MoxaRT SoC found in the most Moxa serial
|
||
converters such as NP51x0, NP66xx, UC72xx. From Anton D. Kachalov.
|
||
|
||
* MoxaRT Boards:
|
||
|
||
- Moxa NP51x0: Moxa NP51x0 series of 2-port advanced RS-232/422/485
|
||
serial device servers. From Anton D. Kachalov.
|
||
|
||
* ARMv6-M:
|
||
|
||
- ARMv6-M Assertions: Port some per-process stack dumping logic from
|
||
ARMv7-M to ARMv6-M. From Alan Carvalho de Assis.
|
||
|
||
* Atmel SAMD/L Boards:
|
||
|
||
- SAML21: DMA: Add SAML21 DMA support.
|
||
- SAMD21: Add architecture support for the SAMD21 family.
|
||
- SAMD21-Xplained: Board configuration for the SAMD21 Xplained board.
|
||
|
||
* Atmel SAM3/4 Drivers:
|
||
|
||
- SAM4E: Add default loop optimization if EEFC_FMR is available in the
|
||
configuration (i.e., for SAM4S and 4E). From Marco Aur<75>lio da Cruz.
|
||
- crypto/ and SAM4CM: Add CFB and MAC AES modes. From Max Neklyudov.
|
||
- SAM3/4: Add a TWI driver for the SAM4CM. From Max Neklyudov.
|
||
|
||
* Freescale (NXP) Kinetis:
|
||
|
||
- Kinetis: Add support for MK20DN--VLH5 and MK20DX---VLH5. Needed
|
||
for backward compatible support for Teensy-3.0.
|
||
|
||
* Freescale (NXP) Kinetis Boards:
|
||
|
||
- Teensy 3.x: Add board support for the PJRC Teensy-3.0 and
|
||
Teensy-3.1 boards.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- SAMV7: Add an MCAN driver for the SAMV7 platform.
|
||
- SAMV7 SPI Slave Driver: Add the an SPI slave driver.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STMicro STM32 F7: Add architecture support for the STMicro STM32
|
||
F7.
|
||
- STM32 F446: Add support for the STMicro STM32 F446. From David
|
||
Sidrane.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 F7: Add an STM32 F7 Ethernet driver.
|
||
- STM32 F7: Port the STM32 F4 DMA driver.
|
||
- STM32 F4 ADC: Add DMA support to the ADC driver for STM32 F4. From
|
||
Max Kriegler.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F762G-Disco: Add support for the STMicro STM32 F7 Discovery
|
||
board.
|
||
- STM32F4-Disco: Add support to BMP180 driver on the STM32F4 Discovery.
|
||
From Alan Carvalho de Assis.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- Add asctime(), asctime_r(), ctime(), and ctime_r().
|
||
- sethostname(): Add support for sethostname().
|
||
- gethostbyname() and gethostbyaddr(): Add support for
|
||
gethostbyname() and gethostbyaddr(). Also support included for the
|
||
non-standard gethostbyname_r() and gethostbyaddr_r(). This moves
|
||
the DNS client logic from apps/ into the NuttX libc implementation.
|
||
|
||
* Tools:
|
||
|
||
- testbuild.sh: Add a script that can be used to perform building
|
||
testing for several board configurations.
|
||
|
||
* Build/Configuration System:
|
||
|
||
- apps/ Build System: No longer depends on hardcoded lists of
|
||
directories. Instead, it does a wildcard search to find all
|
||
appropriate directories. This means that to install a new
|
||
application, you simply have to copy the directory (or link it) into
|
||
the apps/ directory. If the new directory includes a Makefile and
|
||
Make.defs file, then it will automatically be included in the build.
|
||
- mkkonfig.sh: Add the tool mkkconfig.sh that dynamically builds the
|
||
apps/Kconfig file at configuration time. The hardcoded
|
||
configuration file has been removed and now the top-level Makefile
|
||
executes tools/mkkconfig.sh to auto-generate the top-level Kconfig
|
||
file. A new apps/ make target call preconfig: was added to support
|
||
this operation. Now you do not have to modify the top-level Kconfig
|
||
file to add a new directory into the configuration; the top-level
|
||
subdirectory simply needs to include a Kconfig file and it will
|
||
automatically be included in the configuration. The native Windows
|
||
build is temporarily broken until a new apps/tools/mkconfig.bat
|
||
script is generated.
|
||
- mkkconfig.bat: Add the Windows script corresponding to
|
||
apps/tools/mkkconfig.sh. Needed for a Windows native build.
|
||
|
||
* Applications: apps/nshlib:
|
||
|
||
- NSH shutdown command: NSH will now support an (optional) shutdown
|
||
command if the board provides the option CONFIG_BOARDCTL_POWEROFF.
|
||
The command can also be used to reset the system if
|
||
CONFIG_BOARDCTL_RESET=y.
|
||
- NSH uname command: Add support for a uname command.
|
||
- NSH nslookup command: Add an nslookup command.
|
||
|
||
* Applications: apps/system:
|
||
|
||
- NetDB: Add a system command to access the network database.
|
||
- readline(): Add support for Unix-style tab complete to readline.
|
||
Contributed by Nghia Ho.
|
||
- readline(): Extended the tab-completion support to also expand NSH
|
||
command names.
|
||
- readline(): Add support for an in-memory command line history that
|
||
can be retrieved using the up and down arrows. Contributed by Nghia
|
||
Ho.
|
||
|
||
* Applications: apps/netutils:
|
||
|
||
- DNS client: Moved the DNS client logic into the NuttX C library.
|
||
It is a necessary part for the full implementation of the netdb logic
|
||
and provides more flexibility in that location.
|
||
- Replace calls to the non-standard dns_gethotip() with calls to
|
||
standard gethostbyname().
|
||
- NetLib: Create netlib wrapper functions around dns_getserver() and
|
||
dns_setserver() to isolate application code from changes to those
|
||
interfaces.
|
||
|
||
* Applications: apps/examples:
|
||
|
||
- OS test: Extend the OS test to include a test of
|
||
pthread_mutex_trylock() for recursive mutexes. From Juha Niskanen.
|
||
- OS test: Add a test for the sporadic scheduler.
|
||
|
||
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:
|
||
|
||
- pthreads: Use -1 instead of 0 as PID for unclaimed mutexes. From
|
||
Juha Niskanen.
|
||
- pthreads: Implement pthread_mutex_trylock() for recursive mutexes.
|
||
From Juha Niskanen.
|
||
- pthread_create(): Group binding needs to be cleared before
|
||
sched_releasetcb(), as otherwise group_leave() will be called and
|
||
group->tg_nmembers decremented or group being released. group_leave()
|
||
should be called only after group_join() is called, not after
|
||
group_bind(). From Jussi Kivilinna.
|
||
- Protected Mode User Memory Allocator: Redesigned how the user space
|
||
heap is accessed from the kernel code in protected mode. It used to
|
||
call memory management functions in user space via function pointers
|
||
in the userspace interface. That is inefficient because the first
|
||
thing that those memory management functions do is to trap back into
|
||
the kernel to get the current PID. Worse, that operation can be
|
||
fatal is certain fragile situations such as when a task is exiting.
|
||
The solution is to remove all of the memory management function
|
||
calls from the interface. Instead, the interface exports the users
|
||
pace heap structure and then kernel size implementations of those
|
||
memory management functions will operate on the userspace heap
|
||
structure. This avoids the unnecessary system calls and, more
|
||
importantly, failures do to freeing memory when a test exits.
|
||
- pthread_create(): Fix an (unlikely) error in fallback value in the
|
||
event of a failure (which should never occur).
|
||
|
||
* Common Drivers:
|
||
|
||
- STMPE811 Driver: In stmpe811_instanciate() when
|
||
CONFIG_STMPE811_MULTIPLE is enabled, and the call to
|
||
stmpe811_checkid() fails, then the linked device list is not
|
||
restored to its previous state. From Sebastien Lorquet.
|
||
- CAN driver: Fix an issue in the CAN driver where the rx_sem count
|
||
can grow beyond bounds.
|
||
|
||
* File System/Block Drivers:
|
||
|
||
- NFS client: Fix prototype of unbind method. The function prototype
|
||
was not updated for NFS after a recent change to the file system
|
||
interface. From Manuel St??.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- netconfig.h: Fix some backward compilation that was emitting #error
|
||
in the wrong condition when SLIP was enabled.
|
||
- SLIP Driver: Fix a missed name change when many of network
|
||
interface names changed sometime back but were apparently never
|
||
updated for SLIP.
|
||
- Networking: Allow receipt of empty UDP packets. From Max Neklyudov.
|
||
|
||
* ARMv6-M:
|
||
|
||
- ARMv6-M: Fix Cortex-M0 assembly error when the interrupt stack is
|
||
enabled. From Alan Carvalho de Assis.
|
||
|
||
* Atmel SAMD/L Drivers:
|
||
|
||
- SAMD20, D21, L21: In the SAML21, SERCOM5 uses a different SLOW clock
|
||
channel (and, hence, also a different SLOW GCLK generator). This
|
||
means that the channel selection cannot be a global definition but
|
||
must be a per SERCOM configuration setting.
|
||
- SAMD/L: Several fixes to register definitions and types. From
|
||
Janne Rosberg.
|
||
|
||
* Atmel SAM3/4 Drivers:
|
||
|
||
- SAM3/4 UART: Back out an error introduced with commit
|
||
02c33f66c5a8be774034cd40e4125e9323c7b4d8. Causes an infinite loop in
|
||
up_lowputc(). From Max Neklyudov.
|
||
- SAM4CM: Fix SUPC register definitions. From Max Neklyudov.
|
||
- SAM3/4 WDT: Correct some problems with SAM3/4 watchdog driver.
|
||
Includes some small improvements. From Max Neklyudov.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- SAMV7 UART: Also back the bad cloned change o sam_lowputc.c for
|
||
SAMV7 platform.
|
||
|
||
* NXP LPC43xx Drivers:
|
||
|
||
- LPC4350: Correct some LPC4350 GPIO pin configurations. From
|
||
Alessandro Temil.
|
||
|
||
* SiLabs EMF32 Drivers:
|
||
|
||
- EFM32 SPI: Correct write to incorrect register in EFM32 SPI driver.
|
||
From Pierre-noel Bouteville.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 F15x: STM322 F15x stm32_stdclockconfig() was calling
|
||
stm32_pw_setvos() which accessed PWR_CR via an inactive APB From
|
||
Juha Niskaneni.
|
||
- STM32 Ethernet: Extend STM32 Ethernet operating frequency to 180MHz.
|
||
From Sebastien Lorquet.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- SAMV7 Xplained: In clock configuration, divider was set to 25 to get
|
||
25*12MHz=300MHz CPU clock. The correct multiplier is 24 because the
|
||
calculation if (24+1)*12MHz. So the board was running at 312MHz.
|
||
From Efim Monjak.
|
||
|
||
* ARMv7-A:
|
||
|
||
- Cortex-A5 vfork(): Fix a Cortex-A compilation error when system
|
||
calls are enabled in modes other than CONFIG_BUILD_KERNEL.
|
||
|
||
* Atmel SAMA5 Drivers:
|
||
|
||
- SAMA5Dx EHCI: Fix some bad conditional compilation that left a
|
||
function undefined if CONFIG_USBHOST_ASYNCH is not selected.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- getopt(): Uninitialized variable can cause hardfault from getopt()
|
||
if required argument is missing. From George McWilliams.
|
||
|
||
* Applications: apps/nshlib:
|
||
|
||
- NSH/THHPD: Change decoding to handle the increased size of the
|
||
scheduling policy field in the TCB.
|
||
|
||
* Applications: apps/netutils:
|
||
|
||
- THTTPD: Fix compilation problems when
|
||
CONFIG_THTTPD_GENERATE_INDICES is defined.
|
||
- THTTPD: Missing gci-src as a dependency path when building with
|
||
BINFS enabled.
|
||
|
||
* Applications: apps/examples:
|
||
|
||
- poll() example: Fix a few bit-rot compilation errors.
|
||
- Nx Lines example: If CONFIG_NX_ANTIALIASING=y, then the nxlines
|
||
example now erases a line that is 2 pixels longer and 2 pixels wider
|
||
than the line it drew. That eliminates edges effects due to
|
||
applying the anti-aliasing algorithm twice. A better solution
|
||
would be to make anti-aliasing an option for each graphics call so
|
||
you would rend the line with anti-aliasing ON and clear it with
|
||
anti-aliasing OFF. but I don't have the wherewithal for that change
|
||
today.
|
||
- OS test: Improve synchronization in round robin tests. On very fast
|
||
processors, there are race conditions that make the test fail.
|
||
Need better interlocking to assure that the threads actually do start
|
||
at the same time.
|
||
|
||
NuttX-7.12 Release Notes
|
||
------------------------
|
||
|
||
The 112th release of NuttX, Version 7.12, was made on October 1, 2015,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.12.tar.gz and
|
||
apps-7.12.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/patacongo/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Graphics/Graphic Drivers:
|
||
|
||
- Added SSD1351 OLED controller support. Contributed by Paul
|
||
Alexander Patience.
|
||
|
||
* Common Device Drivers:
|
||
|
||
- MS58xx: Generalize the MS5805 altimeter driver to support other
|
||
family members. From Paul Alexander Patience.
|
||
- CAN driver interface: Add an error indication bit to the CAN
|
||
message report.
|
||
- Developed a new interface for QSPI. Most QSPI hardware (such as the
|
||
SAMV71) used a programmed interface to access the QuadSPI FLASH.
|
||
That programmed interface is no compatible with the simpler NuttX
|
||
SPI data transfer interface.
|
||
- Added a driver for ST25L1*K QuadSPI parts.
|
||
- Renamed the battery driver interface to battery_gauge since it
|
||
really only implements a battery fuel gauge. From Alan Carvalho de
|
||
Assis.
|
||
- Added a new framework to support a batter charger interface. From
|
||
Alan Carvalho de Assis.
|
||
- Added a BQ24250 battery charger driver. From Alan Carvalho de Assis.
|
||
|
||
* Networking:
|
||
|
||
- Added support for the local loopback device (dev lo, hostname localhost).
|
||
- Added NetDB support for the local loopback device.
|
||
- Network initialization: Automatically initialize all the TUN and
|
||
loopback devices if they arein the configuration.
|
||
|
||
* Simulation Platform:
|
||
|
||
- The simulation now runs under Cygwin64. Modern Cygwin X86_64
|
||
machines follow the Microsoft ABI for parameter passing. The Linux
|
||
System 5 ABI would not work on X86_64-based Cygwin machines. Newer
|
||
Cygwin tool chains do nor pre-pend symbol names with the underscore
|
||
character.
|
||
|
||
* Atmel SAMA5Dx:
|
||
|
||
- Added architectural support for the Atmel SAMA5D2 parts. Not fully
|
||
verified in this NuttX release.
|
||
|
||
* Atmel SAMA5Dx Boards:
|
||
|
||
- Added support for the Atmel SAMA45D2 Xplained Ultra board. Not
|
||
fully verified in this NuttX release.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- SAMV7 USBHS DCD: The device controller driver is (finally)
|
||
functional.
|
||
|
||
* NXP LPC17xx:
|
||
|
||
- Implement options to use external SDRAM and or SRAM for the heap.
|
||
From Pavel Pisa.
|
||
|
||
* NXP LPC43x:
|
||
|
||
- Added architectural support for the LPC4370. From Lok Tep.
|
||
|
||
* NXP LPC43xx Drivers:
|
||
|
||
- Added Ethernet support. From Ilya Averyanov.
|
||
- Added LPC43xx EHCI driver from Ilya Averyanov.
|
||
|
||
* NXP LPC43xx Drivers:
|
||
|
||
- Added support for the NXP LPC4370-Link2 development board from Lok
|
||
Tep.
|
||
|
||
* STMicro STM32:
|
||
|
||
- Added architectural for STM32F303K6, STM32F303K8, STM32F303C6,
|
||
STM32F303C8, STM32F303RD, and STM32F303RE devices. From Paul
|
||
Alexander Patience.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- Added OTG support for STM32F44x. From David Sidrane.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- Added support for the STMicro Nucleo F303ERE board from Paul
|
||
Alexander Patience.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- stdlib: Add support for div() to the C library. From OrbitalFox.
|
||
Also added ldiv() and lldiv() which are equivalent to div() with
|
||
long and long long types, respectively, instead of int.
|
||
- Added an implementation of the standard shutdown function.
|
||
|
||
* Tools:
|
||
|
||
- tools/mksymtab: declare g_symtab array as const to occupy RO section
|
||
(Flash). From Pavel Pisa.
|
||
|
||
* Build/Configuration System:
|
||
|
||
- Simplify configs/ Makefiles by combining common logic into a new
|
||
Board.mk Makefile fragment. From Paul Alexander Patience.
|
||
|
||
* Applications: apps/system:
|
||
|
||
- apps/system/symtab: Optional canned symtab inclusion to the build.
|
||
When option CONFIG_SYSTEM_SYMTAB is selected and symbol table file
|
||
libc/symtab/canned_symtab.inc is prepared then application can use
|
||
system provided complete symbol table. The option has substantial
|
||
effect on system image size. Mainly code/text. If loading of
|
||
applications at runtime is not planned do not select this. From
|
||
Pavel Pisa.
|
||
|
||
* Applications: apps/canutils:
|
||
|
||
- apps/canutils/uavcan: Add support for libuavcan. From Paul Alexander Patience.
|
||
|
||
* Applications: apps/examples:
|
||
|
||
- apps/examples/can: Extend the CAN loopback test by adding more
|
||
command line options.
|
||
- apps/examples/usbserial: Can now be run as an NSH builtin-function.
|
||
Now uses a configurable IO buffer size.
|
||
- apps/examples/nettest: Add option to suppress network initialization.
|
||
This is necessary if the nettest is run from NSH which has already
|
||
initialized the network.
|
||
- apps/examples/nettest: Extend test so that can be performed using
|
||
the local loopback device.
|
||
- apps/examples/netloop: Add a test of the local loopback device.
|
||
- apps/examples/udpblaster: Add a test to stress the network by
|
||
sending UDP packets at a very high rate. .
|
||
- apps/examples/uavcan: libuavcan example from Paul Alexander Patience.
|
||
|
||
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:
|
||
|
||
- wd_create(): Correct a counting error in the number of available
|
||
watchdog timers. When the number of free timers is low, the counter
|
||
could be incremented below zero.
|
||
- mq_open(): When message queue is opened, inode_reserve() leaves the
|
||
reference count at zero. mq_open() logic must assure that the
|
||
reference count of the newly created inode is one.
|
||
- work_queue(): Logic that sets the queued indication and the logic
|
||
that does the actual queuing must be atomic.
|
||
|
||
* Binary Loader:
|
||
|
||
- Fix a memory leak in the built-in application logic: File was not
|
||
being closed. From Bruno Herrera.
|
||
|
||
* File System/Block Drivers:
|
||
|
||
- poll(): If we fail to setup the poll for any file descriptor, for
|
||
any reason, set the POLLERR bit.
|
||
- rwbuffer: Fix some logic errors. From Dmitry Nikolaev via Juha
|
||
Niskanen.
|
||
- ROMFS: One allocation was not being freed if there was a subsequent
|
||
failure to allocation I/O buffers resulting in a memory leak on
|
||
certain error conditions. From Bruno Herrera.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- Fix a bug in tun interface driver. From Max Neklyudov.
|
||
- recvfrom(): Correct wait for new data when NET_UDP_READAHEAD is
|
||
enabled. Fix size accounting when recvfrom_udpreadahead() sets
|
||
state.rf_recvlen == -1. I have not checked if data are accumulated
|
||
to the right position in the buffer however. From Pavel Pisa.
|
||
- networking: Correct return value from psock_tcp_accept(). From
|
||
SaeHie Park.
|
||
- TCP: Fix a problem in when there are multiple network devices.
|
||
Polls were being sent to all TCP sockets before. This is not good
|
||
because it means that packets may sometimes be sent out on the wrong
|
||
device. That is inefficient because it will cause retransmissions
|
||
and bad performance. But, worse, when one of the devices is not
|
||
Ethernet, it will have a different MSS and, as a result, incorrect
|
||
data transfers can cause crashes. The fix is to lock into a single
|
||
device once the MSS is locked locked down.
|
||
- net/tcp: The logic that binds a specific network device to a
|
||
connection was faulty for the case of multiple network devices. On
|
||
bind(), the local address should be used to associate a device with
|
||
the connection (if the local address is not INADDR_ANY); On connect(),
|
||
the remote address should be used (in case the local address is
|
||
INADDR_ANY). On accept(), it does not matter but the remote address
|
||
is the one guaranteed to be available.
|
||
- net/tcp: Fix unbuffered send compilation error when Ethernet is not
|
||
enabled. From Alan Cavalho de Assis.
|
||
|
||
* ARMv7-M:
|
||
|
||
- All ARMV7-M IRQ setup: Always set the NVIC vector table address
|
||
unconditionally. This is needed in cases where the code is running
|
||
with a bootload and when the code is running from RAM. It is also
|
||
needed by the logic of up_ramvec_initialize() which gets the vector
|
||
base address from the NVIC. Suggested by Pavel Pisa.
|
||
- Fix some H/W floating point logic: In the original implementation,
|
||
!defined(CONFIG_ARMV7M_CMNVECTOR) was a sufficient test to determine
|
||
if lazy floating point register saving was being used. But recents
|
||
changes added common lazy register as well so now that test must be
|
||
(!defined(CONFIG_ARMV7M_CMNVECTOR) || defined(CONFIG_ARMV7M_LAZYFPU)).
|
||
- ARMv7-M, all "lazy" interrupt stack logic. Assembly instruction
|
||
that fetches the saved value is incorrect; replace with more
|
||
traditional push and pop. This is an important fix. Noted by
|
||
Stefan Kolb.
|
||
- All ARMV7-M: Force 8-byte stack alignment when calling from assembly
|
||
to C to interrupt handling.
|
||
- up_schedulesigaction(): Fix logic that determines if there is a
|
||
pending signal action before scheduling the next signal action.
|
||
Both the test and the scheduling action need to be atomic. This
|
||
problem was fixed on the ARMv7-M but also ported to other
|
||
architectures that had the same issue.
|
||
|
||
* NXP LPC43xx:
|
||
|
||
- LPC43xx: Fix NVIC_SYSH_PRIORITY_STEP define. From Ilya Averyanov.
|
||
- LPC43xx: Fix missing #define in eeprom. From Ilya Averyanov.
|
||
|
||
* NXP LPC43xx Drivers:
|
||
|
||
- Fixed the SPI driver. From Ilya Averyanov.
|
||
|
||
* Atmel SAMA5 Drivers:
|
||
|
||
- LPC31 and SAMA5D EHCI: Fix qh_ioccheck to move bp to next QH. From
|
||
Ilya Averyanov.
|
||
- LPC31 and SAMA5D EHCI: Performance improvement: Do not disable the
|
||
asynchronous queue when adding a new QH structure. From Ilya
|
||
Averyanov.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- gethostbyname(): correct returned address format when DNS is used.
|
||
The hostent.h_addr_list should point to raw in_addr or in6_addr
|
||
as defined in the standard. Original implementation used that for
|
||
numeric addresses but for DNS lookup returned pointer to whole
|
||
sockaddr_in or sockaddr_in6. From Pavel Pisa .
|
||
- asin(): The function did not convert for some input values. asing()
|
||
did not convert for values which do not belong to the domain of the
|
||
function. But aside of that the function also did not converge for
|
||
allowed values. I achieved a conversion of the function by
|
||
reducing the DBL_EPSION and by checking if the input value is in
|
||
the domain of the function. This is a fix for the problem but the
|
||
function should always terminate after a given number of iterations.
|
||
From Stefan Kolb.
|
||
- Change all references from avsprintf to vasprintf. From Sebastien
|
||
Lorquet.
|
||
|
||
* Applications: apps/nshlib:
|
||
|
||
- Fix error handling in 'cat' command. On a failure to allocate
|
||
memory, a file was not being closed. From Bruno Herrera.
|
||
- Fix error handling in 'mv' command. On a failure to expand the
|
||
second path, the memory allocated for the expansion of the first
|
||
path was not being freed. From Bruno Herrera.
|
||
|
||
* Applications: apps/system:
|
||
|
||
- apps/system/netdb: Failed to build if CONFIG_NET_HOSTFILE was not
|
||
defined because gethostbyaddr() was not available. Noted by
|
||
OrbitalFox.
|
||
|
||
* Applications: apps/netutils:
|
||
|
||
- Various Kconfig files in netutils: Fix some changes from from
|
||
NETUTILS_DNSCLIENT to NETDB_DNSCLIENT. From Pavel Pisa.
|
||
|
||
* Applications: apps/modbus:
|
||
|
||
- Macros PR_BEGIN_EXTERN_C and PR_END_EXTERN_C were not defined in
|
||
all contexts. Replace with explicit expansion in all cases. From Stefan Kolb.
|
||
|
||
NuttX-7.13 Release Notes
|
||
------------------------
|
||
|
||
The 113th release of NuttX, Version 7.13, was made on December 5, 2015,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.13.tar.gz and
|
||
apps-7.13.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/patacongo/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core OS:
|
||
|
||
- External RTC: Added OS support for external RTC chips.
|
||
- boardctl(): Add a command to the boardctl() interface to obtain a
|
||
board unique ID.
|
||
|
||
* File Systems:
|
||
|
||
- TMPFS: Add support for a new TMPFS, RAM file system. The TMPFS
|
||
file system does not require any significant amount of memory
|
||
itself. It will grow dynamically as files are added and shrink back
|
||
when files are deleted. A very low overhead way to retain temporary
|
||
files.
|
||
- VFS: The VFS was extended to support standard file operations on
|
||
block drivers (open, close, read, write, etc.). The open() interface
|
||
accomplishes this by creating a temporary characer driver to mediate
|
||
the character oriented accesses to tje block driver.
|
||
- HOSTFS: Added a HOSTFS file system for use with the simulator. The
|
||
HOSTFS file system mounts in the simulated Nuttx context by provides
|
||
proxied access to the file system on the host PC. This is useful for
|
||
providing file system content and nonvolatile storage of files in the
|
||
simulation environment. From Ken Pettit.
|
||
- MTD/PROCFS: Add an interface to un-register an MTD procfs entry.
|
||
From Ken Pettit.
|
||
- filemtd: A new MTD conversion layer that will convert a regular file
|
||
(or driver file) to an MTD device. This is useful for testing on the
|
||
simulation using the HOSTFS. From Ken Pettit.
|
||
- PROCFS: Extended to include networking entries in the procfs. Device
|
||
status, device statistics, and network statistics are now available
|
||
from the PROCFS.
|
||
- PROCFS: The PROCFS file system can now be configured so that it
|
||
supports runtime registration of PROCFS entries with
|
||
CONFIG_FS_PROCFS_REGISTER=y.
|
||
|
||
* Graphics/Graphic Drivers:
|
||
|
||
- ST7565 Driver: Extend to include support for the ERC12864-3. From
|
||
Pierre-noel Bouteville.
|
||
|
||
* Common Device Drivers:
|
||
|
||
- User buttons: Added a character driver to support application access
|
||
to board buttons. Supports notification of button activity via
|
||
signals.
|
||
- User LEDs: Added a character driver to support application access
|
||
to on-board LEDs.
|
||
- Zero Cross: Added a Zero Cross device driver support. From Alan
|
||
Carvalho de Assis.
|
||
- MAX6675: Added support to Thermocouple-to-Digital converter MAX6675.
|
||
From Alan Carvalho de Assis.
|
||
- BCH: Block-to-character (BCH) driver should forward ioctl() calls
|
||
to the contained block driver.
|
||
- S25FL1xx: Added a S25FL1xx QuadSPI FLASH driver.
|
||
- On-Chip FLASH: Added an upper half MTD device that can use the
|
||
interfaces defined in included/nuttx/progmem.h to provide a
|
||
standard MTD driver.
|
||
- Serial: Implemented high level DMA infrastructure for serial
|
||
devices. From Max Neklyudov.
|
||
- AT24XX: Add support for multiple AT24xx EEPROM parts, each with
|
||
unique I2C addresses, but otherwise identical.
|
||
- External RTC: Added drivers for external I2C RTC chips: DS3102,
|
||
DS1307, DS3231, DS3232, and NXP PCF85263.
|
||
- W25: Added support for byte write mode to the W25 FLASH driver. From
|
||
Ken Pettit.
|
||
- dev/loop: Added a loop character device. losetup() and loteardown()
|
||
should not be called directory from applications. Rather, these
|
||
functions are now available as IOCTL commands to the loop driver.
|
||
- dev/smart: Added support for a /dev/smart loop device. From Ken
|
||
Pettit.
|
||
|
||
* Networking:
|
||
|
||
- Driver Statistics: Most network drivers do not support statistics.
|
||
Those that do only supported them when DEBUG is enabled. Each
|
||
driver collected an architecture specific set of statistics and
|
||
there was no common mechanism to view those statistics. Thus,
|
||
the driver feature was mostly useless. This release standardizes
|
||
the driver statistics and puts the definition in the common network
|
||
device structure defined in netdev.h where they can be accessed by
|
||
network applications. All Ethernet drivers that collect statistics
|
||
have been adapted to use these common statistics.
|
||
|
||
* Simulation Platform:
|
||
|
||
- W25 FLASH: Added support for W25 FLASH simulation. From Ken Pettit.
|
||
- HOSTFS: Added support for the HOSTFS file system (see "File Systems",
|
||
above).
|
||
|
||
* Atmel SAMV7:
|
||
|
||
- SAME70: Added support for the SAME70 family of chips.
|
||
- Tickless: SAMV7 now supports the tickless mode of operation.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- MPU: Added MPU and protected build support.
|
||
- QSPI: Added a QuadSPI FLASH driver. This driver operates in the
|
||
memory-mapped, Serial Memory Mode (SMM).
|
||
- FLASH: Added support to write on-chip FLASH.
|
||
- Timer/Counter: TC driver ported to SAMV7 from the SAMA5. Free-running
|
||
and one-short timer logic also ported.
|
||
- PCK: Brought programmable clock (PCK) logic from SAMA5 into SAMV7.
|
||
- Timer/Counter: Support PCK6 as an optional source for the timer/
|
||
counter clock.
|
||
|
||
* Atmel SAMV7 Boards:
|
||
|
||
- SAME70-Xplained: Add NSH and networking configurations for the
|
||
SAME70 Xplained board. Includes verified support for serial console,
|
||
LEDs, buttons, SDRAM, HSMCI SD card, and networking.
|
||
- SAMV7-XULT and SAME70-Xplained: If Tickless mode is selected then
|
||
enable PCK6 as a timer/counter clock source
|
||
|
||
* STMicro STM32:
|
||
|
||
- CCM PROCFS: Is no longer a part of the 'base' procfs entries and can
|
||
now only be supported via run time registration with
|
||
CONFIG_FS_PROCFS_REGISTER=y.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- Timers: Add a compatible lower-half timer driver for use with the
|
||
common timer upper-half driver. From Wail Khemir.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F4-Discovery: Add low level support for the Zero Cross driver
|
||
for the STM32F4-Discovery. From Alan Carvalho de Assis.
|
||
- STM32F4-Discovery: Add board config to support for the MAX6675. From
|
||
Alan Carvalho de Assis.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- bsearch(): Added the bsearch() function from NetBSD.
|
||
- freopen(): Added support for freopen().
|
||
- strftime(): Added day-of-week support (when avaialable).
|
||
|
||
* Tools:
|
||
|
||
- nxstyle: Add crappy style checking tool nxstyle.c. See thee tools/
|
||
README file for more info.
|
||
|
||
* Applications: NSH
|
||
|
||
- mksmartfs command: Add configuration option to supported multiple
|
||
rootdirectories. From Ken Pettit.
|
||
- Add support for 'basename' and 'dirname' commands.
|
||
- set command: Like bash, NSH set command now strips off any leading
|
||
or trailing whitespace.
|
||
- mount command: The mount commands now accepts mount options
|
||
(currently needed only for the hostfs file system). From Ken
|
||
Pettit.
|
||
- losetup command: NSH no longer calls losetup() and loteardown
|
||
directly. Now it opens /dev/loop and accomplishes these things
|
||
using ioctl() calls.
|
||
- ifconfig command: If CONFIG_NETDEV_STATISTICS=y, then print the
|
||
network driver statistics in the ifconfig.
|
||
- ifconfig, ifup, and ifdown: These commands now uses /proc/net/<dev>
|
||
to view network device configuration and status and /proc/net/stat
|
||
to show network statistics. A consequence of this is that you
|
||
cannot view this network information if the procfs is not enabled
|
||
and mounted at /proc.
|
||
- losmart command: Added a new NSH losmart command. losmart setups
|
||
up a loop device for the smart MTD driver similar to losetup but
|
||
with different syntax. From Ken Pettit.
|
||
- ps command: The 'ps' command now uses /proc/<pid>/ to obtain task
|
||
status information. A consequence of this is that you cannot use
|
||
the 'ps' command if the procfs is not enabled and mounted at /proc.
|
||
|
||
* Applications: apps/system:
|
||
|
||
- apps/system/hexed: Port the hexed command line hexadeciamal editor
|
||
to Nuttx. See http://apps.venomdev.net/hexed/.
|
||
|
||
* Applications: apps/fsutils:
|
||
|
||
- apps/fsutils/smartfs: Move into apps/fsutils from kernel, now uses
|
||
only open and ioctl. From Ken Pettit.
|
||
|
||
* Applications: apps/examples:
|
||
|
||
- apps/examples/fstest: Add a generic file system test. This is
|
||
essentially the same as examples/smart, but has all of the SmartFS
|
||
specific logic ripped out. This was created for testing the new
|
||
TMPFS.
|
||
- apps/examples/zerocross: Add a Zero Cross application example. From
|
||
Alan Carvalho de Assis.
|
||
- apps/examples/media: Add a simple test for access of media via a
|
||
block driver or MTD driver.
|
||
|
||
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:
|
||
|
||
- Fixed an error in clock_timespec_subtract(). Found by Lok.
|
||
- pthreads: CRITICAL BUGFIX: Logic was wiping out the indication that
|
||
of the type of a pthread. Hence, it could be confused as a task.
|
||
Found because this was causing a crash when /proc/nnn/cmdline was
|
||
printed.
|
||
|
||
* File System/Block Drivers:
|
||
|
||
- SMART MTD: Fix some Smart wear-leveling bugs. Fixed SmartFS wear
|
||
level error that occurs when the logical sector size is too small to
|
||
save all wear level status bytes in a single sector. Logical
|
||
sectors 1 and 2 were simply not being allocated and then the
|
||
read_sector and write_sector routines were failing. From Ken
|
||
Pettit.
|
||
|
||
* Graphics/Graphic Drivers:
|
||
|
||
- ILI9432: Fixed errors in orientation. Portrait, RPortrait, and
|
||
Landscript should work correly now. They were displayed mirrored.
|
||
From Marco Krahl.
|
||
|
||
* Common Drivers:
|
||
|
||
- CAN: Fix a problem in the CAN upper-half driver that occurs only
|
||
for CAN hardware that support a H/W FIFO of outgoing CAN messages.
|
||
In this case, there can be a hang condition if both the H/W and
|
||
S/W FIFOs are both full. In that case, there may be no event to
|
||
awaken the upper half driver. Add a new (conditional) CAN upper
|
||
half interface called can_txready() that can be used by the lower
|
||
half driver to avoid this hang condition.
|
||
- MS58xx: Fix some issues with initialization and with CRC
|
||
calculation. From Karim Keddam.
|
||
- W25: Fixed W25 FLASH driver page read/write logic. From Ken Pettit.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- USART1 pin configuration: Reconfigure System I/O when using USART1.
|
||
From Frank Benkert.
|
||
- MCAN: Added a call to can_txready() to the MCAN driver.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- stm32 F4: Fix some TIM12 pin mappings. From Max Kriegleder.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F429i-Disco: Calculated partition boundries based on page
|
||
block sizes but mtd_partition() is expecting calculations based on
|
||
erase block size. From Alan Carvalho de Assis.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- sys/types.h: When building on a 64-bit machine, the size of size_t
|
||
should be 64-bits. In general, I believe that sizeof(size_t) should
|
||
be the same as sizeof(uinptr_t). mmsize_t should always be 32-bits
|
||
in any event. The last change to stddef has been backed out. With
|
||
these changes, the simulator builds without errors or warnings an a
|
||
64-bit machine.
|
||
|
||
* Applications: apps/nshlib:
|
||
|
||
- The I/O buffer, g_iobuffer, should not be a global buffer. That
|
||
will not work in an environment where there are multiple NSH
|
||
sessions. The I/O buffer must, instead, be a part part of the
|
||
session-specific data defined in nsh_console.h.
|
||
|
||
NuttX-7.14 Release Notes
|
||
------------------------
|
||
|
||
The 114th release of NuttX, Version 7.14, was made on January 28, 2016,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.14.tar.gz and
|
||
apps-7.14.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/patacongo/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core OS:
|
||
|
||
- modules: Add support for kernel modules: insmod, rmmod, support
|
||
functions. procfs support for user lsmod functioniality.
|
||
- SIGEV_THREAD: Add support for the SIGEV_THREAD notification method
|
||
in struct sigevent. This initial implementation will only work in
|
||
the FLAT build since it utilizes the work queue for signal
|
||
callbacks. See the top-level TODO file for additional details.
|
||
- 64-Bit Timer: If the 64-bit timer is selected, then use it whenever
|
||
clock_systimer() is called rather then chopping the 64-bit timer
|
||
down to 32-bits. Add a new type, systime_t to represent the 32- or
|
||
64-bit system timer. This eliminates clock_systimer32() and
|
||
clock_systime64(); there is now only clock_systimer().
|
||
|
||
* Common Device Drivers:
|
||
|
||
- Telnet Driver: Move the Telnet driver from apps/ to
|
||
nuttx/drivers/net. It is a driver a belongs in the OS. Now works
|
||
like the loop device: A new interface called telnet_initialize()
|
||
registers a telnet session "factory" device at /dev/telnet. Via
|
||
ioctl, the factory device can create instances of the telnet
|
||
character devices at /dev/telnetN to support Telnet sessions.
|
||
- PCA9635PW: Add a driver for the PCA9635PW I2C LED driver IC which
|
||
can be used to control the intensity of up to 16 LEDs. From
|
||
Alexander Entinger.
|
||
- MCP9844: Driver for the MCP9844 I2C digital temperature sensor with
|
||
a selectable resolution. From Alexander Entinger.
|
||
- PN532: Add driver for the NXP PN532 NFC-chip. From Janne Rosberg
|
||
and others at Offcode Ltd.
|
||
- LSM9DS1: Add driver for the STMicro LSM9DS1 chip. The LSM9DS1 is a
|
||
system-in-package featuring a 3D digital linear acceleration sensor,
|
||
a 3D digital angular rate sensor, and a 3D digital magnetic sensor.
|
||
From Paul Alexander Patience.
|
||
- CAN Interface: Add more extensive error reporting capaibility to
|
||
the CAN interface definitions. From Frank Benkert.
|
||
- SPI Interface: Add an optional hwfeatures() method to the SPI
|
||
interface.
|
||
|
||
* Simulation Platform:
|
||
|
||
- NSH configuration uses the custom start up scriptwith a read-only
|
||
passwd file. Includes hooks for an MOTD message.
|
||
|
||
* ARMv7-R
|
||
|
||
- ARMv7-R: Add basic architecture support for the ARMv7-R processor
|
||
family.
|
||
|
||
* Atmel AVR:
|
||
|
||
- Atmega2560: Add support for the Atmega2560. From Dimitry Kloper.
|
||
- debug.h: Add an AVR-specific header file used when the AVR MEMX
|
||
pointer is used. From Dimitri Kloper.
|
||
|
||
* Atmel AVR Boards:
|
||
|
||
- Arduino-Mega2560: Add support for the Arduino-Mega2560. From
|
||
Dimitry Koper.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- Port the TRNG driver from the SAMA5D3/4 to the SAMV7.
|
||
- Port the WDT driver from the SAMA5D3/4 to the SAMV7.
|
||
- Add an RSWDT driver.
|
||
|
||
* Atmel SAMV7 Boards:
|
||
|
||
- SAMV71-XULT: Add configuration for testing OS modules.
|
||
|
||
* Freescale Kinetis:
|
||
|
||
- MK60N512VLL100: Add support for the MK60N512VLL100 Kinetis part.
|
||
From Andrew Webster.
|
||
|
||
* Freescale Kinetis Boards:
|
||
|
||
- ENET: Numerous updates to the Kinetis ENET driver. That driver is
|
||
now functional. From Andrew Webster.
|
||
|
||
* NXP LPC43xx Boards:
|
||
|
||
- WaveShare LPC4337-WS: Support for the WaveShare LPC4337-WS board.
|
||
From Lok Tep.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- Timer Capture: Add timer input capture driver. From Pierre-Noel
|
||
Bouteville.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- Olimex STM32 H407: Added a port to the Olimex STM32 H407 board.
|
||
This board features the STMicro STM32F407ZGT6 (144 pins).
|
||
Contributed by Neil Hancock.
|
||
|
||
* TI TMS550 Boards:
|
||
|
||
- TI LaunchXL-TMS57004: Add basic board support for TI LaunchXL-
|
||
TMS57004. Still a work in progress.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- sys/time.h: Add timeradd(), timersub(), timerclear(), timerisset(),
|
||
and timercmp() as macros. These are non-POSIX interfaces, but
|
||
included in most BSD deriviatives, including Linux. From Manuel St??.
|
||
- AVR support: Introduce support for Atmel toolchain in-flash strings.
|
||
Atmel toolchain AVR compiler provides a transparent in-flash object
|
||
support using __flash and __memx symbols. The former indicates to
|
||
compiler that this is a flash-based object. The later used with
|
||
pointer indicates that the referenced object may reside either in
|
||
flash or in RAM. The compiler automatically makes 32-bit pointer
|
||
with flag indicating whether referenced object is in flash or RAM
|
||
and generates code to access either in run-time. Thus, any function
|
||
hat accepts __memx object can transparently work with RAM and flash
|
||
objects.
|
||
For platforms with a Harvard architecture and a very small RAM like
|
||
AVR this allows to move all constant strings used in trace messages
|
||
to flash in the instruction address space, releasing resources for
|
||
other things. This change introduces IOBJ and IPTR type qualifiers.
|
||
The 'I' indicates that the object may lie in instruction space on a
|
||
Harvard architecture machine. For platforms that do not have __flash
|
||
and __memx or similar symbols IOBJ and IPTR are empty, making the
|
||
types equivalent to, for example, 'const char' and 'const char*'.
|
||
For Atmel compiler these will become 'const __flash char' and
|
||
'const __memx char*'. All printf() functions and syslog() functions
|
||
are changed so that the qualifier is used with the format parameter.
|
||
From Dimitry Kloper.
|
||
- debug.h: Add configuration to support an architecture-specific
|
||
debug.h header file. From Dimitri Kloper.
|
||
- netdb: Add support for the use of a DNS resolver file like
|
||
/etc/resolv.conf.
|
||
- TEA: Add an implementation of the Tiny Encryption Algorithm.
|
||
- math32.h: Add some utilities to support 64-bit arithmetic
|
||
operations for platforms that do not support long long types.
|
||
|
||
* Tools:
|
||
|
||
- tools/cnvwindeps.c: Add a tool that will convert paths in
|
||
dependencies generated by a Windows compiler so that they can be
|
||
used with the Cygwin make.
|
||
- tools/mkwindeps.sh: A script that coordinates use of cnvwindeps.exe.
|
||
Dependencies now work on the Cygwin platform when using a Windows
|
||
ative toolchain.
|
||
|
||
* Applications: NSH
|
||
|
||
- Module Commands: Add module commands: insmod, rmmod, and lsmod.
|
||
- Time Command: Add a 'time' command that may be used to time the
|
||
execution of other commands.
|
||
- Password Commands: Add useradd, userdel, and passwd commands.
|
||
- MOTD: Now supports a Message of the Day (MOTD) that will be
|
||
presented after the NSH greeting.
|
||
- Session Logins: All sessions may be protected with logins using the
|
||
encrypted password in /etc/passwd.
|
||
- Extended Logins. Added optional platform-specific function to
|
||
perform password verification and optional delay after each failed
|
||
login attempt.
|
||
|
||
* Applications: apps/fsutils:
|
||
|
||
- apps/fsutils/passwd: Utility library for accessing a password file
|
||
like /etc/passwd.
|
||
|
||
* Applications: apps/netutils:
|
||
|
||
- apps/netutils/telnetd: Now creates Telnet sessions by opening a new
|
||
factory device at /dev/telnet and then using ioctl calls to create
|
||
the session character drivers at /dev/telnetN.
|
||
- apps/netutils/netlib: Add netlib_get_dripv4addr() and
|
||
netlib_get_ipv4netmask(). From Pelle Windestam.
|
||
|
||
* Applications: apps/examples:
|
||
|
||
- apps/examples/module: Add a test harness for verifying NuttX kernel
|
||
modules.
|
||
- apps/examples/pca9635: Add a simple test of PCA9635PW PWM LED driver.
|
||
From Alan Carvalho de Assis.
|
||
- apps/examples/ostest: Add a test of POSIX timers using SIGEV_THREAD.
|
||
|
||
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:
|
||
|
||
- pthreads: CRITICAL BUGFIX: Logic was wiping out the indication that
|
||
of the type of a pthread. Hence, it could be confused as a task.
|
||
- waitpid: CRITICAL BUGFIX. Add a reference count to prevent waitpid
|
||
from using stale memory released by the waited-for task group.
|
||
- clock_systimespec(): Fix an error in a time conversion.
|
||
|
||
* File System/Block Drivers:
|
||
|
||
- poll(): Fix handling of sem_tickwait() return value sem_tickwait()
|
||
does not return an -1+errno, it returns a negated errno value.
|
||
Noted by Freddie Chopin.
|
||
|
||
* Common Drivers:
|
||
|
||
- TUN Driver: Fix a compile time error in the TUN driver. From
|
||
Vladimir Komendantskiy.
|
||
- USB Host HID Parser: Wrong size used in memcpy(). From Hang Xu.
|
||
- PCA9555: Fixed a bug in the function pca9555_setbit which occurs if
|
||
someone tries to set one of the pins 8-15. The problem is that
|
||
after the check if the pin is greater than 7 the variable addr is
|
||
incremented and used in the Call I2C_WRITEREAD. But later in the
|
||
call to the I2C_WRITE buf[0] is used as address but this address is
|
||
not incremented as it should be. Note address does mean the address
|
||
to the register in the ioexpander and not the I2C address. From
|
||
Stefan Kolb.
|
||
|
||
* Networking:
|
||
|
||
- TCP/IOB: Numerous fixes, mostly relate to TCP and IOB buffering
|
||
and race conditions. These were necessary for for the NuttX
|
||
networking later to be stable in some stress testing. From Andrew
|
||
Webster.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- USBHS Device: In USBHS device driver, fix check if zero length
|
||
packet is needed.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- OTG FS Host: Fix some backward arguments to stm32_putreg(). Note
|
||
by Hang Xu.
|
||
|
||
* Tools:
|
||
|
||
- tools/mkdeps.c: Extended/fixed support for --winpath option.
|
||
Dependencies now work under Cygwin with a native Windows toolchain.
|
||
|
||
* Build System:
|
||
|
||
- apps/platform/Makefile: Use a relative path to the board directory
|
||
link rather than the absolute path. For Cygwin, the absolute would
|
||
would need converted with cygpath. But just using the relative path
|
||
is a simpler solution.
|
||
|
||
NuttX-7.15 Release Notes
|
||
------------------------
|
||
|
||
The 115th release of NuttX, Version 7.15, was made on March 27, 2016,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.15.tar.gz and
|
||
apps-7.15.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/patacongo/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core OS:
|
||
|
||
- Add a state variable that provides the current level of OS
|
||
initialization. This is needed by some logic that may attempt to
|
||
run early in the start-up sequence but cannot run if a sufficient
|
||
level of initialization has not yet occurred.
|
||
- Spinlocks: Add interface definitions for to support spinlocks as
|
||
needed for multi-CPU configurations.
|
||
- SMP support. Support for Symmetric Multi-Processing (SMP) added.
|
||
This affects many internal data structures, spinlock extensions
|
||
and renaming of interrupt enable/disable interfaces, new platform
|
||
interfaces to support CPU initialization and inter-actions, and
|
||
new application interfaces to manage CPU affinity. The changes
|
||
are too extensive to summarize here; see the SMP Wiki page at
|
||
http://www.nuttx.org/doku.php?id=wiki:nxinternal:smp. The
|
||
new platform interfaces are also described in the NuttX porting
|
||
guide: http://www.nuttx.org/doku.php?id=documentation:portingguide.
|
||
Only partially verified; awaiting hardware for the complete
|
||
verification.
|
||
- TLS: Basic definitions needed to support thread local storage
|
||
(TLS). TLS is not used anywhere yet (and may not be used in the
|
||
near future either).
|
||
- Performance Monitoring: Add a configuration option to buffer
|
||
RTOS instrumentation data in an in-memory buffer.
|
||
- boardctl(): Add boardctl() support that will permit applications
|
||
to control USB devices.
|
||
|
||
* File Systems/Block Drivers:
|
||
|
||
- procfs: Add /proc/kmm entry that shows that state of the kernel
|
||
heap. Only useful in PROTECTED and KERNEL build modes where there
|
||
is a kernel heap.
|
||
- procfs: Add support for showing CPU in the tast status if SMP is
|
||
enabled.
|
||
|
||
* Networking:
|
||
|
||
- ARP: Add support for IOCTL commands to manage the ARP table.
|
||
- IEEE 802.15.4 and 6LowPAN: There are some radio drivers and a
|
||
directory structure is in place. However, most of this
|
||
development is occurring on a fork and is not yet available in the
|
||
NuttX repositories. Hopefully in NuttX-7.16.
|
||
|
||
* Common Device Drivers:
|
||
|
||
- ADS1242: Driver for the 24-Bit Differential Input ADC ADS1242 that
|
||
communicates via SPI with a MCU. Reading the ADC conversion result
|
||
as well as configuring the ADC, setting the input channel, etc. is
|
||
implemented via ioctl calls. However, it does not yet implement
|
||
the standard ADC interface. From Alexander Entinger.
|
||
- U-Blox Modem: Add an upper half driver for the U-Blox Modem. From
|
||
Vladimir Komendantskiy.
|
||
- I2C: Add an I2C, "upper half", character drivers to support raw I2C
|
||
data transfers for test applications.
|
||
- RGB LED: Add a driver to manage a RGB LED via PWM. From Alan
|
||
Carvalho de Assis.
|
||
- Performance Monitoring: Add a character driver that will allow an
|
||
application to read buffered scheduler instrumentation data.
|
||
|
||
* Simulation Platform:
|
||
|
||
- SMP: Add multi-CPU support to the simulation to support SMP
|
||
investigation. There are issues with the simulation and it is less
|
||
than perfect but sufficient for some very preliminary testing of
|
||
the core SMP feature.
|
||
|
||
* ARMv7-A, ARMv7-R, and ARMv7-M:
|
||
|
||
- ARMv7-A, ARMv7-R, and ARMv7-M: Add test-and-set logic and
|
||
definitions needed to supports spinlocks.
|
||
- ARMv7-A: Added MPCOre Generic Interrupt Controller (GICv2) and
|
||
Global Timer support
|
||
- ARMv7-A: Now includes in MCU-specific hooks needed for SMP support.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- HSMSI: HSMCI driver can now be configured to handle unaligned data
|
||
buffers.
|
||
|
||
* NXP Freescale LPC11xx/17xx/43xx and LPC2378 Drivers:
|
||
|
||
- I2C: Backported the LPC43XX I2C driver, replacing the LPC11XX,
|
||
LPC17XX, and LPC2378 I2C drivers. This gives us the I2C_TRANSFER
|
||
method in all I2C drivers.
|
||
|
||
* NXP Freescale LPC17xx Boards:
|
||
|
||
- Support for the u-blox GSM and GPS module evaluation board with
|
||
NXP LPCExpresso LPC1768. The GSM module is one of LISA-C200,
|
||
LISA-U200 or SARA-G350. The GPS module is one of MAX-M7 or
|
||
MAX-M8. From Vladimir Komendantskiy.
|
||
|
||
* NXP Freescale i.MX6:
|
||
|
||
- Basic support is in place for the i.MX6 Quad/Dual MCUs.
|
||
Verification is, however, waiting for the receipt of hardware.
|
||
|
||
* NXP Freescale i.MX6 Boards:
|
||
|
||
- Sabre-6Quad: Basic support for the NXP/Freescale Sabre 6Quad
|
||
board is in place but waiting for hardware for verification.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32F46xx: Support for STM32F46xx from Paul Alexander Patience
|
||
- STM32L4: Add support for the STM32L4 family. From Sebastien
|
||
Lorquet.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F4 Discovery: Add PWM support for the onboard RGB LED. From
|
||
Alan Carvalho de Assis.
|
||
- Nucleo-L476: Add support for the Nucleo-L476 board. From Sebastien
|
||
Lorquet.
|
||
- STM32L476VG Discovery: Add support for the STM32L476VG Discovery
|
||
board. From Dave.
|
||
|
||
* Tools:
|
||
|
||
- tools/refesh.sh now has a --silent option so that it can be used in
|
||
batch modes without human input.
|
||
|
||
* Build System:
|
||
|
||
- Added a 'make olddefconfig' target that will refresh a .config file
|
||
without interaction.
|
||
|
||
* Applications: NSH
|
||
|
||
- 'arp': Add an 'arp' command that will support access to the OS ARP
|
||
table.
|
||
- 'ps': The 'ps' command will show CPU if SMP is enabled.
|
||
|
||
* Applications: apps/netutils:
|
||
|
||
- apps/netutils/chat: Chat logic contributed by Vladimir
|
||
Komendantskiy.
|
||
- apps/netutils/netlib: Add utility functions to support accesses to
|
||
the ARP table.
|
||
|
||
* Applications: apps/examples:
|
||
|
||
- apps/examples/chat: Chat example contributed by Vladimir
|
||
Komendantskiy.
|
||
- apps/sysem/ubloxmodem: Example to control the power
|
||
state of the modem in nsh. From Vladimir Komendantskiy.
|
||
- apps/examples/leds: An example to demonstrate use of LED driver.
|
||
- apps/examples/smp: Add a test to verify SMP configurations.
|
||
- apps/examples/rgbled: Example using the RGB LED driver to drive an
|
||
RGB LED via PWM. From Alan Carvalho de Assis.
|
||
- apps/examples/ostest: Add a test of TLS.
|
||
- apps/examples/sched_note: Add a simple example to exercise the
|
||
scheduler instrumentation logic.
|
||
|
||
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:
|
||
|
||
- Signals: Move the list of signal actions from the TCB to the group
|
||
structure. Signal handlers are not per thread but, rather, per task
|
||
group. I know, I preferred it the other way too, but this is more
|
||
compliant with POSIX.
|
||
- Semaphores: Add an internal, non-standard interface to reset a
|
||
semaphore count. This is sometimes needed by drivers in order to
|
||
recover from error conditions. Were previously using sem_init()
|
||
which is both inappropriate and incorrect if the semaphore count is
|
||
negative.
|
||
- Low-Priority Work Queue: Fix logic to find an IDLE worker thread;
|
||
the test for busy was backward. From Linfei Chen.
|
||
|
||
* File System/Block Drivers:
|
||
|
||
- FAT: Add an option to force all transfers to be performed
|
||
indirectly using the FAT file system's internal sector buffers.
|
||
This is a fix for the case where the user provided buffers are not
|
||
properly aligned for DMA (as with THTTPD).
|
||
- MTD: Increase block size in mtd_geometry_s to 32-bits.
|
||
|
||
* Common Drivers:
|
||
|
||
- I2C: Restructured the I2C interface as necessary to eliminate some
|
||
thread-safety issues inherent in the legacy I2C interface design.
|
||
This effects the interface definition, all I2C clients, and all low-
|
||
level I2C drivers. I have used caution, but I still expect a change
|
||
of this magnitude to introduce some errors. Any bug reports of bug
|
||
fixes will be much appreciated.
|
||
- I2C_RESET: Eliminate up_i2creset(). It should not be a global
|
||
function; Now it is an I2C interface method.
|
||
- PCA555: Add logic to make the PCA555 driver thread safe.
|
||
- syslog: If syslog timestamping is enabled, don't try to get the time
|
||
if the timer hardware has not yet been initialized.
|
||
- AT24xx driver: Correct missing address calculation logic. From Frank
|
||
Benkert.
|
||
|
||
* Networking:
|
||
|
||
- Networking drivers that support CONFIG_NET_NOINTS: Fix a race
|
||
condition that can cause the TX poll timer to stop running. From
|
||
Manuel Stuhn.
|
||
- Timer Poll: Fix some logic when there are multiple network
|
||
interfaces. In this case, TCP timeout events can really only being
|
||
processed when the poll from the correct device is received.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- SAMV7 USB HS device: The USB driver has had some issue that would
|
||
occasionally cause loss of packets. Back last December, a fix was
|
||
put in for this but the fix apparently worsens the problem; now
|
||
causing hangs. The basic problem is that the number of busy banks
|
||
(NBUSYBKS) status is not real time but is delayed. This was fixed;
|
||
now when the DMA completes and NBUSYBKS > 0, the NBUSYBK is
|
||
interrupt is enabled and the operations are deferred until NBUSYBKS
|
||
is truly zero.
|
||
|
||
* Tools:
|
||
|
||
- tools/testbuild.sh: .config files were not being updated because
|
||
(a) kconfig-conf was being called in the wrong directory and (b)
|
||
apps/Kconfig had not yet been created. Now uses 'make
|
||
olddefconfig'.
|
||
|
||
* Applications: apps/system:
|
||
|
||
- apps/system/i2c: The I2C tool now obeys it OS interfacing: it now
|
||
uses an I2C character driver to access the I2C bus.
|
||
- apps/system/cdcacm, usbmsc, and composite: Use new boardctl()
|
||
instead of calling directly in the OS when possible.
|
||
|
||
* Applications: apps/netutils:
|
||
|
||
- apps/netutils/dhcpd: DHCPD no longer calls directly into the OS but
|
||
uses the new network IOCTL commands to modify the ARP table.
|
||
|
||
* Applications: apps/modbus:
|
||
|
||
- apps/modbus/nuttx/portserial.c: Was not returning an error on
|
||
failure to open the device driver. From Olololshka kokoko.
|
||
|
||
* Applications: apps/examples:
|
||
|
||
- apps/examples/usbserial, composite, usbterm: Use new boardctl()
|
||
instead of calling directly in the OS when possible. There are
|
||
still a few bad OS calls for USB device interfaces that do not yet
|
||
have boardctl() commands.
|
||
|
||
* Applications: apps/platform:
|
||
|
||
- Moved C++ initialization logic out of the RTOS and into the
|
||
application space, specifically to apps/platform/board, where it
|
||
belongs.
|
||
|
||
NuttX-7.16 Release Notes
|
||
------------------------
|
||
|
||
The 116th release of NuttX, Version 7.16, was made on June 1, 2016,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.16.tar.gz and
|
||
apps-7.16.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/nuttx/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core OS:
|
||
|
||
- Power Management: Add activity domain to all PM interfaces and
|
||
driver callbacks. If CONFIG_PM_NDOMAINS == 1, then the legacy
|
||
behavior is preserved. If CONFIG_PM_NDOMAINS > 1, then multiple
|
||
PM domains are supported. This will allow separate control for
|
||
certain power management groups. For example, a network can be
|
||
shut down without affect an ongoing UI (and vice versa).
|
||
- board_app_initialize(): board_app_initialize() now accepts an
|
||
argument that may be used to support initialization in different
|
||
configurations.
|
||
|
||
* File System and Block and MTD Drivers:
|
||
|
||
- N25Qxxx: Add MTD support for Micron N25Qxxx family of QSPI flash.
|
||
From Dave (ziggurat29).
|
||
- SST26F: Add an MTD driver for SST26F spi/qspi flash devices (SPI
|
||
mode only). From Sebastien Lorquet.
|
||
- File Descriptor Detach: Add logic to detach a file structure from a
|
||
file descriptor. This is for use only within the OS. It permits an
|
||
open file or driver to be used across multiple threads.
|
||
|
||
* Networking and Network Drivers:
|
||
|
||
- listen()/accept(): Separate out psock_listen() and psock_accepti()
|
||
for internal, thread independent OS usage (i.e., without a socket
|
||
descriptor).
|
||
- VNC Server: Add support for a VNC server. This logic is code
|
||
complete and functional, but not well tested.
|
||
|
||
* Graphics and Graphic Drivers:
|
||
|
||
- Framebuffer driver: Add a display number to each interface in order
|
||
to support multiple display devices.
|
||
- VNC Server: Add support for a VNC server. This logic is code
|
||
complete and functional, but not well tested.
|
||
- LCD Backpack: Add support for PCF8574 LCD Backpack driver. This
|
||
driver supports an interface board that is based on the PCF8574 I/O
|
||
expander and supports the HD44780-based (or compatible) LCD modules.
|
||
There are a myriad of different vendors of such, but they are
|
||
principally the same, save wiring and minor features like jumpers
|
||
for I2C addresses. This driver supports known and unknown variants.
|
||
From Dave (ziggurat29).
|
||
|
||
* Common Device Drivers:
|
||
|
||
- RTC: Simplify the RTC interface. The old interface was way too
|
||
complex and was not fully implemented anywhere.
|
||
- BH1750FVI: Add a character driver for Rohm Ambient Light Sensor
|
||
BH1750FVI. From Alan Carvalho de Assis.
|
||
- CAN: Improve CAN error reporting. From Frank Benkert.
|
||
- aes.h: Modifications to the crypto API needed for LPC43xx. From
|
||
Alexander Vasiljev.
|
||
- ADC: Interface no longer uses global adc_receive() call. Added a
|
||
new bind() method to the ADC interface. Now the ADC upper half
|
||
driver will register its receipt-of-data callback. This change
|
||
allows the ADC lower half driver to be used with a differ ADC upper
|
||
half.
|
||
|
||
* Simulation Platform:
|
||
|
||
- Linux Host Networking: Enhance networking support for the
|
||
simulation under Linux. Includes updated support for Linux TUN/TAP,
|
||
and the addition of support for Linux bridge devices. From Steve.
|
||
|
||
* ARMv7-A, ARMv7-R, and ARMv7-M:
|
||
|
||
- ARMv7-M: Convert more assembly language files for use with the IAR
|
||
toolchain. From Kha Vo.
|
||
- ARMv7-A: Complete re-design of SMP-related logic to initialize each
|
||
CPUn, n > 0, when CONFIG_SMP=y.
|
||
|
||
* Atmel SAMV7:
|
||
|
||
- Add a JTAG config and ERASE config to Kconfig to set the
|
||
CCFG_SYSIO SYSIO Pins. From David Sidrane.
|
||
- System Reset: Add the up_systemreset interface to the samv7 arch. The
|
||
approach is slightly different in that: 1) It enables ARCH_HAVE_RESET
|
||
and allows the user to set if, and for how long, to drive External
|
||
nRST signal. It also does not contain a default board_reset, as that
|
||
really should be done in the config's src if CONFIG_BOARDCTL_RESET
|
||
is defined. From David Sidrane.
|
||
|
||
* Atmel SAMV7 Boards:
|
||
|
||
- SAMV71-XULT: Add configuration(s) that were be used to verify VNC
|
||
graphics output as well as mouse and keyboard input.
|
||
|
||
* NXP Freescale i.MX6 Boards:
|
||
|
||
- Sabre-6Quad: The basic i.MX6 port is complete. This is a minimal
|
||
port at present and probably still has some as-of-yet-undiscovered
|
||
issues.
|
||
- Sabre-6Quad: Basic SMP NSH configuration is now working. But this
|
||
is probably only because the SMP test case does not stress the
|
||
logic. There are know outstanding SMP issues as noted in the
|
||
Sabre-6Quad README.txt file.
|
||
|
||
* NXP Freescale LPC43xx:
|
||
|
||
- LPC4337jet100: Add definitions for the LPC4337jet100 chip. From
|
||
Alexander Vasiljev.
|
||
|
||
* NXP Freescale LPC43xx Drivers:
|
||
|
||
- AES: Add AES support. From Alexander Vasiljev.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32 L4: Add configuration options to allow SRAM2 to be used for
|
||
heap, or not at all, and to zero-initialize it on OS start, or not
|
||
at all. From Dave dev@ziggurat29.com.
|
||
- STM32 L4: Add support for HSE and MSI clocks, and auto trim of MSI
|
||
to LSE (needed for USB). From Dave (ziggurat29)
|
||
- STM32 L4: Add support for unique id function to arch; modified board
|
||
to support unique id boardctl. From Dave (ziggurat29)
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 F4 RTC: Add a custom RTC driver with support for alarms. From
|
||
Neil Hancock.
|
||
- STM32 L4 QSPI: Add a QSPI driver with DMA support and (optional
|
||
memory mapped mode support. From Dave ziggurat29).
|
||
- STM32, STM32 L4, and STM32 F7 Serial: Add support for compliant
|
||
SD-style breaks. From David Sidrane.
|
||
- STM32 L4 CAN: Add CAN support for STM32L4. From Sebastien Lorquet.
|
||
- STM32 1-Wire: Add support for a custom 1-wire driver. The serial
|
||
driver already supports a 1-wire interface, but this driver uses the
|
||
same serial logic to implement a lower half driver much like the
|
||
I2C lower half driver. From Aleksandr Vyhovanec.
|
||
- STM32 L4 SPI: Add support for SPI 4 and 5 on stm32f411 chips. From
|
||
Konstantin Berezenko.
|
||
- STM32 ADC: Allow omitting use of channels in a lower part of PWM.
|
||
From Pierre-noel Bouteville.
|
||
- STM32 L4 I2C: Get I2C working for STM32L4. From Dave (ziggurat29).
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM3220G-EVAL: Add support for both the IAR and uVision GCC IDEs.
|
||
From Kha Vo.
|
||
- STM32F429I Discovery: Add support for the uVision GCC IDE. From
|
||
Kha Vo.
|
||
- STM32F4 Discovery: Integrate BH1750FVI driver in the STM32F4 Discovery
|
||
board. From Alan Carvalho de Assis.
|
||
- STM32L476VG Discovery: Add support for QSPI based N25Qxxx flash.
|
||
From Dave (ziggurat29)
|
||
- STM32L476VG Discovery: Add board ioctls for allowing user application
|
||
to cause QSPI memory mapped mode to be engaged and disengaged. Also
|
||
partitioned QSPI flash for file system and other (eventually xip).
|
||
From Dave (ziggurat29)
|
||
- Nucleo-144: Basic port for the Nucleo-144 board with the STM32F746ZG
|
||
MCU. From Kconstantin Berezenko.
|
||
- STM32F103 Minimum: Add support for this minimual STM32F103CBT6 "blue"
|
||
board. From Alan Carvalho de Assis.
|
||
- STM32F411E Discovery: Add basic configuration for stm32f411e-disco
|
||
board with STM32F411VE chip. From Konstantin Berezenko.
|
||
|
||
* Build/Configuration System:
|
||
|
||
- Moved NuttX repository to https://bitbucket.org/nuttx/nuttx.
|
||
Eliminated use of sub-modules.
|
||
- Add support for the IAR toolchain for the limited case of the ARMv7-M
|
||
architecture and the STM32 chip. From Aleksandr Vyhovanec.
|
||
- make export: Pass top-level make to the script to allow -j greater
|
||
than 1. From David Sidrane.
|
||
- fs/Kconfig: Allow CONFIG_FS_WRITABLE to be manually selectable. This
|
||
is needed when there are no writable file systems, but write support
|
||
is still needed in BCH or FTL.
|
||
- arch/*/Makefile: Add definitions that can be overrided to use GCC
|
||
instead of LD in the final link. From Paul Alexander Patience .
|
||
|
||
* Applications: apps/netutils:
|
||
|
||
- apps/netutils/esp8266: ESP8266 driver application. From Pierre-noel
|
||
Bouteville.
|
||
|
||
* Applications: apps/examples:
|
||
|
||
- apps/examples/alarm: Add a simple test of the ALARM iotcl calls of
|
||
the RTC driver.
|
||
- apps/examples/nximage: Add a configuration option to select
|
||
greyscale.
|
||
|
||
* Platforms: apps/platform:
|
||
|
||
- apps/platform/nucleo-144: Add platform files for NUCLEO-144
|
||
(NUCLEO-F746ZG). From Mark Olsson.
|
||
- apps/examples/media: You can now override the default device driver
|
||
path by providing an alternal path on the command line. From
|
||
S<>bastien Lorquet.
|
||
|
||
Works-In-Progress:
|
||
|
||
* IEEE802.14.5/6LowPAN. Hooks and framework for this effort were
|
||
introduced in NuttX-7.15. Work has continued on this effort on
|
||
forks from the main repositories, albeit with many interruptions.
|
||
The completion of this wireless feature will postponed until at
|
||
least NuttX-7.17.
|
||
|
||
* i.MX6 SMP. Partially functional, but there is more that still
|
||
needs to be done.
|
||
|
||
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:
|
||
|
||
- Various places: Search for places where a stray semicolon following
|
||
an if condition cause the if body to be executed unconditionally.
|
||
Fixes in all SAM DMA logic, unionfs, OS signalling logic, and others.
|
||
- enter/leave_critical_section() may attempt to access task lists
|
||
before they have been initialized in the SMP configuration.
|
||
|
||
* File System/Block Drivers:
|
||
|
||
- SMART MTD: Return code of smart_scan not checked, can cause success
|
||
result in failure case, leading to 'dev' pointer being invalid. From
|
||
Dave (ziggurat29)
|
||
- mount: Fix a backward debug assertion. Noted by David Sidrane.
|
||
|
||
* Common Drivers:
|
||
|
||
- NRF24L01: Fix backward calculation of relative frequency. Noted by
|
||
Henry Zhang.
|
||
- PCA9555 I/O expander: Fix an error in the PCA9555 driver: Under
|
||
certain error conditions, interrupts were not being re-enabled.
|
||
Sebastien Lorquet.
|
||
- ADS1255: Must not do SPI access from interrupt handler. Use the
|
||
worker thread instead. Must also lock the SPI bus before using it.
|
||
- Several SPI-based drivers modified. All drivers that use SPI must
|
||
call SPI_LOCK and SPI_UNLOCK. This is not optional.
|
||
- MS583730: Fix a bug in crc computation for ms583730. Implement
|
||
POSIX read.
|
||
|
||
* Atmel SAMV7:
|
||
|
||
- Fix typo in MATRIX register definitions. From Stefan Kolb.
|
||
- SAMV7 Tickless Mode: This is a fix to a problem in the handling of
|
||
the oneshot timer. Due to a wrong assumption concerning the behavior
|
||
directly after the start of the timer/counter the function
|
||
sam_oneshot_cancel(<28>) calculates the wrong remaining time. The code
|
||
assumes that the counter register is zero directly after the start
|
||
of the timer, but this is not true. To start the time/counter a
|
||
software trigger is invoked, this trigger starts the timer/count and
|
||
sets the counter register to zero, but the reset of the counter
|
||
register is not performed instantly. According to the datasheet:
|
||
"The counter can be reset by a trigger. In this case, the counter
|
||
value passes to zero on the next valid edge of the selected clock."
|
||
Thus the counter is set to zero between 0 and USEC_PER_TICK
|
||
microseconds after the clock was started.
|
||
In my fix I use the freerun count value to determine if at least one
|
||
tick passed since the start of the timer and thus if the value of
|
||
the oneshot counter is correct. I also tried to use the function
|
||
up_timer_gettime(<28>) to achieve this but, at least if compiled with
|
||
no optimization the problem vanishes without using the value of the
|
||
function, the function call takes too long.
|
||
Another problem treated in the fix is that if the oneshot timer/counter
|
||
is canceled, we only know the remaining time with a precision of
|
||
USEC_PER_TICK microseconds. This means the calculated remaining time
|
||
is between 0 and USEC_PER_TICK microseconds too long. To fix this I
|
||
subtract one tick if the calculated remaining time is greater than
|
||
one tick and otherwise set the remaining time to zero. By doing so
|
||
the measured times are much more precise as without it. From Stefan
|
||
Kolb.
|
||
|
||
* Atmel SAMA5:
|
||
|
||
- SAMA5: Stefan Kolb's change to the SAMV7 Oneshot Timer should also
|
||
be applied to the SAMA5 oneshot time since the drivers are identical.
|
||
|
||
* Atmel SAM3/4:
|
||
|
||
- SAM3/4: Stefan Kolb's change to the SAMV7 Oneshot Timer should also
|
||
be applied to the SAM3/4 oneshot time since the drivers are identical.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- SAMV7 TWIHS (as well as SAM3/4 and SAMA5: Ensure that the TWIHS
|
||
(i2c) hw get's its clock set when the sequence of
|
||
sam_i2cbus_initialize(), sam_i2cbus_uninitialize(), then
|
||
sam_i2cbus_initialize() or twi_reset() is called. I found this a
|
||
while back in the stm32 family, so there may be more arch-es with
|
||
this sort of bug. I suppose any driver that has the notion of "do
|
||
not set the freq if it is already set" could be suspect. From David
|
||
Sidrane.
|
||
- USBHS Device: Remove disabling of whole USB on suspend of USBHS.
|
||
This fix removes the disabling of the whole USB peripheral on
|
||
suspend interrupt. Its enough to freeze the clock instead. When
|
||
disabling the whole peripheral, the next wakeup-interrupt comes up
|
||
with an disabled clocking. The unfreeze clock has no effect, because
|
||
the master clock is disabled. This makes all registers, including
|
||
the IDR unwriteable and the IRQ falls in an endless loop blocking
|
||
the whole system. Furthermore the disabling of the peripheral clock
|
||
prevents hotplugging or reconnecting the USB. From Frank Benkert.
|
||
- MCAN: Fix missing unlock of device in MCAN mcan_txempty(). From
|
||
Frank Benkert.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32 L4 Clocking: Problem with resetting backup domain clears
|
||
clocking options set up before in *rcc.c use INITS flag to avoid
|
||
magic reg value to detect power up reset state of RTC correct a
|
||
problem clearing interrupt flags (they weren't) which prevented an
|
||
alarm from ever being used more than once per reset cycle. From
|
||
Dave (ziggurat29)
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32L4 SPI: That STM32Lr SPI driver is quite different. They now
|
||
handle frames of arbitrary size between 4 and 16 bits. It was broken
|
||
before a new bit has to be set (RX fifo threshold) to handle <= 8-bit
|
||
transactions. If not set, the default is 16-bit packed >=8-bit
|
||
frames and the RXNE bit is never set (it is set when 16-bits are
|
||
received). weird things as always. This also add 8-bit access
|
||
routines to the data register, because a 16-bit access to the data
|
||
register when the frame size is below 9 bits is interpreted as a
|
||
packed dual frame exchange. Sebastien Lorquet.
|
||
- STM32: Correct some bad commits that broke the LTDC display example.
|
||
From Marco Krahl.
|
||
- STM32 F4 RTC: Fix logic in F4 RTCC driver that prevent ALARM
|
||
interrupt. From Neil Hancock.
|
||
- STM32 F1 ADC: Fix STM32 ValueLine ADC IRQ number selection. From
|
||
David Sidrane.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F429I Discovery: Correct some bad commits that broke the LTDC
|
||
display example. From Marco Krahl.
|
||
|
||
* TI Tiva:
|
||
|
||
- GPIO Interrupts: Fix a bug of GPIO falling-edge interrupt for tiva.
|
||
From Young.
|
||
|
||
* C Library:
|
||
|
||
- math: Add a NAN test on 'x' in asin function of lib_asin.c. Suggested
|
||
by Pierre-noel Bouteville.
|
||
|
||
* Build/Configuration System:
|
||
|
||
- Several Makefiles: Add .PHONY definitions to prevent 'clean up to date'
|
||
message weirdness when 'make clean' is done with no .config or
|
||
Make.defs file.
|
||
|
||
NuttX-7.17 Release Notes
|
||
------------------------
|
||
|
||
The 117th release of NuttX, Version 7.17, was made on July 25, 2016,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.17.tar.gz and
|
||
apps-7.17.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/nuttx/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* File System and Block and MTD Drivers:
|
||
|
||
- drivers/mtd: Add a driver of IS25xP SPI flash devices. Based on
|
||
sst25xx driver. From Marten Svanfeldt.
|
||
|
||
* Networking and Network Drivers:
|
||
|
||
- Break out internal interface psock_ioctl().
|
||
|
||
* Common Device Drivers:
|
||
|
||
- PTYs: Added support for pseduo-terminals: Device drivers that can be
|
||
used for communications between tasks (usually with re-directed I/O).
|
||
Based on existing pipe logic.
|
||
- Button upper half driver: Added support for poll().
|
||
- CAN: Add support for poll. From Paul Alexander Patience.
|
||
- GPIO: Add support for a simple GPIO driver. It supports only pre-
|
||
configured input, output, and interrupting pins with basic input and
|
||
output operations. Interrupt events can lead to notification via a
|
||
signal.
|
||
- I/O Expander: Shadow-Mode: The output- and configuration registers of
|
||
the IO-Expander are held in the microcontrollers memory and only
|
||
written to the IO-Expander. This reduces bus traffic and is more
|
||
error-proof than the normal read-modify-write operation. Retry Mode:
|
||
If enabled and an error occurs while writing to the IO-Expander the
|
||
current transmission is automatically repeated once. From Michael
|
||
Spahlinger.
|
||
- Pipes/FIFOs: Add support to allocating different sizes for pipe and
|
||
fifo buffers. Adds mkfifo2() and pipe2() which are just like mkfifo()
|
||
and pipe(), but allow control of the size of the underlying, in-memory
|
||
circular buffer. Move pipe() and mkpipe() to the C library, they are
|
||
no longer core OS interfaces. Capability currenty used only by PTY
|
||
logic to support, configurable, smaller buffers for PTYs.
|
||
|
||
* SYSLOG/Debug Output:
|
||
|
||
- SYSLOG: Consolidated all SYSLOG logic in drivers/syslog. Added an
|
||
abstraction layer that supports: (1) redirection of SYSLOG outpout.
|
||
This is usually so that you can boot with one SYSLOG output but
|
||
transition to another SYSLOG output when the OS has initialialized,
|
||
(2) adds common serialization of interrupt output as a configuration
|
||
option. Without this configuration setting, interrupt level output
|
||
will be asynchronous. And (3) vsyslog is now a system call and is
|
||
usable with other-than-FLAT builds.
|
||
- SYSLOG: syslog() will now automatically redirect output to
|
||
lowsyslog() if called from an interrupt handler.
|
||
- Extended SYSLOG logic so that we can send SYSLOG output to a file.
|
||
- SYSLOG character device channel will now expand LF to CR-LF.
|
||
Controllable with a configuration option.
|
||
- Add a SYSLOG character device that can be used to re-direct output
|
||
to the SYSLOG channel (Not be be confused the SYSLGO output to a
|
||
character device).
|
||
- Debug features are now enabled separately from debug output.
|
||
(1) CONFIG_DEBUG is gone. It is replaced with CONFIG_DEBUG_FEATURES.
|
||
(2) The macros dbg() and vdbg() have renamed as _err() and _info(),
|
||
respectively. This also applies to all of the variants as well,
|
||
XXdbg() and XXvdbg(). (3) Add a new debug level, _warn() (and
|
||
all variants XXwarn(), XXvwarn(), etc.). (4) Debug assertions can
|
||
now be enabled separately from debug output. (5) You can now enable
|
||
subsystem/device driver debug output at different output levels. For
|
||
example, CONFIG_DEBUG_FS no longer enables file system debug output
|
||
It enables general file system debug logic and enables selection of
|
||
CONFIG_DEBUG_FS_ERROR, CONFIG_DEBUG_FS_WARN, and CONFIG_DEBUG_FS_INFO.
|
||
- Since the SYSLOG layer now automatically handles low-level vs.
|
||
high-level output, the low-level (ll) variants of the debug macros
|
||
were eliminated.
|
||
- Reviewed all uses of *err(). These macro family should indicate
|
||
only error conditions. Convert *err() to either *info() or add
|
||
ERROR:, depending on if an error is reported.
|
||
- _alert(): New debug macro: _alert(). This is high priority,
|
||
unconditional output and is used to simplify and standardize crash
|
||
error reporting.
|
||
- Many CONFIG_DEBUG_* options did not have matching macros defined in
|
||
include/debug.h. Rather, there were various definitions scattered
|
||
throughout the sourse tree. These were collected together and
|
||
centralized with single macro definitions in include/debug.h
|
||
|
||
* Simulation Platform:
|
||
|
||
- Added the simulated QSPI (N25Q) flash to the simulation and extened
|
||
flash simulation capabilities to run with MTD drivers based on config
|
||
options (currently m25p, sst26 and w25). From Ken Pettit.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- SPI: SPI-Freq. 40MHz; VARSELECT; hw-features This change adds the
|
||
following improvements:
|
||
|
||
o Increase the allowed SPI-Frequency from 20 to 40 MHz.
|
||
o Correct and rename the "VARSELECT" option This option was
|
||
included in the code as "CONFIG_SPI_VARSELECT" but nowhere
|
||
defined in a Kconfig file. The change renames it to
|
||
"CONFIG_SAMV7_SPI_VARSELECT" and corrects the implementation
|
||
according the datasheet of Atmel. In short, this option
|
||
switches the processor from "fixed peripheral selection"
|
||
(single device) to "variable peripheral selection" (multiple
|
||
devices on the bus).
|
||
o Add a new Function to the interface to control the timing and
|
||
delays of the chip according the ChipSelect lines. This function
|
||
can control the delay between the assertion of the ChipSelect and
|
||
the first bit, between the last bit and the de-assertion of the
|
||
ChipSelect and between two ChipSelects. This is needed to tune
|
||
the transfer according the specification of the connected devices.
|
||
o Add three "hw-features" for the SAMV7, which controls the behavior
|
||
of the ChipSelect:
|
||
- force CS inactive after transfer: this forces a (short) de-
|
||
assertion of the CS after a transfer, even if more data is
|
||
available in time
|
||
- force CS active after transfer: this forces the CS to stay
|
||
active after a transfer, even if the chip runs out of data.
|
||
Btw.: this is a prerequisit to make the LASTXFER bit working
|
||
at all.
|
||
- escape LASTXFER: this suppresses the LASTXFER bit at the end
|
||
of the next transfer. The "escape"-Flag is reset automatically.
|
||
|
||
From Frank Benkert
|
||
- TWISHS: Driver improvements from Michael Spahlinger.
|
||
- GPIO-Driver fixed for Open-Drain Pins:
|
||
|
||
o sam_gpioread: Now the actual line level from the pin is read
|
||
back. This is extremely important for Open-Drain Pins, which
|
||
can be used bidirectionally
|
||
o Re-Implemented twi_reset-function and enhanced it so it can be
|
||
called from inside the driver (see next point)
|
||
o Glitch-Filter: Added a configuration option to enable the twi-
|
||
built-in glitch filter
|
||
o Added a "Single Master Mode": In EMC Testing the TWI-Bus got
|
||
stuck because the TWI-Master detected a Multi-Master access (but
|
||
there is no second master). With the option "Single Master" we
|
||
detect these events and automatically trigger a twi_reset. We
|
||
also do an automatic recovery if a slave got stuck (SDA stays
|
||
low).
|
||
|
||
With the above changes I<>C-Bus reliability in harsh environments (eg.
|
||
EMC) is greatly improved. The small change in the GPIO-Driver was
|
||
necessary because otherwise you cannot read back the correct line
|
||
status of Open-Drain Outputs and this is needed by the twi_reset
|
||
function. From Michael Spahlinger
|
||
|
||
* NXP Freescale LPC43xx Drivers:
|
||
|
||
- EMC: Extend LPC43xx EMC code to support SDRAM on a dynamic memory
|
||
interface. From Vytautas Lukenskas.
|
||
|
||
* NXP Freescale Kinetis:
|
||
|
||
- Kinetis K64: Add basic support for the K64 family. I leveraged the
|
||
changes from https://github.com/jmacintyre/nuttx-k64f and merged
|
||
into the existing kinetis code with a lot of changes and additions
|
||
(like pin multiplexing definitions).
|
||
|
||
* NXP Freescale Kinetis Drivers:
|
||
|
||
- Add a KinetisUSB device controller driver. Derived from the pic32mx
|
||
usb driver, which uses the same usb controller. From kfazz.
|
||
- Kinetis pwm support, based on the KL pwm driver. From kfazz.
|
||
- Kinetis Ethernet: Add support for the KSZ8081 PHY.
|
||
- Kinetis Ethernet: Modified Ethernet driver to try all PHY addresses
|
||
and then only fail if the driver cannot find a usable PHY address.
|
||
This means that you no longer have to specific the PHY address in
|
||
advance.
|
||
- Kinetis Ethernet: Add support for CONFIG_NET_NOINTS. The driver no
|
||
longer runs the networking at interrupt level but can defer interrupt
|
||
work to the high-priority work queue.
|
||
|
||
* NXP Freescale Kinetis Boards:
|
||
|
||
- Teensy-3.x: Add USB support and a usbnsh configuration.
|
||
From kfazz (2016-06).
|
||
- Freedom-K64F: Add support for the NXP Freedom-K64F board at 120MHz.
|
||
This is primarily the work of Jordan Macintyre. I leveraged this
|
||
code from https://github.com/jmacintyre/nuttx-k64f which was, itself,
|
||
a leverage from the old K60 TWR configuration. This includes
|
||
significant corrections (LEDs, buttons, README, etc) and extensions
|
||
and updates to match more recent BSPs.
|
||
- Freedom-K64F: Added a configuration that supports networking.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32 F1-4: Added support for the STM32F105R. From Konstantin
|
||
Berezenko.
|
||
- STM32 F4: Added support for the STM32FF76xxx and STM32FF7xx
|
||
families. From David Sidrane.
|
||
- STM32 F1-4: Add support for Tickless mode (two timer
|
||
implementation). From Max Neklyudov.
|
||
- STM32 L4: Add support for tickless OS, and incidentally timers,
|
||
PWM, oneshot, free-running.... From ziggurat29.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 F1-4: Add the up_getc() function to STM32 in order to support
|
||
the minnsh configuration. From Alan Carvalho de Assis.
|
||
- STM32 F7: Add SPI driver. From David Sidrane.
|
||
- STM32 F7: Add SPI, I2C, and ADC drivers. From Lok Tep.
|
||
- STM32 L4: Add ioctls to set/get CAN bit timing in stm32l4. Add
|
||
ioctl hooks to allow future management of can id filters. From
|
||
Sebastien Lorquet.
|
||
- STM32 L4: Add some CAN mode IOCTL calls. These will be useful for
|
||
device autotest when the application boots. They are redundant
|
||
with the CONFIG_CAN_LOOPBACK option, which can now just be
|
||
interpreted as a default setting. From Sebastien Lorquet.
|
||
- STM32 F1-4: Port STM32L4 CAN IOCTLs to STM32. From Sebastien Lorquet.
|
||
- STM32 L4: Implementation of loopback IOCTLs. From Sebastien
|
||
Lorquet.
|
||
- STM32 F7: Added SDMMC1 support for stm32F7 74-75. From Lok Tep.
|
||
- STM32 F7: Add USB support. From Lok Tep.
|
||
- STM32 F7: Added PWR, RTC, and BBSRAM support for stm32f7. From David
|
||
Sidrane.
|
||
- STM32 F7: Added STMF7xxx RTC. From David Sidrane.
|
||
- STM32 F7: Added STM32F7 DBGMCU. From David Sidrane.
|
||
- STM32 L4: Port support for both RX FIFOs from STM32 CAN. From Paul
|
||
Alexander Patience.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- Added a minnsh configuration for the STM32F103-Minimum board. From
|
||
Alan Carvalho de Assis .
|
||
- Added support for the Nucleo-F767ZI board. From David Sidrane.
|
||
- Nucleo-144/Nucleo-F767ZI: Add test for STM32 F7 SPI. From David
|
||
Sidrane.
|
||
- Nucleo-144: Added SDMMC support to Nucleo-144. From David Sidrane.
|
||
- Olimex STM32-E4077: Add support for Olimex STM32 E407 board. From
|
||
Mateusz Szafoni.
|
||
- Nucleo-144: Added USB OTG device to Nucleo-144. From David Sidrane.
|
||
- Nucleo-144: Added bbsram test to Nucleo-144. From David Sidrane.
|
||
- STM32F4 Disovery: add CAN support for STM32F4 Discovery. From
|
||
Matthias Renner.
|
||
- STM32F4 Disovery: added a canard configuration files. From
|
||
Matthias Renner.
|
||
- STM32F4 Discovery: Add FPU support for ostest for the STM32F4
|
||
Disovery platform. From David Alessio.
|
||
- STM32L476 Discovery: Update stm32l476 disco to include init code for
|
||
smartfs and nxffs for cases where those fs are included in build.
|
||
From ziggurat29.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- include/assert.h: Check if NDEBUG is defined. From Paul Alexander
|
||
Patience.
|
||
- assert.h: Define static assert for C++ usage. From Paul Alexander
|
||
Patience.
|
||
- Add crc64 support. From Paul Alexander Patience.
|
||
- hex2bin: Move the portable library portion of apps/system/hex2bin
|
||
the C library with the OS internals. It is used in certain internal
|
||
boot-loader builds.
|
||
- Add raise().
|
||
- libm: This change should significantly improve the performance of
|
||
single precision floating point math library functions. The vast
|
||
majority of changes have to do with preventing the compiler from
|
||
needlessly promoting floats to doubles, performing the calculation
|
||
with doubles, only to demote the result to float. These changes only
|
||
affect the math lib functions that return float. From David Alessio.
|
||
- printf(): If there are no streams, let printf() fall back to use
|
||
syslog() for output.
|
||
- Move pipe() and mkpipe() to nuttx/libc, they are no
|
||
longer core OS interfaces. Capability currenty used only by PTY logi
|
||
to support, configurable, smaller buffers for PTYs.
|
||
- Move driver-related files from include/nuttx to include/nuttx/drivers.
|
||
Move driver related prototypes out of include/nuttx/fs/fs.h and into
|
||
new include/drivers/drivers.h.
|
||
- include /nuttx/lib: Move library-related files from include/nuttx to
|
||
include/nuttx/lib.
|
||
|
||
* Build/Configuration System:
|
||
|
||
- Custom Board Configuration: Add logic to support custom board
|
||
directories that include a Kconfig file. During the context phase
|
||
of the build, any Kconfig file in the custom board directory is
|
||
copied into configs/dummy, replacing the existing Kconfig file with
|
||
the target Kconfig file.
|
||
- Remove the includes/apps link to apps/include. It is no longer
|
||
used. From Sebastien Lorquet.
|
||
|
||
* Tools:
|
||
|
||
- tools/tesbuild.sh will now build NxWM configurations.
|
||
|
||
* Appplication Build/Configuration System:
|
||
|
||
- Change to the way that apps/ Kconfig files are generated in
|
||
order to better support reuse of the apps/ directory in NuttX
|
||
products. Changes include: Make the full tree use wildcards
|
||
make.defs, Add empty preconfig rules to 'leaf' makefiles, Use
|
||
directory.mk for recursive dir makefiles, Individual app kconfig
|
||
fixes, Recursive Kconfig autogeneration, Add kconfig files for
|
||
pcode and tiff, and fix a gitignore rule, From S<>bastien Lorquet.
|
||
- apps/include directory structure reorganized. There are no longer
|
||
any header files in the apps/include/. directory. Rather, sub-
|
||
directories were added to match the partitioning of apps/ sub-
|
||
directories and the header files were moved into the appropriate
|
||
sub-directory. This change is intended to help with some changes
|
||
being considered by S<>bastien Lorquet.
|
||
- Call all includes from <apps/bla/bla.h> to "bla/bla.h". From Sebastien
|
||
Lorquet.
|
||
- Add apps/include to include path in top-level Make.defs file.
|
||
|
||
* Applications: apps/nshlib:
|
||
|
||
- Make NSH net-initialization be a configuration option. From Marten
|
||
Svanfeld.
|
||
- Add NTP client initialization in NSH network startup logic. From
|
||
David S. Alessio .
|
||
- 'ps' command now prints out the stack usage if stack coloration is
|
||
enabled. From Frank Benkert.
|
||
- Allow stack usage to be disabled on constrained systems. From David
|
||
Sidrane.
|
||
|
||
* Applications: apps/netutils:
|
||
|
||
- NTP Client: Add retries. From David S. Alessio.
|
||
- NTP Client: The NTP client will now optionally use pool.ntp.org as
|
||
the NTP server; and reset the retry count upon success -- more robust.
|
||
From David Alessio.
|
||
- ESP8266: Add logic to set the BAUD rate. From Pierre-noel Bouteville.
|
||
- ESP8266: In Kconfig, select ARCH_HAVE_NET when NETUTILS_ESP8266 is
|
||
selected. This allows, among other things, support for network debug
|
||
output. From Pierre-noel Bouteville.
|
||
|
||
* Applications: apps/fsutils:
|
||
|
||
- flash_eraseall: IOCTL wrapper for MDCIO_BULKERASE command. Was in
|
||
nuttx/drivers/mtd. Moved to apps/fsutils because the call directly into
|
||
the OS was incorrect.
|
||
|
||
* Applications: apps/canutils:
|
||
|
||
- canlib: Basic CAN utility library. From Sebastien Lorquet.
|
||
|
||
* Platforms: apps/system:
|
||
|
||
- flash_eraseall: Now uses the IOCTL wrapper at apps/fsutils/flash_eraseall.
|
||
|
||
* Platforms: apps/platform:
|
||
|
||
- Add platform files for Olimex STM32 E407. From Mateusz Szafoni.
|
||
|
||
* Applications: apps/examples:
|
||
|
||
- apps/examples/canard: Add canard example application. From
|
||
Matthias Renner.
|
||
- apps/examples/pty_test: PTY test program. From Alan Carvalho de
|
||
Assis.
|
||
|
||
Works-In-Progress:
|
||
|
||
* IEEE802.14.5/6LowPAN. Hooks and framework for this effort were
|
||
introduced in NuttX-7.15. Work has continued on this effort on
|
||
forks from the main repositories, albeit with many interruptions.
|
||
The completion of this wireless feature will postponed until at
|
||
least NuttX-7.18.
|
||
|
||
* i.MX6 SMP. Partially functional, but there is more that still
|
||
needs to be done.
|
||
|
||
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:
|
||
|
||
- semaphores: Need to set errno to EINVAL on errors in sem_post()
|
||
and sem_wait(). From Paul Alexander Patience.
|
||
|
||
* File System/Block Drivers/MTD Drivers:
|
||
|
||
- Several MTD FLASH drivers nullify the freed 'priv' structure and
|
||
failed to return NULL as stated in the comments. Result, will
|
||
operate on a NULL pointer later. Noted by David Sidrane.
|
||
- VFS ioctl(). Per comments from David Sidrane, file_ioctl() should
|
||
not return succeed if the ioctl method is not supported. It
|
||
probably should return ENOTTY in that case.
|
||
- SST26 Driver: Before accessing the sst26 flash, the "Global Unlock"
|
||
command must me executed, which I do in the sst26 driver. BUT re-
|
||
reading the datasheet, the WREN instruction is required to enable
|
||
the execution of this command. This was not done. I have no idea how
|
||
the driver currently works except by chance. The writes should never
|
||
happen at all, the flash is half-enabled! From Sebastien Lorquet.
|
||
- N25Qxx Driver: Alter the notion of 'blocksize' to be equivalent to
|
||
'flash write page size' in order to align with assumptions in the
|
||
smartfs driver (at least, maybe other things do as well). Correct a
|
||
bug that was previously masked by having blocksize=eraseblocksize
|
||
which would cause buffer overflows and delicious hardfaults.
|
||
Trivial spelling changes in comments, etc. From ziggurat29.
|
||
- SmartFS: Fix a 32-byte memory leak. From Ken Pettit.
|
||
- SMART MTD layer: Fixes freesector logic error when sectorsPerBlk=256,
|
||
adds DEBUGASSERT for invalid geometry and additional memory debug
|
||
logic. Also fixes the dangling pointer on error bug. From Ken
|
||
Pettit.
|
||
|
||
* Common Drivers:
|
||
|
||
- USB CDC/ACM Device Class: cdcacm_unbind leaks write request objects.
|
||
This arises due to freeing the bulk IN endpoint before the loop
|
||
that frees the requests via cdcasm_freereq. That function checks
|
||
the parameters and skips the freeing if either is NULL. Freeing
|
||
the bulk IN enpoint will cause the first param to be NULL, thereby
|
||
bypassing the free operation. To fix, I moved the release of the
|
||
bulk IN endpoint until after to loop (much as was the case for the
|
||
OUT and read requests, which did not exhibit the problem). From
|
||
ziggurat29.
|
||
- Pipes and FIFOs: Add missing configuration for pipe ring buffer
|
||
size. From Frank Benkert.
|
||
- UART 16550: Handle when CONFIG_SERIAL_UART_ARCH_IOCTL is not
|
||
enabled. From Heath Petersen.
|
||
- Common Serial Upper Half: Fix a race condition noted by Stefan
|
||
Kolb. Between the test if the TX buffer is full and entering a
|
||
critical section, bytes may be removed from the TX buffer making
|
||
the wait unnecessary. The unnecessary wait is an inefficiency,
|
||
but not really a problem. But with USB CDC/ACM it can be a problem
|
||
because the entire TX buffer may be emptied when we lose the race.
|
||
If that happens that uart_putxmitchar() can hang waiting for data
|
||
to be removed from an empty TX buffer.
|
||
- USB MSC Device Class: Add locks when removing request from queue.
|
||
From Wolfgang Reissnegger.
|
||
- USB MSC Device Class: Fix reversed logic on waiting for SCSI thread
|
||
start. The scsi thread was waiting for the wrong condition.
|
||
However, this was masked by the fact that the code creating the
|
||
scsi thread was also holding usbmsc_scsi_lock(priv) while
|
||
initializing data, hence this lock synchronized the scsi thread
|
||
start with init completion. From Wolfgang Reissnegger.
|
||
|
||
* Graphics and Graphic Drivers:
|
||
|
||
- Correct conditional compilation in ST7565 LCD driver. From Pierre-
|
||
noel Bouteville
|
||
|
||
* Networking:
|
||
|
||
- In both IPv6 and IPv4 incoming logic: (1) Should check if the
|
||
packet size is large enough before trying to access the packet
|
||
length in the IP header. (2) In the comparison between the IP
|
||
length and the full packet length, need to subtract the size of
|
||
he link layer header before making the comparison or we will get
|
||
false positives (i.e., the packet is really too small)
|
||
- TCP Networking: While working with version 7.10 I discovered a
|
||
problem in TCP stack that could be observed on high network load.
|
||
Generally speaking, the problem is that RST flag is set in
|
||
unnecessary case, in which between loss of some TCP packet and its
|
||
proper retransmission, another packets had been successfully sent.
|
||
The scenario is as follows: NuttX did not receive ACK for some sent
|
||
packet, so it has been probably lost somewhere. But before its
|
||
retransmission starts, NuttX is correctly issuing next TCP packets,
|
||
with sequence numbers increasing properly. When the retransmission
|
||
of previously lost packet finally succeeds, tcp_input receives the
|
||
accumulated ACK value, which acknowledges also the packets sent in
|
||
the meantime (i.e. between unsuccessful sending of lost packet and
|
||
its proper retransmission). However, variable unackseq is still set
|
||
to conn->isn + conn->sent, which is truth only if no further
|
||
packets transmission occurred in the meantime. Because of incorrect
|
||
(in such specific case) unackseq value, few lines further condition
|
||
if (ackseq <= unackseq)is not met, and, as a result, we are going to
|
||
reset label. From Jakub Lagwa.
|
||
|
||
* ARMv7-M:
|
||
|
||
- ARM stack check: Fix double fault on IDLE task with stack size = 0.
|
||
From David Sidrane.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- CAN: CAN Message Filtering fixed: (1) stdfilters didn't work because
|
||
the filter was never enabled (wrong number of bits to shift), and
|
||
(2) Filters were never used because the configuration register
|
||
cannot be written without using the initialization mode. Both bugs
|
||
are fixed by this change. Filtering has been tested with both
|
||
standard and extended identifiers and is now working properly. From
|
||
Michael Spahlinger.
|
||
|
||
* Atmel SAMA5:
|
||
|
||
|
||
* Atmel SAM3/4 Drivers:
|
||
|
||
- Fix some errors in AFEC header file. From OrbitalFox.
|
||
- DAC: DACC_WPMR_WPKEY_MASK -> DACC_WPMR_WPKEY. From Wolfgang
|
||
Reissnegge.
|
||
- Timer: Fix ops check in TCIOC_STOP. From Wolfgang Reissnegge.
|
||
- I2C: Fix reversed logic in twi_startmessage(). From Wolfgang
|
||
Reissnegger.
|
||
- SAM3/4 UDP: Fix handling of endpoint RX FIFO banks. This fixes
|
||
a race condition where the HW fills a FIFO bank while the SW is
|
||
busy, resulting in out of sequence USB packets.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- USBHS Device: This change solves a problem which causes data loss
|
||
while sending data via USB. This problem is caused by an incorrect
|
||
handling of the endpoint state in the USB driver sam_usbdevhs. This
|
||
leads under some circumstances to situations in which an DMA
|
||
transfer is setup while a previous DMA transfer is currently active.
|
||
Amongst other things I introduced the new endpoint state
|
||
USBHS_EPSTATE_SENDING_DMA for the fix. To reproduce the problem, I
|
||
used a program which send as many data as possible via a CDC/ACM
|
||
device and verified the received data on the PC. From Stefan Kolb.
|
||
|
||
* NXP Freescale Kinetis Drivers:
|
||
|
||
- Timers: Support up to 8 channels per timer. From kfazz.
|
||
|
||
* NXP Freescale Kinetis Boards:
|
||
|
||
- Teensy 3.x clock fixes: The High Gain bit in MCG_C1 was preventing
|
||
teensy from booting except after a programming session. The second
|
||
change doesn't appear to change any functionality, but complies with
|
||
restrictions in the k20 family reference manual on FEI -> FBE clock
|
||
transiions. From kfazz.
|
||
|
||
* NXP Freescale LPC17xx Drivers:
|
||
|
||
- LPC17 Ethernet: Needs to correctly ignore PHYID2 revision number
|
||
when comparing PHY IDs.
|
||
|
||
* NXP Freescale LPC43xx Drivers:
|
||
|
||
- Fix errors in GPIO interrupt logic. From v01d (phreakuencies)
|
||
- Ethernet: Correct auto-negotiation mode in the LPC43xx Ethernet.
|
||
From Alexander Vasiljev
|
||
- Writing zero to NVIC_IRQ_ENABLE has no effect. Disable interrupts
|
||
with NVIC_IRQ_CLEAR. From Paul Alexander Patience.
|
||
- SPIFI: If CONFIG_SPIFI_SECTOR512 undefined, lpc43_bwrite doesn't do
|
||
actual write (probably copy/paste errors). Still not sure about
|
||
current state of lpc43_spifi implementation, but for me NXFFS works
|
||
with this change. From Vytautas Lukenskas.
|
||
|
||
* Qemu-i486:
|
||
|
||
- Fix qemu-i486/ostest/Make.defs test for M32. From Heath Petersen.
|
||
|
||
* SiLabs EFM32 Drivers:
|
||
|
||
- Fix EFM32 FLASH conditional compilation. From Pierre-noel
|
||
Bouteville
|
||
- Writing zero to NVIC_IRQ_ENABLE has no effect. Disable interrupts
|
||
with NVIC_IRQ_CLEAR. From Paul Alexander Patience.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32 F1-F4: In PWM driver, just update duty if frequency is not
|
||
changed and PSM started. This removeis glitch or blinking when
|
||
only duty is frequently changed. From Pierre-noel Bouteville.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 F7: Fixed STM32F7 DMA stm32_dmacapable. DMA working on SDMMC.
|
||
From David Sidrane.
|
||
- STM32 F1-F4 Timer Driver: Change calculation of per- timer pre-scaler
|
||
value. Add support for all timers
|
||
- STM32 F1-F4: Correct conditional compilation in STM32 timer capture
|
||
logic. From Pierre-noel Bouteville
|
||
- STM32 F1-F4: Fix STM32 DMA code and configuration for STM32F37X chips.
|
||
From Marten Svanfeldt.
|
||
- STM32 F1-F4: Fix compilation errors in debug mode of stm32_pwm.c.
|
||
From Konstantin Berezenko.
|
||
- STM32 F1-F4: Correct the CAN2 RX IRQ number for stm32f10xx chips.
|
||
From Konstantin Berezenko.
|
||
- STM32 F1-F4: Move backup domain reset to to earlier in the
|
||
initialization sequence (stm32_rcc.c() in order to avoid disabling
|
||
LSE during RTC initialiation. From Alan Carvalho de Assis.
|
||
- STM32 F1-F4: When configuring a GPIO via stm32_configgpio() the
|
||
function will first set the mode to output and then set the initial
|
||
state of the gpio later on. If you have an application with an
|
||
externaly pulled-up pin, this would lead to a glitch on the line
|
||
that may be dangerous in some applications (e.G. Reset Line for
|
||
other chips, etc). This changes sets the output state before
|
||
configuring the pin as an output. From Pascal Speck .
|
||
- STM32 F7: Apply Pascal Speck's GPIO STM32 change to STM32 L4.
|
||
- STM32 L4: Apply Pascal Speck's GPIO STM32 change to STM32 L4.
|
||
From Sebastien Lorquet.
|
||
- STM32 F7: BUGFIX: PLLs IS2 and SAI P Calculation. From David
|
||
Sidrane.
|
||
- STM32 L4: STM32 CAN fixes need to be backported to STM32L4 as well.
|
||
- STM32 F1-F4 and L4: Writing zero to NVIC_IRQ_ENABLE has no effect.
|
||
Disable interrupts with NVIC_IRQ_CLEAR. From Paul Alexander
|
||
Patience.
|
||
- STM32 F7: STMF7xxx RTC: (1) Remove proxy #defines, (2) Ensure the
|
||
LSE(ON) etal are set and remembered in a) A cold start (RTC_MAGIC
|
||
invalid) of the RTC, and b) A warm start (RTC_MAGIC valid) of the
|
||
RTC but a clock change. The change was needed because in bench
|
||
testing a merge of the latest's STM32 53ec3ca (and friends) it
|
||
became apparent that the sequence of operation is wrong in the
|
||
reset of the Backup Domain in the RCC code. PWR is required before
|
||
the Backup Domain can be futzed with. !!!This Code should be tested
|
||
on STM32 and if needed rippled to the STM32 families. From David
|
||
Sidrane.
|
||
- STM32 F1-F4: STM32 BBSRAM fixed (and formatted) flags. From David
|
||
Sidrane.
|
||
- STM32 F7: STM32F7 BBSRAM fixed (and formatted) flags. From David
|
||
Sidrane.
|
||
- STM32 L4: Fix incorrect clock setup for LPTIM1. From ziggurat29.
|
||
- STM32 F4/L4 RTC ALARM: were enabling interrupts too early in the
|
||
power-up sequence, BEFORE the interrupt system was being
|
||
initialized.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32 board.h: Fix STM32 timer input clock definitions. From David
|
||
Sidrane.
|
||
|
||
* TI Tiva Drivers:
|
||
|
||
- Bug Fix in tiva_serial.c - UART5, UART6 and UART7 were not being
|
||
configured as TTYS0 for printing over serial console. From Shirshak
|
||
Sengupta.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- include/signal.h: Change type of SIG_ERR, SIG_IGN, ... to
|
||
_sa_handler_t. The type void does not work with the IAR toolchain.
|
||
From Aleksandr Vyhovanec.
|
||
- crc16: fix error. From Paul Alexander Patience.
|
||
- strtoul() and strtoull(): Fix errno settings required by function
|
||
definition. Resolved Bitbucket Issue #1. From Sebastien Lorquet.
|
||
|
||
* Build/Configuration System:
|
||
|
||
- Build system: This change fixes a build problem that only occurs
|
||
when reconfiguring from Linux to Windows or vice-versa. It is a
|
||
problem that was present but not usually experienced until two
|
||
things happened: (1) The pre_config target was added to run before
|
||
the menconfig operation and (2) the context target was added before
|
||
the pre_config target in order to set up the correct symbolic links
|
||
(in the apps/platform directory) needed by the pre_config target.
|
||
But then now if you start with a Linux system and run 'make
|
||
menuconfig' to switch to Linux, the context target will execute
|
||
first and set up POSIX style symbolic links before doing the
|
||
menuconfig. Then after the menuconfig, the make will fail on
|
||
Windows if you are using a Windows native toolchain because that
|
||
native toolchain cannot follow the Cygwin- style symbolic links.
|
||
The fix here is to also execute the clean_context AFTER executing
|
||
menuconfig. A lot more happens now: It used to be that doing
|
||
'make menuconfig' only did the menuconfig operation. Now it does
|
||
context, pre_config, menuconfig, clean_context. Not nearly as
|
||
snappy as it used to be.
|
||
- Need to build the drivers/ directory even it file descriptors are
|
||
not supported. There are things in the drivers/ directory that are
|
||
still needed (like SYSLOG logic).
|
||
- Remove all inclusion of header files from the apps/include
|
||
directory from NuttX core logic. There should be no dependency on
|
||
logic within NuttX on logic within apps/. This caused a lot of
|
||
reshuffling of logic: binfmt pcode support, usbmonitor is now a
|
||
kernel thread, TZ/Olson database moved to libc/zoneinfo.
|
||
|
||
* Application Build/Configuration System:
|
||
|
||
- Make sure that APPNAME is defined in all Makefiles that generate
|
||
applications. From Sebastien Lorquet.
|
||
|
||
* apps/builtins:
|
||
|
||
- apps/builtins: exec_builtin was not using the provided open flags.
|
||
As a result >> redirection was not working; it was treated the same
|
||
as >.
|
||
|
||
* apps/nshlib:
|
||
|
||
- apps/nshilib: PS Command: When Priority Inheritance is enabled, the
|
||
format of /proc/<PID>/status changes to show both the current
|
||
priority and the thread<61>s base priority. This messes up the format
|
||
of cmd_ps. From David Alessio.
|
||
|
||
* apps/netutils:
|
||
|
||
- apps/netutils, uIP webserver: Fix a data declaration in a header
|
||
file.
|
||
|
||
* apps/canutils:
|
||
|
||
- apps/canutils/libuavcan: Fix for recent change to STM32 timer
|
||
frequency definiitions.
|
||
|
||
* apps/examples:
|
||
|
||
- apps/examples/alarm: ioctl call was clobbering file descriptor.
|
||
- apps/examples/can: Some variables were not declared in all required
|
||
cases. From Sebastien Lorquet.
|
||
- apps/examples/media: media example was intended to take either a
|
||
command line argument, or a compiled-in default value from config.
|
||
However, the default was ignored, leading to confusing error
|
||
messages. From ziggurat29.
|
||
|
||
NuttX-7.18 Release Notes
|
||
------------------------
|
||
|
||
The 118th release of NuttX, Version 7.18, was made on October 8, 2016,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.18.tar.gz and
|
||
apps-7.18.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/nuttx/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core OS:
|
||
|
||
- Add standard adjtime() interface and basic timekeeping support.
|
||
Normally used with an NTP client to keep system time in
|
||
synchronization. From Max Neklyudov.
|
||
- Use the oneshot timer with optional entropy to measure CPU load if
|
||
so configured.
|
||
|
||
* File System and Block and MTD Drivers:
|
||
|
||
- Add Fujistu MB85RS256B ramtron support. From Beat K<>ng.
|
||
- SPI-based MTD driver for Macronix MX25L3233F or MX25L6433F. From
|
||
Aleksandr Vyhovanec.
|
||
|
||
* Graphics/Display Drivers:
|
||
|
||
- SH1106 0.96 OLED module support (SSD1306 compatible) + I2C fixes.
|
||
From v01d (phreakuencies).
|
||
|
||
* Sensor Drivers:
|
||
|
||
- Add KXTJ9 Accelerometer driver from the Motorola Moto Z MDK.
|
||
- Add MFRC522 RFID ISO14443 and Mifare transceiver driver. From Alan
|
||
Carvalho de Assis.
|
||
- Add driver for the LIS3MDL 3 axis magnetometer. From Alexander
|
||
Entinger.
|
||
- Add driver for the MLX90393 3 axis magnetometer. From Alexander
|
||
Entinger.
|
||
- Add driver for the LIS3DSH 3 axis accelerometer. From Alexander
|
||
Entinger.
|
||
- Add driver for the Bosch BMG160 3 axis gyroscope. From Alexander
|
||
Entinger.
|
||
- Add support for the Sensixs XEN1210 3D-board. This sensor is used
|
||
on NANOSATC-BR2 a Brazillian CUBESAT project. From Alan Carvalho
|
||
de Assis.
|
||
- Add a new ioctl command (set MAXPOS) for Tiva QEI. From Young.
|
||
|
||
* Other Common Device Drivers:
|
||
|
||
- I/O Expander: Remove hard-coded PCA9555 fields from ioexpander.h
|
||
definitons. Add support for an attach() method that may be used
|
||
when any subset of pin interrupts occur.
|
||
- I/O Expander Interface: Encode and extend I/O expander options to
|
||
include interrupt configuration.
|
||
- PCA9555 Driver: Replace the signalling logic with a simple callback
|
||
using the new definitons of ioexpander.h. This repartitioning of
|
||
functionality is necessary because (1) the I/O expander driver is
|
||
the lower-lower part of any driver that uses GPIOs (include the GPIO
|
||
driver itself) and should not be interacting directly with the much
|
||
higher level application layer. And (2) in order to be compatible
|
||
with the GPIO driver (and any arbitrary upper half driver), the
|
||
PCA9555 should not directly signal, but should call back into the
|
||
upper half. The upper half driver that interacts directly with the
|
||
application is the appropriate place to be generating signal.
|
||
- Add a skeleton I/O Expander driver (based on the PCA9555 driver).
|
||
- Add PCF8574 I/O Expander driver.
|
||
- GPIO driver: Add IOCTLs to get the pin type and to unregister a
|
||
signal handler.
|
||
- Add a GPIO lower-half driver that can be used to register a GPIO
|
||
character driver for accessing pins on an I/O expander.
|
||
- Add an SPI helper function that encapsulates and manages a sequence
|
||
of SPI transfers.
|
||
- Add an SPI character driver that will permit access to the SPI bus
|
||
for testing purposes.
|
||
- Add oneshot timer lower half interface definition.
|
||
- Add an upper-half, oneshot timer character driver.
|
||
- Add Audio Tone Generator for NuttX. From Alan Carvalho de Assis.
|
||
- Add USB host support for composite devices. This feature is not
|
||
well tested.
|
||
- drivers/ioexpander: Add an (untested) TCA64XX I/O Expander driver
|
||
leveraged from Project Ara.
|
||
|
||
* Simulation Platform:
|
||
|
||
- Add a simulated I/O Expander driver.
|
||
- Add simulator-based test support for apps/examples/gpio.
|
||
- Add a configuration useful for testing Mini Basic.
|
||
- Add a simulated oneshot lowerhalf driver.
|
||
|
||
* Atmel SAM3/4 Drivers:
|
||
|
||
- SAM4CM: Add option to support oneshot timer without free-running
|
||
timer. Add oneshot lower half driver.
|
||
|
||
* Atmel SAMA5 Drivers:
|
||
|
||
- SAMA5D: Add option to support oneshot timer without free-running
|
||
timer. Add oneshot lower half driver.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- SAMV71/SAME70: Add option to support oneshot timer without
|
||
free-running timer. Add oneshot lower half driver.
|
||
- Add support for SAMV7 DACC module. From Piotr Mienkowski.
|
||
|
||
* NXP Freescale Kinetis Drivers:
|
||
|
||
- Add support for I2C and RTC. From v01d (phreakuencies).
|
||
|
||
* NXP Freescale Kinetis Boards:
|
||
|
||
- Add teensy 3.x I2C support. From v01d (phreakuencies).
|
||
|
||
* STMicro STM32:
|
||
|
||
- Add IAR-style STM32F1xx vectors. Tested on STM32F103RB and
|
||
STM32F107RC. From Aleksandr Vyhovanec.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- Add timekeeping support for the STM32 tickless mode. From Max
|
||
Neklyudov.
|
||
- Add a oneshot, lower-half driver for STM32.
|
||
- STM32 L4: Add oneshot lower half driver for STM32 L4.
|
||
- STM32 L4: Add support for quadrature encoders on STM32L4. Sebastien
|
||
Lorquet.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- stm32f103-minimum: Add board support to MFRC522 driver. From Alan
|
||
Carvalho de Assis.
|
||
- Add oneshot board initialization to stm32f103-minimum. From Alan
|
||
Carvalho de Assis.
|
||
- stm32f103-minimum: Add board configuration to initialize Audio Tone
|
||
Generator. From Alan Carvalho de Assis.
|
||
- stm32bufferfly2: Add support for the Kamami stm32butterfly2
|
||
development board with optional ETH phy. From Michal Lyszczek.
|
||
- stm32f103-minimum: Add board config support to SPI LCD module
|
||
JLX12864G-086. From Alan Carvalho de Assis.
|
||
- stm32l476-mdk: Support basic booting and nsh on Motorola MDK. The
|
||
Motorola MDK is based off of an earlier version of NuttX.
|
||
This only provides a basic NSH shell. From Jim Wylder.
|
||
- STM32 F4 Discovery: Add support for XEN1210 3D-board. From Alan
|
||
Carvalho de Assis.
|
||
- stm32f103-minimum: Add stm32_bringup support and userled example to
|
||
STM32F103 Minimum board. From Alan Carvalho de Assis.
|
||
- Add support for qencoders on various nucleo boards. From Sebastien
|
||
Lorquet.
|
||
- olimex-stm32-e407: Add some networking configurations. From Mateusz
|
||
Szafoni.
|
||
|
||
* TI Tiva Drivers:
|
||
|
||
- Add tiva PWM lower-half driver implementation. From Young.
|
||
- Tiva QEI: Add QEI lower-half driver for Tiva series chip. From
|
||
Young.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- Separate XorShift128 PRNG from /dev/urandom and make it generally
|
||
available.
|
||
- Add POSIX type sig_atomic_t. From Sebastien Lorquet.
|
||
- Add the difftime() function. The function depends on the toolchain-
|
||
dependent CONFIG_HAVE_DOUBLE so is not available on tiny platforms.
|
||
From Sebastien Lorquet.
|
||
- Add support for remove(). From Sebastien Lorquet.
|
||
- Add system() to stdlib.h. Actual implementation is in
|
||
apps/system/system.
|
||
|
||
* Build/Configuration System:
|
||
|
||
- Rename arch/sh to arch/renesas.
|
||
- Remove contactless drivers from drivers/wireless to drivers
|
||
contactless. From Sebastien Lorquet.
|
||
- Move all modem-related IOCTL commands to a common file to assure
|
||
that they will be unique.
|
||
|
||
* Tools:
|
||
|
||
- Add sethost.sh. This is a script that you can use to quickly
|
||
change the host platform from Linux to Windows/Cygwin. Might save
|
||
you a lot of headaches.
|
||
|
||
* Applications: apps/nshlib:
|
||
|
||
- Add logic to support an NSH-specific system command.
|
||
- Add printf command to NSH, e.g., controlling /dev/userleds from
|
||
command line: nsh> printf \x01 > /dev/userleds. From Alan Carvalho
|
||
de Assis.
|
||
|
||
* Platforms: apps/system:
|
||
|
||
- Port tee command from NetBSD.
|
||
- Add a generic system command. Current implentation cannot use
|
||
/bin/sh and spawns the custom NSH system command directly.
|
||
|
||
* Platforms: apps/platform:
|
||
|
||
- Add C++ support for STM32L476-MDK.
|
||
|
||
* Platforms: apps/interpreters:
|
||
|
||
- Add a port of Mini Basic, version 1.0, written by Malcom McLean and
|
||
released under the Creative Commons Attribution license.
|
||
|
||
* Applications: apps/examples:
|
||
|
||
- Add a simple test of the GPIO driver.
|
||
- Add RFID_READUID sample application. From Alan Carvalho de Assis.
|
||
- Add Oneshot timer example.
|
||
- Add a simple test of the system command.
|
||
|
||
Works-In-Progress:
|
||
|
||
* IEEE802.14.5/6LowPAN. Hooks and framework for this effort were
|
||
introduced in NuttX-7.15. Work has continued on this effort on
|
||
forks from the main repositories, albeit with many interruptions.
|
||
The completion of this wireless feature will postponed until at
|
||
least NuttX-7.19.
|
||
|
||
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:
|
||
|
||
- Explicitly initialize the group tg_exitsem with sem_init(). The
|
||
existing logic worked because the correct initialization value is
|
||
all zero, but it is better to initialize the semaphore explicitly.
|
||
- The TCB nchildren field should not be incremented when pthreads are
|
||
created.
|
||
- Move fields related to parent/child task relationship out of TCB
|
||
into group structure where they belong. Child is a group, not a
|
||
thread.
|
||
- mq_send() was not setting the errno value on certain failures to
|
||
allocate a message.
|
||
- Define 'group' even if HAVE_GROUPID is not set. From Mateusz
|
||
Szafoni.
|
||
- Vector table should have dimension NR_IRQS, not NR_IRQS+1. From
|
||
Sagitta Li.
|
||
- pthreads: When a pthread is started, there is a small bit
|
||
of logic that will run on the thread of execution of the new
|
||
pthread. In the case where the new pthread has a lower
|
||
priority than the parent thread, then this could cause both the
|
||
parent thread and the new pthread to be blocked at the priority of
|
||
the lower priority pthread (assuming that CONFIG_PRIORITY_INHERITANCE
|
||
is not selected). This change temporarily boosts the priority of the
|
||
new pthread to at least the priority of the new pthread to at least
|
||
the priority of the parent thread. When that bit of logic has
|
||
executed on the thread of execution of the new pthread, it will then
|
||
drop to the correct priority (if necessary) before calling into the
|
||
new pthread's entry point.
|
||
|
||
* File System/Block Drivers/MTD Drivers:
|
||
|
||
- FAT performance improvement. In large files, seeking to a
|
||
position from the beginning of the file can be very time consuming.
|
||
ftell does lssek(fd, 0, SET_CURR). In that case, that is wasted
|
||
time since we are going to seek to the same position. This fix
|
||
short-circuits fat_seek() in all cases where we attempt to seek to
|
||
current position. Suggested by Nate Weibley.
|
||
- MTD: Fixed cloned typos in several FLASH drivers. From Aleksandr
|
||
Vyhovanec.
|
||
- mount: Corrects a bad assertion noted by Pierre-noel Bouteville.
|
||
Also fixes a reference counting problem in an error condition:
|
||
When the mountpoint inode is found but is not an appropriate
|
||
mountpoint, the reference count on the inode was not being
|
||
decremented.
|
||
|
||
* Common Drivers:
|
||
|
||
- Various serial drivers: Fix FIONWRITE and add FIONSPACE. All
|
||
implementations of FIONWRITE were wrong. FIONWRITE should return
|
||
the number of bytes waiting in the outgoing send queue, not the free
|
||
space. Rather, FIONSPACE should return the free space in the send
|
||
queue.
|
||
- Add missing prototype for btn_lower_initialize().
|
||
- Make DAC sample structure packed. From Marc Recht<68>.
|
||
|
||
* Networking:
|
||
|
||
- TCP: tcp_ipvX_bind() not actually using the port selected with
|
||
port==0. Also removes duplicate call to pkt_input(). Issues noted
|
||
by Pascal Speck.
|
||
- drivers/net: NET_TUN=y => NET_MULTIBUFFER=y. From Vladimir
|
||
Komendantskiy.
|
||
- slip driver: Fix calculations using MSEC_PER_TICK. If
|
||
USEC_PER_TICK is less than 1000, then MSEC_PER_TICK will be
|
||
zero. It will be inaccurate in any case.
|
||
|
||
* Atmel SAM3/4 Drivers:
|
||
|
||
- SAM3/4 GPIO: Enable peripheral clock for GPIO port when GPIO is
|
||
configured as input. The value of a GPIO input is only sampled when
|
||
the peripheral clock for the port controller the GPIO resides in is
|
||
enabled. Therefore we need to enable the clock even when polling a
|
||
GPIO. From Wolfgang Reissnegger.
|
||
- All SAM Ethernet Drivers: Add support so that the drivers can be
|
||
built with CONFIG_NET_MULTIBUFFER=y.
|
||
- SAM3/4: Fix GPIO pull-up/down code. Enabling the pull-down resistor
|
||
while the pull-up resistor is still enabled is not possible. In this
|
||
case, the write of PIO_PPDER for the relevant I/O line is discarded.
|
||
Likewise, enabling the pull-up resistor while the pull-down resistor
|
||
is still enabled is not possible. In this case, the write of
|
||
PIO_PUER for the relevant I/O line is discarded. From Wolfgang
|
||
Rei<65>negger.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- All SAM Ethernet Drivers: Add support so that the drivers can be
|
||
built with CONFIG_NET_MULTIBUFFER=y.
|
||
- SAM GPIO: Apply Wolfgang's change for SAM3/4 to SAMA5 and SAMV7.
|
||
|
||
* Atmel SAMA5:
|
||
|
||
- Add missing oneshot max_delay method.
|
||
- All SAM Ethernet Drivers: Add support so that the drivers can be
|
||
built with CONFIG_NET_MULTIBUFFER=y.
|
||
- SAM GPIO: Apply Wolfgang's change for SAM3/4 to SAMA5 and SAMV7.
|
||
|
||
* NXP Freescale LPC43xx Drivers:
|
||
|
||
- LPC43xx serial: Fix typos in LPC43 serial driver. Found by Vytautas
|
||
Lukenskas.
|
||
- LPC43xx Serial: There are some small problems in LPC43xx RS485 mode
|
||
configuration. In particular: (1) UART0,2,3 do not have DTR pins
|
||
(different from UART1), so, Kconfig needs to be adjusted. (2)
|
||
lpc43_uart.c in RS485 mode only configures DIR pin, but doesn't
|
||
enable pin output for UART0,2,3. (3) should be option to reverse DIR
|
||
control pin output polarity. (4) lpc43xx/chip/lpc43_uart.h doesn't
|
||
have USART3 definitions. NOTE: I didn't modified and didn't tested
|
||
USART1, as it has different hardware. From Vytautas Lukenskas.
|
||
From Vytautas Lukenskas.
|
||
|
||
* SiLabs EFM32 Drivers:
|
||
|
||
- EFM32 SPI drivers adopted incompatible conventions (See STM32 for
|
||
details of the issue).
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32, STM32 L4, and EFM32 SPI drivers adopted incompatible
|
||
conventions somewhere along the line. They set the number of bits
|
||
to negative when calling SPI_SETBITS which had the magical side-
|
||
effect of setting LSB first order of bit transmission. This is not
|
||
only a hokey way to pass control information but is supported by no
|
||
other SPI drivers. This change three things: (1) It adds
|
||
HWFEAT_LSBFIRST as a new H/W feature. (2) It changes the
|
||
implementations of SPI_SETBITS in the STM32 and EFM32 drivers so
|
||
that negated bit numbers are simply errors and it adds the
|
||
SPI_HWFEATURES method that can set the LSB bit order, and
|
||
(3) It changes all calls with negative number of bits from all
|
||
drivers: The number of bits is now always positive and
|
||
SPI_HWFEATURES is called with HWFEAT_LSBFIRST to set the bit order.
|
||
- Add missing SPI2 and SPI3 support for STM32F3F3. Add STM32F37XX DMA
|
||
channel configuration. For STM32F37XX, SYSCFG_EXTICR_PORTE defined
|
||
twice. From Alan Carvalho de Assis.
|
||
- STM32: Make stm32_pwr_enablebkp thread safe. From Max Neklyudov.
|
||
- Fix bad pllmul values for STM32F1XX connectivity line. STM32F1XX
|
||
connectivity line supports only x4, x5, x6, x7, x8, x9 and x6.5
|
||
values. From Michal Lyszczek.
|
||
- STM32F3 SPI: Fix the number of bit setting for the F3. That and
|
||
data packing work differently on the STM32F3 than for other STM32
|
||
parts.
|
||
- STM32 and STM32 L4: Enabling SPI DMA loses other bits in CR2.
|
||
- STM32F3 SPI: Cannot write always 16-bit value to DR register
|
||
because of how the F3 implements data packing.
|
||
- STM32F411 and STM32F446 map i2c2_sda_4 to different alternate
|
||
function numbers. From Konstantin Berezenko.
|
||
- STM32 DMA Fix: Change stm32 adc dma callback to send channel
|
||
number instead of index. From Konstantin Berezenko.
|
||
- STM32 OTGFS device: Fix for lost first word from FIFO
|
||
|
||
1) Do not overwrite Reserved Bits in GINTSTS (per ref manual)*
|
||
2) Acknowledge all pending int on entry to ISR that are Only rc_w1*
|
||
3) Do not disable RXFVL*
|
||
4) Loop until RXFVL is cleared*
|
||
5) Only clear the NAK on the endpoint on the OTGFS_GRXSTSD_PKTSTS_SETUPDONE to not loose the first WORD of FIFO all the data (Bug Fix)
|
||
|
||
Changed marked *are just driver clean up and ensure ints are not lost. The bug fix is #5
|
||
|
||
Test case open putty and observer the Set/Get LineCoding. Without this fix #5 the Get will not match the Set, and in fact the data might be skewed by 4 bytes, that are lost from the FIFO if the OTGFS_DOEPCTL0_CNAK bit is set in the OTGFS_GRXSTSD_PKTSTS_SETUPRECVD as opposed to the OTGFS_GRXSTSD_PKTSTS_SETUPDONE
|
||
|
||
Set Line Coding DATA1: 4B | 00 c2 01 00 00 00 08 | c8 1B
|
||
Get Line Coding DATA1: 4B | .. .. .. .. 00 00 08 c8 .. 00 00 07 | 7a 72
|
||
|
||
From David Sidrane.
|
||
- STM32 L4 OTGFS device: Apply stm32 fix to stm32l4. From Sebastien
|
||
Lorquet.
|
||
- STM32 F7: Remove duplicate call to pkt_input from Ethernet driver.
|
||
Issues noted by Pascal Speck.
|
||
- STM32 L4: Add support for USART3-USART5. For STM32L4 parts, the
|
||
higher number USART ports supported varies. Add the HAVE_USARTx
|
||
definitions to the configuration to allow enabling the higher
|
||
numbered USART ports. From Jim Wylder.
|
||
- STM32 USB: Set USB address to avoid a failed assertion. From
|
||
Pierre-noel Bouteville.
|
||
- STM32 L4 and L7 USB: Pierre's assertion-avoidance change should
|
||
also be applied to STM32 F7 and L4.
|
||
- STM32, L4, and F7: Remove GPIO_ETH_RMII_TX_CLK. TX_CLK is not
|
||
present in RMII. Mateusz Szafoni.
|
||
- STM32 Ethernet: Correct typo in conditional logic. From Neil
|
||
Hancock.
|
||
- STM32 L4 USB Device: Fixed L4 USB Driver by avoiding SETUPDONE and
|
||
EPOUT_SETUP. From David Sidrane.
|
||
- STM32 SPI: stm32_modifycr2 should be available on all platforms if
|
||
DMA is enabled.
|
||
- STM32 DMA2D: fix an error in up_dma2dcreatelayer where an invalid
|
||
pointer was returned when a certain underlying function failed.
|
||
From Jens Gr<47>f.
|
||
|
||
* TI Tiva Drivers:
|
||
|
||
- Fix two bugs of tiva pwm lower-half driver implementation. From
|
||
Young.
|
||
- Tiva Ethernet: Needs support for CONFIG_NET_MULTIBUFFER=y.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- lib_dumpbuffer() now prints a large on-stack buffer first to avoid
|
||
problems when the syslog output is prefixed with time. From
|
||
Pierre-noel Bouteville.
|
||
- libc/math: This fixes the following libc/math issues: (1) asin[f l]()
|
||
use Newton<6F>s method to converge on a solution. But Newton<6F>s method
|
||
converges very slowly (> 500,000 iterations) for values of x close to
|
||
1.0; and, in the case of asinl(), sometimes fails to converge (loops
|
||
forever). The attached patch uses an trig identity for values of
|
||
x > sqrt(2). The resultant functions converge in no more than 5
|
||
iterations, 6 for asinl(). (2) The NuttX erf[f l]() functions are
|
||
based on Chebyshev fitting to a good guess. The problem there<72>s a
|
||
bug in the implementation that causes the functions to blow up with
|
||
x near -3.0. This patch fixes that problem. It should be noted that
|
||
this method returns the error function erf(x) with fractional error
|
||
less than 1.2E-07 and that<61>s fine for the float version erff(), but
|
||
the same method is used for double and long double version which
|
||
will yield only slightly better precision. This patch doesn't
|
||
address the issue of lower precision for erf() and erfl(). (3) a
|
||
faster version of copysignf() for floats is included. From David S.
|
||
Alessio.
|
||
- strtod() was not returning endptr on error conditions.
|
||
- libc/math: floor(), floorf(), and floorl(): Fix logic error. Was
|
||
not correctly handling negative integral value.
|
||
- isatty() should be prototyped in unstid.h, not termios.h. From
|
||
Sebastien Lorquet.
|
||
- nxglib: Fix handling of near-horizontal lines of width 1 in
|
||
nxgl_splitline(). Missing handling for degenerate condition caused
|
||
width 1 lines such as (0, 0) - (100, 10) to have gaps in the
|
||
drawing. From Petteri Aimonen.
|
||
|
||
* Build/Configuration System:
|
||
|
||
- Top-Level Makefiles: Fix a chicken-and-egg problem. In the menuconfig
|
||
target, the context dependency was executed before kconfig-mconf. That
|
||
was necessary because the link at apps/platform/board needed to be set
|
||
up before creating the apps/Kconfig file. Otherwise, the platform
|
||
Kconfig files would not be included. But this introduces the chicken-
|
||
and-egg problem in some configurations. In particular: (1) An NX
|
||
graphics configuration is used that requires auto-generation of
|
||
source files using cpp, (2) the configuration is set for Linux, but
|
||
(3) we are running under Cygwin with (4) a Windows native toolchain.
|
||
In this case, POSIX-style symbolic links are set up but the Windows
|
||
native toolchain cannot follow them. The reason we are running
|
||
'make menuconfig' is to change from Linux to Cygwin, but the target
|
||
fails. During the context phase, NX runs CPP to generate source files
|
||
but that fails because the Windows native toolchain cannot follow
|
||
the links. Checkmate. This was fixed by changing all of the make
|
||
menuconfig (and related) targets. They no longer depend on context
|
||
being run. Instead, they depend only on the dirlinks target. The
|
||
dirlinks target only sets up the directory links but does not try
|
||
to run all of the context setup; the compiler is never invoked; no
|
||
code is autogenerated and things work.
|
||
- CXXFLAGS: add -fcheck-new whenever -fno-exceptions is used. From
|
||
Beat K<>ng.
|
||
|
||
* Tools
|
||
|
||
- tools/refresh.sh: Recent complexities added to apps/ means that
|
||
configuration needs the correct Make.defs file in place in order to
|
||
configure properly.
|
||
- tools/kconfig2html.c: Update to handle absolute paths when sourcing
|
||
Kconfig files.
|
||
- tools/mkfsdata.pl was still generating the old-style apps/include
|
||
inclusion paths.
|
||
|
||
* Application Build/Configuration System:
|
||
|
||
- Add DIRLINK and DIRUNLINK tool definitions to apps/Make.defs.
|
||
|
||
* apps/nshlib:
|
||
|
||
- Fix FIFO_SIZE vs PIPE_SIZE.
|
||
- Fix hex representation of IP address in Kconfig. Noted by Michal
|
||
Lyszczek.
|
||
- nsh_syscmds.c: missing semicolon. From Mateusz Szafoni.
|
||
- In system command, don't try to flush output streams if stdio
|
||
buffered I/O is not supported.
|
||
|
||
* apps/canutils:
|
||
|
||
- libuavcan: Under certain circumstances, DELIM is not be defined in
|
||
Makefile.
|
||
- Add definition for APPNAME in apps/canutils/canlib. From Sebastien
|
||
Lorquet.
|
||
|
||
* apps/gpsutils:
|
||
|
||
- Fix an error minmea. From Aleksandr Vyhovanec.
|
||
|
||
* apps/examples:
|
||
|
||
- apps/examples/oneshot: If the requested delay is > max_delay, then
|
||
break the delay up into several pieces.
|
||
|
||
NuttX-7.19 Release Notes
|
||
------------------------
|
||
|
||
The 119th release of NuttX, Version 7.19, was made on December 26, 2016,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.19.tar.gz and
|
||
apps-7.19.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/nuttx/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core OS:
|
||
|
||
- sched/semaphore, sched/phread/, libc/semaphore, libc/pthread: Add
|
||
pthread_mutexattr_get/set_protocol and non-standard
|
||
sem_get/set_protocol. These may use to enable or disable priority
|
||
inheritance on a single semaphore.
|
||
- Spinlocks: Added capability to provide architecture-specific memory
|
||
barriers.
|
||
- SMP: Add spin_trylock(). Use this in conditions where other CPUs need
|
||
to stopped but we cannot call enter_critical_section().
|
||
- sched note: Extend OS instrumentation to include some SMP events.
|
||
Also add spinlock instrumentation; In SMP configurations, add a
|
||
filter mask to log only notes from certain CPUs.
|
||
- sched note: Permit spinlock and critical section notes in in-memory
|
||
buffer iff sched_not_get() interfaces is disabled.
|
||
- sched note: Add additional note to see if/when CPU is started in SMP
|
||
mode.
|
||
- sched note: Record ID enumeration now results on constant values; ID
|
||
values do not change with configuration. This makes writing post-processing software much easier.
|
||
- boardctl: Add new boardctl() command, BOARDIOC_NX_START, to start the
|
||
NX server as a kernel thread.
|
||
- pthreads: Add pthread_cleanup_push() and pthread_cleanup_pop().
|
||
- pthreads: Added pthread_setcanceltype() and pthread_testcancel().
|
||
- pthreads: Add support for cancellation points.
|
||
- task_delete() now obeys all cancellation point semantics.
|
||
- Add task_setcancelstate(), task_setcanceltype(), and
|
||
task_testcancel(). These are non-standard interfaces analogous to the
|
||
correponding pthread_ interfaces that provide cancellation controls
|
||
for tasks.
|
||
|
||
* Graphics/Display Drivers:
|
||
|
||
- boardctl: Add new boardctl() command, BOARDIOC_NX_START, to start the
|
||
NX server as a kernel thread.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- Network drivers: Add option to use low-priority work queue to all
|
||
Ethernet and MAC level drivers.
|
||
- Network Drivers: Adapt all Ethernet (and other MAC) drivers to work
|
||
as though CONFIG_NET_MULTIBUFFER were set. Remove all references to
|
||
CONFIG_NET_MULTIBUFFER.
|
||
- Eliminate CONFIG_NO_NOINTS. There is no longer any support for
|
||
interrupt level processing of the network stack. Lots of files changed.
|
||
|
||
* Other Common Device Drivers:
|
||
|
||
- Vishay VEML6070: Add Vishay VEML6070 driver. From Alan Carvalho de
|
||
Assis.
|
||
|
||
* ARMv7-A
|
||
|
||
- ARMv7-A/i.MX6: Add SCU register definitions. Add some controls to
|
||
enable SMP cache coherency in SMP mode. Makes no difference, however
|
||
-- cache still incoherent on i.MX6.
|
||
- ARMv7 GIC: SGIs are non-maskable but go through the same path as
|
||
other, maskable interrupts. Added logic to serialize SGI processing
|
||
when necessary.
|
||
|
||
* Atmel SAM3/4:
|
||
|
||
- SAM3/4: Add SMP support for the dual-core SAM4CM. From Masayuki
|
||
Ishikawa.
|
||
|
||
* Atmel SAM3/4 Drivers:
|
||
|
||
- Add support for the SAM5CMP-DB board. From Masayuki Ishikawa.
|
||
|
||
* Atmel SAM3/4 Boards:
|
||
|
||
- SAM4CMP-DB: Add support for the Atmel SAM4CMP-DB board running in an
|
||
SMP configuration. From Masayuki Ishikawa.
|
||
- SAM4CMP-DB: Add hooks to auto-mount the procfs file system on startup
|
||
in board bring-up logic.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- SAMv7: Register the watchdog device at the configured device path
|
||
CONFIG_WATCHDOG_DEVPATH vs. hard-coded /dev/wdt. From Frank Benkert.
|
||
|
||
* Calypso
|
||
|
||
- Calyps: Remove all Calypso board configurations. Remove Calypso
|
||
architecture support and support for Calypso SERCOMM driver.
|
||
|
||
* Misoc LM32:
|
||
|
||
- Misoc LM32: Adds basic support for the Misoc procoessors and the LM32
|
||
in particular. From Ramtin Amin.
|
||
- Misoc LM32: Add signal handling logic. From Ramtin Amin.
|
||
- Misoc LM32: Add logic to flush/invalidate caches. From Ramtin Amin.
|
||
|
||
* Misoc LM32 Drivers:
|
||
|
||
- Misoc LM32 Serial: Add interrupting Misoc serial driver. From Ramtin
|
||
Amin.
|
||
- Misoc LM32 Timer: Add timer driver. From Ramtin Amin.
|
||
- Misoc LM32: Add Misoc Ethernet driver From Ramtin Amin.
|
||
|
||
* Misoc LM32 Boards:
|
||
|
||
- Misoc LM32 Qemu: Board support for testing Misoc LM32 with Qemu. From
|
||
Ramtin Amin.
|
||
- Misoc LM32 Qemu: Integrate network support into configs/misoc/hello.
|
||
From Ramtin Amin.
|
||
- Misoc LM32 Qemu: Remove configs/misoc/include/generated directory. I
|
||
suppose the intent now is that this is a symbolic link? DANGER!
|
||
This means that you cannot compile this code with first generating
|
||
these files a providing a symbolic link to this location! There is a
|
||
sample directory containing generated sources. This is really only
|
||
useful for performing test builds. You really must generate the Misoc
|
||
architecture for a real-life build. From Ramtin Amin.
|
||
|
||
* NXP Freescale i.MX6 Drivers:
|
||
|
||
- i.MX6: Add an untested SPI driver taken directly from the i.MX1 port.
|
||
|
||
* NXP Freescale Kinetis:
|
||
|
||
- Kinetis: Added missing headers. Kinetis broke out SPI to
|
||
kinetis/kinetis_spi.h. Broke out DMA to use the modern Nuttx chip
|
||
inclusion - still STUBS. Add Kinetis support for ARMV7-M Common
|
||
Vector and FPU. Allow CONFIG_ARMV7M_CMNVECTOR,
|
||
CONFIG_STACK_COLORATION, CONFIG_ARCH_FPU. Fix i2c driver offset
|
||
swapped for value in kinetis_i2c_putreg. From David Sidrane.
|
||
|
||
* NXP Freescale Kinetis Drivers:
|
||
|
||
- Kinetis: Add UID Unique ID. From Neil Hancock.
|
||
|
||
* NXP Freescale Kinetis Boards:
|
||
|
||
- Freedom-K64F board: Add support for UID Unique ID. From Neil Hancock.
|
||
|
||
* NXP Freescale LPC17xx Boards:
|
||
|
||
- Olimex-LPC1766-STK: Enable procfs in NSH configuration. Automount
|
||
/proc on startup.
|
||
|
||
* NXP Freescale LPC43xx Drivers:
|
||
|
||
- LPC43xx: Add timer driver: From Alan Carvalho de Assis.
|
||
- LPC43xx GPDMA driver: The GPDMA block is basically the same as the
|
||
LPC17xx. Only the clock configuration is different and LPC43xx has
|
||
four different DMA request sources, where LPC17xx has only two. From
|
||
Alan Carvalho de Assis.
|
||
|
||
* NXP Freescale LPC43xx Boards:
|
||
|
||
- Bambino 200E: Add basic support to Micromint Bambino 200E board.
|
||
This includes contributions from Jim Wolfman. From Alan Carvalho de
|
||
Assis.
|
||
- Bambino 200E: Add support for timer driver. From Alan Carvalho de
|
||
Assis.
|
||
|
||
* RGMP:
|
||
|
||
- Remove RGMP and RGMP drivers.
|
||
|
||
* RISC-V:
|
||
|
||
- RISC-V: Add support for the RISC-V architecture and
|
||
configs/nr5m100-nexys4 board. The board support on this is pretty
|
||
thin, but it seems like maybe a good idea to get the base RISC-V stuff
|
||
in since there are people interested in it. From Ken Pettit.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 F3: Implemention of the STM32 F37xx SDADC module. There are
|
||
also changes to ADC, DAC modules. SDADC has only been tested in DMA
|
||
mode and does not support external TIMER triggers. This is a work in
|
||
progress. From Marc Recht<68>.
|
||
- STM32 F3: Add PWM driver support for STMF37xx. The changes have been
|
||
tested successfuly for TIM4 and TIM17 (different IPs). From Marc
|
||
Recht<68>.
|
||
- STM32 F4: Support oversampling by 8 for the STM32 F4. From David
|
||
Sidrane.
|
||
- STM32 F4: Added Timers 2-5 and control of SAI and I2S PLLs. Added
|
||
support for stmf469 SAI and I2S PLL configuration and STM446 fixes.
|
||
From David Sidrane.
|
||
- STM32 F4: Expanded OTGFS support to stm32F469 and stm32f446. Added
|
||
missing bit definitions, Used stm32F469 and stm32f446 bit
|
||
definitions, Removed unsed header file. From David Sidrane.
|
||
- STM32 F4: Allow dma in 1 bit mode in STM32F4xxx. From David Sidrane.
|
||
- STM32 F7: Allow the config to override the clock edge setting. From
|
||
David Sidrane.
|
||
- STM32 L4: Support Complementary PWM outputs on STM32L4. From
|
||
Sebastien Lorquet.
|
||
- STM32 L4: Add implementation of dumpgpio for stm32l4, was required
|
||
for pwm debug. From Sebastien Lorquet.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F103 Minimum: Add button support. From Alan Carvalho de Assis.
|
||
- STM32F103 Minimum: Add support to PWM on STM32F103-Minimum board.
|
||
From Alan Carvalho de Assis.
|
||
- STM32F103 Minimum: Add RGB LED support on STM32F103 Minimum board.
|
||
From Alan Carvalho de Assis.
|
||
- STM32F103 Minimum: Add Vishay VEML6070 driver support to the
|
||
STM32F103-Minimum board. From Alan Carvalho de Assis.
|
||
- Nucleo-F303RE: Add STM32 F303RE hello configuration. From Marc
|
||
Recht<68>.
|
||
- Nucleo-L476: Support PWM testing on board Nucleo L476. From
|
||
Sebastien Lorquet.
|
||
- Nucleo L476: Add support for timers to Nucleo L476. From Sebastien
|
||
Lorquet.
|
||
- Hymini STM32v: Enable CONFIG_RTC in the hymini-stm32v/nsh2
|
||
(kitchensink) config. From Maciej W<>jcik.
|
||
- Olimex STM32-p407: Add support for the Olimex STM32 P407 board.
|
||
|
||
* TI Tiva Drivers:
|
||
|
||
- Tiva PWM: Support PWM_PULSECOUNT feature for TI tiva. From Young.Mu.
|
||
|
||
* Xtensa/ESP32
|
||
|
||
- Xtensa ESP32: Basic architectural support for Xtensa processors and
|
||
the Expressif. ESP32 added.
|
||
- Xtensa ESP32: Add EXPERIMENTAL hooks to support lazy Xtensa
|
||
co-processor state restore in the future.
|
||
- Xtensa ESP32: Basic port is function in both single CPU and dual CPU
|
||
SMP configurations. There is an NSH configuration for each CPU
|
||
configuration. Outstanding issues include missing clock configuration
|
||
logic, missing partition tables to support correct configuration from
|
||
FLASH, and some serial driver pin configuration issues.
|
||
- Xtensa ESP32: Add stack checking logic.
|
||
|
||
* Xtensa/ESP32 Boards:
|
||
|
||
- ESP32 Core v2: Basic support for Expressif ESP32 Core v2 board
|
||
added. The initial release includes an NSH and an SMP test
|
||
configuration.
|
||
- ESP32 Core v2: Add configuration to support linking NuttX for
|
||
execution out of IRAM.
|
||
- ESP32 Core v2: Automatically mount /proc at start-up.
|
||
- ESP32 Core v2: Add an OS test to verify the port.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- libc/locale: Add a dummy setlocale() function to avoid drawing the
|
||
function from newlib. Add clocale header file.
|
||
- include/locale.h: Modify locale.h to add localeconv() and lconv
|
||
structure. From Alan Carvalho de Assis.
|
||
- libc/locale: Allows c++ code to compile with or without
|
||
CONFIG_LIBC_LOCALE and will generate a link error if
|
||
CONFIG_LIBC_LOCALE is not defined and setlocale is referenced. With
|
||
CONFIG_LIBC_LOCALE defined setlocale will act as if MB string is not
|
||
supported and return "C" for POSIX. C and "". From David Sidrane.
|
||
- libc/wchar: Add wcslen, wmemchr, wmemcmp, wmemcpy wmemset, btowc,
|
||
mbrtowc, mbtowc, wcscmp, wcscoll, and wmemmove to NuttX. From Alan
|
||
Carvalho de Assis.
|
||
- libc/wctype: Add functions wcrtomb, wcslcpy, wcsxfrm, wctob, wctomb,
|
||
wctype, localeconv, strcoll, strxfrm, swctype, towlower, towupper and
|
||
wcsftime. Add wctype.h; Move lib_wctype.c to libc/wctype. From Alan
|
||
Carvalho de Assis.
|
||
- include/ctype.h : Add isblank() macro to ctype.h. From Alan Carvalho
|
||
de Assis.
|
||
- lic/stdlib: Add strtof() and strtold() as simply a copy of strtod
|
||
with types and limits changed.
|
||
- sscanf(): Use strtof() instead of strtod() if a short floating point
|
||
value was requested. The should help performance with MCUs with
|
||
32-bit FPU support with some additional code size.
|
||
- sscanf(): Add scansets to the scanf function. Enabled
|
||
CONFIG_LIBC_SCANSET option. From Aleksandr Vyhovanec.
|
||
- include/inttypes.h: Add architecture-specific inttypes.h. From Paul
|
||
A. Patience.
|
||
- C Library: Allow option to enable IP address conversions even when
|
||
the IP address family is not supported.
|
||
|
||
* Build/Configuration System:
|
||
|
||
- The Smoothie project needs to compile C++ inside config/boardname/src/
|
||
to use with High Priority Interruption, then I modified the board
|
||
configs Makefile to support it. It works fine for the first time
|
||
compilation, but if we execute "touch config/boardname/src/Pin.cxx"
|
||
and execute "make" it will not detect that Pin.cxx was modified. I
|
||
think there is some other place I should modify, but I didn't find
|
||
it. From Alan Carvalho de Assis.
|
||
|
||
* Tools:
|
||
|
||
- tools/: Add tools/showsize.sh.
|
||
|
||
* NSH: apps/nshlib:
|
||
|
||
- NSH: dd command will show statistics. From Masayuki Ishikawa.
|
||
|
||
* Applications: apps/system:
|
||
|
||
- apps/system/sched_note: Extend to include additions to instumentation
|
||
for SMP.
|
||
- apps/system/sched_note: Add support for spinlock notes.
|
||
- apps/system/sched_note: Add support for new scheduler instrumentation.
|
||
|
||
* Platforms: apps/platform:
|
||
|
||
- ESP32 Core v2: Add platform support for the ESP32 core v2 board.
|
||
- Olimex STM32-p407: Add platform support for the Olimex STM32 P407.
|
||
|
||
* Graphics: apps/graphics
|
||
|
||
- graphics/traveler/tcledit and libwld: Add an X11 Tcl/Tk tool that can
|
||
be used to edit Traveler world files.
|
||
- Graphics: Remove all NX server taks. Instead, call boardctl() to the
|
||
NX server kernel thread.
|
||
|
||
* Applications: apps/examples:
|
||
|
||
- examples/buttons: Add a new buttons example that uses the button
|
||
character driver instead of the architecture buttons directly. From
|
||
Alan Carvalho de Assis.
|
||
- examples/cctype: Add an example to verify cctype functions.
|
||
- Remove RGMP example.
|
||
- examples/ostest: Extend the pthread cancellation test to exercise
|
||
pthread_cleanup_push() (and pthread_cleanup_pop() indirectly via
|
||
pthread_cancel() and pthread_exit().
|
||
- examples/ostest: enhance pthread cancellation test some.
|
||
|
||
Works-In-Progress:
|
||
|
||
* IEEE802.14.5/6LowPAN. Hooks and framework for this effort were
|
||
introduced in NuttX-7.15. Work has continued on this effort on
|
||
forks from the main repositories, albeit with many interruptions.
|
||
The completion of this wireless feature will postponed until at
|
||
least NuttX-7.20.
|
||
|
||
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:
|
||
|
||
- sched/semaphore: Within the OS, when a thread obtains a semaphore
|
||
count it must call sem_addholder() if CONFIG_PRIORITY_INHERITANCE is
|
||
enabled. If a count is available, then sem_wait() calls
|
||
sem_addholder(), otherwise it waited for the semaphore and called
|
||
sem_addholder() when it eventually received the count. This caused a
|
||
problem when the thread calling sem_wait() was very low priority.
|
||
When it received the count, there may be higher priority threads
|
||
"hogging" the CPU that prevent the lower priority task from running
|
||
and, as a result, the sem_addholder() may be delayed indefinitely.
|
||
The fix was to have sem_post() call sem_addholder() just before
|
||
restarting the thread waiting for the semaphore count. This problem
|
||
was noted by Benix Vincent who also suggested the solution.
|
||
- Many files: Make sure that priority inheritance is not enabled for
|
||
semaphores whose primary use is signaling (vs locking of resources) by
|
||
calling sem_setprotocol().
|
||
- sched/semaphore: sem_trywait() no longer modifies the errno value
|
||
UNLESS an error occurs. This allows these functions to be used
|
||
internally without clobbering the errno value. From Freddie Chopin.
|
||
- sched/clock: Correct clock initialization. The correct range for the
|
||
month is 0-11 but is entered as 1-12 in the .config file. Add ranges
|
||
to START_YEAR, MONTH, and DAY in sched/Kconfig.
|
||
- sched/clock: Correct calculation for the case of Tickless mode with a
|
||
32-bit timer. In that case, the calculation was returning millisecond
|
||
accuracy. That is not good when the timer accuracy is < 1 msec. From
|
||
Rajan Gill.
|
||
- Work Queue: When queuing new LP work, don't signal any threads if
|
||
they are all busy. From Heesub Shin.
|
||
- Work Queue: Signal sent from work_signal() may interrupt the low
|
||
priority worker thread that is already running. For example, the
|
||
worker thread that is waiting for a semaphore could be woken up by the
|
||
signal and break any synchronization assumption as a result. It also
|
||
does not make any sense to send signal if it is already running and
|
||
busy. This change fixes it. From Heesub Shin.
|
||
- Fix DEBUGASSERT() in group_signal.c. From Masayuki Ishikawa.
|
||
- Eliminate bad boardctl() commands: Remove all references to
|
||
BOARDIOC_PWMSETUP and board_pwm_setup(). Remove all references to
|
||
BOARDIOC_ADCSETUP and board_adc_setup(). Remove
|
||
BOARDIOC_CAN_INITIALIZE. CAN initialization is now done in the board
|
||
initialization logic just like every other device driver.
|
||
- pthreads: Fix an error in pthread_mutex_destroy(). An error could
|
||
occur while destroying a mutex after a pthread has been canceled while
|
||
holding the mutex.
|
||
- task_restart: Make sure new task starts with pre-emption disabled and
|
||
not in a critical section.
|
||
- Enter/leave Critical Sections. Major redeign to
|
||
enter/leave_critical_section logic to deal with the case where
|
||
interrupts are disabled only on the local CPU. In this case, some
|
||
rather complex spinlocks must be used to maintain the critical section
|
||
accross all CPUs.
|
||
- SMP Critical Sections: Fixes for the SMP case: (1) Change order for
|
||
SMP case in enter_critical_section: (1) Disable local interrupts
|
||
BEFORE taking spinlock and (2) If SMP is enabled, if any interrupt
|
||
handler calls enter_critical_section(), it should take the spinlock.
|
||
- SMP wdogs: Wdog timers use a tasking interface that to manipulate
|
||
wdogs, and a different interface in the timer interrupt handling logic
|
||
to manage wdog expirations. In the single CPU case, this is fine.
|
||
Since the tasking level code calls enter_critical_section, interrupts
|
||
are disabled and no conflicts can occur. But that may not be the case
|
||
in the SMP case. Most architectures do not permit disabling
|
||
interrupts on other CPUs so enter_critical_section must work
|
||
differently: Locks are required to protect code. this change adds
|
||
locking (via enter_critical section) to wdog expiration logic for the
|
||
the case if the SMP configuration.
|
||
- SMP vfork(): Fix a race condition in the SMP case. Existing logic
|
||
depended on the fact that the child would not run until waitpid was
|
||
called because the child had the same priority as the parent. BUT in
|
||
the SMP case that is not true... the child may run immediately on a
|
||
different CPU.
|
||
- SMP: This change adds a new internal interfaces and fixes a problem
|
||
with three APIs in the SMP configuration. The new internal interface
|
||
is sched_cpu_pause(tcb). This function will pause a CPU if the task
|
||
associated with 'tcb' is running on that CPU. This allows a different
|
||
CPU to modify that OS data stuctures associated with the CPU. When
|
||
the other CPU is resumed, those modifications can safely take place.
|
||
The three fixes are to handle cases in the SMP configuration where one
|
||
CPU does need to make modifications to TCB and data structures on a
|
||
task that could be running running on another CPU. Those three cases
|
||
are task_delete(), task_restart(), and execution of signal handlers.
|
||
In all three cases the solutions is basically the same: (1) Call
|
||
sched_cpu_pause(tcb) to pause the CPU on which the task is running,
|
||
(2) perform the necessary operations, then (3) call up_cpu_resume() to
|
||
restart the paused CPU.
|
||
- SMP: Add logic to avoid a deadlock condition when CPU1 is hung waiting
|
||
for g_cpu_irqlock with interrupts interrupts and CPU0 is waiting for
|
||
g_cpu_paused.
|
||
- SMP: Enforce this rule: Tasks which are normally restored when
|
||
sched_unlock() is called must remain pending (1) if we are in a
|
||
critical section, i.e., g_cpu_irqlock is locked , or (2) other CPUs
|
||
still have pre-emption disabled, i.e., g_cpu_schedlock is locked. In
|
||
those cases, the release of the pending tasks must be deferred until
|
||
those conditions are met.
|
||
|
||
* File System/Block Drivers/MTD Drivers:
|
||
|
||
- AT24XX EEPROM MTD driver: Added EEPROM timeout. Fromo Aleksandr
|
||
Vyhovanec.
|
||
- fs/procfs: Fix procfs status for SMP case.
|
||
|
||
* Graphics/Graphic Drivers:
|
||
|
||
- Fonts: Correct some default font IDs. From Pierre-Noel Bouteville.
|
||
|
||
* Common Drivers:
|
||
|
||
- usbhost/enumerate: Fix possible buffer overwrite. From Janne Rosberg.
|
||
- usbhost/composite: Fix compile; missing semicolons. From Jann Rosberg.
|
||
- syslog: Fixes required for file syslog output. From Max Kriegleder.
|
||
- SPI configuration: Fix Kconfig warning. This change moves the
|
||
ARCH_HAVE_SPI options outside the check for SPI. Those options don't
|
||
depend on SPI, and Kconfig files in arch/ enable them even if SPI
|
||
isn't enabled. Source the driver's Kconfig in drivers/Kconfig only
|
||
if support for the driver is enabled prevents us from defining these
|
||
ARCH_HAVE options in the driver's Kconfig. We should probably remove
|
||
the other checks in drivers/Kconfig and check if the drivers are
|
||
enabled only in their Kconfig. From Paul A. Patience.
|
||
- drivers/timer: Remove the timer driver TIOC_SETHANDLER IOCTL call.
|
||
This calls directly from the timer driver into application code. That
|
||
is non-standard, non-portable, and cannot be supported. Instead, add
|
||
timer driver hooks to support signal notification of timer
|
||
expiration. Signal notification logic added by Sebastien Lorquet.
|
||
- All timer lower half drivers. Port Sebastien's changes to all other
|
||
implementations of the timer lower half.
|
||
- USB MSC Device: Fix length of mode6 sense reply packet. From
|
||
Wolfgang Rei<65>negger.
|
||
- USB Composite Host: Fix end offset in usbhost_copyinterface(). From
|
||
Janne Rosberg.
|
||
- USB CDC/ACM Host: Add CDC_SUBCLASS_ACM and CDC_PROTO_ATM to
|
||
supported class and proto. From Janne Rosberg.
|
||
- SSD1306: Fix errors in SPI mode configuration. From Gong Darcy.
|
||
- CDC/ACM Device Class: uart_ops_s portion of cdcacm will not be
|
||
initalized with correct functions if CONFIG_SERIAL_DMA is selected.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- drivers/net/tun.c: Fix bug in TUN interface driver. From Max Nekludov.
|
||
|
||
* ARMv7-A:
|
||
|
||
- ARMv7-A SMP: Add SMP logic to signal handling.
|
||
|
||
* ARMv7-M:
|
||
|
||
- ARMv7-M: Fix double allocation of MPU region in mmu.h.
|
||
|
||
* ARMv7-R:
|
||
|
||
- ARMv7-R: Fix compilation error. This change fixes compilation errors
|
||
on MPU support for ARMv7-R. From Heesub Shin.
|
||
- ARMv7-R: fix invalid drbar handling. In ARMv7-R, [31:5] bits of DRBAR
|
||
is physical base address and other bits are reserved and SBZ. Thus,
|
||
there is no point in passing other than the base address. From Heesub
|
||
Shin.
|
||
- ARMv7-R: Remove the redundant update on SCTLR. mpu_control() is
|
||
invoking cp15_wrsctlr() around SCTLR update redundantly. From Heesub
|
||
Shin.
|
||
- ARMv7-R: add new Kconfig entries for d/i-cache. Unlike in ARMv7-A/M,
|
||
Kconfig entries for data and instruction caches are currently missing
|
||
in ARMv7-R. This change adds those missing Kconfig entries. Actual
|
||
implmenetation for those functions will be added in the subsequent
|
||
patches. From Heesub Shin.
|
||
- ARMv7-R: Add cache handling functions. This change adds functions for
|
||
enabling and disabling d/i-caches which were missing for ARMv7-R.
|
||
From Heesub Shin.
|
||
- ARMv7-R: Fix typo in mpu support. s/ARMV7M/ARMV7R/g. From Heesub Shin.
|
||
- ARMv7-R: Fix CPSR corruption after exception handling. A sporadic
|
||
hang with consequent crash was observed when booting. It seemed to be
|
||
caused by the corrupted or wrong CPSR restored on return from
|
||
exception. NuttX restores the context using code like this: msr spsr,
|
||
r1. GCC translates this to: msr spsr_fc, r1. As a result, not all
|
||
SPSR fields are updated on exception return. This should be: msr
|
||
spsr_fsxc, r1. On some evaluation boards, spsr_svc may have totally
|
||
invalid value at power-on-reset. As it is not initialized at boot, the
|
||
code above may result in the corruption of cpsr and thus unexpected
|
||
behavior. From Heesub Shin.
|
||
- ARMv7-R: Fix to restore the Thumb flag in CPSR. Thumb flag in CPSR is
|
||
not restored back when the context switch occurs while executing thumb
|
||
instruction. From Heesub Shin.
|
||
|
||
* Atmel SAM3/4 Drivers:
|
||
|
||
- SAM3/4 UDP: Add delay between setting and clearing the endpoint RESET
|
||
bit in sam_ep_resume(). We need to add a delay between setting and
|
||
clearing the endpoint reset bit in SAM_UDP_RSTEP. Without the delay
|
||
the USB controller will (may?) not reset the endpoint. If the
|
||
endpoint is not being reset, the Data Toggle (DTGLE) bit will not to
|
||
be cleared which will cause the next transaction to fail if DTGLE is
|
||
1. If that happens the host will time-out and reset the bus. Adding
|
||
this delay may also fix the USBMSC_STALL_RACEWAR in usbmsc_scsi.c,
|
||
however this has not been verified yet. From Wolfgang Rei<65>negger.
|
||
- SAM3/4: Remove unused 'halted' flag from UDP driver. From Wolfgang
|
||
Rei<65>negger.
|
||
- SAM3/4: Remove 'stalled' flag from the UDP driver. This flag is not
|
||
necessary because the state of the endpoint can be determined using
|
||
'epstate' instead. From Wolfgang Rei<65>negger.
|
||
|
||
* Atmel SAM3/4 Boards:
|
||
|
||
- SAM4S Xplained Pro: Configuration uses old, improper timer interface.
|
||
CONFIG_TIMER disabled in configuration. Remove obsolete timer
|
||
initialization logic.
|
||
|
||
* Atmel SAMV7 Drivers:
|
||
|
||
- SAMv7 USBDEVHS: A problem occurred with the SAMV7 USBDEVHS driver if
|
||
the USB cable is unplugged while a large amount of data is send over
|
||
an IN endpoint using DMA. If the USB cable is plugged in again after a
|
||
few seconds it is not possible to send data over this IN endpoint
|
||
again, all other endpoints work as expected. The problem occurs
|
||
because if the USB cable is unplugged while an DMA transfer is in
|
||
flight the transfer is canceled but the register SAM_USBHS_DEVDMACTRL
|
||
is left in an undefined state. The problem was fixed the problem by
|
||
resetting the register SAM_USBHS_DEVDMACTRL to a known state.
|
||
Additionally all pending interrupts are cleared. From Stefan Kolb.
|
||
- SAMV7 MCAN: Prevent Interrupt-Flooding of ACKE when not connected to
|
||
CAN-BUS. An Acknowledge-Error will occur every time no other CAN Node
|
||
acknowledges the message sent. This will also occur if the device is
|
||
not connected to the can-bus. The CAN-Standard declares, that the Chip
|
||
has to retry a given message as long as it is not sent successfully
|
||
(or it is not cancelled by the application). Every time the chip tries
|
||
to resend the message an Acknowledge-Error-Interrupt is generated. At
|
||
high baud rates this can lead in extremely high CPU load just for
|
||
handling the interrupts (and possibly the error handling in the
|
||
application). To prevent this Interrupt-Flooding we disable the ACKE
|
||
once it is seen as long we didn't transfer at least one message
|
||
successfully. From Frank Benkert.
|
||
- SAMV7 MCAN: Make delete_filter functions more robust. From Frank
|
||
Benkert.
|
||
|
||
* Atmel SAMA5 Drivers:
|
||
|
||
- SAMA5 PWM: Driver does not build when executing from SDRAM before
|
||
board frequencies are not constant. Rather, the bootloader configures
|
||
the clocking and we must derive the clocking from the MCK left by the
|
||
bootloader. This means lots more computations. This is untested on
|
||
initial change because I don't have a good PWM test setup right now.
|
||
|
||
* Misoc LM32:
|
||
|
||
- Misoc LM32: Corrects a bug that never occured in qemu on simulation or
|
||
real fpga. The error was that the r1 register was being modified out
|
||
of context switching and not restoring it. From Ramtin Amin
|
||
|
||
* NXP Freescale i.MX6:
|
||
|
||
- i.MX6 interrupt handling: Additional logic needed to handle nested
|
||
interrupts when an interrupt stack is used. Nesting can occur because
|
||
SGI interrupts are non-maskable.
|
||
|
||
* NXP Freescale LPC43xx Drivers:
|
||
|
||
- LPC43xx serial: Fix a typo in ioctl TIOCSRS485 ioctl. From Vytautas
|
||
Lukenskas.
|
||
- LPC43xx serial: Restore RS485 mode on serial port open (if RS485 is
|
||
enabled via menuconfig). From Vytautas Lukenskas.
|
||
- LPC43xx SD/MMC: Correct some definitions on SMMC control register in
|
||
lpc43_sdmmc.h. From Alan Carvalho de Assis.
|
||
- LPC43xx SD card: Correct pin configuration options needed for SD card
|
||
pins. From Alan Carvalho de Assis.
|
||
|
||
* SiLabs EFM32:
|
||
|
||
- EFM32: Fix a compilation error. From Pierre-noel Bouteville.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 CHxN channels are always outputs. From Sebastien Lorquet.
|
||
- STM32 DAC: Fix shift value whenever there are is a DAC2 and, hence,
|
||
up to three interfaces. From Marc Recht<68>.
|
||
- STM32 F1: Add TIM8 to STM32F103V pinmap. From Maciej W<>jcik.
|
||
- STM32 F1: Fix for F1 RTC Clock, tested on F103. From Maciej W<>jcik.
|
||
- STM32 F3: STM32F303xB and STM32F303xC chips have 4 ADCs. From Paul
|
||
A. Patience.
|
||
- STM32 F4: A new implementation of the STM32 F4 I2C bottom half. The
|
||
common I2C as this did not handled correctly in the current
|
||
implementation (see also https://github.com/PX4/NuttX/issues/54). The
|
||
changes almost exclusively affect the ISR. From Max Kriegleder.
|
||
- STM32 F4 OTGHS Host: If STM32F446 increase number of channels to
|
||
16. From Janne Rosberg.
|
||
- STM32 F4: I think, that Size is (highest address+1 - Base address).
|
||
Base address has been removed and if address+count >= size we are
|
||
outside of the Flash. From David Sidrane.
|
||
- STM32 F4: Fix ADC compilation error when DMA isn't enabled. From Paul
|
||
A. Patience.
|
||
- STM32 F4: STM32F427 was rebooting. Over reached family. From David
|
||
Sidrane.
|
||
- STM32 F4: Added STM32F469 RAM size and deliberated STM32F446 size.
|
||
From David Sidrane.
|
||
- STM32 F4: Typo in stm32f76xxxx_pinmap.h edited online with
|
||
Bitbucket. From David Sidrane.
|
||
- STM32 F7: stm32_i2c.c Dejavu. Fixes a bug previously found in the
|
||
F4. From David Sidrane.
|
||
- STM32 F7: OTGDEV fixed typo. From David Sidrane.
|
||
- STM32 F7: Fix to SPI-Master driver. Without this the chip select
|
||
decoding feature will not work properly. From Michael Spahlinger.
|
||
- STM32 F7: STM32F7 SD/MMC driver depends on CONFIG_SDIO_DMA which is
|
||
only defined in stm32/Kconfig. Changed to CONFIG_STM32F7_SDMMC_DMA
|
||
and defined in stm32f7/Kconfig.
|
||
- STM32 F7: Fix some STM32F7 copy paste errors. From David Sidrane.
|
||
- STM32 L4: Complementary PWM outputs on STM32L4" (1) too many
|
||
parentheses when calculating max chan count and (2) channel 4 does not
|
||
have a complementary output. From Sebastien Lorquet.
|
||
- STM32 L4: Fix I2C devices RCC registers. From Sebastien Lorquet.
|
||
- STM32 L4: Enable and renaming for 32l4 UARTs 4 and 5. From Sebastien
|
||
Lorquet.
|
||
- STM32 L4: Change the way to configure quadrature encoder prescalers.
|
||
From Sebastien Lorquet.
|
||
- STM32 L4: Correct USART1/2 definitions. Use default mbed UART4
|
||
settings. From Sebastien Lorquet.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F103 Minimum: Fix Timers 2 to 7 clock frequencies. From Alan
|
||
Carvalho de Assis.
|
||
- Nucleo-F303RE: Remove duplicate setting from board.h. From Marc
|
||
Recht<68>.
|
||
- Nucleo F303RE: Various fixes to get the ADC configuration building
|
||
again after PR. Refresh all configurations.
|
||
- Nucleo L476RG: Add better selection of timer.
|
||
|
||
* TI Tiva Boards:
|
||
|
||
- DK-TM4C129x: Typo fix. From Wolfgang Rei<65>negger.
|
||
|
||
* Xtensa ESP32:
|
||
|
||
- ESP32 core v2: Flush the UART TX buffer in the esp32 serial shutdown
|
||
routine. The ROM bootloader does not flush the FIFO before handing
|
||
over to user code, so some of this output is not currently seen when
|
||
the UART is reconfigured in early stages of startup. From Angus
|
||
Gratton.
|
||
- Xtensa ESP32: Corrects a problem with dispatching to signal
|
||
handlers: Cannot vector directly to the signal handling function as
|
||
in other ABIs under the Xtensa Window ABI. In that case, we need to
|
||
go through a tiny hook when performs the correct window call (call4)
|
||
otherwise registers will be scrambled in the signal handler.
|
||
|
||
* Xtensa ESP32 Boards:
|
||
|
||
- ESP32 core v2: Changes the openocd config file's default flash
|
||
voltage from 1.8V to 3.3V. This is not necessary right now, but may
|
||
save some hard-to-debug moments down the track (3.3V-only flash
|
||
running at 1.8V often half-works and does weird things...). From
|
||
Angus Gratton.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- libc/stdio: Fixes sscanf() %sn where strlen(data) < n. From David
|
||
Sidrane.
|
||
- libc/stdio: Include wchar.h in lib_libvsprintf.c to fix compilation
|
||
error. From Alan Carvalho de Assis.
|
||
- include/sys/time.h: timersub macro modified per recommendations of
|
||
phreakuencies.
|
||
- include/ctype.h and cxx/cctype: Implement ctype.h functions as inline
|
||
if possible. cctype can then properly select namespace.
|
||
- include/: Fix a number of header files with mismatched 'extern C {'
|
||
and '}'.
|
||
- libc/unisted: Change brings strtol() and related functions more
|
||
conformant with POSIX. Corner cases like strtol(-2147483648, NULL,
|
||
10) now pass clang -fsanitize=integer without warnings. From Juha
|
||
Niskanen.
|
||
- libc/unistd: sleep() was returning remaining nanoseconds (kind of),
|
||
instead the remaining seconds. From Eunbong Song.
|
||
- termios.h: Fix CRTSCTS define to include input and output flow. From
|
||
Lorenz Meier.
|
||
|
||
* Build/Configuration System:
|
||
|
||
- configs/*/defconfig: The buttons example was changed to archbuttons.
|
||
As a result all of the button configurations are broken and need some
|
||
renaming in the defconfig files. Noted by Frank Berkert.
|
||
- config/*/defconfgs: More fallout from name change of
|
||
apps/examples/buttons to archbuttons.
|
||
- configs: All QE encoder files. Last change made timer hard-coded to
|
||
3. Make configurable.
|
||
- configs: Remove all traces of the no-longer existent ARCHBUTTONS
|
||
example. Remove all button configurations that depended on the
|
||
obsoleted ARCHBUTTON example.
|
||
- minnsh Configurations: Remove minnsh configurations and support
|
||
logic: up_getc() and lowinstream. This was an interesting exercise
|
||
to see just how small you could get NuttX, but otherwise it was not
|
||
useful: (1) the NSH code violated the OS interface layer by callup
|
||
up_getc() and up_putc() directly, and (2) while waiting for character
|
||
input, NSH would call up_getc() which would hog all of the CPU. Not a
|
||
reasonable solution other than as a proof of concept.
|
||
|
||
* Application Build/Configuration System:
|
||
|
||
- Make.defs: Using wrong link script if native window tool used with
|
||
Cygwin.
|
||
|
||
* apps/platform:
|
||
|
||
- ESP32 Core v2 Platform: Fix some naming that prevented building the
|
||
C++ support.
|
||
|
||
* apps/nshlib:
|
||
|
||
- NSH Library: nsh_getdirpath(), use snprint instead of sprintf to
|
||
avoid possibility of buffer overrun. Noted by Chung Hwan Kim.
|
||
|
||
* apps/system:
|
||
|
||
- Remove std_readline(). This called up_getc() and up_putc() directly,
|
||
violating the POSIX OS interface.
|
||
|
||
* apps/netutils:
|
||
|
||
- FTPD: Fixed bug that didn't free ftpd ressources on exit. From Pascal
|
||
Speck.
|
||
- NTP client: Fix missing left parenthesis. From Pierre-Noel Bouteville.
|
||
- cJSON: Import patch to fix:cJSON_PrintUnformatted() behaves unexpected
|
||
if an empty array shall be printed to text. from Jerome Lang
|
||
2012-04-19. From Pierre-Noel Bouteville.
|
||
- esp8266 update cosmetic and many bug fix. From Pierre-Noel Bouteville.
|
||
- FTPD: Fix bug un ftpd file or socket may be not closed. From
|
||
Pierre-Noel Bouteville.
|
||
|
||
* apps/modbus:
|
||
|
||
- Modbus Master is missing many files and doesn't compile at all. More
|
||
details in
|
||
https://groups.yahoo.com/neo/groups/nuttx/conversations/topics/13734.
|
||
From Vytautas Lukenskas.
|
||
|
||
* apps/examples:
|
||
|
||
- The examples/qencoder app was trying to init the encoder by a direct
|
||
call into the board, cheating in a local header to declare the
|
||
normally unavailable function prototype. From Sebastien Lorquet.
|
||
- apps/examples/timer: Should detach signal handler before exiting.
|
||
- examples/qencode: The examples/qencoder app was trying to init the
|
||
encoder by a direct call into the board, cheating in a local header to
|
||
declare the normally unavailable function prototype. From Sebastien
|
||
Lorquet.
|
||
- apps/examples/archbuttons: Removed becaue it violates OS interface
|
||
principles.
|
||
- examples/adc, pwm, can: Remove all usage of BOARDIOC_ADCTEST_SETUP,
|
||
BIOARDIOC_PWMSETUP. Remove BOARDIOC_CAN_INITIALIZE. CAN
|
||
initialization is now done in the board initialization logic just like
|
||
every other device driver.
|
||
- examples/ostest: Add some delays to the pthread cancellation test.
|
||
With deferred cancellation enabled, things happen more asynchronously.
|
||
|
||
NuttX-7.20 Release Notes
|
||
------------------------
|
||
|
||
The 120th release of NuttX, Version 7.20, was made on March 8, 2017,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.20.tar.gz and
|
||
apps-7.20.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/nuttx/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core OS:
|
||
|
||
- Kernel Modules: Module initializer may now return a symbol table.
|
||
- Modules: Extend the module interface so that we can access symbols
|
||
exported by the module.
|
||
- Shared Libraries: In the FLAT build mode, kernel modules may be
|
||
used to provide minimal shared library functionality.
|
||
- Modules/Shared Libraries: Add support for dependencies between
|
||
modules.
|
||
- Module Library: Add build a configuration logic for a shared module
|
||
library.
|
||
- Shared Libraries: Implement module based shared libraries for the
|
||
PROTECTED mode build.
|
||
- Interrupt handling: irq_attach() now includes an argument of type
|
||
xcpt_t that retained with the handler address. That argument is
|
||
then provided to the interrupt handler when the interrupt occurs.
|
||
The common parameter passing replaces the ad hoc parmater passing
|
||
implemented in current drivers. From Mark Schulte.
|
||
- Adapt many drivers to utilize the IRQ argument feature.
|
||
- All functions that used to return an xcpt_t old handler value, now
|
||
return an int error code. The oldhandler value is no longer useful
|
||
with the recent changes to the interrupt argument passing. Some of
|
||
the functions effected include board_button_irq(), arch_phy_irq(),
|
||
STM32 EXTI functions (Alarm, COMP, PVD), GPIO interrupt logic like
|
||
kinetis_pinirq(), stm32_gpiosetevent(), and others.
|
||
- IRQ subsystem: Add support for smaller interrupt tables as
|
||
described at
|
||
http://www.nuttx.org/doku.php?id=wiki:howtos:smallvectors . This
|
||
is partially the work of Mark Schulte.
|
||
|
||
* File Systems/Block and MTD Drivers
|
||
|
||
- Pseudo File System: Add support for soft links in the top-level
|
||
psuedo file system.
|
||
- Soft links: Add an implementation of readlink().
|
||
- Add fstat() support. Implement fstat() method in binfs, romfs,
|
||
unionfs, tmpfs, nxffs, nfx, hostfs, procfs, and smartfs.
|
||
- fstat: Add fstat() support to FAT. From Alan Carvalho de Assis.
|
||
|
||
* Graphics/Display Drivers:
|
||
|
||
- Fonts: Add support for Tom Thumb small mono-space font. From Alan
|
||
Carvalho de Assis.
|
||
- Graphics: Separated of font cache from graphics/nxterm. Now in
|
||
libnx/nxfronts where it can be shared with other grapics
|
||
applications.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- Ethernet drivers: Add framework for serialization in the case where
|
||
multiple low-priority work queues are used.
|
||
|
||
* Other Common Device Drivers:
|
||
|
||
- Add capabilities() method to SDIO interface. Remove
|
||
CONFIG_SDIO_WIDTH_D1_ONLY. That should not be a global propertie,
|
||
but rather a capability/limitation of single slot when there may be
|
||
multiple slots.
|
||
- Removed dmasupported() method from the SDIO interface. That is now
|
||
a bit in the capability set.
|
||
- drivers/sensors: Add driver for the ST L3GD20 3 axis gyro. From
|
||
raiden00.
|
||
|
||
* Atmel SAM3/4:
|
||
|
||
- SAM3/4: Add support for ATSAM4S4C. From Wolfgang Rei<65>negger.
|
||
|
||
* NXP Freescale i.MX6 Boards:
|
||
|
||
- Sabre 6quad: Enable examples/smp test in i.MX6 SMP/NSH
|
||
configurations.
|
||
|
||
* NXP Freescale Kinetis:
|
||
|
||
- Kinetis: Added support for CHIP_MK60FN1M0VLQ12 chip. From Maciej
|
||
Skrzypek.
|
||
- Kinetis: Add support for K64/K66 RTC lower half driver. From Neil
|
||
Hancock.
|
||
- Kinetis: Extensive modification of MCG support based feature
|
||
configuration. From David Sidrane.
|
||
- Kinetis: Add support for K66 family. From David Sidrane.
|
||
- Kinetis: Created a kinetis SIM versioning scheme pulled in by
|
||
Kinetis chip.h. From David Sidrane.
|
||
- Created a kinetis PMC versioning scheme pulled in by Kinetis
|
||
chip.h. From David Sidrane.
|
||
- Kinetis: Extend clock configuration logic. Refactor
|
||
implementation. From David Sidrane.
|
||
|
||
* NXP Freescale Kinetis Drivers:
|
||
|
||
- Kinetis Ethernet: Kinetis Support RMII clock source select. This
|
||
defined the RMII clock source select bits and allows the selection
|
||
to be made via Kconfig. From David Sidrane. Freedom-K66F uses
|
||
ENET_1588_CLKIN as RMII clock
|
||
- Kinetis Serial: Added configurable 1|2 stop bits.
|
||
HAVE_SERIAL_CONSOLE -> HAVE_UART_CONSOLE to be consistent with
|
||
HAVE_LPUART_CONSOLE naming. From David Sidrane.
|
||
- Kinetis LPserial: Add LPUART serial driver and Clock
|
||
configuartaion to freedom-k66f board. From David Sidrane.
|
||
- Kinetis USB device: Refactor clocking in kinetis_usbdev. From
|
||
David Sidrane.
|
||
|
||
* NXP Freescale Kinetis Boards:
|
||
|
||
- Add support for NXP Freedom-k66f development board. From David
|
||
Sidrane.
|
||
- Kinetis Freedom K66F: Add Ethernet support. From David Sidrane.
|
||
- Add twr-k64f120m config. From Marc Recht<68>.
|
||
|
||
* NXP Freescale LPC43xx Boards:
|
||
|
||
- Bamboo-200E: Add netnsh configuration. From Alan Carvalho de Assis.
|
||
- Add usbnsh config to Bambino 200E board. From Alan Carvalho de
|
||
Assis.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32 F7: Allow board to configure HSE clock in bypass-mode. This
|
||
is needed to enable HSE with Nucleo-F746ZG board. From Jussi
|
||
Kivilinna.
|
||
- STM32 F7: stm32_allocateheap: allow use DTCM memory for heap.
|
||
STM32F7 has up to 128KiB of DTCM memory that is currently left
|
||
unused. This change adds DTCM to main heap if
|
||
CONFIG_STM32F7_DTCMEXCLUDE is not enabled. From Jussi Kivilinna.
|
||
- Add basic support for the STM32F334. From Mateusz Szafoni.
|
||
- STM32F33XX DAC, OPAMP, COMP, ADC, HRTIM headers. From Mateusz
|
||
Szafoni.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 F7 SDMMC: Add support for single bit operation on SDMMC2.
|
||
- STM32 L4: Port STM32L4 SAI driver from MDK.
|
||
- STM32 L4: Bring power management logic from Motrola MDK into NuttX.
|
||
- STM32 L4: Bring LPTIM driver in from the Motorola MDK.
|
||
- STM32 L4 COMP: Port from Motorola MDK.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F429i Discovery: Add support for NxWM on STM32F429i-Disco
|
||
board. From Alan Carvalho de Assis.
|
||
- STM32F103 Minimum: Add support for nRF24 on STM32F103-Minimum
|
||
board. From Alan Carvalho de Assis.
|
||
- Olimex STM32 P407: Add a NSH protected build configuration; Enable
|
||
procfs/ in all configurations.
|
||
- Olimex STM32 P407: Add support for on-board microSD slot.
|
||
- STM32F429i Discovery: add support for the L3GD20 driver. From
|
||
raiden00.
|
||
- STM32F103 Minimum: Add support to QEncoder on STM32F103 Minimum
|
||
board. From Alan Carvalho de Assis.
|
||
- Olimex STM32 P407: Add external SRAM support.
|
||
- Add basic support for the Nucleo F334R8 board. From Mateusz
|
||
Szafoni.
|
||
- STM32F103 Minimum: Add SDCard support over SPI on STM32F103-Minimum
|
||
board. From Alan Carvalho de Assis.
|
||
- STM32F103 Minimum: Add support to USB Device on STM32F103-Minimum
|
||
board. From Alan Carvalho de Assis.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- compiler.h: packed_struct replaced by begin_packed_struct and
|
||
end_packed_struct. Now support IAR style packed structures. From
|
||
Aleksandr Vyhovanec.
|
||
- Math library: Leverage optimized ARMv8-M functions from BSD license
|
||
ARM file.
|
||
- Shared libraries: Add a non-standard dllfnc.h function to set the
|
||
symbol table.
|
||
- C Library: Add a support for setvbuf(). This is a collaborative
|
||
effort. Alan Carvalho de Assis did the initial prototype.
|
||
- C Library: Add setbuf() which is a trivial wrapper around setvbuf().
|
||
- C library: Add swab().
|
||
- C library: Add strtoimax and strtoumax.
|
||
- C library: Add ffs(), rindex(), an index(). Add strings.h. Move
|
||
strcasecmp, strncasecmp, bzero, bcmp, and bcopy to where they
|
||
belong in strings.h.h, not string.h. bzero, bcmp, and bcopy are
|
||
legacy functions; the contemporary counterparts should be used
|
||
instead.
|
||
- C library: Add fstatfs().
|
||
- Update cwchar. Add cwctype.
|
||
|
||
* Build/Configuration System:
|
||
|
||
- Add configuration support for builds with Ubuntu under Windows 10.
|
||
|
||
* Tools:
|
||
|
||
- tools/noteinfo.c: A hack tool that I use to analyze some sched_note
|
||
output. Needs a home and may be useful to others.
|
||
- tools/mkconfig.c: Add logic to keep all of the buffering options in
|
||
sync.
|
||
|
||
* NSH: apps/nshlib:
|
||
|
||
- NSH: Add support for the 'ln' command.
|
||
- NSH ls command: if node is a symobolic link, use readlink() to get
|
||
and the display the target of the symblic link.
|
||
- NSH: Add readlink command.
|
||
|
||
* Applications: apps/examples:
|
||
|
||
- apps/examples/nxtext: Make line spacing configurable.
|
||
- apps/system/zmodem/host/nuttx/compiler.h synchronized with
|
||
nuttx/nuttx/include/nuttx/compiler.h. From Aleksandr Vyhovanec.
|
||
- apps/examples/sotest: Add a test for shared libraries.
|
||
- apps/examples/ostest: Add a test of setvbuf().
|
||
- apps/examples/stat: Add a simple test for stat(), fstat(),
|
||
statfs(), and fstatfs().
|
||
|
||
Works-In-Progress:
|
||
|
||
* IEEE802.14.5/6LowPAN. Hooks and framework for this effort were
|
||
introduced in NuttX-7.15. Work has continued on this effort on
|
||
forks from the main repositories, albeit with many interruptions.
|
||
The completion of this wireless feature will postponed until at
|
||
least NuttX-7.21.
|
||
|
||
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:
|
||
|
||
- SMP: There were certain conditions that we must avoid by preventing
|
||
the release of the pending tasks while withn a critical section.
|
||
But this logic was incomplete; there was no logic to prevent other
|
||
CPUs from adding new, running tasks while on CPU is in a critical
|
||
section. This commit corrects this. This is matching logic in
|
||
sched_addreadytorun to avoid starting new tasks within the critical
|
||
section (unless the CPU is the holder of the lock). The holder of
|
||
the IRQ lock must be permitted to do whatever it needs to do.
|
||
- SMP: Make checks for CPU lock set more robust. There are certain
|
||
conditions early in initialization on during interrupt handling
|
||
where things need to be done a little differently.
|
||
- sched_cpulocked: Avoid use of spinlock. That has been reported to
|
||
cause a deadlock (2016-12-28).
|
||
- SMP: Fix a gap where we may try to make modifications to the task
|
||
lists without being in a critical sections. That permits
|
||
concurrent access to the tasks lists and many subtle problems.
|
||
This fix just remains in the critical section throughout the
|
||
operation (and possible until the task is restore in the event of a
|
||
context switch). Makes a big difference in stability.
|
||
- SMP: Fix an error in critical section logic when performing a
|
||
context switch from an interrupt handler. The g_cpu_irqset bit was
|
||
not being set for the CPU so other CPUs did not know about the
|
||
critical section.
|
||
- SMP Signals: Fix some SMP signal delivery logic. Was not handling
|
||
some critical sections correctly and was missing logic to signal
|
||
tasks running on other CPUs.
|
||
- SMP: Fix timer related issues: Round robin and sporadic
|
||
scheduling were only being performed for tasks running on the CPU
|
||
that processes the system timer interrupt. Similary, CPU load
|
||
measurements were only be processed for running on the CPU that
|
||
receives the sampling interrupt.
|
||
- sched_note: Fix spinlock instrumentation. From Masayuki Ishikawa.
|
||
- In all implementations of _exit(), use enter_critical_section() vs.
|
||
disabling local interrupts.
|
||
- sigtimedwait: When timer expires, up_unblock_task() is called.
|
||
This is okay in the single CPU case because interrupts are disable
|
||
in the timer interrupt handler. But it is insufficient in the SMP
|
||
case. enter_ and leave_critical_section() must be called in order
|
||
to manage spinlocks correctly.
|
||
- Fix a compile error: in sched_cpuload.c:Line136, the variables ts
|
||
and secs are not defined if CONFIG_CPULOAD_ONESHOT_ENTROPY = 0.
|
||
However, these variables are used regardless of
|
||
CONFIG_CPULOAD_ONESHOT_ENTROPY at lines~180:onwards. From Rajan Gill.
|
||
- CPU load: Correct computation of the nominal period to use when the
|
||
source is a oneshot timer.
|
||
- Cancellation points: Fix some backward logic in conditional
|
||
compilation.
|
||
- Remove an unused variable when calling sigwaitinfo() and
|
||
sigtimedwait(). From Masayuki Ishikawa.
|
||
|
||
* File System/Block and MTD Drivers:
|
||
|
||
- procfs: Correct to snprintf-related errors in fs_procfsproc.c.
|
||
Resolves issue #24.
|
||
- Add logic to VFS rename: If target of rename exists and is a
|
||
directory, then the source file should be moved 'under' the target
|
||
directory. POSIX also requires that if the target is a file, then
|
||
that old file must be deleted.
|
||
- Fix open() a block device with
|
||
CONFIG_DISABLE_PSEUDOFS_OPERATIONS=y. From Masayuki Ishikawa.
|
||
- File System: Don't build block driver proxy if PSEUDOFS_OPERATIONS
|
||
are disabled.
|
||
- sendfile(): Fix error introduced with commit
|
||
ff73be870e38959b0aaee5961dc47b4b58dc2d86. Noted by Maciej W<>jcik.
|
||
|
||
* Graphics/Graphic Drivers:
|
||
|
||
- NxWM configurations. If using a 7-bit character set, then the
|
||
cursor character cannot be 137 (graphic block). Use 95
|
||
(underscore) instead.
|
||
- NX server: Correct message queue names. Should not be at /dev,
|
||
but rather relative to /var/mqueue.
|
||
|
||
* Common Drivers:
|
||
|
||
- MMCSD_SDIO: Only wait for card ejected if card detection is
|
||
supported. From Alan Carvalho de Assis.
|
||
- Typos withim mtd/ with Macronix MX25L. In
|
||
NuttX/drivers/mtd/Make.defs letters X between M and 25 are
|
||
missing. Noted by Oleg Evseev.
|
||
- USBMSC: Always set LUN readonly flag. From Wolfgang Rei<65>negger.
|
||
- drivers/lcd: ssd1306_configspi() must have global scope.
|
||
- MMC/SD SDIO: Some drivers need to start DMA before sending CMD24
|
||
and some AFTER. From Alan Carvalho de Assis.
|
||
- drivers/tone.c: Handle configuration with multiple PWM channels.
|
||
This resolves issue #30: Audio Tone Generator and PWM Multiple
|
||
Output Channel options.
|
||
- drivers/tone.c: 50% duty needs to be expressed a a fixed precision
|
||
number.
|
||
- drivers/spi/Kconfig: There is too much SPI in the configuration
|
||
menu; SPI Driver Support menu is empty. From Maciej W<>jcik.
|
||
- option to enable Memory Card debug output was hidden with SD cards
|
||
connected through SPI. From Maciej W<>jcik.
|
||
- usbhost_cdcacm: fix tx outbuffer overflow and remove now invalid
|
||
assert. From Janne Rosberg.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- Networking: Fixed some issues that prevented IPv6 from working with
|
||
IPv4 enabled. From Pascal Speck.
|
||
- Networking: fixed a nullptr-dereference on iob_clone. From Pascal
|
||
Speck.
|
||
- Ethernet: Need two work structures (minimum) in all Ethernet
|
||
drivers so that pending poll work is not lost when an interrupt
|
||
occurs.
|
||
|
||
* ARMv7-R:
|
||
|
||
- I found an issue inside the cp15_coherent_dcache function: The
|
||
"mcr CP15_BPIALLIS(r0)" should only be used with SMP
|
||
configurationa. In non-SMP configuration this instruction could
|
||
become undefined. From Manohara HK.
|
||
|
||
* Atmel SAM3/4 Drivers:
|
||
|
||
- SAM3/4: GPIO bit numbering typo fixes. From Wolfgang Rei<65>negger.
|
||
|
||
* Atmel SAM3/4 Boards:
|
||
|
||
- Add missing sched_note_*() calls in sam4cm SMP functions.
|
||
|
||
* NXP/Freescale Kinetis:
|
||
|
||
- Kinetis: Fixed wrong MCG VDIV calculation on new NXP K60. From
|
||
Maciej Skrzypek.
|
||
- Kinetis: Need to set HAVE_UART_DEVICE when UART4 is selected. From
|
||
Maciej Skrzypek.
|
||
- Kinetis MCG: Wrong FRDIV set in MCG_C1. From Maciej Skrzypek.
|
||
|
||
* NXP/Freescale Kinetis Drivers:
|
||
|
||
- Kinetis Serial: Fixed compile error when UART5 is selected. From
|
||
Maciej Skrzypek.
|
||
- Kinetis SDHC - Enable clock after selected. From David Sidrane.
|
||
- Kinetis: Correct some SPI and I2C configuration issues. From
|
||
David Sidrane.
|
||
- Kinetis Ethernet: Add #define for number of loops for auto
|
||
negotiation to complete. From Marc Recht<68>.
|
||
- Kinetis Werial: Fixed up_rxint - did not disable the RX
|
||
interuppts. There was an OR where and AND NOT was needed. From
|
||
David Sidrane.
|
||
|
||
* NXP/Freescale LPC43xx:
|
||
|
||
- LPC43 pinset definitions: Add more 1 bit to pinset to reach
|
||
SFSCLK0-SFSCLK3. Remove PINCONFIG_DIGITAL. From Alan Carvalho de
|
||
Assis.
|
||
|
||
* NXP/Freescale LPC43xx Drivers:
|
||
|
||
- LPC43 serial: Correct conditional logic that selects /dev/ttySN.
|
||
Problem noted by Alan Carvalho de Assis.
|
||
|
||
* NXP/Freescale i.MX6:
|
||
|
||
- i.MX6: Fix clearing GPT status register. From Masayuki Ishikawa.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32, STM32L4 Oneshot: Fix logic so that it can support multiple
|
||
oneshot timers.
|
||
- STM32 F7: Added missing ARCH_HAVE_RESET for F7. From David Sidrane.
|
||
- STM32: Add missing STM32_BKP_BASE. From David Sidrane.
|
||
- STM32 and STM32F7: Fixes the BKP reference counter issue. From
|
||
David Sidrane.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- Fix for SAMv7 SPI: DLYBS value was calculated, but never written to
|
||
any registers. This led to incorrect timings on the bus. From
|
||
Michael Spahlinger.
|
||
- STM32 QEncoder: Fix QEncoder driver, based on STM32L4 driver. From
|
||
Alan Carvalho de Assis.
|
||
- STM32 QEncoder: Enable clocking to the timer on QE setup; disable
|
||
clock on QE teardown.
|
||
- STM32 Ethernet: Need two work structures so that pending poll work
|
||
is not lost when an interrupt occurs. This change has also been
|
||
ported to all all other effected Ethernet drivers.
|
||
- STM32 OTGHS host: stm32_in_transfer() fails and returns NAK if a
|
||
short transfer is received. This causes problems from class
|
||
drivers like CDC/ACM where short packets are expected. In those
|
||
protocols, any transfer may be terminated by sending short or NUL
|
||
packet. From Janne Rosberg. Adapted Janne Rosberg's patch to
|
||
STM32 OTGHS host to OTGFS host, and to similar USB host
|
||
implementations for STM32 L4 and F7.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F4 Discovery: Fix issues with QEncoder support. From Alan
|
||
Carvalho de Assis.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- Add debug assertion in libdtoa to catch attempts to use floating
|
||
point output formats from within an interrupt handler. That will
|
||
cause assertions or crashes downstream because __dtoa will attempt
|
||
to allocate memory. From Pierre-noel Bouteville.
|
||
- libc: Fix ARMv7-A/R memcpy assembly.
|
||
- Fix return value if x is NaN. From Aleksandr Vyhovanec.
|
||
|
||
* apps/nshlib:
|
||
|
||
- NSH: Eliminate a warning when all memory inspection commands are disabled.
|
||
|
||
* apps/graphics:
|
||
|
||
- apps/graphics/traveler/tools: Fix linkage issue. The -lm should
|
||
come after -o binname. From Alan Carvalho de Assis.
|
||
|
||
* apps/netutils:
|
||
|
||
- The CONFIG_NETUTILS_HTTPD_PATH constant is used by httpd_mmap.c and
|
||
httpd_sendfile.c but It was not present in Kconfig menu. From
|
||
Maciej W<>jcik.
|
||
|
||
* apps/examples:
|
||
|
||
- Configurations that enable OSTEST must not disable signals.
|
||
- apps/examples/ostest: Was ignoring
|
||
CONFIG_EXAMPLES_OSTEST_FPUTESTDISABLE.
|
||
- In apps/examples/mtdpart/mtdpart_main.c where
|
||
CONFIG_EXAMPLES_MTDPART_NPARTITIONS defining is checked should be
|
||
#ifndef instead of #ifdef. Noted by Oleg Evseev.
|
||
|
||
NuttX-7.21 Release Notes
|
||
------------------------
|
||
|
||
The 121st release of NuttX, Version 7.21, was made on June 6, 2017,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.21.tar.gz and
|
||
apps-7.21.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/nuttx/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core OS:
|
||
|
||
- pthread rwlocks: Add an implementation for read/write locks
|
||
(rwlocks) into the pthread library. These locks are writer
|
||
priority, such that if any writers come in they are given priority
|
||
for writing. From Mark Schulte.
|
||
- pthread robust mutexes: Implement robust mutex support:
|
||
pthread_mutex_lock() and trylock() will return EOWNERDEAD if the
|
||
mutex is locked by a thread that no longer exists. Add
|
||
pthread_mutex_consistent() to recover from this situation. Keep
|
||
list of all mutexes held by a thread in a list in the pthread's TCB.
|
||
When pthread exits or is cancelled, mutexes held by thread are
|
||
marked inconsistent and the highest priority thread waiting for the
|
||
mutex is awakened. There is a configuration option to (a) support
|
||
only robust mutexes, (b) support only traditional unsafe mutexes,
|
||
or (c) Support both unsafe and robust mutexes via
|
||
pthread_mutexattr_get/setrobust().
|
||
- pthread cancellation points: Add logic to disable cancellation
|
||
points within the OS. This is useful when an internal OS function
|
||
that is NOT a cancellation point calls an OS function which is a
|
||
cancellation point. In that case, irrecoverable states may occur if
|
||
the cancellation is within the OS. From Juha Niskanen.
|
||
- clock: Add clock_resynchronize and use subseconds RTC. Add
|
||
clock_resynchronize for better synchronization of CLOCK_REALTIME and
|
||
CLOCK_MONOTONIC to match RTC after resume from low-power state. Add
|
||
up_rtc_getdatetime_with_subseconds under
|
||
CONFIG_ARCH_HAVE_RTC_SUBSECONDS to allow initializing (and
|
||
resynchronizing) system clock with subseconds accuracy RTC. From
|
||
Jussi Kivilinna.
|
||
- clock: Add new type ssystime_t for relative 64-bit ticks, change
|
||
ticks<->time conversion functions to use ssystime_t. From Jussi
|
||
Kivilinna.
|
||
- clock: Add testing for 32-bit overflow of 64-bit system timer. From
|
||
Jussi Kivilinna.
|
||
|
||
* File Systems/Block and MTD Drivers
|
||
|
||
- drivers/mtd/w25.c: Erase sector only if it is not in erased state.
|
||
From Jussi Kivilinna.
|
||
|
||
* Graphics/Display Drivers:
|
||
|
||
- drivers/lcd: Extend st7565 driver to include support for the
|
||
AQM_1248A. From Masayuki Ishikawa.
|
||
- drivers/lcd: Add driver for Nokia 5110 (Philips PCD8544). From Alan
|
||
Carvalho de Assis.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- Extensive modifications to support wireless network (see below).
|
||
- TUN driver: Implement TAP (OSI layer 2) mode. Enable by setting the
|
||
IFF_TAP flag instead of the IFF_TUN flag in ifr_flags. From Thomas
|
||
Keh.
|
||
- Add user-space networking stack API (usrsock). User-space
|
||
networking stack API allows user-space daemon to provide TCP/IP
|
||
stack implementation for NuttX network. Main use for this is to
|
||
allow use and seamless integration of HW-provided TCP/IP stacks to
|
||
NuttX. For example, user-space daemon can translate /dev/usrsock
|
||
API requests to HW TCP/IP API requests while rest of the user-space
|
||
can access standard socket API, with socket descriptors that can be
|
||
used with NuttX system calls. From Jussi Kivilinna.
|
||
- net/: Network driver now retains Ethernet MAC address in a union so
|
||
that other link layer addresses may be used in a MULTILINK
|
||
environment.
|
||
|
||
* Wireless Networking/Wireless Drivers:
|
||
|
||
- BCM43362: Support for Broadcom's BCM43362 WiFi chip was contributed
|
||
by Simon Piriou as part of the port of the Particle Photon board.
|
||
Only station functionality is available at present. This work
|
||
includes not on the WiFi driver, but the support Particle Photon
|
||
board, the infrasture for IEEE 802.11 FullMAC networking including
|
||
the network device interface, WiFi configuration, AP scanning and
|
||
authentication and association with an AP.
|
||
- IEEE 802.11 networking tools and support.
|
||
- IEEE 802.15.4 MAC support. This is an effort that was started some
|
||
time back by Sebastien Lorquet (with some help from Matte Poppe).
|
||
Recently, Anthony Merlino has taken on this effort and has made
|
||
some significant progress. Using the Microchip MRF24J40 module with
|
||
the Mikroe Clicker2-STM32 board along with a PC-based IEEE 802.15.4
|
||
sniffer, Anthonly has verified correct transmittion and receipt of
|
||
basic frames.
|
||
- Microchip MRF24J40: As mentioned above, this IEEE 802.15.4 radio
|
||
driver is now basically functional.
|
||
- IEEE 802.15.4 Network Driver: A driver that interfaces the NuttX
|
||
network with the IEEE 802.15.4 MAC has been developed but is still
|
||
incomplete and has not been verified.
|
||
- IEEE 802.15.4 Network Loopback Driver: A simple IEEE 802.15.4 MAC
|
||
loopback driver was developed. This driver allowed for parallel
|
||
development of the IEEE 802.15.4 MAC and 6LoWPAN.
|
||
- 6LoWPAN: The Contiki 6LoWPAN stack has been ported so that works
|
||
within the NuttX networking framework and interfaces with the new
|
||
IEEE 802.15.4 MAC via the network driver. Live testing with
|
||
IEEE 802.15.4 radios has not yet been done; all testing has used
|
||
the loopback driver. There are no known problems and the stack
|
||
is ready for additional testing.
|
||
- Add option to enable wireless debug output.
|
||
|
||
* Other Common Device Drivers:
|
||
|
||
- Add entropy pool and strong random number generator. Entropy pool
|
||
gathers environmental noise from device drivers, user-space, etc.,
|
||
and returns good random numbers, suitable for cryptographic use.
|
||
Based on entropy pool design from *BSDs and uses BLAKE2Xs algorithm
|
||
for CSPRNG output. Patch also adds /dev/urandom support for using
|
||
entropy pool RNG and new 'getrandom' system call for getting
|
||
randomness without file-descriptor usage (thus avoiding file-
|
||
descriptor exhaustion attacks). The 'getrandom' interface is similar
|
||
as 'getentropy' and 'getrandom' available on OpenBSD and Linux
|
||
respectively. From Jussi Kivilinna.
|
||
- XBox One controller: Adds USB host driver support for the XBox One
|
||
controller. Currently only the latest version (XBox One X)
|
||
controller works. The older XBox One controllers do not enumerate
|
||
correctly. From Brian Webb.
|
||
- drivers/analog: Add basic COMP driver. From Mateusz Szafoni.
|
||
- drivers/analog: Add driver for the LTC1767L ADC. From Martin
|
||
Lederhilger.
|
||
- drivers/analog: Add basic OPAMP driver. From Mateusz Szafoni.
|
||
- drivers/sensors: Add driver for ST HTS221 humidity sensor. From
|
||
Juha Niskanen.
|
||
- drivers/sensors: Add driver for ST LPS25H pressure sensor. From
|
||
Juha Niskanen.
|
||
- drivers/sensors: Add driver for ST LIS2DH accelerometer. From Timo
|
||
Voutilainen.
|
||
- drivers/usbmisc: Add driver for Fairchild FUSB301 USB type-C
|
||
controller. From Harri Luhtala.
|
||
- RTC: Add interface for check if RTC time has been set. New
|
||
interface allows checking if RTC time has been set. This allows to
|
||
application to detect if RTC has valid time (after reset) or should
|
||
application attempt to get real time by other means (for example, by
|
||
launching ntpclient or GPS). From Jussi Kivilinna.
|
||
- Buttons: Change return value of board_buttons() and the type of
|
||
btn_buttonset_t to uint32_t so that more than 8 buttons can be
|
||
supported.
|
||
- drivers/syslog: Use monotonic clock for timestamp when available.
|
||
From Jussi Kivilinna.
|
||
- SPI: Add an instance argument to the SPIDEV definitions. Thus,
|
||
instead of specifying a FLASH device, for example, as SPI_FLASH, you
|
||
would now use SPI_FLASH(0) where the "instance" argument now
|
||
distinguishes multiple FLASH devices on the same SPI bus. From
|
||
Sebastien Lorquet.
|
||
- IOBs: Move from net/iob to a better location in mm/iob where they
|
||
can be shared outside of the networking logic. Current also used
|
||
by IEEE 802.15.4 MAC and by syslog (when buffering enabled).
|
||
- syslog: Add option to buffer SYSLOG output to avoid interleaving.
|
||
Uses new shareable IOBs. Additional logic to assure that the the
|
||
write from the buffer is a single atomic write in normal debug
|
||
output.
|
||
- drivers/can: Move CAN subsystem to its own directory and put device
|
||
drivers there. From Alan Carvalho de Assis.
|
||
- drivers/can: Add Microchip MCP2515 CAN Bus controller driver. From
|
||
Alan Carvalho de Assis.
|
||
- drivers/audio: Add cs43l22 audio driver. From Taras Drozdovsky.
|
||
- drivers/input: Add Cypress MBR3108 CapSense touch button driver.
|
||
From Juha Niskanen.
|
||
|
||
* Simulation
|
||
|
||
- configs/sim/sixlowpan: Configuration for testing the 6LoWPAN with
|
||
the IEEE 802.15.4 loopback network driver.
|
||
|
||
* Infineon XMC4xxx:
|
||
|
||
- arch/arm/src/xmc4: Initial, partial support for Infineon XMC4xxx.
|
||
|
||
* Infineon XMC4xxx Boards:
|
||
|
||
- XMC4500 Relax: Add basic board support infrastructure of Infineon
|
||
XMC4500 Relax Lite v1. Basic serial, LED, and button button support
|
||
for a simple NSH configuration. There are still stome remaining
|
||
issues with serial communications.
|
||
|
||
* MicroChip PIC32MX Boards:
|
||
|
||
- pic32mx7mmb: Add support for the Pinquino toolchain.
|
||
- pic32mx7mmb: Add support for PROCFS file system.
|
||
|
||
* NXP Freescale Kinetis:
|
||
|
||
- Kinetis: Allow board to add pullups on SDHC lines. From David
|
||
Sidrane.
|
||
- Kinetis: Use optional BOARD_OSC_CR and BOARD_OSC_DIV in clock
|
||
configuration. From David Sidrane.
|
||
|
||
* NXP Freescale Kinetis Drivers:
|
||
|
||
- Kinetis: Add Timer PWM Module (TPM) to K66 chip. From David
|
||
Sidrane.
|
||
- Kinetis: Added HW flow control and termios. From David Sidrane.
|
||
- Kinetis: Add ARCH_HAVE_I2CRESET. From David Sidrane.
|
||
|
||
* NXP Freescale LPC43xx:
|
||
|
||
- Add support for LPC4337FET256. From Andreas Bihlmaier.
|
||
|
||
* STMicro STM32:
|
||
|
||
- Change STM32 tickless to use only one timer. From Konstantin
|
||
Berezenko.
|
||
- STM32 F7: Add support for LSE RTC and enable RTC subseconds. From
|
||
Jussi Kivilinna.
|
||
- STM32 L1: stm32l15xx_rcc: Add support for using MSI as system
|
||
clock. From Juha Niskanen.
|
||
- STM32 L1: stm32l15xxx_rcc: configure medium performance voltage
|
||
range and zero wait-state when allowed by SYSCLK setting. Zero
|
||
wait-state for flash can be configured when: (1) Range 1 and
|
||
SYSCLK <= 16 Mhz, (2) Range 2 and SYSCLK <= 8 Mhz, or (3) Range 3
|
||
and SYSCLK <= 4.2 Mhz. Medium performance voltage range (1.5V)
|
||
can be configured when SYSCLK is up to 16 Mhz and PLLVCO up to
|
||
48 Mhz. From Juha Niskanen.
|
||
- STM32 F0: Add basic support for STM32F0. From Alan Carvalho de
|
||
Assis.
|
||
- STM32 F0: Add basic support for STM32F07x family.
|
||
- STM32 L1: stm32l15xx_rcc: Allow board to configure HSE clock in
|
||
bypass-mode. Allows using MCO output from ST-link chip (on Nucleo
|
||
and Discovery boards) as HSE input. From Juha Niskanen.
|
||
- STM32 L1: Add support for STM32L152CC, STM32L152RC and STM32L152VC.
|
||
From Juha Niskanen.
|
||
- STM32 F0: Add support for HSI48.
|
||
- STM32 L4: Add support for the STM32L496XX family. From Juha
|
||
Niskanen.
|
||
- STM32 L4: modularize Kconfig to support different product
|
||
lines/families. This is modeled after STM32F7. Idea is to declare
|
||
each chip in Kconfig but allow for flash size override. Commit adds
|
||
many STM32L4_HAVE_XXX feature test macros. From Juha Niskanen.
|
||
- STM32 L4: Separate SYSCFG into product line specific files for
|
||
clarity. From Juha Niskanen.
|
||
- STM32 L4: Add support for many new MCUs from the STM32L4X3XX
|
||
product line. From Juha Niskanen.
|
||
- STM32 L4: Add dbgmcu header files. From Juha Niskanen.
|
||
- STM32 F410: Add support for STM32F410. STM32F410 is a version of
|
||
STM32F4 with 32 KB of RAM and 62 or 128 KB of flash. From Gwenhael
|
||
Goavec-Merou.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- SDIO: Extensions to support the SDIO interface to the BCM43362 from
|
||
Simon Piriou.
|
||
- STM32 F2: Add USB OTG HS support for stm32f20xxx cores. From Simon
|
||
Piriou.
|
||
- STM32 F2, F4, and F7: Add BOARD_DISABLE_USBOTG_HSULPI flag. From
|
||
Simon Piriou.
|
||
- STM32 F33: Move DMA logic to a separate files + add ADC support.
|
||
From Mateusz Szafoni.
|
||
- STM32 F3: Add COMP support. From Mateusz Szafoni.
|
||
- STM32 F33: Support for COMP character driver. From Mateusz Szafoni.
|
||
- STM32 F4: Implement DMA support for the STM32F4 I2C. From Rajan Gill.
|
||
- STM32 F7: Add stm32 RNG support. This is copied from stm32l4.
|
||
Tested on STM32F746ZG board. From Juha Niskanen.
|
||
- STM32 L1: Add STM32L162VE to chip.h. From Juha Niskanen.
|
||
- STM32 F4: Add I2C3 SDA pin mapping for STM32F411. From no1wudi.
|
||
- STM32 L1: stm32_flash: Add EEPROM writing for STM32L15XX. From
|
||
Juha Niskanen.
|
||
- STM32 F7: Serial: Add interface to get uart_dev_t by USART number,
|
||
stm32_serial_get_uart. From Jussi Kivilinna.
|
||
- STM32 F4: Provide TIM5 definition for STM32F429. From Matias v01d.
|
||
- STM32 F0: Add an untested port of the F1 USB device to the STM32F0.
|
||
- STM32 F0: Add support for the STM32F09X family. From Juha
|
||
Niskanen.
|
||
- STM32 F0: Initial cut at I2C driver. Still a work in progress.
|
||
From Alan Carvalho de Assis.
|
||
- STM32 F33: Add OPAMP support. From Mateusz Szafoni.
|
||
- STM32 L4: stm32l4_i2c: Add I2C4 code. From Juha Niskanen.
|
||
- STM32 L4: Add GPIO_PORTI definition. From Juha Niskanen.
|
||
- STM32 F7 Serial: Allow configuring Rx DMA buffer size. From Jussi
|
||
Kivilinna.
|
||
- STM32 L4: Firewall for stm32l4x3xx. Not tested for any product
|
||
family, but now it at least compiles. L496 devices can have one bit
|
||
wider Volatile Data Segment. From Juha Niskanen.
|
||
- STM32 TIM: Add method to get timer width. Freerun timer: Use timer
|
||
width to get the correct clock rollover point.
|
||
- STM32 L4: Add internal flash write support. From Juha Niskanen.
|
||
- STM32 L4: Port stm32l4_serial_get_uart function from STM32F7. From
|
||
Juha Niskanen.
|
||
- STM32 Ethernet: Add support for KSZ8081 PHY interrupts. From
|
||
Sebastien Lorquet.
|
||
- STM32 F4: Add I2S driver. From Taras Drozdovsky.
|
||
- STM32 L4: Add IWDG peripheral. This is the same as for STM32
|
||
except that prescale and reload can be changed after watchdog has
|
||
been started, as this seems to work on L4. From Juha Niskanen.
|
||
- STM32 F7: Add SPI DMA support. From Jussi Kivilinna.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- Support for the Particle Photon board was contributed by Simon
|
||
Piriou. The Photon board is based on a STM32F205G MCU with and on-
|
||
board BCM43362 WiFi chip that interfaces via the STM32's SDIO
|
||
interface. Board configuration support includes, in addition,
|
||
buttons, LEDS, IWDG, USB OTG HS, and procfs support. Configurations
|
||
available for nsh, usbnsh, and wlan configurations.
|
||
- Clicker2-STM32: Support for the Mikroelektronika Clicker 2 for
|
||
STM32 was added by Anthony Merlino. This board, along with the
|
||
MRF24J40 Click board is the platform used to deveop the IEEE
|
||
802.15.4 support. The boad configuration includes the MRF24J40
|
||
intialization logic and SPI support. Configurations exist for nsh,
|
||
knsh, usbnsh, and mrf24j40-radio.
|
||
- Nucleo_F334R8: Add ADC example. From Mateusz Szafoni.
|
||
- Nucleo-F334R8: Add COMP support. From Mateusz Szafoni.
|
||
- Nucleo-F334R8: Use new COMP driver. From Mateusz Szafoni.
|
||
- Adds USB host support to stm32f411-disco board. From Brian Webb.
|
||
- Add stm32f0discovery board support. From Alan Carvalho de Assis.
|
||
- Nucleo-F072RB: Add board configuration.
|
||
- Nucleo-F334R8: Add OPAMP support. From Mateusz Szafoni.
|
||
- Nucleo-F072RB: Add support for the I2C driver used by I2C tools.
|
||
- Nucleo-L496ZG: Add nucleo-l496zg board files. From Juha Niskanen.
|
||
- Nucleo-F091RC: Add nucleo-f091rc board files. From Juha Niskanen.
|
||
- Nucleo-L432KC: Add nucleo-l432kc board files. From Sebastien
|
||
Lorquet.
|
||
- Nucleo-L452RE: Add nucleo-l452re board files. From Juha Niskanen.
|
||
- stm32f103-miniumum: Add board support to use the Nokia 5110
|
||
LCD display driver. From Alan Carvalho de Assis.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- C library: Add strerror_r().
|
||
- C Library: Add wcstoull(), swprintf(), wcstod(), wcstof(), wcstol(),
|
||
wcstold(), wcstoul(), wcstoll() functions. Add mbsnrtowcs() and
|
||
wcsnrtombs() (just returning success). Add mbtowc() and wctomb() to
|
||
C++ std namespace. From Alan Carvalho de Assis.
|
||
- C Library: Add ffsl(), ffsll(), fls(), flsl(), flsll() and use
|
||
GCC's __builtin_ctz/__builtin_clz for faster implementation of these.
|
||
From Jussi Kivilinna.
|
||
- fixedmath: Add square root and b32_t conversion operators. From
|
||
Jussi Kivilinna.
|
||
- locale.h: Add a bogus definition of locale_t.
|
||
- C library: Versions mbrlen and mbsrtowcs taken and adapted from
|
||
FreeBSD code (at https://github.com/freebsd/freebsd/). From Matias
|
||
v01d.
|
||
|
||
* Build/Configuration System:
|
||
|
||
- Include C++ library in 'make export'. From Alan Carvalho de Assis.
|
||
- configs: Remove all setenv.sh and setenv.bat files. Remove all
|
||
references to setenv.sh and setenv.bat from all config README files.
|
||
- Kconfig/deconfigs: Add CONFIG_ARCH_TOOLCHAIN_GNU to indicate that
|
||
the toolchain is based on GNU gcc/as/ld. This is in addition to the
|
||
CPU-specific versions of the same definition.
|
||
- Move prototype for up_cxxinitialize() from nuttx/include/nuttx/arch.h
|
||
to apps/include/platform/cxxinitialize.h.
|
||
|
||
* Tools:
|
||
|
||
- Add initialconfig.c so that perhaps in the future we will be able to
|
||
use this to generate a new configuration from scratch (rather than
|
||
having to derive new configurations from existing configurations).
|
||
NOTE: Not yet intregated into the build system.
|
||
|
||
* NSH: apps/nshlib:
|
||
|
||
- Added support for set [{+|-}{e|x|xe|ex}] [<name> <value>]. Set the
|
||
'exit on error control' and/or 'print a trace' of commands when
|
||
parsing scripts in NSH. The settinngs are in effect from the point
|
||
of exection, until they are changed again, or in the case of the init
|
||
script, the settings are returned to the default settings when it
|
||
exits. Included child scripts will run with the parents settings and
|
||
changes made in the child script will effect the parent on return.
|
||
Use 'set -e' to enable and 'set +e' to disable (ignore) the exit
|
||
condition on commands. The default is -e. Errors cause script to
|
||
exit. Use 'set -x' to enable and 'set +x' to disable (silence)
|
||
printing a trace of the script commands as they are ececuted. The
|
||
default is +x. No printing of a trace of script commands as they are
|
||
executed. From David Sidrane.
|
||
- Print expanded variables if -x. From David Sidrane.
|
||
- ifconfig command: Extend ifconfig to support 6LoWPAN. Adapt to
|
||
some changes in configuration variable usage.
|
||
- Network initialization: If IEEE802.11 selected use wlan0 instead of
|
||
eth0 for network device name.
|
||
- Network initialization: NSH now has configuration options to select
|
||
the wireless properties. It builds the configuration structure and
|
||
passes this to wpa_driver_wext_associate() so that it will set the
|
||
network as configured.
|
||
- Network initialization: Add a new option CONFIG_NSH_NETLOCAL that
|
||
will suppress some built in operations and will support manual
|
||
configuration of a wireless network through command line tools.
|
||
|
||
* Examples/Tests: apps/examples:
|
||
|
||
- examples/xbc_text: Adds a test program for the XBox One controller
|
||
driver. From Brian Webb.
|
||
- examples/ostest: Add a test of robust mutexes.
|
||
- examples/ostest: Add tests for pthread_rwlock. Adding tests to be
|
||
used to verify the pthread_rwlock lock works. From Mark Schulte.
|
||
- examples/ostest: Additional test for rwlock and one for cancel
|
||
cleanup handlers. From Juha Niskanen.
|
||
- examples/usrsocktest: Add application for USRSOCK testing. From
|
||
Jussi Kivilinna.
|
||
- examples/nettest: Adapt for use in testing 6LoWPAN.
|
||
- examples/nettest: If doing loopback, but not using the official
|
||
loopback device, then use the server should use the configured client
|
||
IP address.
|
||
- examples/udpblaster: Several fixes to work with 6LoWPAN.
|
||
- examples/udpblaster: Add logic to bind the local UDP socket to a
|
||
well-known address.
|
||
- examples/configdata: Add stacksize and priority. From Juha Niskanen.
|
||
|
||
* Network Utilities: apps/netutils:
|
||
|
||
- netutils/netlib: Add IEEE 802.11 wireless IOCTL wrappers.
|
||
- netutils/netlib: Add a helper function to convert a string to a
|
||
6LoWPAN node address.
|
||
- netlib and NSH: Add logic to get/set the IEEE802.15.4 PAN ID.
|
||
- netutils/dhcpc: Make the network device name a configuration
|
||
option. Was hardcoded to eth0 but may, instead, need to be wlan0.
|
||
- netutils/dhcpc: Remove hard-coded interface device. Now passed as
|
||
a parameter to dhcpc_open(). From Sebastien Lorquet.
|
||
|
||
* Wireless Utilities: apps/wireless:
|
||
|
||
- wireless/wapi: Port of Wapi wireless services. The original
|
||
depended on features not supported by NuttX: Removed logic that
|
||
depends on Linux netlink. Removed functionality that depended on
|
||
the Linux procfs: This includes only 1) listing of available
|
||
interfaces and 2) listing of all routes.
|
||
- wireless/wapi: Create command line Wapi application based on
|
||
Wapi sample code.
|
||
- wireless/wapi: wpa_driver_wext_associate() now accepts a
|
||
configuration parameter that can be used to specify the wireless
|
||
properties.
|
||
- wireless/wapi: Add basic wapi_event_stream_extract implementation.
|
||
From Simon Piriou.
|
||
- wireless/ieee802154: Add iwpan and i8sak tools. iwpan is similar
|
||
in concept to wapi. From Anthony Merlino (i8sak was originally
|
||
by Sebastien Lorquet).
|
||
- wireless/ieee802154/libmac: IEEE 802.15.4 MAC library.
|
||
- wireless/wext: Add drivers_wext from the WPA supplicant; Integrate
|
||
into NSH. From Simon Piriou.
|
||
|
||
* System Utilities (apps/system)
|
||
|
||
- apps/system/dhcpc: Add a command to renew or establish a lease on an
|
||
IPv4 address.
|
||
- apps/system/ntpc: Add a command to start or stop the NTPC daemon.
|
||
- apps/system/ramtest: Make stacksize and priority conigurable.
|
||
|
||
* Platform-Specific Support (apps/platform)
|
||
|
||
- apps/platform: Create gnu/ subdirectory that contains the one and
|
||
only GNU C++ initialization function. Remove all other C++
|
||
initialization functions.
|
||
|
||
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:
|
||
|
||
- Priority inheritance: When CONFIG_SEM_PREALLOCHOLDERS==0, there is
|
||
only a single, hard-allocated holder structure. This is problem
|
||
because in sem_wait() the holder is released, but needs to remain in
|
||
the holder container until sem_restorebaseprio() is called. The call
|
||
to sem_restorebaseprio() must be one of the last things the
|
||
sem_wait() does because it can cause the task to be suspended. If in
|
||
sem_wait(), a new task gets the semaphore count then it will fail to
|
||
allocate the holder and will not participate in priority
|
||
inheritance. This fix is to add two hard-allocated holders in the
|
||
sem_t structure: One of the old holder and one for the new holder.
|
||
- Priority inheritance: sem_holder sem_findholder missing
|
||
inintalization of pholder. sem_findholder would fail and code
|
||
optimization covered this up. From David Sidrane.
|
||
- Partial Fix priority inheritance CONFIG_SEM_PREALLOCHOLDERS=0. From
|
||
David Sidrane.
|
||
- Priority inheritance: sem_boostholderprio prevent overrun of
|
||
pend_reprios. The second case rtcb->sched_priority <=
|
||
htcb->sched_priority did not check if there is sufficient space in
|
||
the pend_reprios array. From David Sidrane.
|
||
- lp_worker: Guard from pend_reprios overlow. From David Sidrane.
|
||
- Priority inheritance: Fixes improper restoration of base_priority in
|
||
the case of CONFIG_SEM_PREALLOCHOLDERS=0. The call to
|
||
sem_restorebaseprio_task context switches in the
|
||
sem_foreachholder(sem, sem_restoreholderprioB, stcb); call prior to
|
||
releasing the holder. So the running task is left as a holder as is
|
||
the started task. Leaving both slots filled thus failing to perform
|
||
the boost/or restoration on the correct tcb. This PR fixes this by
|
||
releasing the running task slot prior to reprioritization that can
|
||
lead to the context switch. To faclitate this, the interface to
|
||
sem_restorebaseprio needed to take the tcb from the holder prior to
|
||
the holder being freed. In the failure case where sched_verifytcb
|
||
fails it added the overhead of looking up the holder. There is also
|
||
the additional thunking on the foreach to get from holer to
|
||
holder->tcb. An alternate approach could be to leve the interface
|
||
the same and allocate a holder on the stack of sem_restoreholderprioB
|
||
copy the sem's holder to it, free it as is done in this pr and and
|
||
then pass that address sem_restoreholderprio as the holder. It could
|
||
then get the holder's tcb but we would keep the same sem_findholder
|
||
in sched_verifytcb. From David Sidrane.
|
||
- Priority inheritance: Fixes improper restoration of base_priority.
|
||
From David Sidrane.
|
||
- sem_holder: Indexing error. From David Sidrane.
|
||
|
||
if (sem->holder[0].htcb != NULL || sem->holder[**1**].htcb != NULL)
|
||
- realloc(): When realloc() has to fall back to calling malloc(), size
|
||
including overhead was being provided to malloc(), causing a slightly
|
||
larger allocation than needed. Noted by initialkjc@yahoo.com.
|
||
- scheduler: Fix tg_flags check with GROUP_FLAG_NOCLDWAIT. From Masayuki
|
||
Ishikawa.
|
||
- scheduler: Fix CHILD_FLAG_EXITED in include/nuttx/sched.h. From
|
||
Masayuki Ishikawa.
|
||
- binfmt/elf: Fix offset value when calling elf_read() in
|
||
elf_symname(). From Masayuki Ishikawa.
|
||
- binfmt/elf: Fix offset value when calling elf_read() in
|
||
elf_sectname(). From Masayuki Ishikawa.
|
||
- There can be a failure in IOB allocation to some asynchronous
|
||
behavior caused by the use of sem_post(). Consider this scenario:
|
||
(1) Task A holds an IOB.<2E> There are no further IOBs.<2E> The value of
|
||
semcount is zero. Task B calls iob_alloc().<2E> Since there are not
|
||
IOBs, it calls sem_wait().<2E> The value of semcount is now -1. (2)
|
||
Task A frees the IOB.<2E> iob_free() adds the IOB to the free list and
|
||
calls sem_post() this makes Task B ready to run and sets semcount to
|
||
zero NOT 1.<2E> There is one IOB in the free list and semcount is zero.
|
||
When Task B wakes up it would increment the sem_count back to the
|
||
correct value. (3) But an interrupt or another task runs occurs
|
||
before Task B executes.<2E> The interrupt or other tak takes the IOB off
|
||
of the free list and decrements the semcount.<2E> But since semcount is
|
||
then < 0, this causes the assertion because that is an invalid state
|
||
in the interrupt handler. So I think that the root cause is that
|
||
there the asynchrony between incrementing the semcount. This change
|
||
separates the list of IOBs: Currently there is only a free list of
|
||
IOBs. The problem, I believe, is because of asynchronies due
|
||
sem_post() post cause the semcount and the list content to become out
|
||
of sync. This change adds a new 'committed' list: When there is a
|
||
task waiting for an IOB, it will go into the committed list rather
|
||
than the free list before the semaphore is posted. On the waiting
|
||
side, when awakened from the semaphore wait, it will expect to find
|
||
its IOB in the committed list, rather than free list. In this way,
|
||
the content of the free list and the value of the semaphore count
|
||
always remain in sync.
|
||
- binfmt: Fix .dtor memory allocation. From Masayuki Ishikawa.
|
||
|
||
* File System/Block and MTD Drivers:
|
||
|
||
- SmartFS: If whence is SEEK_END, the file offset shall be set to the
|
||
size of the file plus offset. Noted by eunb.song@samsung.com.
|
||
- mtd/progmem: Fix incorrect target address calculation.
|
||
progmem_read/write() is incorrectly calculating the target address,
|
||
expecting the offset argument is given in a block number. This is
|
||
completely wrong and as a result invalid flash region is accessed.
|
||
Byte-oriented read/write interfaces of mtd device accept the target
|
||
address in a byte offset, not a block number. From Heesub Shin.
|
||
- procfs: Fix wrong member IDs are displayed when 'cat
|
||
/proc/<pid>/group/status'. From Nobutaka Toyoshima.
|
||
- procfs: Fix incorrect uptime with CONFIG_SYSTEM_TIME64. From
|
||
Masayuki Ishikawa.
|
||
- vfs/poll: round timeout up to next full tick. Calling poll() with
|
||
timeout less than half tick (thus MSEC2TICK(timeout) => 0) caused
|
||
returning error with EAGAIN. Instead of rounding timeout down, value
|
||
should be rounded up. Open Group spec for poll says:
|
||
"Implementations may place limitations on the granularity of timeout
|
||
intervals. If the requested timeout interval requires a finer
|
||
granularity than the implementation supports, the actual timeout
|
||
interval will be rounded up to the next supported value." From Jussi
|
||
Kivilinna.
|
||
- mtd/config: erase block between block read and write. From Juha
|
||
Niskanen.
|
||
- mtd: Build RAMTRON and AT45DB drivers only if selected. From Juha
|
||
Niskanen.
|
||
- mtd/config: Fix byte read interface test. From Juha Niskanen.
|
||
- mtd: Fix some unallocated and NULL pointer issues. rwb->wrflush and
|
||
rwb->wrmaxblocks in rwbuffer could get unallocated values from
|
||
ftl_initialize() in some configurations. Also fixes related assert:
|
||
|
||
up_assert: Assertion failed at file:rwbuffer.c line: 643
|
||
|
||
that can happen with the following configuration:
|
||
|
||
CONFIG_FTL_WRITEBUFFER=y
|
||
CONFIG_DRVR_WRITEBUFFER=y
|
||
# CONFIG_FS_WRITABLE is not set
|
||
|
||
These problems are caused by CONFIG variable differences between the
|
||
buffer layers. TODO: This is not a perfect solution. readahead
|
||
support has similar issues. From Juha Niskanen.
|
||
- net procfs: Fix buffer corruption and refactor netdev_statistics.c.
|
||
From Masayuki Ishikawa.
|
||
- FAT: Fix 'Missing unlock' in fs_fat32.c. From Masayuki Ishikawa.
|
||
- VFS fdopen: Add missing file stream flags clearing. Clear file
|
||
stream structure regardless of config options. Structure clearing is
|
||
needed as previous use of stream list entry might leave fs_flags
|
||
set. From Harri Luhtala.
|
||
- mtd/smart: Fix use of uninitialized variable. From Jussi Kivilinna.
|
||
- mtd/w25.c: Enable short delay after sector/chip erase. From Jussi
|
||
Kivilinna.
|
||
- mtd/config: Add some error checks for I/O errors. From Juha
|
||
Niskanen.
|
||
|
||
* Graphics/Graphic Drivers:
|
||
|
||
- net procfs: Some long lines were being generated that cause buffer-
|
||
related problems and corrupted output.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- Fixed wrong assert on udp dgram send. From Pascal Speck.
|
||
- TCP/IPv6: Fix a compile issue when IPv6, but not IPv4 is enabled.
|
||
- net/socket/accept: Fix building with CONFIG_NET_LOCAL_STREAM. From
|
||
Jussi Kivilinna.
|
||
- Argument of network device IOCTL should be unsigned long, just as
|
||
will all other IOCTL methods.
|
||
- net/socket: Fix cloning of local and raw sockets. From Jussi
|
||
Kivilinna.
|
||
- TCP: Wait for 3-Way Handshare before accept() returns. From Simon
|
||
Piriou.
|
||
- TCP: Send RST if applicaiton 'unlistens()' before we complete the
|
||
connection sequence.
|
||
- TCP: An RST received during the 3-way handshake requires a little
|
||
more clean-up.
|
||
- IPv6: Fix net_ipv6_pref2mask(). From Masayuki Ishikawa.
|
||
- network IOCTL commands: The only place in net/netdev/netdev_ioctl.c
|
||
where the interface state should change is for SIOCSIFFLAGS. The
|
||
other ones .. SIOCSIFADDR, SIOSLIFADDR, SIODIFADDR .. should not
|
||
change the link state. From Sebastien Lorquet.
|
||
- TCP: Fix tcp_findlistner() in dual stack mode. From Masayuki
|
||
Ishikawa.
|
||
|
||
* Common Drivers:
|
||
|
||
- Fix as5048b by adding missing frequency parameter. From Andreas
|
||
Bihlmaier.
|
||
- multiple fixes in nrf24l01 driver: (1) signal POLLIN if there is
|
||
already data in the FIFO, (2) send ETIMEDOUT to userspace after 2
|
||
seconds if TX IRQ was not received, (3) handle FIFO overflow, (4)
|
||
handle invalid pipes/empty FIFO, and (5) multiple cosmetics (missing
|
||
static, duplicate define, missing \n). From Leif Jakob.
|
||
- input/mxt: Prevent overriding i2c transfer return value.
|
||
put_reg/get_reg function was overriding i2c transfer error code with
|
||
i2creset return value, that lead to OK status although actual
|
||
transfer failed. From Juha Niskanen.
|
||
- drivers/audio/wm8904: WM8904 has same problem as that fixed by Juha
|
||
Niskanen in the MaxTouch driver.
|
||
- UART 16550: Missing left parenthesis in function prototype. This is
|
||
Bitbucket Issue #41.
|
||
- USBMSC: Fix a wrong lun number issue. From Masayuki Ishikawa.
|
||
- drivers/i2c: Fix compile issues if CONFIG_DISABLE_PSEUDOFS_OPERATIONS
|
||
is enabled.
|
||
- drivers/serial: I discovered a problem in the file
|
||
drivers/serial/serial.c concerning the function uart_close(<28>). In the
|
||
case that a serial device is opened with the flag O_NONBLOCK the
|
||
function uart_close(<28>) blocks until all data in the buffer is
|
||
transmitted. The function close(<28>) called on an handle opened with
|
||
O_NONBLOCK should not block. The problem occurred with a CDC/ACM
|
||
device. From Stefan Kolb.
|
||
- drivers: Fix some bad NULL checks. From Juha Niskanen.
|
||
- drivers: Rename newly introduced up_i2creset to I2C_RESET. From
|
||
Juha Niskanen.
|
||
- drivers/bch: BCH character driver bch_ioctl() always returns -ENOTTY
|
||
for DIOC_GETPRIV command. It should returns OK if DIOC_GETPRIV
|
||
command succeeds. From EunBong Song.
|
||
- Replace sprintf() with snprintf() in pipe.c. From Nobutaka Toyoshima.
|
||
- drivers/bch: Fix 'Missing Unlock' in bchdev_driver.c. From Masayuki
|
||
Ishikawa.
|
||
- button_upper: Fix interrupt enabling for poll-events. From Jussi
|
||
Kivilinna.
|
||
- drivers/{sensors,usbmisc}: Fix uninitialized I2C frequency. From
|
||
Juha Niskanen.
|
||
|
||
* ARM:
|
||
|
||
- Set EABI stack alignment for all ARM architectures (remove OABI
|
||
code). From David Cabecinhas.
|
||
- Remove redundant interrupt stack coloring and OABI code. From David
|
||
Cabecinhas.
|
||
- Fix off-by-one interrupt stack allocation in 8-byte aligned
|
||
architectures. From David Cabecinhas.
|
||
|
||
* ARMv6-M:
|
||
|
||
- CONFIG_DEBUG_HARDFAULT should be available for Cortex-M0 too.
|
||
|
||
* Microchip/Atmel SAM3/4 Drivers:
|
||
|
||
- SAM3/4: Fixed configurations for TWI master. Obviously an
|
||
incomplete port from SAMA5.
|
||
|
||
* Microchip/Atmel SAMv7 Drivers:
|
||
|
||
- SAMV7: Watchdog: Fix Forbidden Window Value. According the Datasheet
|
||
the WDD Value is the lower bound of a so called Forbidden Window and
|
||
to disable this we have to set the WDD Value greater than or equal to
|
||
the WDV Value. This seems to be a bug in the datasheet. It looks
|
||
like we have to set it to a greater value than the WDV to really
|
||
disable this Thing. When triggering the Watchdog faster than the
|
||
(very slow) clock source of the Watchdog fires, this Forbidden Window
|
||
Feature resets the System if WDD equals to WDV. This Changeset
|
||
disables the Forbidden Window by setting the WDD Value to the Maximum
|
||
(0xfff) Value possible. From Frank Benkert.
|
||
- SAMV7 EMAC: Add conditional logic to account the fact that the
|
||
SAMV71 has 6 rather than 3 queues after version 1. From Ian McAfee.
|
||
|
||
* NXP/Freescale Kinetis Drivers:
|
||
|
||
- Kinetis: Fixed GPIO _PIN_OUTPUT_LOWDRIVE swapped with
|
||
_PIN_OUTPUT_OPENDRAIN. From David Sidrane.
|
||
- Ensure interrupts are back on BEFORE running code dependant on
|
||
clock_systimer. From David Sidrane.
|
||
- Kinetis k66, k64, k60, k40, k20: Pin mux configure all I2C signals as
|
||
Open Drain. The output structure of the GPIO for I2C needs to be
|
||
open drain. When left at the default, one can observe on a scope the
|
||
slave contending with the push-pull during the ACK. From David
|
||
Sidrane.
|
||
- Kinetis K66: Fixed TMP2_CH1 definition. From David Sidrane.
|
||
- Kinetis K66: Define ALT1 to match ref manual. From David Sidrane.
|
||
- Kinetis K66: GPIO and pin mux cleanup. From David Sidrane.
|
||
- Kinetis ADC: Various corrections and updates. From David Sidrane.
|
||
|
||
* NXP/Freescale LPC43xx:
|
||
|
||
- Add missing PINCONF_INBUFFER in several places of
|
||
lpc4310203050_pinconfig.h. From Andreas Bihlmaier.
|
||
- Fix logic in preprocessor checks and correct arguments to
|
||
lpc43_pin_config initialization. From Andreas Bihlmaier.
|
||
|
||
* NXP/Freescale LPC43xx Drivers:
|
||
|
||
- Fix logic error in lpc43_adc. From Andreas Bihlmaier.
|
||
- Use correct macro for irqid (fortunately both point to
|
||
LPC43_IRQ_EXTINT+18). From Andreas Bihlmaier.
|
||
- Actually write modified value to register. From Andreas Bihlmaier.
|
||
- Increase number of supported PWM channels from 4 to 6. From Andreas
|
||
Bihlmaier.
|
||
|
||
* Silicon Labs EFM32 Drivers:
|
||
|
||
- EFM32 I2C: Fix timeout calculation. From Masayuki Ishikawa.
|
||
|
||
* STMicro STM32:
|
||
|
||
- As discovered by dcabecinhas. This fix assume the 8 byte alignment
|
||
options for size stack size or this will overwrite the first word
|
||
after TOS. See
|
||
https://github.com/PX4/Firmware/issues/6613#issuecomment-285869778.
|
||
From David Sidrane.
|
||
- STM32 F7: In stm32_allocateheap.c There are 5 not 4 configurations.
|
||
From David Sidrane.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32, STM32 F7, STM32 L4: OTG host drivers: Do not do data toggle
|
||
if interrupt transfer is NAKed. Sugested by webbbn@gmail.com.
|
||
- Save elapsed time before handling I2C in stm32_i2c_sem_waitstop().
|
||
This change follows the same logic as in previous fix to
|
||
stm32_i2c_sem_waitdone(). It is possible that a context switch
|
||
occurs after I2C registers are read but before elapsed time is saved
|
||
in stm32_i2c_sem_waitstop(). It is then possible that the registers
|
||
were read only once with "elapsed time" equal 0. When scheduler
|
||
resumes this thread it is quite possible that now "elapsed time" will
|
||
be well above timeout threshold. In that case the function returns
|
||
and reports a timeout, even though the registers were not read
|
||
"recently". Fix this by inverting the order of operations in the loop
|
||
- save elapsed time before reading registers. This way a context
|
||
switch anywhere in the loop will not cause an erroneous "timeout"
|
||
error. From Freddie Chopin.
|
||
- STM32, STM32 F7, and STM32 L4: Clone Freddie Chopin's I2C change to
|
||
similar STM32 I2C drivers. From David Sidrane.
|
||
- STM32: OTG host implementations of stm32_in_transfer() must obey the
|
||
polling interval for the case of isochronous and interrupt endpoints.
|
||
- STM32: Fix erase sector number for microcontrolers with more than 11
|
||
sectors. Erase a sector from the second bank cause the bit 4 of SNB
|
||
being set but never unsed, so trying to erase a sector from the first
|
||
bank was acually eraseing a sector from the second bank. From Jos<6F>
|
||
Roberto de Souza.
|
||
- STM32: Make up_progmem thread safe. Writing to a flash sector while
|
||
starting the erase of other sector have a undefined behavior so lets
|
||
add a semaphore and syncronize access to Flash registers. But for
|
||
the semaphore to work it needs to be initialized so each board needs
|
||
call stm32_flash_initialize() on initialization, so to avoid runtime
|
||
problems it is only using semaphore and making it thread safe if
|
||
initialized, after all boards starts to call stm32_flash_initialize()
|
||
we can remove the boolean and the check. From Jos<6F> Roberto de Souza.
|
||
- STM32: Add workaround for flash data cache corruption on
|
||
read-while-write. This is a known hardware issue on some STM32 see
|
||
the errata of your model and if you make use of both memory banks you
|
||
should enable it. From Jos<6F> Roberto de Souza.
|
||
- STM32 Flash fixes. From Jos<6F> Roberto de Souza.
|
||
- STM32 Flash: Missing unlock on F1 HSI off path. From David Sidrane.
|
||
- STM32 F4 I2C: I needed to use DS3231,<2C>I remember<65>that<61>in past it
|
||
worked ok, but now for stm32f4xx is used another driver (chip
|
||
specific,<2C>stm32f40xxx_i2c.c) and DS3231 driver doesn't work. After
|
||
investigating a problem I found that I2C driver (isr routine) has a
|
||
few places there it sends stop bit even if not all messages are
|
||
managed. So, e.g., removing stm32_i2c_sendstop (#1744) and adding
|
||
stm32_i2c_sendstart after data reading helps to make DS3231 working.
|
||
From Alexander Oryshchenko; verified by David Sidrane.
|
||
- STM32 F7 Serial: Serial fix for dropped data: (1) Revert the
|
||
inherited dma bug from the stm32. see
|
||
https://bitbucket.org/nuttx/nuttx/commits/df9ae3c13fc2fff2c21ebdb098c520b11f43280d
|
||
for details. And (2) Most all CR1-CR3 settings can not be configured
|
||
while UE is true. Threfore we make all operation atomic and disable
|
||
UE and restore it's originalstate on exit. From David Sidrane.
|
||
- STM32 L1: Fix IWDG and WWDG debug mode stop for STM32L15XX. From
|
||
Juha Niskanen.
|
||
- STM32 F7: Fix UART7 and UART8 IFLOWCONTROL options. From Jussi
|
||
Kivilinna.
|
||
- STM32 F7: Add warning for RXDMA + IFLOWCONTROL combination.
|
||
Combination of RXDMA + IFLOWCONTROL does not work as one might
|
||
expect. Since RXDMA uses circular DMA-buffer, DMA will always keep
|
||
reading new data from USART peripheral even if DMA buffer underruns.
|
||
Thus this combination only does following: RTS is asserted on USART
|
||
setup and deasserted on shutdown and does not perform actual RTS
|
||
flow-control. Data loss can be demonstrated by doing long up_mdelay
|
||
inside irq critical section and feeding data to RXDMA+IFLOWCONTROL
|
||
UART. From Jussi Kivilinna.
|
||
- STM32 F7 Serial: Do not stop processing input in SW flow-control
|
||
mode. From Jussi Kivilinna.
|
||
- STM32 L4 DMA: Correct bad channel definition. From Sebastien Lorquet.
|
||
- STM32 F7: Warn if no DMA2 configured when using ADC with DMA. Also
|
||
correct ADC channel numbers that DMA callback passes to upper half
|
||
driver. From Juha Niskanen.
|
||
- STM32 F7 ADC: Do not override ADCPRE_DIV when measuring
|
||
internal voltage. From Juha Niskanen.
|
||
- STM32 L4: Don't think these chips have DPFPU, DTCM or ITCM. From
|
||
Juha Niskanen.
|
||
- STM32 F7 Flash: macro naming errors, there is no FLASH_CONFIG_F for
|
||
F7. From Juha Niskanen.
|
||
- STM32 L4: stm32l4x6xx_pinmap: Update I2C4 and DCMI pins. From Juha
|
||
Niskanen.
|
||
- STM32 L4: stm32l4_i2c: change wrong macro to CONFIG_I2C_POLLED. From
|
||
Juha Niskanen.
|
||
- Fix STM32F7 I2C interrupt handler. From Jussi Kivilinna.
|
||
- STM32: Serial Allow configuring Rx DMA buffer size. From David
|
||
Sidrane.
|
||
- STM32 CAN: I had the problem that the transmit FIFO size (= actual
|
||
elements in FIFO) was slowly increasing over time, and was full after
|
||
a few hours. The reason was that the code hit the line
|
||
"canerr("ERROR: No available mailbox\n");" in stm32_cansend, so
|
||
can_xmit thinks it has sent the packet to the hardware, but actually
|
||
has not. Therefore the transmit interrupt never happens which would
|
||
call can_txdone, and so the size of the FIFO size does not decrease.
|
||
The reason why the code actually hit the mentioned line above, is
|
||
because stm32can_txready uses a different (incomplete) condition than
|
||
stm32can_send to determine if the mailbox can be used for sending,
|
||
and thus can_xmit forwards the packet to stm32can_send.
|
||
stm32can_txready considered mailboxes OK for sending if the mailbox
|
||
was empty, but did not consider that mailboxes may not yet be used if
|
||
the request completed bit is set - stm32can_txinterrupt has to
|
||
process these mailboxes first. Note that I have also modified
|
||
stm32can_txinterrupt - I removed the if condition, because the CAN
|
||
controller retries to send the packet until it succeeds. Also if the
|
||
condition would not evaluate to true, can_txdone would not be called
|
||
and the FIFO size would not decrease also. From Lederhilger Martin.
|
||
- STM32 Serial: Fix freezing serial port. Serial interrupt
|
||
enable/disable functions do not disable interrupts and can freeze
|
||
device when serial interrupt is received while execution is at those
|
||
functions. Trivially triggered with two or more threads write to
|
||
regular syslog stream and to emergency stream. In this case, freeze
|
||
happens because of mismatch of priv->ie (TXEIE == 0) and actually
|
||
enabled interrupts in USART registers (TXEIE == 1), which leads to
|
||
unhandled TXE interrupt and causes interrupt storm for USART. From
|
||
Jussi Kivilinna.
|
||
- STM32 I2C: Make private symbols static. From Juha Niskanen.
|
||
- STM32 L4 GPIO: Put back EXTI line source selection. From Juha
|
||
Niskanen.
|
||
- STM32 L4 RTC: Store RTC MAGIC to backup reg, not to address zero.
|
||
From Juha Niskanen.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- Disable serial console on stm32f103-minimum usbnsh example project
|
||
config. Devices enumerate after this change. From Bob Ryan.
|
||
- Nucleo-144: Default for choice in Kconfig was not one of the
|
||
possible choices.
|
||
- Nucleo-F4X1RE User LEDS: Issue #51 reports compilation problems with
|
||
stm32_userled.c. Reported by Gappi92.
|
||
|
||
* TI Tiva Drivers:
|
||
|
||
- Tiva I2C: Correct an error in conditional compilation.
|
||
- Tiva SSI: Resolves issue 52 'Copy-Paste error in
|
||
tiva_ssibus_initialize()' submitted by Aleksandr Kazantsev.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- C Library vsnprintf(): Fix precision for string formatting. Fixes
|
||
use of format precision to truncate input string. From Jussi
|
||
Kivilinna.
|
||
- C Library vsnprintf(): If size is zero, then vsnprintf() should
|
||
return the size of the required buffer without writing anything.
|
||
From Jussi Kivilinna.
|
||
- C Library netdb: in dns_query_callback, ret != -EADDRNOTAVAIL
|
||
condition consumes error returns including EAGAIN in this case,
|
||
dns query retransmission doesn't work. From Ritajina.
|
||
- C Library netdb: Fix time info in lib_dnscache.c. From Masayuki
|
||
Ishikawa.
|
||
- C Library netdb: Fix bugs in lib_gethostbynamer.c. This fix sets
|
||
h_name in struct hostent returned by gethostbyname(). From Masayuki
|
||
Ishikawa.
|
||
- C Library Defect Workaround: replace '%6.6u' format with an
|
||
equivalent '%06u'. From Tomasz Wozniak.
|
||
|
||
* Tools
|
||
|
||
- Fix mksyscall host binary name. From Alan Carvalho de Assis.
|
||
|
||
* Applications (apps/)
|
||
|
||
- Fix some calls to task_create(): argv[0] is the first parameter, not
|
||
the name of the task.
|
||
- Bitbucket Issue 5: I found an unexpected behavior in apps/
|
||
configuration generation. Adding external symbolic link in apps/
|
||
directory and using Make.defs for Kconfig generation, Kconfig file
|
||
has a wrong path in the source argument. It contains original dir
|
||
path outside of the source tree instead path to sub-directory in
|
||
apps/. The problem is connected with make/system symbolic link path
|
||
resolution. Corrected by a patch submitted by Artur Madrzak with
|
||
Issue 5.
|
||
- apps/: Make more globals static to avoid name clashes. From Juha
|
||
Niskanen.
|
||
|
||
* NSH: apps/nshlib:
|
||
|
||
- NSH library: In nsh_argexand(), if CONFIG_NSH_ARGCAT is defined but
|
||
CONFIG_NSH_CMDPARMS defined and/or CONFIG_DISABLE_ENVIRON not
|
||
defined, then there is a situation that causes an infinite loop in
|
||
the parser. Noted by Freddie Chopin.
|
||
- NSH library: Fix building when CONFIG_NET_USRSOCK enabled with other
|
||
link-layers. From Jussi Kivilinna.
|
||
- NSH library: Fix some warnings about integer/pointer casts of
|
||
different sizes (probably only effects 64-bit simulation).
|
||
- NSH library: Fix open flags in nsh_codeccmd.c. From Masayuki
|
||
Ishikawa.
|
||
- I need to look at the registers that are at or around 0xe000ef90.
|
||
Using mw and xd, I see that nsh does not support pointers greater
|
||
than 0x7fffffff. A quick look at the source shows that the pointers
|
||
for those two commands are set with calls to strtol() rather than
|
||
strtoul(). Changing the two pointer-setting instances to strtoul()
|
||
fixes the problem, at least for my architecture/config. From Ian
|
||
McAfee.
|
||
- NSH library: Fix a resource leak in cmd_hexdump(). From Nobutaka
|
||
Toyoshima.
|
||
|
||
* Examples/Tests: apps/examples:
|
||
|
||
- apps/examples/hidkbd: Remove call to arch_usbhost_initialize().
|
||
That is violation of the OS interfacing rules and will no longer be
|
||
supported. USB host should be initialized as part of the normal
|
||
board bring-up logic as with any other devices and should not involve
|
||
illegal calls from applications into the OS.
|
||
- apps/examples/usbterm: Removed because it is not very useful and
|
||
because it can be configured to use an illegal call into the OS.
|
||
- examples/mm: Fix Makefile. Built-in was not being registered.
|
||
- examples/hidkbd: Add some missing configuration settings.
|
||
- examples/random: Avoid stack overflows. From Juha Niskanen.
|
||
- examples/nettest: Fix an error in pre-processor expression.
|
||
- examples/mtdpart: Prevent part array overflow. mtdpart examples
|
||
create partions and allocate from 1 index not a 0 index to part[]
|
||
array. This cause buffer overflow for part array. This change fixes
|
||
this problem. From EunBong Song.
|
||
- examples/can: Fix can example app to print data when
|
||
CONFIG_EXAMPLES_CAN_READ is defined. From Alan Carvalho de Assis.
|
||
|
||
* Network Utilities: apps/netutils:
|
||
|
||
- Not a clean fix, but at least makes DHCP working with
|
||
CONFIG_NETDEV_MULTINIC. From Andreas Bihlmaier.
|
||
- Ensure netlib will not be broken when setip will not bring the
|
||
network up anymore. From Sebastien Lorquet.
|
||
|
||
* CAN Utilities: apps/canutils:
|
||
|
||
- Fix libcanard github download link to get it compiling correctly.
|
||
From Alan Carvalho de Assis.
|
||
- Fix to use the new canardInit() function. From Alan Carvalho de
|
||
Assis.
|
||
|
||
* System Utilities (apps/system)
|
||
|
||
- system/dhcpc: Add missing argument of fprintf.
|
||
|
||
* Tools (apps/tools):
|
||
|
||
- The dedicated windows tool at tools/mkkconfig.bat uses $APPSDIR,
|
||
which is not a windows shell variable, and is left uninitialized, but
|
||
in fact should be the current directory. From Sebastien Lorquet.
|
||
|
||
NuttX-7.22 Release Notes
|
||
------------------------
|
||
|
||
The 122nd release of NuttX, Version 7.22, was made on September 9, 2017,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.22.tar.gz and
|
||
apps-7.22.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/nuttx/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core OS:
|
||
|
||
- pthreads: Move functions from sched/pthreads to libc/pthreads. These
|
||
functions just coordinate other OS interface calls but are not a
|
||
fundamental OS interfaces and, hence, do not belong within the OS:
|
||
pthread_yield(), pthread_once(), pthread_cond_init(),
|
||
pthread_cond_destroy(), pthread_barrier_init(),
|
||
pthread_barrier_destroy(), and pthread_barrier_wait().
|
||
- Add power-related debug output.
|
||
|
||
* File Systems/Block and MTD Drivers
|
||
|
||
- RAMTRON: Add support for splitting block writes in chunks. Some
|
||
Re-RAMs like MB85AS4MT have a write buffer size limitation. From
|
||
Boris Astardzhiev.
|
||
- MTD: Add driver for Macronix QuadSPI flash memory. From Simon Piriou.
|
||
|
||
* Graphics/Display Drivers:
|
||
|
||
- SSD1306 LCD Driver: (1) Separate lcd_dev_s setup to separate object.
|
||
g_oleddev takes 1 KiB because framebuffer and was allocated to .data
|
||
section because of lcd_dev_s function pointer setup. Move lcd_dev_s
|
||
setup out, so that g_oleddev goes to .bss and avoid wasting ROM. (2)
|
||
Fix memory corruption caused by ssd1306_getrun(). ssd1306_getrun was
|
||
writing one extra byte (with value 0) past target buffer when pixlen
|
||
is multiple of 8. When pixlen was not multiple of 8, last byte of
|
||
buffer was fully cleared, instead of modifying only the (pixlen % 8)
|
||
bits of last byte. (3) Add support for board power control.
|
||
ThingseeOne has regulator for controlling display power on/off. Patch
|
||
adds support for board based power control to SSD1306 driver. (4) Add
|
||
DD-12864WO-4A/SSD1309 support to SSD1306 driver. From Jussi Kivilinna.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- Sockets: Support listening sockets in the getsockname() function.
|
||
From Roland Takacs.
|
||
- IP Forwading: At the IP level, network may be configured to forward
|
||
IP packets that are not destined for the target through a different
|
||
network device, decrementing the packet TTL.
|
||
- IP forwarding: Add optional support to forward broadcast and
|
||
multicast packets. Add missing ICMP support.
|
||
- ICMPv6: Add 6LoWPAN and IP forwarding support.
|
||
- ICMPv6: Support source link-layer address option in RA. From
|
||
Masayuki Ishikawa.
|
||
- TUN Driver: Add definitions that will permit TUN-only networking.
|
||
- Socket I/F: Created a socket interface used to provide socket support.
|
||
Each address family has an interface that describes how to perform
|
||
socket operations on that address family. Currently only a couple of
|
||
methods are defined in the socket interface call table
|
||
- Remove CONFIG_NET_MULTILINK. This increases code size by a little,
|
||
but greatly reduces the complexity of the network code.
|
||
- Network procfs: Add support for routing tables at proc/net/route.
|
||
- Network procfs: Add support for network procfs statistics for the
|
||
PF_IEEE802154 address family.
|
||
- Network Driver Backlog: Remove driver based backlog support. This
|
||
affects the entire network, but is used by only one driver. The only
|
||
supported RX backlog is now via common read-ahead buffering.
|
||
|
||
* Wireless Networking/Wireless Drivers:
|
||
|
||
- IEEE 802.15.4 MAC / MRF24J60 Driver: Extensive updates for
|
||
association/beacon-enabled networks. From Anthony Merlino.
|
||
- IEEE 802.15.4 MAC / MRF24J60 Driver: Hook in setdevmode from newly
|
||
added radio attribute setting. From Anthony Merlino.
|
||
- IEEE 802.15.4 MAC: Supports get request for coordinator address. From
|
||
Anthony Merlino.
|
||
- IEEE 802.15.4 MAC: Notify radio layer of changes in devmode. From
|
||
Anthony Merlino.
|
||
- IEEE 802.15.4: Add special attribute that can be used to perform a
|
||
regdump of the radio. From Anthony Merlino.
|
||
- IEEE 802.15.4 loopback driver: Better simulation addressing: short
|
||
and extended addresses, panid, and IP address conversion.
|
||
- IEEE 802.15.4 Network Driver: Add logic to setup the network mask,
|
||
update the MAC-based IPv6 addressing when the network is brought up.
|
||
The idea is that addressing changes are supposed to occur only while
|
||
the network is down but won't take effect until the network is up
|
||
again.
|
||
- PktRadio: Add an infrastructure to support networking on generic
|
||
(non-IEEE 802.15.4) packet radios.
|
||
- PktRadio Loopback Driver: Add a PktRadio loopback network driver to
|
||
testing testing with 6LoWPAN and PktRadios on the simulator.
|
||
- Spirit Network Driver: The Spirit1 radio (SPSGRF-915) is the first
|
||
generic PktRadio Network driver. Based on STMicros STack packets
|
||
with 8-bit addressing. We need to use the STack packets in order to
|
||
provide the source address and automatic ACKing.
|
||
- Network procfs: Fix so that PktRadio address are shown correctly.
|
||
- Networking: Add support for some packet radio IOCTL commands.
|
||
- 6LoWPAN: Added handling for TCP and ICMPv6 packets.
|
||
- 6LoWPAN: Add configurable support for 6LoWPAN star topology. With
|
||
this change, the endpoints which are the 'points' of the star will
|
||
forward all traffic to the coordinator. The coordinator is assumed to
|
||
be the 'hub' of the star. This function also used IPv6 forwarding.
|
||
- 6LoWPAN: The original, Contiki-based design used only a single buffer
|
||
for reassemblying larger packets. This could be a problem issue for
|
||
hub configurations which really need the capability concurrently
|
||
reassemble multiple incoming streams concurrently. These was also a
|
||
design issue in that the reassembly buffer could be corrupted by
|
||
outgoing packets. The design was extended to support multiple
|
||
reassembly buffers, each associated with the reassembly tag and source
|
||
address. This assures that there can be be no corruption of the
|
||
reassembly once it has started.
|
||
- 6LoWPAN PktRadio: Now radio agnostic. All IEEE 802.15.4 dependencies
|
||
have been removed or isolated so that 6LoWPAN can be used with any
|
||
kind of packet radio. This involved things like: (1) generalizing
|
||
the representation of radio MAC meta-data, (2) changes to handle
|
||
variable-length radio addresses, (3) removal of all explicit IEEE
|
||
802.15.4 types, references, and interfaces, (4) a new radio driver
|
||
interface to return 'capabilities' of the drvier.
|
||
- ICMPv6: Update so that ICMPv6 can be used with 6LoWPAN.
|
||
- IPv6 Neighbor: Update table format to support IEEE 802.15.4 MAC
|
||
addresses.
|
||
- PF_IEEE802154 Address Family: Add support for the PF_IEEE802154
|
||
address family socket type. This socket is similar to the PF_PACKET,
|
||
"raw" packet address family except that: (1) it supports only
|
||
SOCK_DRAM, not SOCK_RAW, and (2) works only with IEEE 802.15.4
|
||
MAC-based radios. This address family permits simple access to IEEE
|
||
802.15.4 IOCTLs and frame-level network transfers.
|
||
|
||
* Other Common Device Drivers:
|
||
|
||
- Dynamically configurable USB composite devices: We developed a huge
|
||
Changeset over a year ago to make USB Composite configuration
|
||
dynamical and be able to instantiate the CDC/ACM multiple times inside
|
||
this device. We use this feature to switch between one in typical USB MSC + CDC/ACM configuration and up to three CDCACMs dynamically.
|
||
I've changed the interface for some USB-Functions to receive also the
|
||
dynamic configuration. From Frank Benkert.
|
||
- Franks' change remained on a branch until all issues were resolved.
|
||
the current version in Master is complete and ready for use.
|
||
- power: battery_charger: add ioctl for charging input current. From
|
||
Juha Niskanen.
|
||
- SMPS driver: Add generic upper-half driver for SMPS. From Mateusz
|
||
Szafoni.
|
||
- LED Driver: Add support for inverted LEDS. From Jeff.
|
||
- LED Driver: Add lightness correction for RGB LED driver. From Jeff.
|
||
- LTC4151 Driver: Add driver for LTC4151 current and voltage monitor.
|
||
From Giorgio Gro<72>.
|
||
- Serial TERMIOS: tcdrain() implementation based on a new term ioctl.
|
||
From Sebastien Lorquet.
|
||
- Serial TERMIOS: Add support for TCFLUSH. From Sebastien Lorquet.
|
||
- syslog: Add option to use the CLOCK_MONOTONIC for time stamping. From
|
||
Jussi Kivilinna.
|
||
- HC-SR04 Driver: Add support to HC-SR04 distance sensor. From Alan
|
||
Carvalho de Assis.
|
||
- COMP Driver: Add poll support. From Pekka Ervasti.
|
||
- BQ2429X Driver: add driver for TI BQ2429X battery charger. From Juha
|
||
Niskanen.
|
||
- ADC Driver: Add poll support. From Juha Niskanen.
|
||
- BCH Driver: Add poll support. From Jussi Kivilinna.
|
||
- RTC Driver: Extend the RTC framework with an alarm read ioctl
|
||
(RTC_RD_ALARM). Through it consumer could get configuration settings
|
||
about previously scheduled hardware alarms (active status, hours,
|
||
minutes, seconds). From Boris Astardzhiev.
|
||
|
||
* Simulation
|
||
|
||
- sim/ipforward: Add an IP forwarding configuration using TUN devices
|
||
and apps/examples/tun.
|
||
- Console: Add non blocking read to devconsole driver. From Simon
|
||
Piriou.
|
||
- Networking: Poll for TX frames to speed up driver. From Simon Piriou.
|
||
- pf_ieee802154: Add configuration for testing PF_IEEE802154 address
|
||
family sockets.
|
||
- ARM Simulator: Adds necessary functionality to build Simulator under
|
||
ARM Linux. Tested only on Raspberry3. Currently setjmp/longjmp do not
|
||
save/restore floating point registers. From Nickolay Semyonov.
|
||
|
||
* MicroChip/Atmel SAML21 Drivers:
|
||
|
||
- SAML21 I2C driver. Developed for and contributed with permissin from
|
||
Filament company. From Alan Carvalho de Assis.
|
||
- SAMD/L21 USB Driver: Add a USB driver. Developed for Filament Inc.
|
||
by Offcode, LTD. From Janne Rosberg.
|
||
|
||
* MicroChip/Atmel SAMv7 Boards:
|
||
|
||
- SAMV71-XULT: Add support for the MRF24J40 radio and create a
|
||
mrf24j40-starhub configuration.
|
||
- SAME70-Xplained: Add MRF24J40 support.
|
||
|
||
* NXP Freescale Kinetis Drivers:
|
||
|
||
- Kinetis USB Improvements: usbdev clean up ensuring proper use of HW.
|
||
Rework suspend and resume logic so they perform properly. Made attach
|
||
and detach functions optional. As they do not make sense for a bus
|
||
powered device. From David Sidrane.
|
||
- Kinetis SPI driver: From David Sidrane.
|
||
- Kinetis: I2C driver added I2C3, reference counting and reset.
|
||
Refactored the driver to support reference counting and reset added
|
||
I2C3. From David Sidrane.
|
||
- Kinetis RTC: Implementation of the alarm read function.
|
||
|
||
* NXP Freescale Kinetis Boards:
|
||
|
||
- configs/teensy-3.x USB: Define USBOTG-FS Read from FLASH access in
|
||
board config. Allow the board config to define the USBOTG-FS to have
|
||
Read access to FLASH. From David Sidrane.
|
||
- configs/teensy-3.x: Removed call to khci_usbattach. The call is not
|
||
need by the driver if CONFIG_USBDEV_BUSPOWERED=y. On a USB powered device if we are running we are attached. From David Sidrane.
|
||
- freedom-k66f: Use SPI driver. Initalize SPI1 on connector J6. No
|
||
real use, as of yet. From David Sidrane.
|
||
|
||
* NXP Freescale LPC43xx:
|
||
|
||
- LPC43xx: Modify up_allocate_(k)heap() to support PROTECTED mode. From
|
||
Alan Carvalho de Assis.
|
||
|
||
* NXP Freescale LPC4xx Boards:
|
||
|
||
- configs/Bambino: Add protected mode configuration to Bambino board.
|
||
From Alan Carvalho de Assis.
|
||
|
||
* On Semiconductor LC823450
|
||
|
||
- LC823450: Initial support for ON Semiconductor LC823450. From Masayuki
|
||
Ishikawa.
|
||
- LC823450: eMMC/SD and USB support for LC823450. From Masayuki Ishikawa.
|
||
|
||
* On Semiconductor LC823450 Boards
|
||
|
||
- LC823450-XGEVK: LC823450-XGEVK board support. From Masayuki
|
||
Ishikawa.
|
||
- LC823450-XGEVK: Add eMMC/SD and USB support. From Masayuki Ishikawa.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32 L4: Add support for the STM32L475 family.
|
||
- STM32 L4 RCC: Enable ADC clock source. From Juha Niskanen.
|
||
- STM32: Allow clock frequencies > 168 Mhz on stm32f427/429. We need
|
||
to enable the power overdrive for this case. This change allows the
|
||
required bits to be set in proper sequence. It also modifies the
|
||
local register access operations to allow more than 16-bit registers.
|
||
From Sebastien Lorquet .
|
||
- STM32 F4: Add support for STM32F433RC. From Alan Carvalho de Assis.
|
||
- STM32 F7: Add new configuration option for enabling flash ART
|
||
Accelerator and flash prefetcher. From Jussi Kivilinna.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 TIM: Add the set counter function for stm32 timers. From
|
||
Sergey Ustinov.
|
||
- STM32 HRTIM: Update HRTIM definitions. Add HRTIM driver. From
|
||
Mateusz Szafoni.
|
||
- STM32 HRTIM: Add HRTIM character driver. From Mateusz Szafoni.
|
||
- STM32 HRTIM: Fix DAC triggers configuration, Add missing master timer
|
||
logic, enable DAC triggering. From Mateusz Szafoni.
|
||
- STM32 HRTIM: Add DMA configuration. From Mateusz Szafoni.
|
||
- STM32 HRTIM: Add burst mode configuration. From Mateusz Szafoni.
|
||
- STM32 RTC: Port Boris Astardzhiev's RTC change for STM32L4 to STM32.
|
||
- STM32 DAC: Add support for HRTIM triggering. Separate dma buffer
|
||
configuration for channels. From Mateusz Szafoni.
|
||
- STM32 DAC: Conditional logic for timer triggering, fix TSEL
|
||
configuration when HRTIM, DMA request remapping, Add DMA buffers
|
||
initialization logic. From Mateusz Szafoni.
|
||
- STM32 DAC: Support external triggering for DMA transfer. From Mateusz
|
||
Szafoni.
|
||
- STM32 L1 TIM: Add base address for TIM11. From Juha Niskanen.
|
||
- STM32 F4 FLASH: Enable/disable the flash write protection on any
|
||
sector. I have verified it to work on the STM32 F427. From Sebastien
|
||
Lorquet.
|
||
- STM32 F4 Clocking: To use an external oscillator module (not just a
|
||
crystal) with the STM32F4, one needs to enable the HSEBYP bit in the
|
||
RCC_CR register. This change allows an integrator to define
|
||
STM32_RCC_CR_HSEBYP in their board.h file if they want this
|
||
configuration. From Jeff.
|
||
- STM32 F4 USB: I'm working on bringing up USB full-speed support on
|
||
STM32F405.<2E> My board does not include a USB power switch, VBus
|
||
sensing, over current detection, or ID pin. This commit add a
|
||
config<69>STM32_OTGFS_VBUS_ CONTROL which lets us selectively disable
|
||
VBus sensing and control.<2E> I also sneaked in a change to disable the
|
||
configgpio call for the ID pin, which is only used in OTG mode which
|
||
isn't supported yet.<2E> The only pins that need to be initialized should
|
||
be OTGFS_DP and OTGFS_DM. From Jeff.
|
||
- STM32 FLASH: Add CONFIG_STM32_STM32F469 support. From David Sidrane.
|
||
- STM32 COMP: Add default INM configuration and some missing COMP
|
||
1,3,5,7 code. From Mateusz Szafoni.
|
||
- STM32 F33: Add missing SYSCFG CFGR3 definitions. From Mateusz Szafoni.
|
||
- STM32 L4 Serial: Allow configuring Rx DMA buffer size. From Juha
|
||
Niskanen.
|
||
- STM32 L4 COMP: Input minus pin extended selection. From Juha Niskanen.
|
||
- STM32 L4 COMP: Bind to upper half comp driver. From Pekka Ervasti.
|
||
- STM32 L4 DAC: Port from STM32. Add ADC register definitions. From
|
||
Juha Niskanen.
|
||
- STM32 L4 DAC: Add option for routing DAC output to ADC. Actually
|
||
write something to the DAC DMA buffer. From Juha Niskanen.
|
||
- STM32 L4 DAC: Separate DMA buffer configuration for channels. From
|
||
Juha Niskanen.
|
||
- STM32 L4 ADC: Implement peripheral. From Juha Niskanen.
|
||
- STM32 F7: Definitions for I2C4, SDMMC2. Adapted RAM start / size to
|
||
internal SRAM. From Titus von Boxberg.
|
||
- STM32 F7 I2C4: I2C4_SDA can also be on GPIO PB7. From Titus von
|
||
Boxberg.
|
||
- STM32 F7 LTDC: Option for DSI output, inconsistency: the stm32f746
|
||
does not feature a DSI interface. compilable with LTDC_INTERFACE and
|
||
LTDC_USE_DSI. From Titus von Boxberg.
|
||
- STM32 F7 Clocking: Added functions for DSI clock source selection.
|
||
From Titus von Boxberg.
|
||
- STM32 F7 Clocking: Enable APB2 DSI clock. From Titus von Boxberg.
|
||
- STM32 F7 LTDC: No board specific dithering values used; corrected
|
||
dithering init. Corrected LIPOS/LIPCR calculation. Change only
|
||
polarity bits in LTDC_GCR. From Titus von Boxberg.
|
||
- STM32 F7 Reset: Added function for reset. From Titus von Boxberg.
|
||
- STM32 F7 DMA: DMA add dcache alignment check in stm32_dmacapable. In
|
||
the case dcache write-buffed mode is used (not write-through) buffer
|
||
alignment is required for DMA transfers because a)
|
||
arch_invalidate_dcache could lose buffered writes data and b)
|
||
arch_flush_dcache could corrupt adjacent memory if the maddr and the
|
||
mend+1, the next next address are not on ARMV7M_DCACHE_LINESIZE
|
||
boundaries. From David Sidrane.
|
||
- STM32 F7 SDMMC: SDMMC remove widebus limitation on DMA. There is no
|
||
documantation for the STM32F7 that limits DMA on 1 bit vrs 4 bit
|
||
mode. From David Sidrane.
|
||
- STM32 F7 SDMMC: SDMMC add dcache alignment check in
|
||
dma{recv|send}setup. In the case where CONFIG_SDIO_PREFLIGHT is not
|
||
used.
|
||
- STM32 F7 RTC: Port Boris Astardzhiev's RTC change for STM32L4 to
|
||
STM32F7.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F103-Minimum: Add GPIO device driver example. From Alan
|
||
Carvalho de Assis.
|
||
- STM32F103-Minimum: Add small hello example for STM32F103-Minimum
|
||
board. From Alan Carvalho de Assis.
|
||
- STM32F103-Minimum: Add support for SmartFS on Winbond W25 SPI NOR
|
||
Flash. From Alan Carvalho de Assis.
|
||
- STM32F103-Minimum: (1) Enable CONFIG_MTD_PARTITION in Kconfig if flash
|
||
partition is enabled and (2) Update the README.txt file with info
|
||
needed to get SmartFS working. From Alan Carvalho de Assis.
|
||
- Nucleo-F334R8: Add HRTIM initialization. From Mateusz Szafoni.
|
||
- Nucleo-F334R8: UART2 is default serial port (STLINK Virtual Port).
|
||
From Mateusz Szafoni.
|
||
- Clicker2-STM32: Add a configuration that was used with the MRF24J60
|
||
for 6loWPAN testing.
|
||
- Clicker2-STM32: Allow both IEEE 802.15.4 MAC character and network
|
||
devices to be registered.
|
||
- Clicker2-STM32: Add configurations to support the endpoint and hub
|
||
roles in a star topology.
|
||
- Clicker2-STM32: Add support for per-function-call stack checking.
|
||
From Anthony Merlino.
|
||
- Clicker2-STM32: Configure EDBG SPI CS just to make that it is
|
||
disabled.
|
||
- STM32F4 Discovery: Add logic to register the button driver and the
|
||
user led driver if so configured. From Jan Pobrislo.
|
||
- STM32F4-Discovery: Add a configuration for testing libc++. From Alan
|
||
Carvalho de Assis.
|
||
- B-L475E-IOT01A: Add support for the STMicro B-L475E-IOT01A board.
|
||
From Simon Piriou.
|
||
- B-L475E-IOT01A: Add support for the SPSRGF/Spirit1 radio module. Add
|
||
a configuration for testing sprit radio.
|
||
- B-L475E-IOT01A: Add configurations to support a star topology.
|
||
- B-L475E-IOT01A: add basic support for external Macronix QuadSPI flash
|
||
memory. From Simon Piriou.
|
||
- B-L475E-IOT01A: Enable UDP broadcast test in the spirit-starhub
|
||
configuration.
|
||
- STM32F334-DISCO: Add STM32F334-DISCO basic support. From Mateusz
|
||
Szafoni.
|
||
- STM32F746-Disco: Add ADC3 support. From Ivan Ucherdzhiev.
|
||
- STM32L476-Disco: Add a knsh configuration that may be used to test
|
||
the PROTECTED build mode.
|
||
- STM32F769I-DISCO: Initial port to STM32F769I-DISCO. From Titus von
|
||
Boxberg.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- Move TUN ioctl command to include/nuttx/net/ioctl.h so that it will
|
||
always be unique.
|
||
- Math Library: Port gamma() and lgamma() from FreeBSD to NuttX. From
|
||
Alan Carvalho de Assis.
|
||
- C++: Compilation with recent C++ compiler needs an overloaded delete
|
||
operator that includes a size_t size argument. New sized delete
|
||
operators are only for C++14 and above.
|
||
|
||
* Build/Configuration System:
|
||
|
||
- Initial clang compile. From Goran Mekic.
|
||
- Add CLANG definitions in Kconfig and Toolchain.defs.
|
||
- drivers/wireless/ieee802154: Moved radios to individual
|
||
sub-directories. From Anthony Merlino.
|
||
- Makefile.unix: Add savedefconfig target. From Gwenhael Goavec-Merou.
|
||
- Add Gwenhael's change to Makefile.win and update README.txt to
|
||
described the new make target.
|
||
- All defconfig files are now in the compressed format created with
|
||
'make savedefconfig.' The original .config file can be reconstituted
|
||
using 'make olddefconfig.'
|
||
- Build System: It is no longer necessary to have a unique Make.defs
|
||
file for each configuration. A board may share a common Make.defs
|
||
file in the scripts directory. Duplicate Make.defs files removed;
|
||
common Make.defs file moved to the scripts/ sub-directory for each
|
||
board.
|
||
- Networking: Move INET socket interface out of net/sockets to its own
|
||
directory net/inet.
|
||
|
||
* Tools:
|
||
|
||
- testbuild.sh: Added -x to fail build on errors for continous
|
||
integration (CI). On CI we want to know ASAP of a failure. From
|
||
David Sidrane.
|
||
- Improve configure.sh behavior: (1) enable to call from top directory.
|
||
(2) enable to designate direct path for config. (3) install .gdbinit
|
||
if the target has. From Hidetaka Takano.
|
||
- Update tools/configure.c to same functionality as configure.sh. Add
|
||
an array of optional file names. Currently, .gdbinit is the only
|
||
optional file but other things like IDE-specific project files might
|
||
need to be copied as well.
|
||
- tools/configure.sh will now copy Eclipse project files if they are
|
||
present in the board directory file.
|
||
- Update configure.sh, configure.bat, configure.c: With compressed
|
||
format, part of the installation requires that we run 'make
|
||
olddefconfig' to restore the uncompressed defconfig format. Also,
|
||
while I was at it, I also added options to select host platform on
|
||
configure command line.
|
||
- tools/refresh.sh: Now runs make savedefconfig before copying the new
|
||
defconfig file in place; Also, added a new option --defaults. Since
|
||
the number of defaults that you now have to answer is so large, the
|
||
option lets you just accept the default values. So it works just like
|
||
--silent but still prompts you for the decision to save or discard the
|
||
new defconfig file.
|
||
- tools/refresh.sh: Update so that it can find the Make.defs file in
|
||
the new location.
|
||
|
||
* NSH: apps/nshlib:
|
||
|
||
- NSH Library: Add a Telnetd command. This is needed when network
|
||
initialization is deferred. In that case, telnet daemon cannot be
|
||
started until the network is finally initialized. The telnetd command
|
||
was added just for that case: So that the telnet daemon can be
|
||
started from the NSH command line after the network is configured.
|
||
- NSH Library: Misc changes needed for PktRadio support.
|
||
- NSH Library: Extend ifconfig command so that it can set variable
|
||
length packet radio addresss.
|
||
- NSH Library: Update addroute and delroute command. The would support either
|
||
IPv4 or IPv6, but not both. Allow expression of the netmask in IPv4 CIDR or
|
||
IPv6 slash notation. This really reduces the pain of using the commands,
|
||
especially for IPv6.
|
||
- NSH Library: Add a route command that will dump the content of routing table.
|
||
|
||
* Examples/Tests: apps/examples:
|
||
|
||
- examples/udp: Add configurable network device name; Add option to
|
||
suppress network initialization which is not needed if started by NSH
|
||
or for 6LoWPAN.
|
||
- examples/udp: Fix registration as a built-in program; Change some
|
||
naming to make room for a second target. Current one endpoint is the
|
||
target and one is the host. This will (eventually) allow two targets
|
||
to be both endpoints of the test. Change build so that both server
|
||
and client can be on a target, rather than one on the target one on
|
||
the host PC. Server IP address may not be provided on the command line.
|
||
- examples/udp: Port numbers need to be configurable to work with
|
||
6LoWPAN. Need to bind the client socket to a port number. This was
|
||
not required before so is a apparently a change in the UDP packet
|
||
dispatch logic.
|
||
- examples/udp: Enable testing with the broadcast address.
|
||
- examples/nettest: Support target boards on both ends of the test.
|
||
Separate out network initialization so that it may be used by both a
|
||
target server and a target client. Fix client/server naming
|
||
confusion; Add command line option to select the server address on the
|
||
target. Add support for both enpoints on target boards vs. one on a
|
||
target and one on the host PC.
|
||
- examples/nettest: The send buffer size is now a configuration option.
|
||
- examples/nettest: Loopback option should be available in Kconfig for
|
||
PktRadio.
|
||
- examples/keypadtest: REMOVED and warehoused in the Obsoleted
|
||
repository. This was just a bad clone of apps/examples/hidkbd for a
|
||
keypad driver that was removed years ago. It also uses illegal
|
||
function calls into the OS. So it has no purpse: It is redundant, it
|
||
uses illegal interfaces, and is a test for non-existent code.
|
||
- examples/ipforward: Add an IP forwarding example using only TUN
|
||
devices. Test extended to test forwarding of ICMPv6 multicast messages.
|
||
- Implement powermonitor example for ltc4151 current and voltage
|
||
monitor. From Giorgio Gro<72>.
|
||
- examples/pf_ieee802154: Add for testing PF_IEEE802154 sockets. Add
|
||
PANID to command line options; Cannot bind to address zero... There is
|
||
no counterpart to INADDR_ANY for these radios (not now at least).
|
||
- examples/dac: add DAC example. From Juha Niskanen.
|
||
|
||
* Network Utilities: apps/netutils:
|
||
|
||
- netutils/telnetc: This a port of libtelnet to NuttX.
|
||
- netutils/telnetd and users of telnetd: Add support for IPv6.
|
||
- netutils/thttpd: Remove the netstats demo. This depends on an
|
||
illegal function call and cannot be supported. That example could be
|
||
replaced with logic that uses the procfs network entries as was done
|
||
for NSH which had the same issue. But I am too lazy to implement that.
|
||
- netutils/netlib: Add support for PktRadio IOCTL commands.
|
||
- netutils/netlib: Add a helper to decode short addresses.
|
||
|
||
* Wireless Utilities: apps/wireless:
|
||
|
||
- wireless/ieee802154/i8sak: Rewrote i8sak to be test CLI for IEEE
|
||
802.15.4 MAC layer. From Anthony Merlino.
|
||
- wireless/ieee802154/i8sak: Updates to i8sak for
|
||
association/beacon-enabled changes to IEEE 802.15.4. From Anthony
|
||
Merlino.
|
||
- wireless/ieee802154/i8sak: Add option to make it easy to send large
|
||
frame for testing purposes. From Anthony Merlino.
|
||
- wireless/ieee802154/i8sak: Add scan command. From Anthony Merlino.
|
||
- wireless/ieee802154/i8sak: Add coordinfo command allowing you to
|
||
poll various attributes related to the coordinator. From Anthony
|
||
Merlino.
|
||
- wireless/ieee802154/i8sak: Add a option to retry on failures to the
|
||
assoc command (usually meaning tht the coordinator is not yet up).
|
||
- iwireless/ieee802154/8sak: Add reset command to reset the MAC layer.
|
||
Adds option to assoc command -t to specify how long to wait for a
|
||
response from the Coordinator. From Anthony Merlino.
|
||
- ieee802154/i8sak: Adds command to trigger regdump of radio. From
|
||
Anthony Merlino.
|
||
|
||
* System Utilities (apps/system)
|
||
|
||
- apps/system/composite: Update to apps/system/composite assocated with
|
||
big changes to the composite device logic. From Frank Benkert.
|
||
- apps/system/composite: Remove CDC/ACM and MSC configuration logic.
|
||
This belongs in the OS composite initialization. Add and argument so
|
||
that you can select the USB composite configuration to be attached.
|
||
Restore USB tracing; remove unused field in a structure. Remove
|
||
configuration settings that are no longer used. Fix configuration
|
||
selecting.. was setting the port number, not the configure ID. Also
|
||
add a configuration option to select the default configuration.
|
||
- apps/system/composite: Add a configuration option to the boardctl()
|
||
calls to support multiple composite device configurations dynamically.
|
||
- apps/system/composite: Remove references to USBMSC. There still
|
||
dependencies on CDC/ACM in the serial USB trace output.
|
||
- apps/system/telnet: Add Telnet Chat deamon and and client from
|
||
libtelent.
|
||
|
||
* Platform-Specific Support (apps/platform)
|
||
|
||
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:
|
||
|
||
- Fix ELF loader up_checkarch on ARM arch. From Cristian Condurache.
|
||
- pthread_mutex_unlock(): Missing check for the case where
|
||
pthread_mutex_lock() is called when the mutex is not locked. In that
|
||
case, it would increment the underlying semaphore above 1. This is
|
||
the fix for a problem noted by initialkjc@yahoo.com.
|
||
- sig_timedwait(): Pending signal structure used after it has been
|
||
releasd. From anonymous Bitbucket Issue 59.
|
||
- mm_mallinfo: do heap end debug assert check with heap semaphore held.
|
||
From Jussi Kivilinna.
|
||
- sched/: Fix return value in sched_setaffinity(). From Masayuki
|
||
Ishikawa.
|
||
- Work Queues: work_queue() must cancel existing work prior to queuing
|
||
new work, otherwise the work queue list structure can become
|
||
corrupted. Problem noted by Pascal Speck.
|
||
- waitpid(): Corrects two problems when CONFIG_SCHED_HAVE_PARENT +
|
||
CONFIG_SCHED_CHILD_STATUS are enabled: (1) Was erroring out if the
|
||
waited for task had already exited, and (2) was not freeing resources
|
||
when a wait was completed. From Boris Astardzhiev.
|
||
|
||
* File System/Block and MTD Drivers:
|
||
|
||
- VFS poll(): Fix timeout calculation. From Jim Paris.
|
||
- VFS poll(): Fix poll for regular files and block devices. Open Group
|
||
documentation says that poll (and select) support regular files and
|
||
that 'Regular files shall always poll TRUE for reading and writing'.
|
||
From Jussi Kivilinna.
|
||
- VFS epoll(): Fix epoll_wait function. From Simon Piriou.
|
||
- Smart FS: Fix wrong freeing of device structure and use-after-free
|
||
issues on error paths. From Jussi Kivilinna.
|
||
- MTD FLASH drivers: The byte write method of several drivers had a
|
||
cloned error: It was not locking the bus while performing byte write
|
||
operations.
|
||
- MTD M2PX: If we READ while a write/erase is pending, the command is
|
||
ignored and the write/erase continues. If we dont catch this situation
|
||
we will return garbage to the user because the flash will not execute
|
||
the command. So READ MUST wait for write completion, and before that,
|
||
the bus must be locked since it's a precondition to calling
|
||
waitwritecomplete(). From Sebastien Lorquet.
|
||
- MTD FLASH drivers: Clone Sebastien Lorquet's m25px change to at25,
|
||
is25xp, ramtron, and sst25xx.
|
||
- MTD W25: Add missing locking and fix SPI_SELECT usage for
|
||
w25_unprotect. From Jussi Kivilinna.
|
||
- MTD W25: Wait for BUSY flag to clear in w25_readid and
|
||
w25_unprotect. W25Q128 datasheet says that all instructions expect
|
||
'Read Status Register' and 'Erase/Program Suspend' are ignored when
|
||
BUSY flag in status register is '1'. Therefore wait for busy flag to
|
||
clear in w25_readid() and w25_unprotect(). From Jussi Kivilinna.
|
||
- Automounter: FS_AUTOMOUNTER should depend on SCHED_LPWORK. From
|
||
Nickolay Semyonov.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- TCP Listen: Throw error when error happens in the tcp_listen
|
||
function. From Roland Takacs.
|
||
- Nework Device Management: Do not search net device when all-zeros
|
||
address is used. From Roland Takacs.
|
||
- Network Device Management: Fix a error in netdev_register(); it was
|
||
not handling device names properly when TUN is the only network device.
|
||
- Network Device Management: Fix netdev_dev_lladdrsize(). In some
|
||
configurations, it could return the wrong size for the address of a
|
||
packet radio.
|
||
- Network Device Management: Fix typo for 802.11 devices in
|
||
netdev_register(). Was being masked before because depended on
|
||
CONFIG_NET_MULTLINK.
|
||
- TUN Driver: Use critical section instead of semaphore in
|
||
tun_ifdown(). From Masayuki Ishikawa.
|
||
- TUN Driver: Do all polling on worker thread. Otherwise, the stack
|
||
gets very deep.
|
||
- TUN Driver: Currently cannot support TAP mode unless Ethenet is
|
||
enabled.
|
||
- netdb: Fixed buffer size used for sending DNS queries should depend
|
||
on the configured DNS name size. From Ritjaina.
|
||
- UDP networking: The TTL (time to live) was not being set in the IPv4
|
||
or IPv6 header unless the UDP socket was bound.
|
||
- UDP Networking: Fix a copy-paste error that could effect networking
|
||
when both IPv4 and IPv6 are enabled.
|
||
- UDP Networking: When upd_input() cannot process a packet, it returns
|
||
ERROR so that network drivers may try calling ipv4_input() later. In
|
||
this case, it must also set d_len to zero. Otherwise, all network
|
||
drivers will assume tht there is also an outgoing packet. This
|
||
results in a gratuitous ARP.
|
||
- TCP Networking: Correct some issues that prevent TCP from working
|
||
correctly when both IPv4 and IPv6 are enabled.
|
||
- TCP Networking: TCP disconnection callbacks are not retained in a
|
||
list. This will support mutiple callbacks per lower-level TCP
|
||
connection structure. That is necessary for the cae where a socket is
|
||
dup'ed and shares the same lower-level connection structure. NOTE:
|
||
There still needs to be a call to tcp_start_monitor() when the socket
|
||
is dup'ed.
|
||
- TCP Networking: Start the network monitor for a socket when a TCP
|
||
socket is dup'ed.
|
||
- TCP Networking: If one of the dup'ed socket's is closed, then network
|
||
monitor resources associated with that one socket must be recovered.
|
||
Also, in the event that socket is being used on one thread, but then
|
||
closed on another, any threads waiting for events from the socket
|
||
should be informed of the closure. That latter requirement is not
|
||
implemented because current data structures do not support it.
|
||
- TCP Networking: Fix a race condition. The accept() operation is
|
||
performed with the network locked. However, the network is unlocked
|
||
BEFORE the connected state is set. Therefore, a context switch may
|
||
occur and the socket may no longer be connected when it is marked so.
|
||
Noted by Pascal Speck.
|
||
- Network routing tables: Fix a compilation error when IPv6 and
|
||
routing are enabled.
|
||
- Network procfs: Fix some spacing when both IPv6 and IPv4 are enabled.
|
||
- Network Local Sockets: Fix accept for local stream sockets. From
|
||
Jussi Kivilinna.
|
||
- Network Local Sockets: Fix server lc_waitsem overflow. From Jussi
|
||
Kivilinna.
|
||
- IPv6 Networking: Remove comparisons to the address with all ones
|
||
set. IPv6 does not support broadcast addresses and certainly not in
|
||
that form. Replace with multicast addresses beginning with 0xff02.
|
||
- ICMPv6 Networking: Fix a compilation issue with
|
||
CONFIG_NET_ICMPv6_AUTOCONF=y. From Masayuki Ishikawa.
|
||
- Networking: Fix net_lock returning ERROR when instead of real error
|
||
code on failure. From Jussi Kivilinna.
|
||
- IGMPv2 Networking: Remove special support for interrupt level
|
||
processing (there is none) and fix some timer cancellation logic. In
|
||
many files, correct comments. There is no interrupt level processing
|
||
in the networking layer.
|
||
|
||
* Wireless/Wireless Drivers:
|
||
|
||
- IEEE 802.15.4 MAC: Need counting protection on the logic that
|
||
releases the notification resources. Otherwise, notification handlers
|
||
may be operating with a stale pointer.
|
||
- IEEE 802.15.4 MAC: Improves internal timer logic to handle work
|
||
serially. Before, the MAC timer used a watchdog to schedule work with
|
||
the high priority worker queue. However, since everything in the MAC
|
||
is supposed to be serialized through the use of the high priority work
|
||
queue, but the timer uses a watchdog, there are some unintended
|
||
consequences. To simplify, we now use the delayed work feature of the
|
||
work queue. From Anthony Merlino.
|
||
- IEEE 802.15.4 Network Driver: Update RX statistics in network driver.
|
||
- IEEE 802.15.4 MRF24J40 Driver: Minor timing fix. Matches recommended
|
||
value in datasheet. Splits up driver into multiple files to make it
|
||
easier to navigate. Fixes issue with non-beacon enabled mode. From
|
||
Anthony Merlino.
|
||
- IEEE 802.15.4 MRF24J40 Driver: Fix a bug causing radio to cease
|
||
transmitting. From Anthony Merlino.
|
||
- IEEE 802.15.4 MRF24J40 Driver: Fixes issues with sleeping for beacon
|
||
enabled networking. From Anthony Merlino.
|
||
- EEE 802.15.4 MRF24J40 Driver: Fix math error for calculating sleep
|
||
count values. From Anthony Merlino.
|
||
- IEEE 802.15.4: Fix timing issues for beacon enabled coordinators and
|
||
endpoints. From Anthony Merlino.
|
||
- iIEEE 802.15.4: Fix issue with association on beacon-enabled
|
||
networking. From Anthony Merlino.
|
||
- 6LoWPAN: Correct a few addressing issues. Also reserve two bytes at
|
||
the end of the frame for the FCS.
|
||
- 6LoWPAN: Fixes needed when extended addressing is enabled; broke short
|
||
addressing. Loopback driver needs to initialize the MAC meta data;
|
||
Address decompression logic must have the MAC address to handle the
|
||
most common compression cases. Fix a src/dest address confusion and
|
||
other addressing problems.
|
||
- 6LoWPAN: Add missing IPv6 address creation to HC1 decode logic. Fix a
|
||
typo in an index that prevented use with HC1 and extended addresses.
|
||
- 6LoWPAN: TCP logic was not obeying MTU packet size limitations.
|
||
- 6LoWPAN: Major re-architecting of TCP logic to properly handle TCP
|
||
stuff like ACKs and TDP windowing which were not properly covered in
|
||
the initial design.
|
||
- 6LoWPAN: HC06, copy TCP header as though it were data. TCP packet
|
||
reassembly now seems to work OK.
|
||
- 6LoWPAN: Fix duplicate and bad memcpy in loopback driver.
|
||
- 6LoWPAN: Fix a misconception about HC06 16-bit IPv6 address
|
||
compression.
|
||
- 6LoWPAN: TCP send logic was returning a failure in one case when, in
|
||
fact, the send was successful.
|
||
|
||
* Common Drivers:
|
||
|
||
- USB MSC: Use struct instead of pointer to the struct as sizeof
|
||
argument in memset in usbmsc.c. Otherwise it leads to error: argument
|
||
to sizeof in memset call is the same pointer type struct usbmsc_lun_s
|
||
* as the destination. From Oleg Evseev.
|
||
- USB MSC: Add missing logic to define endpoints. The composite
|
||
changes broke the the non-composite, USB MSC only case because it omitted the critical setup when USB MSC was not part of the composite.
|
||
- USB CDC/ACM. Fix several known problems resulting from merge of USB
|
||
composite device. That merge now breaks some of the non-composite USB
|
||
devices.
|
||
- Button Driver: Interrupts weren't enabled since nothing updates them
|
||
after btn_poll() marks the file descriptor structure as being polling.
|
||
From Jan Pobrislo.
|
||
- ADC Driver: Fix some data alignment issues in the ADC driver.
|
||
- I2C Drivers: Handle I2C_TRANSFER return value consistently. Some I2C
|
||
peripherals transfers return zero on success, others number of
|
||
completed transfers. Make drivers robust against this. From Juha
|
||
Niskanen.
|
||
- COMP Driver: Fix compilation errors when poll disabled. From Mateusz
|
||
Szafoni.
|
||
|
||
* Simulation:
|
||
|
||
- Simulation: Fix mkdir issue in GNU target. From Simon Piriou.
|
||
- Simulation: x86 stack needs to be aligned to 16-byte boundaries.
|
||
- Simulation: Fix building 32-bit simulation on 32-bit X86. From Jussi
|
||
Kivilinna.
|
||
|
||
* ARM:
|
||
|
||
- ARM: The older ARM7 and ARM9 configurations were determining CFLAGS
|
||
based on the GCC version 4.x.x or not. That needx to be extended for
|
||
5.x.x and 6.x.x which also behave like 4.x.x.
|
||
|
||
* ARMv7-M:
|
||
|
||
- Fixed ARMv7-M Toolchain setting. Cortex-M4 only have Single
|
||
Precision FPU. From Hidetaka Takano.
|
||
- ARMv7-M syscall logic: Clear bit 0 in PC settings. Bit 0 is the
|
||
thumb mode indication and should not be set in the PC. This extra bit
|
||
has not caused problems in the past, but seeing it set in the PC is
|
||
unnerving.
|
||
|
||
* Expressif ESP32:
|
||
|
||
- Fix ESP32 gpio enable reg and default UART pin. Modify default UART
|
||
pin for ESP-WROOM-32. Fix gpio enable reg. From Sungki Kim.
|
||
|
||
* Microchip/Atmel SAMD21 Drivers:
|
||
|
||
- SAMD21: Fix some SPI-related issues. From Matt Thompson.
|
||
- SAMD21 SPI: I was having issues with the bus freezing up .. slaves
|
||
holding SDL low.. so I rewrote a good portion of the interrupt logic
|
||
based on the application notes from Atmel. One major improvement is
|
||
using the RXNACK flag in the STATUS register, which indicates that no
|
||
device responded to an address packet. Assuming that the chip will
|
||
always give an interrupt status, I believe it's possible to eliminate
|
||
the timer as well. From Matt Thompson.
|
||
- SAMD/L21: Need to preserve errno value across syslog() call.
|
||
- SAMD21: Changes needed to get USB working. From Matt Thompson.
|
||
|
||
* Microchip/Atmel SAMv7 Drivers:
|
||
|
||
- SAMv7 TWIHS: TWIHS driver add reference counting. From David Sidrane.
|
||
- SAMv7 CAN: We discovered a problem with the samv7 mcan driver which
|
||
results, under some circumstances, in a very high CPU load. The
|
||
problem occurs, and is easily reproducible, if the device is connected
|
||
to a CAN network with a wrongly configured CAN speed (baud rate). In
|
||
our tests we set the CAN speed of the device to 1000000 and the speed
|
||
of the other CAN nodes to 500000. The device is restarted and sends a
|
||
CANopen "bootup message" to the CAN network. This results in huge
|
||
amount of errors messages on the CAN bus, probably because of the CAN
|
||
feature for acknowledging error messages. The error messages can<61>t be
|
||
read by the device because of the misconfigured CAN speed, instead the
|
||
CAN chip reports lots of errors, which are reported to the application
|
||
which uses the CAN driver (CONFIG_CAN_ERRORS is enabled). The CAN
|
||
errors are reported from the CAN chip via interrupts and thus the
|
||
interrupt load is very high in this scenario. To fix the problem the
|
||
driver now disables each RX error interrupt after it is occurred. The
|
||
RX error interrupts are turned back on if at least one CAN message is
|
||
received successfully. From Stefan Kolb.
|
||
- SAMv7 CAN: I discovered while working on the SAMV7 mcan driver that
|
||
the implementation of the CAN error handling is suboptimal. In the
|
||
current implementation the many errors are implemented as pending
|
||
errors. But those errors are not pending, the errors occurred and are
|
||
gone directly afterwards. This commit changes the described behavior
|
||
and simplifies the handling of CAN errors. From Stefan Kolb.
|
||
|
||
* Microchip/Atmel SAMv7 Boards:
|
||
|
||
- SAMv71-XULT: Fix MRF24J40 interrupt GPIO number.
|
||
|
||
* NXP/Freescale Kinetis:
|
||
|
||
- Kinetis MPU: Disable MPU when not in protected mode. The hardware
|
||
reset state of the the MPU precludes any bus masters other then DMA
|
||
access to memory. Unfortunately USB and SDHC have there own DMA and
|
||
will not have access to memory in the default reset state. This change
|
||
disabled the MPU if present on system startup. From David Sidrane.
|
||
- Kinetis MPU: Fixed warning for kinetis_mpudisable. Missing header
|
||
file added. From David Sidrane.
|
||
- Kinetis SIM: Ensure isolation of clock dividers for 0 value case.
|
||
This fixes a bug were a SoC does not have a clockdivN register and
|
||
passes a 0 for the init value. This prevents overflow of the 0
|
||
decremented to -1 (0xffffffff) spilling over to other clockdivN
|
||
fields. From David Sidrane.
|
||
|
||
* NXP/Freescale i.MX6 Drivers:
|
||
|
||
- i.MX6: Fix a wrong parameter passed when calling irq_attach() in
|
||
imx_serial.c. From Masayuki Ishikawa.
|
||
- Based on Masayuki's change, I review all serial driver vector
|
||
attachment. I Found one additional error and updated all relevant
|
||
drivers to current interrupt parameter passing.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32 F410 Kconfig: Fix peripherals available on the STM32 F410.
|
||
This also adds a select for STM32_HAVE_DAC1 present on this STM32
|
||
flavor. From Gwenhael Goavec-Merou.
|
||
- STM32 L4 DMA: Correct USART3_RX bad channel definition. From Juha
|
||
Niskanen.
|
||
- STM32 L4 PWR: Correct PWR_SR2 REGLPS and REGLPF bits, add port I
|
||
registers. Also remove duplicate section from Kconfig. From Juha
|
||
Niskanen.
|
||
- STM32 F7: do not enable read-modify-write on DTCM. "AN 4667 - STM32F7
|
||
Series system architecture and performance" recommends to disable
|
||
read-modify-write on DTCM: "If the DTCM-RAM is used as data location
|
||
and the variables used are byte or/and halfword types, since there is
|
||
no ECC management in this RAM on the STM32F7 Series, it is recommended
|
||
to disable the read-modify-write of the DTCM-RAM in the DTCM interface
|
||
(inthe DTCMCR register) to increase the performance." From Jussi
|
||
Kivilinna.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 TIM3/4 are always 16-bits; never 32-bits. Noted by Eetu
|
||
Nevalainen..
|
||
- STM32 ADC: Invalidate dma buffer before use. Missing invalidation
|
||
caused old samples being fetched from cache. From Jussi Kivilinna.
|
||
- STM32, STM32L4, STM32F7 ADC: Fix channel 18 sample time. From Juha
|
||
Niskanen.
|
||
- STM32 DAC: Fix some configuration logic. When STM32_NDAC is greather
|
||
than 1, then second channel is always DAC1OUT2. From Mateusz Szafoni.
|
||
- STM32 DAC: Fix compilation when DMA disabled for channel. From
|
||
Mateusz Szafoni.
|
||
- STM32 F0: Fix some funny shifts in DAC header files. From Juha
|
||
Niskanen.
|
||
- STM32 F1 RTC fixes: (1) Compile issues because of missing RTC_MAGIC
|
||
#defines, (2) missing functionality based on RTC_MAGIC in RTC based on
|
||
stm32_rtcounter.c, (3) IRQ setup from up_rtc_initialize was later
|
||
reset in up_irqinitialize, (4) write access to backup registers
|
||
without enabling access to backup domain, (5) possible races in
|
||
set/cancel alarm. tested with STM32F103C8 only. device now wakes up
|
||
from forced STANDBY mode by alarm. From Leif Jakob.
|
||
- STM32/STM32 L4 PWM: While attempting to output a 70 MHz square wave
|
||
from the timer output of a STM32 clocked at 140 MHz, found that the
|
||
reload calculation was off by one. This correction does allow the
|
||
output up to 70 MHz. I am not sure this affects most users
|
||
generating slow PWM but for frequencies close to the PCLK, the
|
||
difference becomes significant. From JM.
|
||
- STM32 L4 I2C: Set I2C SDA and SCL pins to open drain mode. From Pekka
|
||
Ervasti.
|
||
- STM32 L4 I2C: I2C4 was writing to wrong RCC registers. From Juha
|
||
Niskanen.
|
||
- STM32 L4 DAC: Report transfer as completed in DMA callback. Without
|
||
this even O_NONBLOCK writes block the calling task if DAC was using
|
||
DMA. From Juha Niskanen.
|
||
- STM32 L4 COMP: comparators share RCC enable bit with SYSCFG. From
|
||
Juha Niskanen.
|
||
- STM32 L4 ADC: Correct EXTSEL macros. From Juha Niskanen.
|
||
- STM32 L4 TIM: TIM15,16,17 are always in APB2. From Juha Niskanen.
|
||
- STM32 F7 I2C: Set I2C4 SDA and SCL pins to open drain mode. From Juha
|
||
Niskanen.
|
||
- STM32 F4 RTCC: ISR register and write protection fix. From Eetu
|
||
Nevalainen.
|
||
- STM32 F7 Ethernet: Fix typo in header; Add memory sync barrier
|
||
between writing to DMA TX descriptor and restarting DMA TX. Avoid
|
||
calling work_queue on pollwork if it's already queued, just skip a
|
||
poll cycle instead. Nucleo-144: Fix RMII TXD1 signal, connected to
|
||
PB13 not to PG14. From savinz.
|
||
- STM32 F7: Added missing config option for register value debugging.
|
||
From Titus von Boxberg.
|
||
- STM32 F7: No FSMC, only FMC for STM32F7. From Titus von Boxberg.
|
||
- STM32 F7: HEAP2 depends on CONFIG_ARCH_HAVE_HEAP2, not on particular
|
||
FMC RAM type. From Titus von Boxberg.
|
||
- STM32 F7: STM32_RCC_DCKCFGR2 has nothing to do with PLLI2S; PLLI2S is
|
||
not dependent on LTDC, instead on SAICLK1/2 generated from PLLI2S.
|
||
From Titus von Boxberg.
|
||
- STM32F7: Some STM32F7 builds failed in build testing due to undefined
|
||
STM32_SRAM1_BASE. I think that is because stm32_allocateheap.c was
|
||
not including chip/stm32_memorymap.h.
|
||
- STM32 F7: dcache write-buffed mode is used (not write-through) buffer
|
||
alignment is required for DMA transfers because a)
|
||
arch_invalidate_dcache could lose buffered writes data and b)
|
||
arch_flush_dcache could corrupt adjacent memory if the buffer and the
|
||
bufflen, are not on ARMV7M_DCACHE_LINESIZE boundaries. From David
|
||
Sidrane.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F103-Minumum SPI: SPIDEV_WIRELESS used when this has
|
||
changed to SPIDEV_CONTACTLESS. From Nicolas Estibals.
|
||
- configs/: a few more places where SPIDEV_WIRELELSS should be
|
||
SPIDEV_CONTACTLESS.
|
||
- STM32F103-Minumum: Fix a BUG when reading from output pin. We need
|
||
a different read_ops to read from output pin. This patch fixes the
|
||
issue. From Alan Carvalho de Assis.
|
||
- STM32F103-Minumum: Use separated read_ops for GPIO interrupt pins.
|
||
From Alan Carvalho de Assis.
|
||
- STM32F103-Minumum: Fix compiler error in MCP2415 logic.
|
||
- STM32F746G-DISCO: Fix for compilation of STM32F746G-DISCO. From Ivan
|
||
Ucherdzhiev.
|
||
- STM32F746G-DISCO: Fix for stm32f746g-disco board for button support
|
||
with interrupt. This change is tested with buttons app example and it
|
||
is working with interrupts (signals). I tried the test with polling
|
||
but at this point it doesn't work. From Ivan Ucherdzhiev.
|
||
|
||
* Build System
|
||
|
||
- Fix -Werror=implicit-fallthrough on gcc7. From Julien Lecoeur.
|
||
- configs/Board.mk: Remove comment form end of line. In windows native
|
||
build, it appears to be trying to make that an extra parameter to the
|
||
AR command. From Jeff.
|
||
- configs/Board.mk: Remove quotes from CONFIG_ARCH_FAMILY. Causes
|
||
problems with Windows native build. From Jeff.
|
||
- Makefile.win would only create uboot images for ARM. MIPS support
|
||
also needed. From Lwazi Dube.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- C++: Fix C++ __guard implementation for ARM. The standard C++ ABI
|
||
that most platforms follow defines __guard to be 64 bits. The existing
|
||
implementation of libxx_cxa_guard.cxx follows this. However, the
|
||
32-bit ARM C++ ABI defines it as 32 bits instead, and changes the
|
||
meaning slightly so only the lowest bit is used. This matters because
|
||
GCC creates guard symbols without regards to what libxx_cxa_guard.cxx
|
||
says. So on ARM, gcc allocates 4 bytes, but __cxa_guard_release
|
||
writes 8 bytes, zeroing out another unlucky variable nearby. Fix it
|
||
by special-casing 32-bit ARM in libxx_cxa_guard. From Jim Paris.
|
||
- C++: In cwchar it uses CONFIG_LIBC_WCHAR to only export the wc/mb
|
||
functions. When a build does not want to use wide or multibyte char
|
||
CONFIG_LIBC_WCHAR is not set. Therefore we should to only export the
|
||
wc/mb functions when defined. Regardless of the stat of
|
||
CONFIG_LIBC_WCHAR the non mb/wc definitions such as mbstate_t,
|
||
wint_t, wctype_t need to be exported. From David Sidrane.
|
||
- C Library: Fix an error in mkstemp() the could result in an infinite
|
||
loop. From Alan Carvalho de Assis.
|
||
- C Library: (1) Fix an error in mkstemp() the could result in an
|
||
infinite loop. (2) Fix for wrong output in some cases. For Example:
|
||
(a) input: "FILEXX", output: "FILE00" and repeats same output for
|
||
further invocations of mkstemp(). But, the ouput has to be FILE01,
|
||
FILE02, ...., FILEZZ. (b) input: "FILEXXXXXX", output: "FILE100000",
|
||
for next invocation "FILE200000" and so on. But it's good, if the
|
||
ouput goes like FILE000001, FILE000002, ..., FILE000101, ... From
|
||
Lokesh B V.
|
||
- C Library: gethostbyname_r: Fix check for space in buffer.
|
||
- C Library: inet_ntop() was printing negative values for fields >127.
|
||
- Math Library: Fix wrong ouput in modf() API. The sign of integral
|
||
part given by the modf() should be same as sign of input. But for
|
||
inputs between 0 and 1, the sign of integral part was not same as
|
||
sign of input. From Lokesh B V.
|
||
- Math Library: Fix wrong ouput in ceil() API. Ex:for input x = 1.0,
|
||
the output should be 1.0, but the ouput was 2.0. From Lokesh B V.
|
||
|
||
* Tools
|
||
|
||
- tools/testbuild.sh: Fix missing $ before variable name.
|
||
- tools/mkdeps.c: Eliminate a warning. MAX_PATH may already be defined
|
||
in included system files. From Jeff.
|
||
|
||
* Applications: apps/
|
||
|
||
- All apps/ Makefiles: Add .PRECIOUS: apps/libapps.a to every
|
||
Makefile. Hopefully this will end awkward problems when you Control-C
|
||
out of a build and libapps.a is deleted.
|
||
- platform/Makefile: More attempts to fix for Windows native build.
|
||
Backslash as a delimiter causes problems in pattern subsitutions.
|
||
|
||
* NSH: apps/nshlib:
|
||
|
||
- NSH network initialization: Fix some ieee 802.15.4 initialization
|
||
logic. It should not set the saddr or panid; those cannot be
|
||
hard-coded but must come from the coordinator. Re-factor a function
|
||
that has gotten too big and too complex. Do not set the IP address
|
||
for 6loWPAN. The 6loWPAN stack uses IP address that derive from the
|
||
ieee 802.15.4 addressing and cannot be (safely) configured by the user.
|
||
- NSH Library: Fix copy-paste typo in nsh_usbconsole.c. From Oleg
|
||
Evseev.
|
||
- NSH Library: fix size of 6LoWPAN extended address.
|
||
- NSH Library: Fix build break in nsh_command.c with IPv4/IPv6 dual
|
||
stack. From Masayuki Ishikawa.
|
||
- NSH Library: Correct parsing of ifconfig so that you can specify the
|
||
HW address without specifying the IP address.
|
||
|
||
* Examples/Tests: apps/examples:
|
||
|
||
- examples/smart: Fix some compilation errors. Obviously this test has
|
||
not been used in a LONG time.
|
||
- examples/udp: Renaming some files to prevent name collision in
|
||
libapps.a. Fix naming of a configuration setting.
|
||
- examples/nettest: Renaming some files to prevent name collision in
|
||
libapps.a
|
||
- examples/nximage: Remove unused global variable.
|
||
- examples/nsh: Remove APPNAME, PRIORITY, and STACKSIZE settings from
|
||
Makefile to avoid showing nsh in Builtin Apps. From Masayuki Ishikawa.
|
||
|
||
* Network Utilities: apps/netutils:
|
||
|
||
- netutils/tftpc: Missing header file causes errors in some
|
||
configurations.
|
||
- netutils/tftpc: TFTPC depends on CONFIG_NET_IPv4.
|
||
- netutils/netlib: Fixes to work when only USRSOCK is enabled.
|
||
- netutils/netlib: Fix netlib_nodaddrconv() so that its return type is
|
||
the same as other address conversion functions.
|
||
- netutils/netlib: If only PF_IEEE802154 socket family is enabled, then
|
||
must use SOCK_DGRAM.
|
||
- netutils/ftpc: Fix some memory leaks. From Boris Astardzhiev.
|
||
- netutils/thttpd: Fix a malformed if condition detected by GCC 6.x.x.
|
||
- netutils/dhcpd: Prevent buffer overflow in dhcpd_addoption. offset
|
||
represents distance from start of option buffer. So this should be
|
||
changed current option pointer minus start of buffer. From EunBong
|
||
Song.
|
||
|
||
* Wireless Utilities: apps/wireless:
|
||
|
||
- wireless/ieee802154/i8sak: Need to increment the next_saddr after
|
||
each successful association.
|
||
|
||
* System Utilities (apps/system)
|
||
|
||
- correct copy-paste typo in comments in composite_main.c From Oleg
|
||
Evseev.
|
||
- system/dhcpc: The DHCPC renew command did not build correctly due to
|
||
naming problems. Noted by Masayuki Ishikawa.
|
||
- system/dhcpc: Fix warning about renew_main.o appear twice in rule.
|
||
|
||
* Tools (apps/tools):
|
||
|
||
- tools/mkkconfig.bat: Use %cd% instead of %~dp0 for usage of APPSDIR
|
||
in this batch file.
|
||
- tools/mkkconfig.bat: Remove quotes in echo. These were begin
|
||
Echo'ed and generating double quots in the output. From Jeff.
|
||
- Windows build fixes: tools/mkkconfig.bat - switch APPSDIR path to
|
||
use forward slashes for kconfig-frontends. interpreters/ficl -
|
||
Reorder some targets that causes GNUwin32 make to behave badly. From
|
||
Jeff.
|
||
|
||
NuttX-7.23 Release Notes
|
||
------------------------
|
||
|
||
The 123rd release of NuttX, Version 7.23, was made on December 4, 2017,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.23.tar.gz and
|
||
apps-7.23.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/nuttx/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core OS:
|
||
|
||
- sem_open() should return SEM_FAILED on any failures. This is change
|
||
in the POSIX specification since the original sem_open() was written
|
||
so many years ago.
|
||
- exec(): The non-standard interface exec() is now enshrined as a
|
||
official NuttX API. I really dislike doing this but I think that
|
||
this is probably the only want to load programs in the protected
|
||
mode. It is currently used by some example code under apps/ that
|
||
generate their own symbol tables for linking. Other file execution
|
||
APIs relay on a symbol table provided by the OS. In the protected
|
||
mode, the OS cannot provide any meaning symbol table for execution
|
||
of code in the user-space blob so that is they exec() is really
|
||
needed in that build case. And, finally, the interface is
|
||
completely useless and will not be supported in the KERNEL build
|
||
mode where the contrary is true: An application process cannot
|
||
provide any meaning symbolic information for use in linking a
|
||
different process.
|
||
- OS Internal Functions: Rename many OS internal functions so it is
|
||
clear that they are not part of the application interface. All
|
||
internal functions with the sem_* prefix became nxsem_*, sig* become
|
||
nxsig_*, mq_* become nxmq_*, etc.
|
||
- Cancellation Points: Add new cancellation point interface,
|
||
check_cancellation_point().
|
||
- Signals: Add logic to wake up a thread that is waiting on a signal
|
||
if it is canceled.
|
||
- sigtimedwait(): Add logic to suppress the wait if there is a
|
||
pending cancellation.
|
||
- clock_nanosleep(): Implement clock_nanosleep(). nanosleep() is now
|
||
reduced to a libc wrapper around clock_nanosleep().
|
||
- task_delete(): Do not permit user applications to delete kernel
|
||
threads.
|
||
- kthread_create(): Rename kernel_thread() to kthread_create() for
|
||
better naming consistency with task_create() and kthread_delete().
|
||
- boardctl(): Remove the BOARDIOC_GRAPHICS_SETUP command.
|
||
- TCB: Move POSIX thread specific data from pthread TCB to common TCB
|
||
structure. This change allows using pthread_getspecific and
|
||
pthread_setspecific from main thread. Patch also enables using
|
||
pthread data with config option CONFIG_DISABLE_PTHREAD=y. From Jussi
|
||
Kivilinna.
|
||
- mm: Remove the CONFIG_GRAN_SINGLE configuration option. It adds no
|
||
technical benefit (other than some minor reduction in the number of
|
||
interface arguments) but adds a lot of code complexity. Better
|
||
without it.
|
||
- mm: Add a function to get information about the state of the
|
||
granule allocator. This is the moral equivalent of mallinfo().
|
||
|
||
* File Systems/Block and MTD Drivers
|
||
|
||
- MT25Q Serial FLASH: Add support for Micron MT25Q series MT25Q128.
|
||
From Sebastien Lorquet.
|
||
- MX35LFxGE4AB: Add an MTD driver for Macronix MX35LFxGE4AB serial
|
||
NAND flash. From Ekaterina Kovylova.
|
||
- FileMTD: Add block device MTD interface. Block MTD interface
|
||
allows using block device directly as MTD instead of having to use
|
||
file-system in between. NOTE that this provides the opposite
|
||
capability of FTL which will let you use an MTD interface directly
|
||
as a block device. From Jussi Kivilinna.
|
||
- BCH: The character driver to block device access now supports an
|
||
IOCTL to get the geomtry of the underlying block device.
|
||
- mkfatfs: Remove mkfatfs from the OS. This is a user-space
|
||
application and belongs in apps, not in the OS.
|
||
- procfs: Implements procfs /proc/fs/blocks and /proc/fs/usage files,
|
||
replacing the NSH df command. Also implements procfs /proc/fs/mount
|
||
file, replacing the NSH mount command when there are no arguments.
|
||
- procfs: Add /proc/meminfo. This is an alternative way to get the
|
||
information that was previoulsy available in apps/system/free.
|
||
apps/system/free was removed beause it made illegal calls into the
|
||
OS violating the portable interface. This new procfs entry provides
|
||
the same information with no such violation. it also provides
|
||
information about the kernel heap (formerly /proc/kmm), about the
|
||
use of program memory(formerly /proc/progmem). And also information
|
||
for the page table usage in the KERNEL build.
|
||
- UserFS: Adds the UserFS client and of the UserFS feature in
|
||
general. Initially used Unix domain local sockets instead of
|
||
message queues. Easier to transfer big data in local sockets than
|
||
message queues. However, that lead to certain inescapable deadlock
|
||
conditions So the IPC was converted to UDP LocalHost loopback
|
||
sockets. The problem with the local sockets is that they do require
|
||
operations on the top level psuedo-file system inode tree. That
|
||
tree must be locked during certain traversals such as enumerate
|
||
mountpoints or enumerating directory entries. This conversion is
|
||
unfortunate in the sense that Unix local domain sockets are
|
||
relatively lightweight. LocalHost UDP sockets are much heavier
|
||
weight since they rely on the full UDP stack.
|
||
|
||
* Graphics/Display Drivers:
|
||
|
||
- Framebufer character driver: Add framebuffer character device driver.
|
||
- LCD Framebuffer: Add support for a generic front-end that will
|
||
convert any LCD driver into a framebuffer driver.
|
||
- Framebufer character driver: Include support for LCD drivers that
|
||
use a simulated framebuffer and must receive explicit notification
|
||
when there is an update to a region in the framebuffer.
|
||
- LCD: Make LCD driver configuration indepently selected from NX
|
||
graphics configuration. This makes things awkward and loses some
|
||
error checking but is a necessary step in order to make LCD drivers
|
||
usable when the NX graphics system is disabled.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- Networking: Add implementation of logic for SIOCGIFCONF and
|
||
SIOCGLIFCOF IOCTL commnds.
|
||
- Network IOCTLs: Add support for the SIOCGIFBRDADDR ioctl() command.
|
||
- Routing Tables: Permit IPv4 and IPv6 routing tables to be of
|
||
different sizes.
|
||
- Routing Tables: Adds support for read-only routing tables. Prior
|
||
to this change, routing tables were only support in RAM and had to
|
||
be initialized with explicit logic to add the necessary routes to
|
||
the routing table. With this change, routes may be defined in the
|
||
pre-initialized, read-only routing table provided by the
|
||
board-specific logic.
|
||
This would be particularly useful, for example, in the case where
|
||
there is only a single network adaptor and you want all output
|
||
packets to go to the single adaptor in all cases. So for that
|
||
behavior you could add a read-only routing table to the
|
||
board-specific long that contains a single entry, the default route:
|
||
0.0.0.0/0.
|
||
- Routing Tables. Added support for routing tables in files in a file
|
||
system. This might be useful for customized, per-unit routing
|
||
tables. There are two issues with it however:
|
||
1. Reading from file system on a per packet basis could be slow. I
|
||
think it probably should have a small, in-memory cache of most
|
||
frequently used routes for good problem.
|
||
2. Currently the delroute logic is disabled due to a problem with
|
||
the design. NuttX does not currently support truncate().
|
||
Therefore, it is not possible to delete entries from the routing
|
||
table file. In this current implementation, that leaves the last
|
||
entry intact at the end of the file. An alternative design
|
||
might include a tag on each record to indicate if the record is
|
||
valid or not. That would work but would add complexity to the
|
||
other routing table functions.
|
||
- Routing Tables: Add support for an in-memory routing table cache in
|
||
order to improve performance when the routing table is retained in a
|
||
file. The cache holds the most recently used routing table entries
|
||
and so can eliminate some file access. Flush the in-memory cache
|
||
when any entry is deleted from the routing table. When a router
|
||
matching an IP address is found, add the routing table entry to the
|
||
cache.
|
||
- Routing Tables: Add logic to mark a route as most-recently-used in
|
||
the route cache.
|
||
- ICMP: This change adds support for semi-standard IPPROTO_ICMP
|
||
AF_INET datagram sockets. This replaces the old ad hoc, nonstandard
|
||
way of implementing ping with a more standard, socket interface.
|
||
- ICMPV6: This commit adds support for semi-standard IPPROTO_ICMP6
|
||
sockets. This is a replacement for the non-standard ICMPv6 ping
|
||
support that violated the portable POSIX OS interface.
|
||
- ICMPv6: Add option to manually specify router prefix in router
|
||
advertisement message. From Sakari Kapanen.
|
||
- Local Sockets: This commit modifies the Unix domain local socket
|
||
design. Local sockets are built on top of pipes. The Local socket
|
||
implementation maintained file descriptors to interrupt with the
|
||
pipes. File descriptors have the bad property that they are valid
|
||
only while running on the thread within the task that created the
|
||
local socket.
|
||
As a policy, all internal OS implementations must use "detached"
|
||
files which are valid in any context and do not depend on the
|
||
validity of a file descriptor at any point in time. This commit
|
||
converts the usage of file descriptors to detached files throughout
|
||
the local socket implementation.
|
||
|
||
* Wireless Networking/Wireless Drivers:
|
||
|
||
- IEEE-802154: Adds support for receiving MAC events via IOCTL through
|
||
socket interface. From Anthony Merlino.
|
||
- IEEE-802154: Simplifies notify() and rxframe() calls to a single
|
||
notify() call. dataind's and all other "notifs" are now "primitives"
|
||
which aligns with standard terminology From Anthony Merlino.
|
||
- MAC802154: Add support for getting promiscuous mode state From
|
||
Anthony Merlino.
|
||
- MAC802154 Character Driver: When in promiscuous mode, the char
|
||
driver sends the entire frame, including the MAC header. This
|
||
change adds an offset field indicating the header-payload boundary.
|
||
It is set to 0 when not in promiscuous mode as the header is not
|
||
passed to the application
|
||
- 6LoWPAN: Remove CONFIG_NET_6LOWPAN_FRAMELEN. In this case where
|
||
multiple radios are supported, this may not be a constant. 6LoWPAN
|
||
now always queries the driver to get the maximum frame length.
|
||
- 6LoWPAN: Support sending to a router that is on-link and may be
|
||
able to forward the packet for us if the destination is not
|
||
reachable directly. From Anthony Merlino.
|
||
- XBee: Adds XBee S2C (802.15.4 firmware) support. XBee driver
|
||
emulates mac802154 interface. From Anthony Merlino.
|
||
|
||
* Other Common Device Drivers:
|
||
|
||
- PowerLED: Add upper-half driver for high power LED driver (powerled)
|
||
From Mateusz Szafoni.
|
||
- RTC Driver: Add periodic alarms to upper and lower halves. From
|
||
Juha Niskanen.
|
||
- Pipes: Fix writing large buffers not triggering POLLIN for reader
|
||
poll. From Jussi Kivilinna.
|
||
- USB CDC/ACM Device: Add support for RX flow control to the CDC/ACM
|
||
driver.
|
||
- USB CDC/ACM Device: Add support for flow control TERMIOs in CDC/ACM
|
||
driver.
|
||
- USB RNDIS Device: Add RNDIS-over-USB driver. From Sakari Kapanen
|
||
with added Hi-Speed support from Masayuki Ishikawa.
|
||
- Loop Driver: Don't use file descriptors... Use the internal file
|
||
system interfaces so that the loop device can be shared across
|
||
threads.
|
||
- APA102 LED controller: Add driver for APA102 LED controller. These
|
||
LEDs are used on LED Strips and are controlled over SPI.
|
||
- INA219. Add INA219 Driver. The INA219 is a combined voltage and
|
||
current sensor that can measure up to 26 volts and a current that
|
||
depends on an external shunt resistor. Connection happens via
|
||
i2c/smbus and the chip features a power supply rail that is
|
||
independent from the measured voltage, so it can measure low
|
||
voltages. Right now it measures bus voltage and current, and does
|
||
not use the internal calibrated current reading, nor the available
|
||
power measurement. From Sebastien Lorquet.
|
||
- PCA9555: The IRQ subsystem now supports passing a void * parameter
|
||
to IRQ handlers. Use that method to support multiple PCA9555
|
||
devices, by passing a pointer to the device to the board defined irq
|
||
handler. Now the CONFIG_ for multiple PCA devices just allocates
|
||
device structures dynamically instead of statically when not enabled.
|
||
The same interrupt handler is entered with the device structure
|
||
parameter in all situations, multiple or single PCA. One should
|
||
still be careful if multiple PCA devices share the same IRQ. From
|
||
Sebastien Lorquet.
|
||
- APDS-9960: Add driver for the APDS-9960 gesture sensor. From Alan
|
||
Carvalho de Assis.
|
||
- MAX7219: Add support to MAX7219 LED Matrix as LCD interface. From
|
||
Alan Carvalho de Assis.
|
||
- WM8774: Add WM8774 audio DAC support. From Masayuki Ishikawa.
|
||
- Nunchuck: Add Nintendo Wii Nunchuck driver. From Alan Carvalho de
|
||
Assis.
|
||
|
||
* Simulation
|
||
|
||
- Simulation: Add a configuration for non-graphical testing of the
|
||
frambuffer character driver using apps/example/fb.
|
||
- Simulation: Add a configuration for testing the UserFS using
|
||
apps/examples/userfs.
|
||
|
||
* Broadcom BCM2708:
|
||
|
||
- BCM2708: Add enough infrastructrue (more stubs) to get a clean
|
||
compilation of the Pi Zero configuration (with many undefined things
|
||
at link time). This includes several register definition header
|
||
files (some from Alan Carvalho de Assis), basic interrupt handling
|
||
logic, boot-up files, GPIO support, tickless timer, build and
|
||
configuration logic
|
||
|
||
* Broadcom BCM2708 Boards:
|
||
|
||
- Raspberry Pi Zero. Basic board support at configs/pizero. Untested
|
||
in this release and still some remaining issues.
|
||
|
||
* Infineon XMC4xxx Boards:
|
||
|
||
- XMC4500-Relax: Add config for UART3 on RXD P0.0 and TXD P0.1 pins.
|
||
From Alan Carvalho de Assis.
|
||
|
||
* NXP Freescale LPC17xx Boards:
|
||
|
||
- Open1788: Add initialization of Framebuffer driver. Add
|
||
configuration for testing the framebuffer driver.
|
||
|
||
* NXP Freescale LPC43xx Drivers:
|
||
|
||
- LPC43xx: Add LPC43xx CAN driver. From Alexander Vasiljev.
|
||
|
||
* NXP Freescale LPC43xx Boards:
|
||
|
||
- MCB1700: Add support for Keil MCB1700 board. From Alan Carvalho de
|
||
Assis.
|
||
- Open1788: Add support for the discrete joystick driver.
|
||
- Open1788: Add a configuration for testing pdcurses with discrete
|
||
joystick.
|
||
|
||
* On Semiconductor LC823450
|
||
|
||
- LC823450: Add ADC driver and watchdog drivers. From Masayuki
|
||
Ishikawa.
|
||
- LC823450: Add IPL2 support. From Masayuki Ishikawa.
|
||
- LC823450: Add I2S support. From Masayuki Ishikawa.
|
||
- LC823450: Add auto LED for CPU activity. From Masayuki Ishikawa.
|
||
|
||
* On Semiconductor LC823450 Boards
|
||
|
||
- LC823450-XGEVK: Enable ADC and watchdog driver. From Masayuki
|
||
Ishikawa.
|
||
- LC823450-XGEVK: Add IPL2 support. From Masayuki Ishikawa.
|
||
- LC823450-XGEVK: Add WM8774 support. From Masayuki Ishikawa.
|
||
- LC823450-XGEVK: Add auto LED support. From Masayuki Ishikawa.
|
||
- LC823450-XGEVK: Enable CONFIG_SMP for audio. From Masayuki Ishikawa.
|
||
- LC823450-XGEVK: Add rndis configuration. From Masayuki Ishikawa.
|
||
|
||
* STMicro STM32:
|
||
|
||
- ARM Kconfig: Add support for classic ARM11 architecture selections.
|
||
- STM32 Tickless: Removes the restriction to 16-bit counts when a
|
||
32-bit timer is used for tickless operation on the stm32. As it
|
||
was, the restriction is very limiting, especially if one wants high
|
||
granularity and large achievable intervals and has the hardware
|
||
(namely the 32bit timers) available. From Rajan Gill.
|
||
- STM32 L4 Kconfig: Add some L486 and L496 chips. From Juha Niskanen
|
||
- STM32 F7: Adds architecture support for the STM32 F72x and F73x
|
||
families. From Bob Feretich.
|
||
- STM32 F7: Allow changing voltage output scaling setting and
|
||
prevents enabling over-drive mode for low frequencies (STM32 F74xx,
|
||
75xx, 76xx, 77xx). From Jussi Kivilinna. Changes replicated for
|
||
the 72xx and 73xx families.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 ADC: Added support for ADC's IO_ENABLE_TEMPER_VOLT_CH ioctl
|
||
on STM32F10XX and STM32F20XX. From Dmitriy Linikov.
|
||
- STM32 Wakeup: Add logic for enabling wakeup pins. From Oleg Evseev.
|
||
- STM32 PWR: Adds stm32_pwr_getsbf and stm32_pwr_getwuf functions
|
||
that return the standby flag and the wakeup flag PWR power
|
||
control/status register. From Oleg Evseev.
|
||
- STM32 HRTIM: Sdd support for capture, chopper, deadtime and dump
|
||
registers. From Mateusz Szafoni.
|
||
- STM32 RTC: Canceling an alarm marks it as inactive. From Juha
|
||
Niskanen
|
||
- STM32 Serial: Add interface to get uart_dev_t by USART number,
|
||
stm32_serial_get_uart(). From Juha Niskanen.
|
||
- STM32 F33xx ADC: Initial ADC support for the STM32F33XX. From
|
||
Mateusz Szafoni.
|
||
- STM32 F33xx ADC: Add ADC DMA support to STM32F33 configuration. From
|
||
Mateusz Szafoni.
|
||
- STM32 L4 ADC: Port analog watchdog ioctl commands from the Motorola
|
||
MDK. From Juha Niskanen
|
||
- STM32 L4 ADC: Add option for routing ADC data to DFSDM, fix DFSDM
|
||
DMA. From Juha Niskanen
|
||
- STM32 L4 ADC: Add PM hooks from Motorola MDK
|
||
- STM32 L4 FLASH: Add function for modifying device option bytes,
|
||
From Juha Niskanen.
|
||
- STM32 L4 DFSDM: Add peripheral support for digital filters for
|
||
sigma-delta ADCs. Initial version. Timer trigger support is not
|
||
completed and there is some issue with DMA. From Juha Niskanen.
|
||
- STM32 L4 I2C: Port then STM32 F7 I2C driver to STM32 L4. STM32L4 I2C
|
||
driver is in work-in-progress state (plentiful of TODOs and
|
||
#warnings) and lags many features found in more up-to-date STM32 I2C
|
||
drivers. The peripheral on STM32F7 and STM32L4 are identical except
|
||
for L4's 'wakeup from stop mode' flag and STM32F7's I2C driver is in
|
||
more 'ready to use' state. The I2C clock configuration is kept the
|
||
same as before (I2CCLK = PCLK1 80 Mhz) instead of switching to
|
||
STM32F7 arch default that is I2CCLK=HSI. Further work would be to
|
||
add configuration option for choosing I2C clock source instead of
|
||
current hard-coded default. From Jussi Kivilinna.
|
||
- STM32 L4 RTC: Add up_rtc_getdatetime_with_subseconds
|
||
- STM32 L4 RTC: Change maximum alarm time from 24h to one month. From
|
||
Juha Niskanen.
|
||
- STM32 L4 RTC: Add support for periodic interrupts with
|
||
(experimental) CONFIG_RTC_PERIODIC. From Juha Niskanen.
|
||
- STM32 L4 SDMMC: Add support for an SDMMC driver. From Miha Vrhovnik.
|
||
- STM32 L4 Serial: Suspend serial for Stop mode. From Juha Niskanen.
|
||
- STM32 L4 Serial/PM: STM32L4 serial PM interface improvements:
|
||
Check rx/tx buffers for pending data in pmprepare. Remove adhoc PM
|
||
interfaces and move serial suspend functionality behind CONFIG_PM.
|
||
From Jussi Kivilinna.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F103-Minimum: Add board support for APA102 driver. From Alan
|
||
Carvalho de Assis.
|
||
- STM32F103-Minimum: Add ADC support on stm32f103-minimum board.
|
||
From Alan Carvalho de Assis.
|
||
- STM32F103-Minimum: Add support for LM75 in the stm32f103-minimum
|
||
board. From Alan Carvalho de Assis.
|
||
- STM32F103-Minimum: Add an ADPS-9960 example configuration. From
|
||
Alan Carvalho de Assis.
|
||
- STM32F103-Minimum: Add board support for MAX7219 LED Matrix
|
||
controller. From Alan Carvalho de Assis.
|
||
- STM32F103-Minimum: Add USB MSC device initialzation to
|
||
stm32f103-minimum. From Alan Carvalho de Assis.
|
||
- STM32F103-Minimum: Add framebuffer driver initialization for
|
||
stm32f103-minimum board. From Alan Carvalho de Assis.
|
||
- STM32F103-Minimum: Add Nunchuck board support for
|
||
stm32f103-minimum board. From Alan Carvalho de Assis.
|
||
- STM32F4 Discovery: Add support for JLX12864G display on STM32F4
|
||
Discovery board. From Alan Carvalho de Assis.
|
||
- Viewtool-STM32F107: Add support to auto-mount the procfs file system.
|
||
- Photon: Support SPI1 and SPI3. From Anthony Merlino.
|
||
- STM32F334-DISCO: Add lower half driver for high power LED
|
||
(powerled). From Mateusz Szafoni.
|
||
- STM32F334-DISCO: Add flash mode support for powerled driver. From
|
||
Mateusz Szafoni.
|
||
- STM32F334-DISCO: Add powerled example configuration. From Mateusz
|
||
Szafoni.
|
||
- STM32F334-DISCO: Add lower-half driver for SMPS (buck-boost onboard
|
||
converter). From Mateusz Szafoni
|
||
- Nucleo-F334R8: Add logic for zero latency high priority interrupts
|
||
example. From Mateusz Szafoni.
|
||
- Nucleo-F334R8: Add highpri example configuration. From Mateusz
|
||
Szafoni.
|
||
- STM32 F4 Discovery: Added support for the LIS3DSH accelerometer on
|
||
the STM32F4 Discovery rev. C boards. From Florian Olbrich.
|
||
- STM32 F4 Discovery: ROMFS for STM32F4 Discovery board. From Tomasz
|
||
Wozniak.
|
||
- STM32 F4 Discovery: Add a USB MSC configuration. From Alan Carvalho
|
||
de Assis.
|
||
- STM32 F4 Discovery: RNDIS support on STM32F4Discovery + DM-STF4BB.
|
||
NOTE: MAC address for the host side starts 0xaa. This assignment
|
||
scheme should be fixed later. From Masayuki Ishikawa.
|
||
- STM32 F4 Discovery: Add STM32F4 Discovery board support for
|
||
Nunchuck joystick. From Alan Carvalho de Assis.
|
||
- STM3240G-EVAL: Add a configuration for testing the Framebuffer
|
||
character driver using the LCD framebuffer front.
|
||
- STM3240G-EVAL: Mount procfs if enabled.
|
||
- STM3240G-EVAL: Add support for pdcurses and the pdcurses demo
|
||
programs in the 'fb' configuration.
|
||
- Clicker2-STM32: Adds SD card, automount, and syslog file
|
||
support and fixes a few minor issues. From Anthony Merlino.
|
||
- Clicker2-STM32: Adds support for USB RNDIS device. From Anthony
|
||
Merlino.
|
||
- Olimex STM32-H407: Add serial support on the on-board UEXT
|
||
connector. Add USART6 for UEXT connector. Add nsh_uext
|
||
configuration and README update. From Jan Pobr<62>slo.
|
||
- Nucleo-F410RB: Add support for the nucleo-F410RB board. From
|
||
Gwenhael Goavec-Merou.
|
||
- STM32F429i-DISCO: Add framebuffer driver initialization. Add a
|
||
framebuffer (fb) configuration.
|
||
- STM32F429i-DISCO: Add logic to auto-mount procfs. Enable procfs in
|
||
all configurations that use NSH.
|
||
- STM32F429i-DISCO: Enable support for the STMPE811 touchscreen
|
||
controller. Enable touchscreen and also the touchscreen testa at
|
||
apps/examples/touchscreen in the fb configuration.
|
||
- STM32F429i-DISCO: Convert NxWM configuration to use LTDC
|
||
framebuffer driver instead of SPI serial. Also reduce number of
|
||
layers from 4 to 1 in fb configuration. Only one layer is used.
|
||
- STM32L476-MDK: Add support for the on-board LEDs.
|
||
- Nucleo-L496ZG: Add DFSDM initialization. From Juha Niskanen
|
||
- Nucleo-L496ZG: Add support for SDMMC driver. From Miha Vrhovnik.
|
||
- Nucleo-L496ZG: Enable I2C4 bus with i2ctool in NSH configuration.
|
||
From Jussi Kivilinna.
|
||
- Nucleo-L496ZG: Make HSE on Nucleo-L496ZG default to enable USB.
|
||
From Miha Vrhovnik.
|
||
- Nucleo-F746ZG: Use the serial console over /dev/ttyACM0 by default.
|
||
The Nucleo-F746ZG doesn't come with Arduio RS-232 shield, then it is
|
||
better to use the serial over the /dev/ttyACM0 that is created
|
||
automatically when the board is plugged in the computer. From Alan
|
||
Carvalho de Assis.
|
||
- Nucleo-144: Adds support for the Nucleo-144 boards with
|
||
STM32F722ZE. From Bob Feretich.
|
||
|
||
* ZiLOG Z80
|
||
|
||
- z80/include: compiler.h, limits.h, types.h: Update SDCC/z80 files
|
||
to include support for long long, inline, __FILE__, and __func__.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- include/: Add stdnoreturn.h. Holds definitions for the C11
|
||
noreturn keyword. Applies to C too.
|
||
- include/netinet/tcp.h: Add trivial standard tcp.h header file.
|
||
- libc: Add support for readv() and writev().
|
||
- libc: Adds tcflow().
|
||
- libc: Add support for sigwait().
|
||
- libnx: Changes to allow the font subsystem to be built without
|
||
enabling the entire graphics system (CONFIG_NX). Adds
|
||
CONFIG_NXFONTS and CONFIG_NXGLIB. Needed to duplicate some Kconfig
|
||
setting for NXFONTs if it can be configured and built independently
|
||
of NX.
|
||
|
||
* Tools:
|
||
|
||
- tools/configure.sh: Add special support so that you can start with a
|
||
windows native configuration and install on a different host (and
|
||
vice versa).
|
||
- tools/configure.c: Duplicate new functionaity added to configure.sh.
|
||
- tools/configure.sh: This commit adds a -m option for macOS. For
|
||
anyone not aware, Apple renamed OSX to macOS recently; thus the 'm'
|
||
instead of 'o'. This does not change the other uses of *_OSX to
|
||
macOS. From jeditekunum.
|
||
- tools/configure.c: Update functionality to match last change to
|
||
tools/configure.sh.
|
||
|
||
* NSH: apps/nshlib:
|
||
|
||
- apps/nshlib: mount command no long uses the non-standard OS
|
||
interface foreach_mountpoint(). Now simply cats /proc/fs/mount
|
||
when there are no arguments to the mount command.
|
||
- apps/nshlib: df command no long uses the non-standard OS interface
|
||
foreach_mountpoint(). Now simply cats /proc/fs/blocks or
|
||
/proc/fs/usage.
|
||
- apps/nshlib: The free commands no longer used mallinfo() to get
|
||
the state of the use heap. Two reasons: That is not useful
|
||
information in the kernel build. And (2) there are other memory
|
||
resources of interest in other configurations such as the Kernel
|
||
heap in PROTECTED and KERNEL builds, and the prog mem uses when
|
||
FLASH is used to hold modifiable data. The free command has been
|
||
extended to just dump the content of procfs entries and to include
|
||
all of these other memory resources of the procfs entries are
|
||
available.
|
||
|
||
* Examples/Tests: apps/examples:
|
||
|
||
- apps/examples/fb: Add a simple test for the framebuffer character
|
||
driver..
|
||
- apps/examples/ostest: sem_open() now returns SEM_FAILED in the
|
||
event of a failure.
|
||
- examples/ostest: Extend cancellation test to make sure that
|
||
cancelable threads waiting on a message queue or on a signal can be
|
||
canceled.
|
||
- Added a simple reader example for the LIS3DSH acceleration sensor
|
||
on STM32F4Discovery. From Florian Olbrich.
|
||
- apps/examples/apa102: Add a Rainbow example for APA102 LED Strip.
|
||
From Alan Carvalho de Assis.
|
||
- apps/examples/flowc: Add a simple test of serial hardware flow
|
||
control.
|
||
- Add powerled driver example. From Mateusz Szafoni.
|
||
- apps/examples/ina219: A simple infinite loop that polls the INA219
|
||
sensor and displays the measurements. From Sebastien Lorquet.
|
||
- apps/examples/alarm: Add options for reading alarm value and
|
||
canceling it. From Juha Niskanen.
|
||
- Add -n samples to lm75 app and replace Centigrade with Celsius.
|
||
From Alan Carvalho de Assis.
|
||
- apps/examples/adps9960: Add ADPS-9960 example. From Alan Carvalho
|
||
de Assis.
|
||
- apps/examples/obd2: Add OBD2 example application. From Alan
|
||
Carvalho de Assis.
|
||
- apps/examples/userfs: Add a test case for verifying UserFS.
|
||
- apps/examples/smps: add SMPS driver example. From Mateusz Szafoni.
|
||
- apps/examples/pdcurses: Bring in pdcurses demos and make them
|
||
conform to the NuttX coding style.
|
||
- apps/examples/pdcurses: Add a very simple example that just shows
|
||
the entire character set (7-bit only). It adapts to the size of
|
||
the framebuffer and, hence, can be used with very tiny displays.
|
||
In fact it looks really dumb on big displays.
|
||
- apps/examples/nunchuck: Add Nunchuck example application. From
|
||
Alan Carvalho de Assis.
|
||
|
||
* File System Utilities: apps/fsutils:
|
||
|
||
- apps/fsutils/mkfatfs: Move mkfatfs from the OS to here.
|
||
|
||
* Network Utilities: apps/netutils:
|
||
|
||
- apps/netutils/netlib: Add netlib_ipv6adaptor() and
|
||
netlib_ipv4adaptor().
|
||
- apps/netutils/netlib: Add helpers for reading the routing table:
|
||
netlib_read_ipv4route() and netlib_read_ipv6route().
|
||
- apps/netutils/netlib: Add new utilities netlib_ipv[4|6]router()
|
||
that can be used to determine the IP address of a router that would
|
||
be used some some destination IP address that is not locally
|
||
accessible.
|
||
- apps/netutils/ftpc: Adds support for IPv6 and fixes various
|
||
transfer issues. From Anthony Merlino.
|
||
|
||
* CANUtilities: apps/canutils:
|
||
|
||
- apps/canutils/libobd2: Add libobd2 for NuttX. From Alan Carvalho
|
||
de Assis.
|
||
|
||
* Graphics: apps/graphics:
|
||
|
||
- graphics/traveler: Convert to use the framebuffer driver.
|
||
- apps/graphics/pdcurs34: This commit brings the public domain
|
||
pdcurses library into NuttX. NuttX graphics support based on the
|
||
framebuffer character drivers has been integrated. Input is
|
||
currently limited to a discrete joystick driver.
|
||
|
||
* Wireless Utilities: apps/wireless:
|
||
|
||
- apps/wireless/ieee802154/i8sak: Adds socket interface support. You
|
||
can now use both socket or char driver to control the MAC layer.
|
||
From Anthony Merlino.
|
||
- apps/wireless/ieee802154/i8sak: Adds sniffer port option and a few
|
||
other get/set parameters. From Anthony Merlino.
|
||
- apps/wireless/ieee802154/i8sak: Changes 'notif' to 'primitive'
|
||
corresponding to the changes in the Kernel. From Anthony Merlino.
|
||
- apps/wireless/ieee802154/i8sak: Channel setting is now saved
|
||
locally, so when performing a startpan or assoc, the channel
|
||
previously set is still used, even though the MAC layer gets reset.
|
||
From Anthony Merlino.
|
||
- apps/wireless/ieee802154/i8sak: Adds ability to get/set rxonidle
|
||
setting for MAC layer. From Anthony Merlino.
|
||
- apps/wireless/ieee802154/i8shark: Adds i8shark, a sniffer "adapter"
|
||
that captures all 802.15.4 traffic, packages it into a Wireshark ZEP
|
||
packet, and sends it to a host running Wireshark From Anthony
|
||
Merlino.
|
||
|
||
* System Utilities (apps/system)
|
||
|
||
- apps/system/ping and ping6: This commit removes the ping and ping6
|
||
commands from NSH and replaces then with the apps/system/ping and
|
||
apps/system/ping6 built-in commands. The NSH ping[6] commands had
|
||
to be removed because they violated the portable POSIX OS interface.
|
||
The apps/system/png and ping6 command uses the sem-standard
|
||
IPPROTO_ICMP and IPPROTO_ICMP6 socket interfaces.
|
||
|
||
* Platform-Specific Support (apps/platform)
|
||
|
||
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:
|
||
|
||
- Task Environment Creation: Fix an error in the duplication of the
|
||
child tasks environment in the special case where the parent's
|
||
environment was created, but then all of the variables were unset.
|
||
In that case, there is still an allocation in place but the size of
|
||
the allocation is zero. This case was not being handled correctly
|
||
when a child task attempts to create its environment and inherit the
|
||
zero-size partent environment. Noted by Anthony Merlino.
|
||
- timer_create(): Fix watchdog resource leak if cannot allocate a new
|
||
timer. From Bruno Herrera.
|
||
- OS Internal Functions: Internal OS functions should not return error
|
||
information via the user errno variable: This includes functions
|
||
like file_seek(), file_read(), file_write(), etc. The complete list
|
||
is too long to duplicate here (please refer to the ChangeLog for
|
||
details).
|
||
- OS Internal Functions: Not only should internal OS functions not
|
||
modify the errno variable, they should never introduce cancellation
|
||
points: psock_connect(), psock_listen(), psock_getsockopt(), etc.
|
||
The list is too long to duplicate here (please refer to the
|
||
ChangeLog for details).
|
||
- OS Internal Functions: Create OS internal versions of many
|
||
applications functions that were used by the OS. The new versions
|
||
differ from the application interfaces in that (1) they do not
|
||
return error information via the errno variable, and (2) they never
|
||
create cancellation points. This includes new internal interfaces
|
||
like nxsem_init() that is like sem_init(), etc. There are too many
|
||
to list here (see the ChangeLog for details).
|
||
- Task Exit: task_exithook.c fails to link if signals are disabled
|
||
because was unconditionally trying to send the SIGCHLD signal to the
|
||
parent in certain configurations. Noted by Jeongchan Kim.
|
||
- memalign(): Fix heap corruption caused by using unaligned chunk
|
||
size. Unaligned nodes generated by memalign later cause heap
|
||
corruptions when nodes are shrink further (for example, 24 bytes ->
|
||
8 bytes, when alignment is 16 bytes). From Jussi Kivilinna.
|
||
- SMP: In sched/sched/sched_cpuselect.c, in order to find the cpu
|
||
with the lowest priority thread, we have to remember the already
|
||
found lowest priority. Noted by Anonymous in Issue #75.
|
||
- spinlocks: Disable local interrupts in spin_setbit() and
|
||
spin_clrbit() in order to avoid a deadlock condition. From Masayuki
|
||
Ishikawa.
|
||
- atexit()/on_exit(): Clear atexit()/on_exit() function pointer
|
||
before calling it. On most archs, up_assert() calls exit() so
|
||
without this change, if atexit() function triggers an assertion we
|
||
are in endless loop. From Juha Niskanen.
|
||
|
||
* File System/Block and MTD Drivers:
|
||
|
||
- tmpfs: Fixed directory unlocking in tmpfs_opendir. From Dmitriy
|
||
Linikov.
|
||
- fcntl(): fcntl() did not return success fail for F_SETFL. Reported
|
||
by Jussi Kivilinna.
|
||
- tcdrain(): tcdrain() was recently added to the NuttX C library.
|
||
But there is a problem. The specification of tcdrain() requires
|
||
that it be a cancellation point. In order to do this, tcdrain was
|
||
moved from the C library into the OS and the addition cancellation
|
||
point hooks were added. In non-FLAT builds, access via system calls
|
||
is also now supported.
|
||
- FS FAT: Fix hard-fault when listing contents of FAT root. From
|
||
Jussi Kivilinna.
|
||
- procfs: Correct a problem that was causing an apparent directory to
|
||
be reported as a file instead of a directory by opendir. This
|
||
happened after adding these three new procfs entries: fs/block,
|
||
fs/mount, and fs/usage. Of course, there is no directory fs in this
|
||
case, only three files that have fs/ in their relative pathnames.
|
||
The logic was detecting that fs was the name of the enty to report,
|
||
but it was then declaring that fs was a file (because fs/block is of
|
||
type file). This was fixed by adding a check for matching lenghts.
|
||
i.e., if strlen(fs) != strlen(fs/block), then report fs as a
|
||
directory instead of a file.
|
||
- procfs: Fix uptime being clse to maximum 32-bit value in certain
|
||
config. From Juha Niskanen.
|
||
|
||
* Binary Loader:
|
||
|
||
- binfmt/: Don't schedule starthook if there are no constructors.
|
||
|
||
* Graphics/Display Drivers:
|
||
|
||
- LCD: ILI9341 initialize method not permitted to set errno.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- Networking: net/netdev/netdev_ifconfig.c: Was not returning all of
|
||
the address info.
|
||
- Networking: In some cases, packets are still not sent behind the
|
||
router. I found that NuttX sends the ARP requests not to the router
|
||
but to the target. Mistake in file net/route/netdev_router.c. From
|
||
Aleksandr Kazantsev.
|
||
- SIOCGIFCONF and SIOCGLIFCONF IOCTL commands should only report on
|
||
network adatpors in the UP state.
|
||
- recvfrom(): Fix double leave_cancellation_point on error path.
|
||
From Jussi Kivilinna.
|
||
- send(): Verify that sock descriptor is valid. Fixes assertion when
|
||
using send on closed socket. From Jussi Kivilinna.
|
||
- sendto(): Remove assert check for null psock and buf input
|
||
pointers. Removes check as 'psock == NULL' altogether because that
|
||
checked for later in psock_send and psock_sendto. Change null check
|
||
for 'buf' so that it is handled same as in recvfrom.c (return
|
||
-EINVAL instead of assert). From Jussi Kivilinna.
|
||
- sockgetname() files need to include udp/udp.h and tcp/tcp.h or
|
||
otherwise NET_UDP_HAVE_STACK and NET_TCP_HAVE_STACK are undefined
|
||
and the logic is never compiled. Noted by Anthony Merlino.
|
||
- dup()/dup2(): There was a reference counting problem in the TPC
|
||
logic of net_clone(). net_clone() which is the common logic
|
||
underlying dup() and dup2() for sockets. When net_clone() calls
|
||
net_start_monitor() and net_start_monitor() returns a failure
|
||
(because the underlying TCP connection) then net_clone() must back
|
||
out the reference count on the structure. Problem noted by Pascal
|
||
Speck and this implementation of the solution is based on his
|
||
suggestion.
|
||
- close(): There was a possible recursion that could eventually
|
||
overflow the stack. The error occurred when closing the socket with
|
||
inet_close() while a socket callback was still queued. When the
|
||
socket callback was executed by devif_conn_event(), this resulted in
|
||
a call to psock_send_eventhandler() with TCP_CLOSE flag set which
|
||
then called tcp_lost_connection(). tcp_shutdown_monitor() then
|
||
called tcp_callback() again, which again called
|
||
psock_send_eventhandler(), and so on.... Noted by Pascal Speck.
|
||
Solution is also similar to a solution proposed by Pascal Speck.
|
||
- inet: Add check for protocol before handing out TCP and UDP sockets.
|
||
- IP Forwarding: Fixes typo that caused build error when IP
|
||
forwarding was enabled with CONFIG_NET_ICMPv6_NEIGHBOR enabled as
|
||
well. From Anthony Merlino.
|
||
- IP Forwarding: Do not add link layer header size to d_len inside
|
||
devif_forward(). From Anthony Merlino.
|
||
- TCP Networking: When CONFIG_NET_TCP_WRITE_BUFF=y there is a
|
||
situation where a NULL pointer may be dereferenced. In this
|
||
configuration, the TCP connection's 'semi-permanent' callback,
|
||
s_sndcb was nullified in tcp_close_disconnect. However, other logic
|
||
in tcp_lost_connection() attempt to use that callback reference
|
||
after it was nullifed. Fixed in tcp_lost_connectino() by adding a
|
||
NULL pointer change before the access. This was reported by Dmitriy
|
||
Linikov in Bitbucket Issue 72.
|
||
- UDP Broadcat: Fix some issues with regard to UDP broadcast
|
||
handling. This is Bitbucket Issue #77.
|
||
- ICMP: Fix an error in the poll logic. It was assumed that the
|
||
input parmeter pvconn was valid. It was not. Instead, the poll
|
||
logic must work like the sendto() and recvfrom() logic: It must
|
||
keep a copy of the conn structure in the private data.
|
||
- ICMPv6: Fixes several errors preventing icmpv6_radvertise.c from
|
||
being compiled. Fixes conversions to network byte order (namely
|
||
vlifetime, plifetime, mtu). IPv6 source address is set to
|
||
link-local IP address instead of the address in the netdev
|
||
structure. This is in compliance to RFC 4861. RA didn't work on
|
||
Linux before this change. Finally, router prefix and prefix length
|
||
are derived from the IPv6 address and netmask in the netdev
|
||
structure. This seems to make more sense than using a predefined,
|
||
separate prefix from the config. From Sakari Kapanen.
|
||
- ICMPV6: icmpv6_input() needs to set d_len to 0 after consuming echo
|
||
reply, otherwise, garbage will get sent out. From Anthony Merlino.
|
||
- ICMPV6: Fix an error in the poll logic. It was assumed that the
|
||
input parmeter pvconn was valid. It was not. Instead, the poll
|
||
logic must work like the sendto() and recvfrom() logic: It must
|
||
keep a copy of the conn structure in the private data.
|
||
- IGMPv2 Send: Fix incoming IGMP checksum calculation. From Louis
|
||
Mayencourt.
|
||
- ARP: Fix IGMP Ethernet address computation. From Louis Mayencourt.
|
||
|
||
* Wireless/Wireless Drivers:
|
||
|
||
- CC1101: CC1101 driver not permitted to set errno.
|
||
- 6LoWPAN: Correct an error in uncompressing multicast address.
|
||
- 6LoWPAN: Correct a bug in handling uncompressed frames (IPv6
|
||
dispatch). Adds a separate local variable, protosize, to keep track
|
||
of the size of thep protocol header.
|
||
- 6LoWPAN: Fix an endian-ness problem in 6LoWPAN address
|
||
decompression. From Anthony Merlino.
|
||
- 6LoWPAN: The logic that extracts interface identifier from the IP
|
||
address needs to be generalized to handle cases where the address is
|
||
not a link local address. From Anthony Merlino.
|
||
|
||
* Common Drivers:
|
||
|
||
- Serial: 16550 UART driver IOCTL method must not set errno; it must
|
||
return a negated errno value.
|
||
- LIS3DSH: Added the argument parameter (FAR void *arg) to the
|
||
interrupt handler provided by the LIS3DSH driver to fit the
|
||
definition for ISRs in xcpt_t. Changed the check for working queue
|
||
availability in lis3dsh interrupt handler to use work_available()
|
||
and not crash in case of an overrun. From Florian Olbrich.
|
||
- LIS2DH: Fixes for self-test. From Jussi Kivilinna.
|
||
- LIS2DH: Fix use of obsolete dbg macro. From Jussi Kivilinna.
|
||
- LIS331DL: LIS331DL driver not permitted to set errno.
|
||
- HTS221: Power-on sensor for loading calibration data. From Jussi
|
||
Kivilinna.
|
||
- MCP2515: Fix the MCP2515 Bit Rate Prescale calculation. Fix BRP
|
||
for SET_BITTIMING ioctl as well. From Alan Carvalho de Assis.
|
||
- STMPE811: Fix GPIO operation of STMPE811 driver.
|
||
1. STMPE811_GPIO_DIR was defined for register name and later was
|
||
redefined to be the pin direction mask for `stmpe811_gpioconfig`.
|
||
I decided to change register name to be STMPE811_GPIO_DIR_REG, and
|
||
keep pin direction mask STMPE811_GPIO_DIR, so that any external
|
||
code that already use this driver will be unchanged.
|
||
2. The STMPE811 register GPIO_DIR uses bit value 1 for output and 0
|
||
for input, but `stmpe811_gpioconfig` set the opposite.
|
||
3. The call to `stmpe811_gpiowrite` from inside of
|
||
`stmpe811_gpioconfig` leaded to deadlock.
|
||
From Dmitriy Linikov.
|
||
- BQ2429X: Add BATIO_OPRTN_SYSON for enabling BATFET after SYSOFF.
|
||
From Jussi Kivilinna.
|
||
|
||
* Simulation:
|
||
|
||
- Simulation: Serial and console drivers are not permitted to set
|
||
the errno.
|
||
|
||
* ARMv7-M:
|
||
|
||
- ARM Stack Check: Fix assert panic when both TLS and interrupt stack
|
||
are enable. From Jussi Kivilinna.
|
||
|
||
* Infineon XMC4xxx Drivers:
|
||
|
||
- XMC4 USIC: Kconfig was not selecting XMC4_USIC for USIC1. From Alan
|
||
Carvalho de Assis.
|
||
- XMC4 UART: Fix XMC4xxx USIC UART sginal to be high level when in idle.
|
||
From Alan Carvalho de Assis.
|
||
- XMC4 UART:xmc4_uart_configure() expects the channel# not uartbase as
|
||
an input parameter. From Alan Carvalho de Assis.
|
||
- XMC4 UART: Enable RX/TX status. From Alan Carvalho de Assis.
|
||
- XMC4 UART: The Alternative Receive Interrupt was not being
|
||
configured.
|
||
|
||
* Infineon XMC4xxx Boards:
|
||
|
||
- XMC4500-Relax: Setup max. freq. 120MHz and setup pull-up to UART
|
||
RXD pin. From Alan Carvalho de Assis.
|
||
|
||
* Microchip/Atmel SAMv7 Drivers:
|
||
|
||
- SAMv7: DAC and ADC drivers are not permitted to set the errno.
|
||
- SAMv7: Correct an error in RX DMA setup. From Manish Kumar Sharma.
|
||
- SAMv7 USB: It is necessary to disable pre-emption and interrupts
|
||
around a loop that copies TX data into the hardware in order to
|
||
avoid a TX data underrun condition. From Anthony Merlino.
|
||
|
||
* NXP/Freescale LPC31xx Drivers:
|
||
|
||
- LPC31xx: Serial and console drivers are not permitted to set
|
||
the errno.
|
||
|
||
* NXP/Freescale LPC43xx:
|
||
|
||
- lpc43xx: lpc43_adc.c was being selected by the build system wehn
|
||
DAC was selected.
|
||
|
||
* NXP/Freescale LPC43xx Drivers:
|
||
|
||
- LPC43xx Ethernet: Fix some backward logic setting full-duplex and
|
||
100mbps when autoconfiguration is disabled. Noted by Anonymous in
|
||
Issue #76.
|
||
- lpc43xx: UART_RX pins should be configured with input buffers
|
||
enabled. Otherwise it cannot be read. From Alexander Vasiljev.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32 F2: Fixed build for STM32F20XX platforms when
|
||
CONFIG_STM32_DMACAPABLE is enabled. From Dmitriy Linikov.
|
||
- STM32 F4: Remove ltdc.h and dma2d.h. Those header files in that
|
||
location permitted inclusion into application space logic and,
|
||
hence, facilitated and encouraged calling into the OS and violating
|
||
the portable POSIX OS interface. The definitions in those header
|
||
files were move the appropriate location in the counterpart,
|
||
architecture specific files at arch/arm/src/stm32/dma2d.h and ltdc.h.
|
||
- STM32 L4: Build stm32l4_idle.c only if CONFIG_ARCH_IDLE_CUSTOM is
|
||
not enabled. From Jussi Kivilinna.
|
||
- STM32 F7: Remove ltdc.h and dma2d.h. Those header files in that
|
||
location permitted inclusion into application space logic and,
|
||
hence, facilitated and encouraged calling into the OS and violating
|
||
the portable POSIX OS interface. The definitions in those header
|
||
files were move the appropriate location in the counterpart,
|
||
architecture specific files at arch/arm/src/stm32f7/dma2d.h and
|
||
ltdc.h.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32: DAC and ADC drivers are not permitted to set the errno.
|
||
- STM32 ADC: Clear pending interrupts. From Mateusz Szafoni.
|
||
- STM32 CAN: Lower part of STM32 CAN driver
|
||
arch/arm/src/stm32/stm32_can.c uses all three hw tx mailboxes and
|
||
clears TXFP bit in the CAN_MCR register (it means transmission order
|
||
is defined by identifier and mailbox number).
|
||
This creates situation when order frames are put in upper part of
|
||
CAN driver (via can_write) and order frames are sent on bus can be
|
||
different (and I experience this in wild). Since CAN driver API
|
||
pretends to be "file like" I expect data to be read from fd the same
|
||
order it is written. So I consider described behaviour to be a bug.
|
||
Fixed by settin the TXFP bit in the CAN_MCR register (FIFO
|
||
transmit order). From comments by Alexey T, in Bitbucket Issue 73.
|
||
- STM32 HRTIM: Fix pclk calculation. From Mateusz Szafoni.
|
||
- STM32 HRTIM: Fix burst mode prescaler update. From Mateusz Szafoni.
|
||
- STM32 (alt) I2C: Ensure proper error handling. Injecting data
|
||
errors would cause the driver to continually reenter the isr with
|
||
BERR an RxNE. This fix allows the error to be cleared and
|
||
propagated to the waiting task. From David Sidrane.
|
||
- STM32: LTDC and DMA2D drivers are not permitted to set the errno.
|
||
- STM32 RTC: Workaround for potential subseconds race condition. In
|
||
all recent STM32 chips reading either RTC_SSR or RTC_TR is supposed
|
||
to lock the values in the higher-order calendar shadow registers
|
||
until RTC_DR is read. However many old chips have in their errata
|
||
this silicon bug (at least F401xB/C, F42xx, F43xx, L15xxE, L15xVD
|
||
and likely others): "When reading the calendar registers with
|
||
BYPSHAD=0, the RTC_TR and RTC_DR registers may not be locked after
|
||
reading the RTC_SSR register. This happens if the read operation is
|
||
initiated one APB clock period before the shadow registers are
|
||
updated. This can result in a non-consistency of the three
|
||
registers. Similarly, RTC_DR register can be updated after reading
|
||
the RTC_TR register instead of being locked."
|
||
- STM32 Serial: Do not stop processing input in SW flow-control
|
||
mode. From Juha Niskanen.
|
||
- STM32F33xxx ADC: Add some publicly visable interfaces and some
|
||
code to support injected channels. From Mateusz Szafoni.
|
||
- STM32F33xxx DMA: Add public interface to handle with DMA
|
||
interrupts. From Mateusz Szafoni.
|
||
- STM32F33xxx RCC: Fix CAN clock enable. From Mateusz Szafoni.
|
||
- stm32 F4 I2C: Ensure proper interrupt handling. Injecting data
|
||
errors that causes a STOP to be perceived by the driver, will
|
||
continually re-enter the isr with SB not set and BTF and RxNE set.
|
||
This changes allows the interrupts to be cleared and propagates a
|
||
I2C_SR1_TIMEOUT to the waiting task. From David Sidrane.
|
||
- STM32 L4 Serial: Do not stop processing input in SW flow-control
|
||
mode. From Juha Niskanen.
|
||
- STM32 F7: LTDC and DMA2D drivers are not permitted to set the errno.
|
||
- STM32 L4: DAC and ADC drivers are not permitted to set the errno.
|
||
- STM32 L4 DAC: Do not configure output pin if it is not used. From
|
||
Juha Niskanen.
|
||
- STM32 L4 RTC, PM: Small fixes to subseconds handling, ADC
|
||
power-management hooks
|
||
- STM32 F4 RTC: Fix reading alarm value that is more than 24h in
|
||
future. From Juha Niskanen
|
||
- STM32 L4 RTC: Fix reading alarm value that is more than 24h in
|
||
future. From Juha Niskanen
|
||
- STM32 L4 TIM: Fix compilation of timers with complementary outputs
|
||
when not PWM_MULTICHAN. From Juha Niskanen.
|
||
- STM32 L4 RCC: Restore backup-registers after backup-domain reset.
|
||
From Jussi Kivilinna.
|
||
- STM32 L4 RTC: Correct RTC_SSR and RTC_TR read ordering. In all
|
||
recent STM32 chips reading either RTC_SSR or RTC_TR is supposed to
|
||
lock the values in the higher-order calendar shadow registers until
|
||
RTC_DR is read. Change the register read ordering to match this and
|
||
don't keep a workaround for a hypothetical race condition (not in
|
||
any L4 errata, lets for once assume ST's silicon works as it is
|
||
documented...)
|
||
- STM32 L4 RTC: Init mode was never exited because nested locking in
|
||
rtc_synchwait() disabled backup domain access. From Juha Niskanen.
|
||
- STM32 L4 RTC: Use backup register magic value instead of INITS
|
||
bit. The INITS (bit 4) of RTC_ISR register cannot be used to
|
||
reliably detect backup domain reset. This is because we can operate
|
||
our device without ever initializing the year field in the RTC
|
||
calendar if our application does not care about correct date being
|
||
set. Hardware also clears the bit when RTC date is set back to year
|
||
2000. From Juha Niskanen.
|
||
- STM32 L4 RTC: Put back the SSR race condition workaround. ST has
|
||
confirmed that the issue has not been fixed, and that it applies to
|
||
STM32 L4 too (was not in errata sheets due to documentation bug) See
|
||
discussion: https://community.st.com/thread/43710-issue-with-rtc-maximum-time-resolution .
|
||
From Juha Niskanen.
|
||
- STM32 F7 BBSRAM: Avoid assert in stm32_bbsram_savepanic. If panic
|
||
happens before stm32_bbsram is initialized, stm32_bbsram_savepanic
|
||
caused additional assert panic. Function has null pointer check, so
|
||
drop DEBUGASSERT. From Jussi Kivilinna.
|
||
- STM32 F7 I2C: fix I2C_M_NORESTART handling. From Jussi Kivilinna.
|
||
- STM32 F7 I2C: Restore bus frequency after I2C reset. Copy
|
||
frequency restoration fix from STM32L4 I2C driver to STM32F7 I2C
|
||
driver. From Jussi Kivilinna.
|
||
- STM32 F7 RTC: Fix reading alarm value that is more than 24h in
|
||
future. From Juha Niskanen
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- STM32F334-DISCO: Add missing ram_vectors configuration in linker
|
||
script. From Mateusz Szafoni.
|
||
- Nucleo-F334R8: Add missing ram_vectors configuration in linker
|
||
script. From Mateusz Szafoni.
|
||
- Nucleo-F334R8: Add Missing ADC trigger configuration tot he highpri
|
||
configuration. From Mateusz Szafoni.
|
||
- STM3240G-EVAL: The timer frequencies (BOARD_TIMx_FREQUENCY) are
|
||
incorrectly defined in<69>board.h. Since the APB prescalers are set to
|
||
divide by 4 and 2 respectively, the frequencies should be "2xAPBx"
|
||
as said in the comment.<2E> The correct frequencies are already defined
|
||
but as STM32_APBx_TIMx_CLKIN. From Mattias Edlund.
|
||
- STM32F429i-DISCO: The ltdc configuration has been deleted because
|
||
it violated the portable POSIX OS interface. It used
|
||
apps/examples/ltdc and include ltdc.h and dma2d.h which were also
|
||
removed for the same reason.
|
||
|
||
* ZiLOG Z80
|
||
|
||
- configs/z80sim and xtrs: Serial driver lower halfs ioctl methods
|
||
should return a negated errno value, not set the errno variable.
|
||
- z80 Make.defs: Fixes dependency generation with newest SDCC
|
||
compiler.
|
||
- configs/z80sim: Fix a naming problem. Also, don't try to build the
|
||
serial driver if CONFIG_NFILE_DESCRIPTOR=0.
|
||
- Z80: Makefile fix for use with current SDCC.
|
||
|
||
* Build System
|
||
|
||
- configs/: All defconfig filess that include
|
||
CONFIG_NET_ICMPv6_SOCKET=y need to select CONFIG_SYSTEM_PING6=y and
|
||
deselect CONFIG_DISABLE_POLL.
|
||
- configs/: All NX configuration... Because of recent changes to
|
||
libnx/nxfonts, Supported bit per pixel must be separated specified
|
||
for NXFONTs too and need to match the select BPP for NX.
|
||
- Build system: Fix CONFIG_BUILD_KERNEL logic directories that have
|
||
ubin and kbin subdirectories. Conditional logic was fine for
|
||
CONFIG_BUILD_FLAT and CONFIG_BUILD_PROTECTED but generated useless
|
||
dependencies if CONFIG_BUILD_KERNEL.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- libc/stdio: Build the lib_noflush() and lib_snoflush() stubs even
|
||
if CONFIG_FILE_DESCRIPTORS=0. They may still be needed.
|
||
- libc and libnx: When the libraries are built into two libraries, a
|
||
user space library and a OS space library (as in the PROTECTED and
|
||
KERNEL build). Then the user space library must not use the OS
|
||
internal interfaces; similarly, the OS must avoid using the
|
||
userspace interfaces so that it does not muck the errno value or
|
||
create spurious cancellation points.
|
||
- libc/match: Use of exp() vs expf() in logf() caused function to be
|
||
slow. From Alan Carvalho de Assis.
|
||
- libnx: Fixes a memory leak that is caused because the client message
|
||
queue is not unlinked after the client disconnects from the NX
|
||
server. From Masayuki Ishikawa.
|
||
- sscanf(): Fix sscanf() character conversion (%c): do not add '\0' at
|
||
the end as for strings, cause, for example, parsing one character
|
||
will fill two bytes: character itself and zero one '\0' after it, so
|
||
will overflow one byte variable argument and corrupt memory for
|
||
variables allocated after it. From Oleg Evseev.
|
||
|
||
* Tools
|
||
|
||
- tools/: configure.sh and configure.c should redirect stdout to
|
||
/dev/null but should not suppress stderr output.
|
||
|
||
* NSH: apps/nshlib:
|
||
|
||
- apps/nshlib/: Avoid truncating the strcmp result in the parser
|
||
into a unsigned char variable. nshlib/nsh_netcmds.c: Check for
|
||
valid hostip before using it. From Bruno Herrera.
|
||
- apps/nshlib/: Fix resouce leak in 'dd' commenad when 'if=' or
|
||
'of=' params are repeated in the command line. For example:
|
||
dd if=/dev/null if=/dev/zero of=/dev/null or
|
||
dd if=/dev/zero of=/dev/zero of=/dev/null. From Bruno Herrera.
|
||
- apps/nshlib: This commit eliminates the ping and ping6 commands
|
||
from NSH and replaces them with 'built-in' commands at
|
||
apps/system/ping and ping6. The original NSH version of ping[6]
|
||
commands violated the portable POSIX interface and, hence, had to
|
||
be removed. The new system/ping and ping6 built-in commands uses
|
||
the new IPPROTO_ICMP AF_INET and IPPROTO_ICMP6 AF_INET6 datagram
|
||
sockets to implement ping.
|
||
- apps/nshlib: Fix parsing of empty strings when CONFIG_NSH_CMDPARMS
|
||
is not defined. Problem noted by Juha Niskanen.
|
||
|
||
* Examples/Tests: apps/examples:
|
||
|
||
- All configurations that use NXIMAGE or NXHELLO must select
|
||
NX_MULTIUSER. All configurations that use examples/nxterm must
|
||
enable CONFIG_LIB_BOARDCTL.
|
||
- All configurations that use NXLINES must select NX_MULTIUSER. All
|
||
configurations that use the NX server need to have larger POSIX
|
||
messages.
|
||
- apps/examples/adc: Fix g_adcstate.count initialization. From
|
||
Masayuki Ishikawa.
|
||
- apps/examples/elf: Remove low-level interfaces and replace with
|
||
call to exec().
|
||
- apps/examples/nxflat: Remove low-level interfaces and replace with
|
||
call to exec().
|
||
- examples/ostest: Works around a bug in printf() when cancellation
|
||
points are enabled. printf() is a cancellation point because it
|
||
calls write(). This is correct according to OpenGroup.org.
|
||
However, printf holds the stdio library semaphore when it is
|
||
canceled and this leaves the semaphore in a bad state. No fix for
|
||
the printf bug yet.
|
||
- apps/examples/nx: The NX example no longer supports single user
|
||
mode.
|
||
- apps/examples/nxtext: The nxtext example no longer supports single
|
||
user mode.
|
||
- apps/examples/nxhello now supports only multiuser mode.
|
||
- apps/examples/nximage now supports only multiuser mode.
|
||
- examples/nxlines: Now supports only multiuser mode.
|
||
|
||
* Network Utilities: apps/netutils:
|
||
|
||
- apps/netutils/ftpc: Fix some crazy comparisons to determine is a
|
||
file is an absolute path. Noted by Anthony Merlino.
|
||
|
||
* System Utilities (apps/system)
|
||
|
||
- apps/system/i2ctool: Fixed i2ctool write operation in `no restart`
|
||
mode (flag `-n`). It seems that I2C driver has changed a bit since
|
||
i2ctool was written, so now i2ctool sends repeated start even if
|
||
`no restart` flag (-n) was passed to it. From Dmitriy Linikov.
|
||
|
||
NuttX-7.24 Release Notes
|
||
------------------------
|
||
|
||
The 124th release of NuttX, Version 7.24, was made on March 2, 2018,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.24.tar.gz and
|
||
apps-7.24.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/nuttx/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* Core OS:
|
||
|
||
- SMP: Introduce spin_lock_irqsave() and spin_unlock_irqrestore().
|
||
These APIs are simplified version of enter_critical_section()
|
||
and leave_critical_section() to protect data (e.g. registers) in
|
||
SMP mode. By using these APIs inside drivers, performance will
|
||
be improved. From Masayuki Ishikawa.
|
||
- System Timer: Replace critical section APIs with spinlock APIs.
|
||
(64bit only). If SMP=n or SMP=y && SPINLOCK_IRQ=n, this works
|
||
in the same way as before. If SMP=y && SPINLOCK_IRQ=y, performance
|
||
will be improved. From Masayuki Ishikawa.
|
||
- POSIX Timers: Replace critical section APIs with spin lock APIs in
|
||
clock_gettime.c. This change will improve performance for SMP
|
||
systems but nothing changes for non-SMP systems. In SMP mode,
|
||
the running TCB is not always at the g_readytorun.head. From
|
||
Masayuki Ishikawa.
|
||
- SMP: Introduce spin_lock_wo_note() and spin_unlock_wo_note(). These
|
||
APIs are used in sched_note.c to protect instrumentation data. The
|
||
difference between these APIs to exsiting spin_lock() and
|
||
spin_unlock() is that they do not perform instrumentation to avoid
|
||
recursive call when SCHED_INSTRUMENTATION_SPINLOCKS=y. From
|
||
Masayuki Ishikawa.
|
||
- Interrupts: Add a configuration option to show interrupt
|
||
information via a procfs file.
|
||
|
||
* File Systems/Block and MTD Drivers
|
||
|
||
- VFS: Add support for truncate() and ftruncate().
|
||
- FAT, SmartFS, UserFS, UnionFS, TmpFS, NFS: Add truncate() support.
|
||
- FAT. Effectively handles the situation when a new file position is
|
||
within the current sector. Accelerates the work of the FS with a
|
||
multitude of operations to write small pieces of data within the
|
||
current sector. From Aleksandr Vyhovanec.
|
||
|
||
* Graphics/Display Drivers:
|
||
|
||
- HiletGo OLED: Add configuration support for HiletGo SSD1306 OLED.
|
||
- lcd/ft80x: This commit adds an FTDI/BridgeTek FT80x GUI driver. It
|
||
is untested (I don't even have hardware yet) and, hence, it is
|
||
marked as EXPERIMENTAL).
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- 6LoWPAN: Adds configuration options for specifying preloaded
|
||
address contexts for compression From Anthony Merlino.
|
||
- TCP: Introduce tcp receive window control based on I/O buffer.
|
||
NOTE: The algorithm is still experimental but useful for http
|
||
streaming. From Masayuki Ishikawa.
|
||
- UDP: Add an implementation of UDP write buffering.
|
||
- Routing Tables: Adding ftruncate() support eliminates an issue
|
||
in file-based routing table management system.
|
||
- Telnet: Add support for Telnet character mode From Masayuki
|
||
Ishikawa.
|
||
|
||
* Other Common Device Drivers:
|
||
|
||
- drivers/input/ft5x06.c: Add a driver for the FT5x06 capacitive,
|
||
multi-touch, touchscreen controller.
|
||
- drivers/input/ft5x06: Add a polled mode of operation for the FT5x06
|
||
in attempt to work around the fact that the LPCXpresso-LPC54628
|
||
chose a non-interrupt pin for the FT5x06 interrupt. Driver is still
|
||
not yet functional.
|
||
- drivers/power/bq2429x.c: Add trickle charging mode From Juha
|
||
Niskanen.
|
||
- drivers/sensors: Add support to MAX44009 ambient light sensor.
|
||
From Juha Niskanen.
|
||
- drivers/sensors: Added support for LIS3DH accelerometer sensor.
|
||
From Matt Thompson.
|
||
- drivers/eeprom: EEPROM driver for AT24xx compatible EEPROMs.
|
||
From Sebastien Lorquet.
|
||
|
||
* Simulation
|
||
|
||
- sim: Add support for a RAM MTD driver and initialization for use
|
||
with SmartFS.
|
||
- sim: Add support for testing NXFFS.
|
||
|
||
* ARM:
|
||
|
||
- ARMv7-A, ARMv7-R, ARMv7-M: Add atomic read-add-write and
|
||
read-subtract-write functions.
|
||
|
||
* Infineon XMC4xxx:
|
||
|
||
- XMC4xxx: Refactor PLL setup, refactored PLL/CLK config, easier,
|
||
checks for correctness, call go_os_start if STACK_COLORIZED, smarter
|
||
config of EXTCLK output freq. From David Alessio.
|
||
|
||
* Infineon XMC4xxx Boards:
|
||
|
||
- Add FPU to xmc4 ostest. Remove +x from makefiles, preserve
|
||
.gdbinit across make clean, add FPU support to ostest on xmc4,
|
||
add FPU test to ostest on xmc4 From David Alessio.
|
||
|
||
* Microchip/Atmel SAMD/L Drivers:
|
||
|
||
- SAMD: SAMD External Interrupt Controller (EIC) support From Matt
|
||
Thompson.
|
||
- SAMD/L: Added Analog Comparator basic initialization From Matt
|
||
Thompson.
|
||
- SAMD/L: Added FDPLL clock support. Fixed sequence of OSC32K
|
||
calibration setup. From Matt Thompson.
|
||
- SAMD/L: Added loading factory USB calibration data from NVRAM.
|
||
From Matt Thompson.
|
||
- SAMD/L: Added experimental DMA support to SPI driver. spi_exchange()
|
||
uses a pair of DMA channels for TX and RX. From Matt Thompson.
|
||
|
||
* Microchip/Atmel SAM3/4 Boards:
|
||
|
||
- Flip&Click SAM3X: Add board support for the Mikroe Flip&Click
|
||
SAM3X.
|
||
- Flip&Click SAM3X: Adds basic board support for the HiletGo OLED.
|
||
|
||
* Microchip PIC32MZ
|
||
|
||
- PIC32MZEF: Add architectural support for the PIC32MZEF family.
|
||
|
||
* Microchip PIC32MZ Boards
|
||
|
||
- Flip&Click PIC32MZ: Adds board support for the Mikroe Flip&Click
|
||
PIC32MZ board.
|
||
- Flip&Click PIC32MZ: Add board support for HiletGo OLED.
|
||
- Flip&Click PIC32MZ: Add an nxlines configuration for use in
|
||
testing the custom HiletGo Click board.
|
||
|
||
* NXP Freescale LPC43xx Drivers:
|
||
|
||
- LPC43xx: Adapt LPC176x RTC driver for the LPC43xx. From Gintaras
|
||
Drukteinis.
|
||
- LPC43xx: Add Windowed Watchdog Timer (WWDT) driver. Tested on
|
||
LPC4357 but should be compatible for all LPC43xx MCUs.
|
||
From Gintaras Drukteinis.
|
||
- Leverage the LPC54xx SD/MMC back to the LPC43xx (where it came from
|
||
originally).
|
||
|
||
* NXP Freescale LPC43xx Boards:
|
||
|
||
- Bambino-200e: Add LPC43 SDMMC board support to Bambino-200E. From
|
||
Alan Carvalho de Assis.
|
||
|
||
* NXP Freescale LPC54xx:
|
||
|
||
- LPC546xx: Added basic architectural support for the LPC546xx
|
||
family.
|
||
|
||
* NXP Freescale LPC54xx Drivers:
|
||
|
||
- LPC546xx: Basic NSH configuration includes support for UARTs,
|
||
SysTick timer, GPIOs, LEDs, and buttons
|
||
- LPC546xx: Additional drivers include EMC, I2C, Ethernet
|
||
- LPC546xx: Implement GPIO interrupt support.
|
||
- LPC546xx: And unverified SPI driver is included.
|
||
- LPC546xx: Ported LPC1788 LCD driver to use the LPC54xx pin.
|
||
- LPC546xx: Bring in LPC43xx SD/MMC driver from
|
||
https://github.com/Smoothieware/smoothie-nuttx/tree/master/nuttx/arch/arm/src/lpc43xx
|
||
and adapt for use with the LPC43xx
|
||
- LPC546xx: Add DMA driver ported from the LPC43xx GPDMA driver.
|
||
- LPC546xx: Bring in WWDT driver from LPC43.
|
||
- LPC546xx: Add an RTC driver and a RTC character driver lower half.
|
||
- LPC546xx: Add support for a random number generator.
|
||
- LPC546xx: Add an Ethernet driver.
|
||
|
||
* NXP Freescale LP54xx Boards:
|
||
|
||
- LCXpresso-LPC54628: Added support for the LPCXpresso-LPC54628
|
||
board. The initial bring-up used a basic NSH port.
|
||
- LCXpresso-LPC54628: On-board SDRAM is also supported
|
||
- LCXpresso-LPC54628: Add support for I2C2 and for the I2C tool to
|
||
the NSH configuration.
|
||
- LCXpresso-LPC54628: Add support for the USER button. Enable the
|
||
apps/examples/button test in the NSH configuration.
|
||
- LCXpresso-LPC54628: Add the fb configuration for testing the LCD.
|
||
- LCXpresso-LPC54628: Add support for the the FT5x06 touchscreen
|
||
controller. Enable the driver as well as the apps/examples
|
||
touchscreen test.
|
||
- LCXpresso-LPC54628: Add an NxWM configuration.
|
||
- LCXpresso-LPC54628: Add logic to bring up SDMMC.
|
||
- LCXpresso-LPC54628: Add logic to register the RTC character driver
|
||
if it is enabled. Enable the RTC and RTC character driver in the
|
||
NSH configuration.
|
||
- LCXpresso-LPC54628: Add a netnsh configuration that was be used to
|
||
test the Ethernet driver.
|
||
- LCXpresso-LPC54628: Add LittlevGL graphics demo configuration.
|
||
|
||
* On Semiconductor LC823450
|
||
|
||
- LC823450 SMP improvements: (1) Apply irq_spin APIs to
|
||
modifyregXX, (2) Do not use modifyreg32() to enable Mutex, (3)
|
||
Modify IRQ control for i2s. Apply irq_spin APIs to
|
||
dma/syscontrol/usbdev. From Masayuki Ishikawa.
|
||
- LC823450: LC823450 http streaming improvements: (1) Use spinlock
|
||
APIs in lc823450_gpio.c. (3) Fix a potential race condition in
|
||
up_enable_irq(), (3) Use spinlock APIs instead of critical section
|
||
APIs, (4) Enable HRT_TIMER in lc823450_timerisr.c. (5) Use spinlock
|
||
APIs instead of critical section APIs. (6) Fix race conditions in
|
||
dma/usbdev. From Masayuki Ishikawa.
|
||
- LC823450: Introduce DVFS. This version only supports manual mode
|
||
and Vdd1 is fixed to 1.2V. From Masayuki Ishikawa.
|
||
|
||
* On Semiconductor LC823450 Drivers
|
||
|
||
- LC823450: Refactor timer driver. Add MTM timer APIs for DVFS.
|
||
Introduce up_rtc_gettime() for CONFIG_RTC_HIRES. Introduce idle
|
||
time calculation in DVFS. Also, DVFS autonomous mode based on CPU
|
||
idle time is supported. NOTE: voltage control is still disabled.
|
||
From Masayuki Ishikawa.
|
||
|
||
* On Semiconductor LC823450 Boards
|
||
|
||
- LC823450-XGEVK: I2S interrupt will be handled on CPU0 with this
|
||
change. Assign CPU1 to lpwork. This change will improve load
|
||
balancing for networking with RNDIS. From Masayuki Ishikawa.
|
||
- LC823450-XGEVK: Enable SPINLOCK_IRQ and NXPLAYER in rndis. From
|
||
Masayuki Ishikawa.
|
||
- LC823450-XGEVK: LC823450 http streaming improvements: (1) In SMP
|
||
mode, H/W interrupts should be handled on CPU0 to avoid deadlocks.
|
||
(2) Call up_enable_irq() to assign CPU0 for IRQ handling. (3)
|
||
Enable HRT_TIMER, LC823450_MTM0_TICK, SPINLOCK_IRQ, (4) Enable
|
||
NET_TCP_RWND_CONTROL, NXPLAYER_HTTP_STREAMING_SUPPORT (rndis only)
|
||
From Masayuki Ishikawa.
|
||
- LC823450-XGEVK: Enable DVFS in lc823450_bringup.c. Enable DVFS
|
||
in audio and rndis. Add Telnet character mode to rndis. From
|
||
Masayuki Ishikawa.
|
||
- LC823450-XGEVK: Explicitly assign I2S IRQ handling to CPU0. From
|
||
Masayuki Ishikawa.
|
||
- LC823450-XGEVK: Enable RTC_HIRES instead of RTC_DATETIME (audio/
|
||
rndis). Disable TCP_WRITE_BUFFERS and change SCHED_LPWORKPRIORITY
|
||
(rndis). Update SMP and DVFS related part. From Masayuki Ishikawa.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32 F7: Add support for the STM32F72x/73x family. From Bob
|
||
Feretich.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 HRTIM: Add interface to change outputs SET/RST configuration.
|
||
From Mateusz Szafoni.
|
||
- STM32 HRTIM: Add interface to get timer clock frequency,
|
||
calculation, add compare/capture registers significant bits
|
||
checking. From Mateusz Szafoni.
|
||
- STM32 HRTIM: Add interface to set timer frequency, fix slave timers
|
||
reset configuration, change POWER_INFO to TIMER_INFO From Mateusz
|
||
Szafoni.
|
||
- STM32 HRTIM: Add repetition support and fix enum overflow From
|
||
Mateusz Szafoni.
|
||
- STM32 HRTIM: Add HRTIM push-pull mode configuration. From
|
||
raiden00pl.
|
||
- STM32 FLASH: Add progmem support for STM32L15XX From Juha Niskanen.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- configs/photon: Adds BOARD_TIMn_FREQUENCY macros From Anthony
|
||
Merlino.
|
||
- configs/indium-f7: Adds support for the RAF Research Indium-F7
|
||
board. From Bob Feretich.
|
||
- Rename the configs/stm32f0discovery board directory to
|
||
configs/stm32f051-discovery. There are others stm32f0discovery
|
||
boards with different MCUs and different peripherals on the board.
|
||
From Alan Carvalho de Assis.
|
||
- configs/stm32f072b-discovery: Adds support for stm32f072b-disco
|
||
board. This is the board. I added the LEDs of this board and tested
|
||
the compilation. From Alan Carvalho de Assis.
|
||
- configs/stm32f103-minimum: Add AT24 EEPROM support on STM32F103-
|
||
Minimum board From Alan Carvalho de Assis.
|
||
- configs/stm32f103-minimum: Add support to BMP180 on BluePill
|
||
(stm32f103-minimum) board. From Alan Carvalho de Assis.
|
||
- configs/stm32f334-disco: Add buck converter and boost converter
|
||
logic. From Mateusz Szafoni.
|
||
- configs/stm32f103-minimum: Add zerocross support to STM32F103-
|
||
Minimum board From Alan Carvalho de Assis.
|
||
- configs/stm32f103-minimum: Add OLED SSD1306 support to
|
||
STM332F103-Minimum From Alan Carvalho de Assis.
|
||
- configs/stm32f103-minimum: Add board support to MAX6675 Thermocouple
|
||
sensor From Alan Carvalho de Assis.
|
||
- configs/stm32f746g-disco: Add stm32f746g-disco Ethernet configuration.
|
||
Add USART1 support (connected to the USB virtual serial port) From
|
||
Louis Mayencourt.
|
||
- configs/viewtool-stm32f107: Add support for FT80X initialization.
|
||
Add ft80x configuration that will eventually be used for testing the
|
||
ft80x if I ever receive hardware.
|
||
|
||
* Tools:
|
||
|
||
- tools/logparser: Add a tool which will help me to convert git logs
|
||
to ChangeLog format.
|
||
|
||
* NSH: apps/nshlib:
|
||
|
||
- apps/nshlib: Add support for a truncate command. This will be used
|
||
to test the new ftruncate file system support.
|
||
- apps/nshlib: Add support for Telnet character mode. From Masayuki
|
||
Ishikawa.
|
||
- apps/nshlib: Add support for '-n' option to the echo command. From
|
||
Masayuki Ishikawa.
|
||
- apps/nshlib: Add irqinfo command.
|
||
|
||
* Examples/Tests: apps/examples:
|
||
|
||
- apps/examples/userfs: Add truncate() support for userfs.
|
||
- apps/examples/lvgldemo: Add lvgldemo example for LittlevGL.
|
||
- apps/examples/veml6070: Add VEML6070 Application Example. From
|
||
Alan Carvalho de Assis.
|
||
- apps/examples/bmp180: Add BMP180 application example. From Alan
|
||
Carvalho de Assis.
|
||
- apps/examples/ft80x: Add a test of the FT80x based on FTDI
|
||
SampleApp. Includes tests of GPU primitives and graphics co-
|
||
processor commands.
|
||
|
||
* Network Utilities: apps/netutils:
|
||
|
||
- apps/netutils/netlib: Add default route in netlib_set_dripv4addr().
|
||
From Masayuki Ishikawa.
|
||
|
||
* Graphics: apps/graphics:
|
||
|
||
- apps/graphics/littlevgl: Add littlevgl library. From Alan Carvalho
|
||
de Assis.
|
||
- apps/graphics/ft80x: Add the FTDU FT80x GUI support library.
|
||
Consists of some display list helpers, audio helpers, touch helpers,
|
||
RAM access, register access etc.
|
||
|
||
* System Utilities (apps/system)
|
||
|
||
- apps/system/nxplayer: Add support for HTTP streaming in nxplayer.
|
||
From Masayuki Ishikawa.
|
||
- apps/system/setlogmask: Adds 'setlogmask' application that allows
|
||
you to set the syslog priority via a simple command. From Anthony
|
||
Merlino.
|
||
- apps/system/usbmsc: Added Kconfig options to configure write
|
||
protection for each LUN. From Fabio D'Urso.
|
||
- system/stackmonitor: Re-design the stack monitor so that it does not
|
||
make forbidden calls directly into the OS, breaking the portable POSIX
|
||
OS interface. It now properly uses the PROCFS file system to glean
|
||
information about stack usage.
|
||
|
||
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:
|
||
|
||
- System Timer: Change the way that the 64-bit time is sampled.
|
||
Previously, we disabled interrupts before sampling the 64-bit
|
||
timer since the uint64_t access is not atomic on most CPUs. However,
|
||
disabling (local) interrupts does not work in the SMP case. In that
|
||
case, the timer interrupt may be running on only one of the CPUs;
|
||
disabling interrupts on a different CPU will provide no protection
|
||
from timer rollover. To work around this, logic was added that
|
||
samples 64-bit timer is sampled twice and if 32-bit rollover was
|
||
detected between samples, then loops until there is no rollover.
|
||
- POSIX Timers: In SMP mode, running TCB is not always at the head of
|
||
the g_readytorun list. This change removes DEBUGASSERT() to avoid
|
||
this condition. From Masayuki Ishikawa.
|
||
- Spinlocks: Add memory barrier operations in spin_unlock(). In ARM
|
||
document regarding memory barriers, SP_DMB() must be issued before
|
||
changing a spinlock state to SP_UNLOCKED. However, we found that
|
||
SP_DSB() is also needed to ensure that spin_unlock() works
|
||
correctly for network streaming aging test. From Masayuki Ishikawa.
|
||
- Sporadic Scheduler: Fix compiler error in Sporadic Scheduler when
|
||
priority inheritance is enabled. Noted by eunb.song@samsung.com
|
||
- Priority Inheritance: Fix some priority inheritance related issues
|
||
noted during review of logic. Also add some REVISIT comments for some issues noted in the design.
|
||
- boardctl: Remove the BOARDIOC_TSCTEST_TEARDOWN and
|
||
BOARDIOC_TSCTEST_SETUP boardctl() commands. Remove all
|
||
implementations of board_tsc_teardown(). Each board now initializes
|
||
the touchscreen controller as a normal part of its board bring-up.
|
||
board_tsc_setup() is gone; the touchscreen controller is now treated
|
||
like any other on-board device.
|
||
- configs: CONFIG_MAX_TASKS must be a power of 2.
|
||
- SMP: Introduce a new global IRQ clearing logic and tasklist
|
||
protection. The previous implementation of clearing global IRQ in
|
||
sched_addreadytorun() and sched_removereadytorun() was done too
|
||
early. As a result, nxsem_post() would have a chance to enter the
|
||
critical section even nxsem_wait() is still not in blocked state.
|
||
This patch moves clearing global IRQ controls from
|
||
sched_addreadytorun() and sched_removereadytorun() to
|
||
sched_resumescheduler() to ensure that nxsem_post() can enter the
|
||
critical section correctly. For this change,
|
||
sched_resumescheduler.c is always necessary for SMP configuration.
|
||
In addition, by this change, task_exit() had to be modified so that
|
||
it calls sched_resumescheduler() because it calls
|
||
sched_removescheduler() inside the function, otherwise it will cause
|
||
a deadlock. However, I encountered another DEBUGASSERT() in
|
||
sched_cpu_select() during HTTP streaming aging test on LC823450-XGEVK.
|
||
Actually sched_cpu_select() accesses the g_assignedtasks which might
|
||
be changed by another CPU. Similarly, other tasklists might be
|
||
modified simultaneously if both CPUs are executing scheduling logic.
|
||
To avoid this, I introduced tasklist protection APIs. With these
|
||
changes, SMP kernel stability has been much improved. From Masayuki
|
||
Ishikawa.
|
||
- SMP: Fix this_task() to be an atomic operation. In the previous
|
||
implementation, this_task() was defined in sched.h by using just a
|
||
macro current_task(this_cpu()). However, I found that this is not
|
||
atomic and actually sometimes switching CPU happened in executing
|
||
the macro when we tested audio steaming plus executing commands via
|
||
Telnet. This change resolves this issue by implementing atomic
|
||
this_task()in sched_thistask.c which is newly introduced. From
|
||
Masayuki Ishikawa.
|
||
- SMP: Implements a global scheduler lock capability as part of SMP
|
||
support. This allows the scheduler to be locked with no knowledge
|
||
or access to the TCB of the currently running task. This is
|
||
necessary because accessing the TCB of the currently running task
|
||
is, itself, a non-atomic operation. This global scheduler lock
|
||
capability was add just to support that atomic access to the TCB.
|
||
- SMP: Extend the last global lock change to work with the
|
||
LC823450-XGEVK which does not support the atomic fetch add but
|
||
does support disabling interprocessor interrupts. Disabling
|
||
interprocessor interrupts will also guarantee that the TCB address
|
||
calculation is atomic.
|
||
- SMP: Fix a infinite recursion problems that a recent changes
|
||
introduced into the i.MX6 SMP implementation. This is not seen
|
||
with the LC823450 because you can disable inter-processor interrupts
|
||
in that architecture; but you cannot in the ARMv7-A/GIC architecture.
|
||
- SMP: Remove SMP related logic in sig_dispatch.c. This change
|
||
prevents from a deadlock in up_schedulesigaction.c where inter-CPU
|
||
signal handling is actually implemented. arch/arm/src/armv7-m: Fix
|
||
signal handling for SMP. In previous implementation, signal handling
|
||
for SMP was incorrect. Thus, for example, if an inter-CPU signal
|
||
happened an incorrect tcb was signaled and caused ASSERT(). This
|
||
change fixes the issues and works for both inter-CPU signal handling
|
||
and signal handling on the same CPU. From Masayuki Ishikawa.
|
||
- Tasking: Add nxtask_create(). Kthread_create() and nxtask_create()
|
||
are internal OS functions and should not modify the errno variable.
|
||
Convert legitimate uses of task_create() to nxtask_create().
|
||
Review handling of returned values from all uses of kthread_create()
|
||
(as well as nxtask_create()).
|
||
- Tasking: Threads started by board bring-up logic should be kernel
|
||
threads, not user tasks.
|
||
- Tasking: Threads started by drivers should be kernel threads, not
|
||
user tasks.
|
||
- Semaphore Usage: Added ECANCELED condition to DEBUGASSERT's
|
||
checking sem_wait result From Dmitriy Linikov.
|
||
|
||
- errno: Add new internal OS function nxsched_setaffinity() that is
|
||
identical to sched_isetaffinity() except that it does not modify the
|
||
errno value. All usage of sched_setaffinity() within the OS is
|
||
replaced with nxsched_setaffinity().
|
||
- errno: Internal functions sched_reprioritize() and
|
||
sched_setpriority() no longer modify the errno value. Also renamed
|
||
to nxsched_reprioritize() and sched_setpriority().
|
||
- errno: Add new internal OS function nxsched_getscheduler() that is
|
||
identical to sched_getscheduler() except that it does not modify the
|
||
errno value. All usage of sched_getscheduler() within the OS is
|
||
replaced with nxsched_getscheduler().
|
||
- errno: Add new internal OS function nxsched_setparam() that is
|
||
identical to sched_setparam() except that it does not modify the
|
||
errno value. All usage of sched_setparam() within the OS is
|
||
replaced with nxsched_setparam().
|
||
- errno: Add new internal OS function nxsched_getparam() that is
|
||
identical to sched_getparam() except that it does not modify the
|
||
errno value (actually, the previous value erroneously neglected to
|
||
set the errno value to begin with, but this fixes both issues). All
|
||
usage of sched_getparam() within the OS is replaced with
|
||
nxsched_getparam().
|
||
- errno: wd_start() is an internal OS function and should not set the
|
||
errno value. Reviewed and updated every call to wd_start() to
|
||
verify if return value is used and if so if the errno value is
|
||
accessed.
|
||
- errno: Fix several inappropriate accesses to get_errno() that were
|
||
missed in previous changes (some going back to nuttx-7.23). Add new
|
||
nxsched_setscheduler() and nxsched_getaffinity() which are
|
||
equivalent to their counterparts without the nx on front. These
|
||
versions do not modify the errno value. Changed all calls within
|
||
the OS to use these newer versions of the functions.
|
||
- errno: binfmt/, configs/, grahics/, libc/, mm/, net/, sched/: OS
|
||
references to the errno variable should always use the set_errno(),
|
||
get_errno() macros.
|
||
- drivers/, fs/ and libc/: OS references to the errno variable should
|
||
always use the set_errno(), get_errno() macros.
|
||
|
||
* File System/Block and MTD Drivers:
|
||
|
||
- FAT: CONFIG_FAT_MAXFNAME may not exceed NAME_MAX (CONFIG_NAME_MAX)
|
||
- NFS: Correctly infer file type. The file type is in struct
|
||
nfs_statinfo_s's ns_type field, not in the ns_mode field. From
|
||
Michael Jung.
|
||
- NFS: Fix buffer corruption. In case multiple read requests to the
|
||
NFS server are required to fill up the user provided buffer,
|
||
nfs_read() might write behind the end of said buffer. This is fixed
|
||
with this change. From Michael Jung.
|
||
- VFS: reopen() should return NULL when oflags is less than 0, not
|
||
equal to 0. Because negative value is returned on failure of
|
||
lib_mode2offlags() which converts the mode string into file open
|
||
mode flag.
|
||
- ProcFS: Fix an error in a common function that manages read data.
|
||
- drivers/mmcsd: Respect SDIO_CAPS_DMABEFOREWRITE on CMD25. From
|
||
Evgeniy Bobkov.
|
||
- AT24xx: Correct page size for AT24C02 part. From Alexander
|
||
Oryshchenko.
|
||
- mtd_config.c: Add still more error handling (to detect bad
|
||
underlying flash implementations). Remove MTD_ERASE that was
|
||
erasing data block instead of erase block. This is a partial
|
||
revert of 4f18b4. Reported-by: Pascal Speck <iktek01@yahoo.com>
|
||
|
||
* Graphics/Display Drivers:
|
||
|
||
- drivers/lcd: Fix the default I2C address of SSD1306 OLED display
|
||
(7- vs 8-bit addressing) From Alan Carvalho de Assis.
|
||
- drivers/lcd: lcd_framebuffer.c does not need to include board-
|
||
specific board.h.
|
||
- include/lcd: Eliminate a warning from an SSD1306 header file by
|
||
adding a forward reference to struct i2c_master_s. From Sebastien
|
||
Lorquet.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- ARP: Fix an error introduced when ICMP and ICMP6 socket support was
|
||
added in NuttX-7.3. A gratuitous ARP (or solicitation) was being
|
||
sent after receive of the ECHO replay (advertisement).
|
||
- ARP: Fix IGMP multicast address computation on Nuttx network stack.
|
||
This change fixes the IGMP address computation to allow multicast
|
||
UDP messages. The destination address was created with the incorrect
|
||
bytes of the given IPv4 address. From Louis Mayencourt.
|
||
- ioctl: The existence of the network driver ioctl() method should
|
||
depend on CONFIG_NETDEV_IOCTL rather than CONFIG_NETDEV_PHY_IOCTL.
|
||
The former enables the method, the later enables a subset of
|
||
possible driver IOCTLs.
|
||
- TCP: Write buffering logic should not wait for a free buffer if
|
||
the socket was opened non-blocking.
|
||
- TCP: Fixed bad return value handling in psock_tcp_send(). send()
|
||
expects psock_tcp_send() to return a negated errno value, not -1
|
||
with the errno set (GN: I added same change for tcp_send_buffered.c
|
||
which has the same issue as tcp_send_unbuffered.c) From Pelle
|
||
Windestam.
|
||
- TCP: Fixes hardfault when network goes done and network monitoring
|
||
is in place. From Gianpaolo Ferroni Ariani.
|
||
- TCP: tcp_send_[un]buffered.c: Check routing table in
|
||
psock_send_addrchck(). Previously only ARP table was considered
|
||
when determining if the data will actually be sent. From Juho
|
||
Grundstrom.
|
||
- TCP: Generalize Juho Grundstrom's IPv4 change for IPv6 as well.
|
||
- UDP: Remove some conditional logic that was true if there is only a
|
||
single network device, but not true in the multi-device context.
|
||
- UDP: In sendto(), return EHOSTUNREACH if the network is down.
|
||
|
||
* Common Drivers:
|
||
|
||
- drivers/pipes: In poll logic, fix off-by-one error in calculation
|
||
of bytes in the buffer. Buffer calculation in pipe poll setup is
|
||
off-by-one when read index is larger than write index. This causes
|
||
poll() not getting POLLIN when buffer has one byte as calculation
|
||
gives zero bytes in buffer. From Jussi Kivilinna.
|
||
- drivers/audio: Improve stability of the WM8776 driver in SMP mode.
|
||
Apply irq_spin APIs to improve performance. Repeat to process a
|
||
message to avoid deadlock. From Masayuki Ishikawa.
|
||
- drivers/ioexpander: Fixed build of PCF8574 driver when its
|
||
interrupts aren't enabled by config. From Dmitriy Linikov.
|
||
- drivers/syslog: Fixes LOG_UPTO macro to include specified log level.
|
||
From Anthony Merlino.
|
||
- drivers/sensors: Fix HTS221 sensor reset with BOOT bit From Jussi
|
||
Kivilinna.
|
||
- drivers/loop: If we want to open read-only in losetup.c, flags
|
||
should be O_RDONLY not O_RDWR. From Fabio D'Urso.
|
||
- drivers/timers/ds3231.c: Correct some debug statements. From
|
||
Alexander Oryshchenko.
|
||
- drivers/sensors/lis2dh: Use realtime clock if monotonic is not
|
||
available From Juha Niskanen.
|
||
- drivers/i2c and drivers/spi: Fix compile error if
|
||
CONFIG_DISABLE_PSEUDOFS_OPERATIONS, fix bad NULL checks From Juha
|
||
Niskanen.
|
||
|
||
* ARMv7-A:
|
||
|
||
- Data Cache: Fix cp15_invalidate_dcache. In cases where more than
|
||
one dcache line was to be invalidated, a missing branch label
|
||
would result in a false branch target into cp15_flush_idcache. Also
|
||
the .size macro was fixed for both cp15_invalidate_dcache. From
|
||
Michael Jung.
|
||
- SMP: Port the signal-related SMP change by Masayuki Ishikawa to the
|
||
ARMv7-A family.
|
||
|
||
* Extensa:
|
||
|
||
- SMP: Port the signal-related SMP change by Masayuki Ishikawa to the
|
||
Xtensa family.
|
||
|
||
* Infineon XMC4xxx Drivers:
|
||
|
||
- XMC4xxx: Only setup USB clock when USB PLL is enabled From Alan
|
||
Carvalho de Assis.
|
||
- XMC4xxx: Fix USIC_BRG_SCLKCFG definition From Alan Carvalho
|
||
de Assis.
|
||
|
||
* Microchip PIC32MZ
|
||
|
||
- MIPS32: In up_idle, the kludge that was conditionally enabled if
|
||
the work queue was enable appears to be needed even when he work
|
||
queue is not enabled on the PIC32MZ.
|
||
- PIC32MZ: Fix some typos in debug instrumentation in pic32mz-gpio.c;
|
||
fix some typos related to UART5 configuration in pic32mz-serial.c.
|
||
|
||
* Microchip/Atmel SAMD/L:
|
||
|
||
- SPI: In sam_spibus_initialize(), the pinmux configuration was
|
||
smashing the previous CTRLA register configuration. There are
|
||
also some typos in samd_spi.h From Matt Thompson.
|
||
- SPI: Fixes g_spi2ops and g_spi2dev using incorrect values From Matt
|
||
Thompson.
|
||
- SPI: SPI must be disabled before changing the mode bits in CTRLA
|
||
register From Matt Thompson.
|
||
- DMA: Fix DMA controller support. From Matt Thompson.
|
||
|
||
* NXP/Freescale LPC17xx Drivers:
|
||
|
||
- LPC17xx: Disable LPC17 FDR when not used. If a boot loader set the
|
||
fractional divider (FDR) the baud rate in nuttx will be wrong
|
||
(multiplied by this fraction). So if it is not used, it should be
|
||
disabled. From Harald Gutsche.
|
||
|
||
* NXP/Freescale Kinetis Drivers:
|
||
|
||
- Kinetis: Correct some Ethernet PHY register bit tests for the
|
||
KSZ8081 PHY. From Stewart.
|
||
|
||
* On Semiconductor LC823450
|
||
|
||
- arch/arm/src/LC823450: Add SP_DMB() into lc823450_testset.c.
|
||
In LC823450, ldrex and strex are not supported. So we implemented
|
||
up_testset() with H/W Mutex. However, there was a bug in memory
|
||
access order. This change ensures correct memory access order in
|
||
up_testset() for LC823450. From Masatoshi Tateishi.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 F3 RCC: A flash wait state configuration. Flash latency must
|
||
be fixed according to sysclk frequency. If this operation is not
|
||
done or done after PLL configuration, the STM32 fail to continue
|
||
boot operation if the frequency if greater than 24MHz according to
|
||
the board variable STM32_SYSCLK_FREQUENCY. Tested on stm32f334-disco
|
||
board. From Gwenhael Goavec-Merou.
|
||
- STM32 RTC: Make STM32 usable with an external RTC.
|
||
- STM32 SPI: Removed unnecessary (and incorrect) speed limitation.
|
||
From Alexander Oryshchenko.
|
||
- STM32 SPI: I have a SPI bus with both Mode 0 and Mode 3 devices
|
||
on it. After performing SPI I/O to a Mode 0 device, switching to a
|
||
Mode 3 device locked up the SPI interface. Only zeroes would be
|
||
read. I traced the reason for the lock-up to arm/arm/src/stm32f7/stm32_spi.c function spi_setmode(). Changing
|
||
the mode causes a spurious SPI clock transmission that confuses the
|
||
stm32f7 SPI input hardware. This problem is solved by (1) changing
|
||
the SPI mode with SPI (and perhaps DMA) disabled, and (2) flushing
|
||
the receive FIFO if the mode change results in garbage in the FIFO.
|
||
From Bob Feretich.
|
||
- STM32 and STM32 F7: Remove confusing, redundant, and misleading
|
||
definitions of STM32_BKP_BASE from the F2, F3, and F4 memory
|
||
maps. Unlike the F1, these parts do not have a separate BKP address
|
||
region. The BKP registers are with the RTCC address regions.
|
||
stm32_bkp.h should only be used for STM32 F1. stm32_rtcc.h should be
|
||
used to access BKP registers on F2, F3, and F4.
|
||
- STM32 and STM32 F7: Architecture-specific code is not permitted to
|
||
modify the errno variable.
|
||
- STM32 F4 I2C: Correct some recent changes to STM32F4 I2C that broke
|
||
poll mode of operation. From Alexander Oryshchenko.
|
||
- STM32 F4 I2C: Corrections to STM32 F4 I2C to restore functionality.
|
||
From Alexander Oryshchenko.
|
||
- STM32 F4 I2C: Corrections to STM32 F4 I2C to fix the NORESTART
|
||
flag. From Alexander Oryshchenko.
|
||
- STM32 F7: Fixes a bug in multi-block SD-card operations on the
|
||
STM32F7 platform. DBLOCKSIZE must be the size of SD-card block, not
|
||
the total amount of transferred bytes. From Evgeniy Bobkov.
|
||
- STM32 F7: Fix undefined variable when using USART1 for other
|
||
purposes than UART (e.g. SPI). From Frank Benkert.
|
||
- STM32 F7: Backport RTC alarm setting changes from STM32L4. Most
|
||
notably this fixes RTC getting stuck issue when both alarms were
|
||
used. Root cause was writing RTC ISR register contents to RTC CR
|
||
register. From Juha Niskanen.
|
||
- STM32 L4 Flash: Change flash programming to use page buffer for
|
||
unaligned writes. From Juha Niskanen.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- Nucleo-L432KC: Fix some bogus logic noted by Fanda.
|
||
- configs/nucleo-* and configs/stm32l476vg-disco: Fix more
|
||
stm32_userleds.c bogus logic From Juha Niskanen.
|
||
- Nucleo-L432KC: Fixed nucleo-l432kc broken build when
|
||
CONFIG_USERLED_LOWER defined From Fanda.
|
||
- Nucleo-L432KC: Issue #85: /dev/userleds is not working for
|
||
Nucleo-L432KC fixed From Fanda Vacek.
|
||
- STM32F429I-Disco: Separate SPI4 from MTD init. I was trying to
|
||
attach a non-MTD peripheral to an STM32F429I Discovery Board's SPI4
|
||
port and was hitting compilation problems, since CONFIG_MTD and
|
||
thus 'struct mtd_geometry_s' was not defined. This patch separates
|
||
SPI4 initialization logic from MTD initialization logic. From
|
||
Michael Jung.
|
||
- STM32F103-Minimum: Remove CONFIG_NX_LCDDRIVER dependence from
|
||
stm32_ssd1306.c From Alan Carvalho de Assis.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- libc/stdio: In dtoa(), up_interrupt_context() is used in a debug
|
||
assertion. up_interrupt_context() is not available in the user-mode
|
||
phase of the PROTECTED or KERNEL build configurations. In those
|
||
configurations, enabling libc floating point support and debug
|
||
assertions will result in an undefined reference to
|
||
up_interrupt_context().
|
||
- libc/netdb: Fixed parsing of DNS response packets having compressed
|
||
names ending with pointer. There were troubles parsing response
|
||
packets which have compression of QNAME/NAME field when only
|
||
trailing part of the name (not the whole name) is replaced with
|
||
pointer to another part of the packet. This commit fixes parsing of
|
||
such packets. Also I added checks to keep parsing only in bounds of
|
||
the read part of DNS response packet. From Dmitriy Linikov.
|
||
|
||
* Tools
|
||
|
||
- tools/*.c: Add #define _GNU_SOURCE to all C files that call
|
||
asprintf() to eliminate a warning.
|
||
- tools/cvsparser.c: Add a check to avoid access past the end
|
||
of a fixed size array
|
||
|
||
* NSH: apps/nshlib:
|
||
|
||
- apps/nshlib: Fix compile error when CONFIG_NSH_DISABLESCRIPT is not
|
||
defined. The field np_flags does not exist if scripting is disabled.
|
||
|
||
* Examples/Tests: apps/examples:
|
||
|
||
- apps/examples/touchscreen: Eliminate BOARDIOC_TSCTEST_SETUP.
|
||
|
||
* Network Utilities: apps/netutils:
|
||
|
||
- apps/netutils/ftpc: Fix some corner-cases that could cause FTP to
|
||
access past the end of valid data.
|
||
|
||
* Wireless Utilities: apps/wireless:
|
||
|
||
- apps/wireless/ieee802154/i8shark: Fixes special XBee compensation
|
||
by purposely chopping off the FCS. From Anthony Merlino.
|
||
|
||
NuttX-7.25 Release Notes
|
||
------------------------
|
||
|
||
The 125th release of NuttX, Version 7.25, was made on June 3, 2018,
|
||
and is available for download from the Bitbucket.org website. Note
|
||
that release consists of two tarballs: nuttx-7.25.tar.gz and
|
||
apps-7.25.tar.gz. These are available from:
|
||
|
||
https://bitbucket.org/nuttx/nuttx/downloads
|
||
https://bitbucket.org/nuttx/apps/downloads
|
||
|
||
Both may be needed (see the top-level nuttx/README.txt file for build
|
||
information).
|
||
|
||
Additional new features and extended functionality:
|
||
|
||
* File Systems/Block and MTD Drivers
|
||
|
||
- fs/cromfs: Added CROMFS file system. CROMFS is a commpressed, in-
|
||
memory, read-only file system based on LZF.
|
||
- fs/vfs: Added support for checking if a descriptor is a socket in
|
||
fstat(). From Pelle Windestam.
|
||
|
||
* Graphics/Display Drivers:
|
||
|
||
- drivers/lcd: Remove support for the Nokia6100 LCD. That LCD uses a
|
||
9-bit SPI interface (the 9th bit being the command/data bit that is
|
||
normally a discrete). That communication was never successfully
|
||
integrated. I now believe that it would would require some special
|
||
support from the low-level, MCU SPI driver to manage that 9th bit.
|
||
The deleted code is still available in the Obsoleted repository.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- net/tcp: Added support for TCP Keepalive, add SO_KEEPALIVE socket
|
||
option. Added socket options needed to manage TCP-keepalive and TCP
|
||
state machine logic to detect if that the remote peer is alive.
|
||
- net/tcp: In tcp_input(), add the logic to detect, decode, and
|
||
respond to TCP Keep-Alive packets.
|
||
- net/tcp: Extended support for sending to non-blocking tcp sockets.
|
||
From Pelle Windestam.
|
||
- net/bluetooth: Added support for AF_BLUETOOTH sockets.
|
||
- drivers/net: Added TAP (network bridge) mode to tun.c. In the
|
||
previous implementation, TAP mode did not handle a packet correctly.
|
||
Also, the driver did not set the link layer type and could not
|
||
assign the interface name. This change fixes such issues and supports
|
||
TAP mode correctly. From Masayuki Ishikawa.
|
||
|
||
* Wireless/Wireless Drivers:
|
||
|
||
- wireless/ieee802154: Added basic MAC support for RX-ENABLE.request
|
||
primitive From Anthony Merlino.
|
||
- wireless/ieee802154: Added MAC ackreq flag to TX descriptor for use by
|
||
radio driver. The radio layer is responsible for a full "transaction".
|
||
Because of differences in radio capabilities, the radio must be
|
||
responsible for the handling of acks and retransmissions. This commit
|
||
simply passes the ackreq meta-data flag along to the radio. Also
|
||
Fixes bug where primitive was freed when it shouldn't have been,
|
||
causing double free call. From Anthony Merlino.
|
||
- wireless/bluetooth: Bring in the Bluetooth stack from the Intel/
|
||
Zephyr arduino101_firmware_source-v1.tar package.
|
||
- drivers/bluetooth: Added re-architected version of the Bluetooth
|
||
UART driver from the Intel/Zephyr arduino101_firmware_source-v1.tar
|
||
package.
|
||
- include/nuttx/wireless: Added a setbaud() method to the HCI UART
|
||
lower half interface that can be used to change the default BAUD
|
||
selection.
|
||
- wireless/bluetooth and include/nutt/net: Added support for Bluetooth
|
||
IOCTL commands.
|
||
- drivers/wireless/bluetooth: Added a NULL device to support some very
|
||
low level testing on the Simulator.
|
||
- drivers/wireless/cc3000: Eliminate support for the CC3000 wireless
|
||
part because it doesn't use the USRSOCKET. From Alan Carvalho de
|
||
Assis.
|
||
- drivers/wireless/ieee80211: Added BCM43428 support. From hhuysqt.
|
||
|
||
* Other Common Device Drivers:
|
||
|
||
- drivers/1wire: Added 1-wire subsystem and ds28e17 driver From Juha
|
||
Niskanen.
|
||
- drivers/1wire: Added PM hooks and unlink support to sht21 sensor
|
||
(allowing hot-swappable I2C bus from 1-wire converter). Unlike most
|
||
other unlink implementations in NuttX drivers, this one does not
|
||
allow any I2C operations after unlink, making it possible to
|
||
deallocate the I2C bus. From Juha Niskanen.
|
||
- drivers/i2c: Added support for the pca9540bdp i2cmultiplexer. From
|
||
Giorgio Gro<72>.
|
||
- drivers/power: Added pm_unregister From Juha Niskanen.
|
||
- drivers/power: Added generic upper-half motor driver From Mateusz
|
||
Szafoni.
|
||
- drivers/rgbled: Added support for multichannel PWM (multiple PWM
|
||
channels on a single timer) From Anthony Merlino.
|
||
- drivers/sensors: Added support for Sensirion SHT2x humidity sensor.
|
||
From Juha Niskanen.
|
||
- drivers/sensors: Added LSM330 SPI and ADXL372 drivers along with the
|
||
- drivers/sensors: Added support for INA3221 power sensor. This has a
|
||
3 channel bus/shunt voltage pairs. From Anthony Merlino.
|
||
cluster driver infrastructure. From Bob Feratich.
|
||
- drivers/sensors: Added multiple MAX31855 sensors feature support.
|
||
From Tiago Almeida.
|
||
- drivers/wireless/cc1101.c: Driver improvements from from lihaichen.
|
||
- progmem interface: Discern r/w and erase page sizes. Introduce new
|
||
up_progmem_erasesize architecture API to be able to communicate the
|
||
read/write page size independently from erase page size. Implement
|
||
up_progmem_erasesize for all architectures that already support
|
||
progmem, assuming that for those architectures the sizes of both
|
||
read/write and erase pages are identical. From Michael Jung.
|
||
|
||
* Simulation
|
||
|
||
- configs/sim: Added a configuration that will support some limited
|
||
testing of the Bluetooth stack.
|
||
|
||
* ARM:
|
||
|
||
- ARM: All ARM architectures now support CONFIG_ARCH_IDLE_CUSTOM.
|
||
|
||
* MIPS:
|
||
|
||
- MIPS: All MIPS architectures now support CONFIG_ARCH_IDLE_CUSTOM.
|
||
|
||
* Infineon XMC4xxx Drivers:
|
||
|
||
- XMC4: Added SPI support for Infineon XMC45xx microcontroller. From
|
||
Alan Carvalho de Assis.
|
||
|
||
* Infineon XMC4xxx Boards:
|
||
|
||
- XMC4500-Relax: Added board support for SPI. From Alan Carvalho de
|
||
Assis.
|
||
|
||
* Nordic NRF52:
|
||
|
||
- NRF52: Initial support for the NRF52 including UART, Timer, and
|
||
GPIO support. From Janne Rosberg.
|
||
|
||
* Nordic NRF52 Drivers:
|
||
|
||
- NRF52: Added watchdog timer drivers. Includes significant
|
||
updates from Levin Li.
|
||
- NRF52: Added nRF52 Flash PROGMEM support From Alan Carvalho de
|
||
Assis.
|
||
|
||
* Nordic NRF52 Boards:
|
||
|
||
- configs/nrf52-pca10040: Added support for the NRF52-PCA10040 board
|
||
including LEDs and buttons From Janne Rosberg.
|
||
- configs/nrf52-pca10040: Added support for starting the watchdog
|
||
timer on the nRF52. From Alan Carvalho de Assis.
|
||
- configs/nrf52-pca10040: Added a configuration for testing the
|
||
watchdog timer. From Alan Carvalho de Assis.
|
||
|
||
* NXP Freescale i.MX RT:
|
||
|
||
- i.MX RT: Brings in basic support for the i.MX RT 1050 'crossover'
|
||
SoC. Includes timer and UART support. This port was the joint
|
||
effort of Janne Rosberg, Ivan Ucherdzhiev, and myself. I give
|
||
credit to Ivan for the kill because he is the one to held on to
|
||
the end. From Ivan Ucherdzhiev.
|
||
|
||
* NXP Freescale i.MX RT Drivers:
|
||
|
||
- i.MX RT: Added power management hooks.
|
||
- i.MX RT: Added eDMA support (unverified).
|
||
- i.MX RT: Added Ethernet driver. From Jake Choy.
|
||
- i.MX RT: Added cache operations to permit the Ethernet driver to
|
||
work with the D-Cache enabled, at least in write-through mode.
|
||
Added support for PHY interrupts and PHY IOCTLs.
|
||
|
||
* NX FreescaleP i.MX RT Boards:
|
||
|
||
- IMXRT1050-EVK: Added support for booting from the on board HYPER
|
||
Flash. From Ivan Ucherdzhiev.
|
||
- IMXRT1050-EVK: Added logic to support the board's user LED. From
|
||
Jake Choy.
|
||
- IMXRT1050-EVK: Added procfs auto-mount support in imxrt_bringup.c.
|
||
From Ivan Ucherdzhiev.
|
||
- IMXRT1050-EVK: Added LIBCXX test configuration.
|
||
- IMXRT1050-EVK: Added support for the imxrt1050-evk button. From
|
||
Jake Choy.
|
||
- MXRT1050-EVK: Added support for on-board NOR FLASH boot. From
|
||
Ivan Ucherdzhiev.
|
||
- IMXRT1050-EVK: Disable LED support because pins conflict with PHY.
|
||
Enable device statistics. Enable NSH ifup and ifdown commmands.
|
||
Added an NSH configuration for testing Ethernet.
|
||
|
||
* NXP Freescale Kinetis:
|
||
|
||
- K28F: Added architecture support for the Kinetis K28F.
|
||
|
||
* NXP Freescale Kinetis Drivers:
|
||
|
||
- SDHC: Make Kinetis SDHC pullups work the same as the STM32 SDIO
|
||
pullups.
|
||
|
||
* NXP Freescale Kinetis Boards:
|
||
|
||
- Freedom-K28F. Added support for the Kinetis Freedom-K28F board.
|
||
|
||
* NXP LPC17xx:
|
||
|
||
- LPC17xx: Added support for ARMv7-M run time stack checking on NXP
|
||
LPC17xx MCUs based on CONFIG_ARMV7M_STACKCHECK. Basically copied
|
||
from STM32. From Michael Jung.
|
||
|
||
* NXP LPC17xx Drivers:
|
||
|
||
- LPC17xx: Added a configurable option to allow using a part of
|
||
LPC17xx's internal flash memory as a Memory Technology Device via
|
||
NuttX' mtd_progmem infrastructure. Tested with LPC1769. From
|
||
Michael Jung.
|
||
|
||
* NXP LPC17xx Boards:
|
||
|
||
- Olimex-LPC1766STK: Remove support for the Nokia6100 LCD. That
|
||
LCD uses a 9-bit SPI interface (the 9th bit being the command/data
|
||
bit that is normally a discrete). That communication was never
|
||
successfully integrated.
|
||
|
||
* NXP LPC43xx Boards:
|
||
|
||
- configs/bambino-200e: Added support for multiple MAX31855 sensors
|
||
to the bambino-200e. From Tiago Almeida.
|
||
|
||
* OpenRISC
|
||
|
||
- arch/or1k/src. Added basic architectural support for the OpenRISK
|
||
mor1kx architecture. The initial commit was verified on a Qemu
|
||
simulation but is otherwise untested. From Matt Thompson.
|
||
|
||
* OpenRISC Board
|
||
|
||
- configs/or1k. OpenRISK mor1kx Qemu simulation. From Matt Thompson.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32: Added support for the STM32F401xB and STM32F401xC families.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 HRTIM: Added HRTIM software capture trigger, added software
|
||
reset trigger, added outputs polarization configuration From
|
||
raiden00pl.
|
||
- STM32 ADC: Added ADC injected channels configuration. From Mateusz
|
||
Szafoni.
|
||
- STM32 HCIUART: Added a Bluetooth HCI UART lower half driver for the
|
||
STM32.
|
||
- STM32 HCIUART: Implement the setbaud() method for the STM32 HCI
|
||
UART interface.
|
||
- STM32 SDIO: Added support for SDIO card to SDIO driver. From
|
||
hhuysqt.
|
||
- STM32 SDIO: Added internal pull-up option for SDIO pins. From Alan
|
||
Carvalho de Assis.
|
||
- STM32 F2/F4 ADC: Added Vbat measurement to ADC driver for
|
||
STM32F20xx and STM32F4xxx. As with the MCU temperature and VREFINT
|
||
measurement, this change requires user to enable the corresponding
|
||
channel first. For Vbat channel the ioctl cmd is
|
||
IO_ENABLE_DISABLE_VBAT_CH, and its arg should be a pointer to bool
|
||
which must be true to enable and false to disable the Vbat channel.
|
||
Moreover, since Vbat input contains a built-in voltage divider, it
|
||
is highly suggested to disable Vbat input channel after measurement
|
||
is done in order to prevent battery drain through the divider. From
|
||
Dmitriy Linikov.
|
||
- STM32, STM32L4 1WIRE: Added one bit read and write to 1-wire
|
||
interface. This is needed for devices that require single bit
|
||
timeslot generation and for 1-Wire search algorithm triplets. From
|
||
Juha Niskanen.
|
||
- STM32 F3 SPI: Enable DMA for SPI on stm32f30xxx MCUs. From Michal
|
||
Lyszczek.
|
||
- STM32 L4 1WIRE: Ported 1wire driver from STM32. From Juha
|
||
Niskanen.
|
||
- STM32 L4 I2C/SPI/1WIRE: Added PM hooks to I2C, SPI and 1-wire From
|
||
Juha Niskanen.
|
||
- STM32 F7 RTC: Added CONFIG_RTC_PERIODIC support. Also makes the RTC
|
||
lowerhalf more like in STM32L4. From Juha Niskanen.
|
||
- STM32 F7 ADC/I2C/SPI: Added PM hooks to ADC, I2C and SPI. From
|
||
Juha Niskanen.
|
||
|
||
* STMicro STM32 Boards:
|
||
|
||
- Indium-F7: Removed support for the Indium-F7 board. This was done
|
||
for two reasons: (1) The board support was just clone of the
|
||
Nucleo-144 board support with naming changes. There has been no
|
||
support and no further development for the board support. (2) There
|
||
does not seem to be any available Indium-F7 board available to the
|
||
public anywhere on the Internet. There is not even a reference to
|
||
the board on the rafresearch.com web stie.
|
||
- Nucleo-L452RE: Added buttons example From Juha Niskanen.
|
||
- Nucleo-L476RG: Added support to Nokia LCD PCD8544 on nucleo-l476rg.
|
||
From Alan Carvalho de Assis.
|
||
- Nucleo-L476RG: Added nxdemo configuration to nucleo-l476rg using
|
||
PCD8544. From Alan Carvalho de Assis.
|
||
- Olimex-STM32-P407: Added a zmodem test configuration.
|
||
- Olimex-STM32-P407: Added the module configuration.
|
||
- Photon: Added RGB led support From Anthony Merlino.
|
||
- STM32F103-Minimum: Added support for DFU bootloader From Simon
|
||
Piriou.
|
||
- Spark: Removes Spark board configuration. Still available in the
|
||
Obsoleted repository. If there is no CC3000 support, then there is
|
||
no purpose in supporting the Spark either.
|
||
- STM32F334-Disco: Added buck/boost converter example configuration.
|
||
From Mateusz Szafoni.
|
||
- STM32F4 Discovery: Added support for multiple MAX31855 sensors to the
|
||
STM32F4 Discovery From Tiago Almeida.
|
||
- STM32F4 Discovery: Added support in bring-up logic to initialize the
|
||
HCI UART and register the HCI UART network device.
|
||
- STM32F4 Discovery: Added MAX7219 support to STM32F4Discovery board.
|
||
From Alan Carvalho de Assis.
|
||
- STM32F4 Discovery: Added board configuration for CS43L22 audio
|
||
example. From Alan Carvalho de Assis.
|
||
- STM32F4 Discovery: Added a module configuration for testing the
|
||
kernel module example with the STM32F4Discovery board. From Alan
|
||
Carvalho de Assis.
|
||
- STM32F429I-DISCO: Added a LittlevGL configuration for stm32f429i-
|
||
disco. From seyyah.
|
||
- STM32F746G-DISCO. Added clang support to stm32f746g-disco board.
|
||
From Goran Mekic.
|
||
- STM32L1 Discovery: Added support for the STM32L152RCT6 version of
|
||
the board.
|
||
|
||
* TI TMS570:
|
||
|
||
- TMS570: Added support for the TMS570LS3137ZWT. From Ivan Ucherdzhiev.
|
||
|
||
* TI TMS570 Boards:
|
||
|
||
- configs/tms570ls31x-usb-kit: Added support for the TI Hercules
|
||
TMS570LS31x USB Kit From Ivan Ucherdzhiev.
|
||
|
||
* TI Tiva:
|
||
|
||
- CC3200: Remove all support for the CC3200. This was a port that was
|
||
started but never completed. What good is partial CC3200 support
|
||
with no wireless support?.
|
||
|
||
* TI Tiva Drivers:
|
||
|
||
- EEPROM: Implements an EEPROM driver in compliance with MTD driver
|
||
as provided by NUTTX for TM4C1294. The EEPROM driver currently
|
||
supports only two functionalities - read bytes(multiple of 4) and
|
||
write bytes (multiple of 4). From Shirshak Sengupta.
|
||
- FLASH: Implemented Flash CONFIG_MTD_BYTE_WRITE for TM4c1294.
|
||
Implemented the tiva_write function which will write an arbitrary
|
||
number of bytes to flash (in multiple of 4). From Shirshak Sengupta.
|
||
- Serial: Added TERMIOS IOCTL support to the Tiva serial driver.
|
||
From Dmitry Sharihin.
|
||
|
||
* TI Tiva Boards:
|
||
|
||
- CC3200-Launchpad: Remove all support for the CC3200-Launchpad.
|
||
This was a port that was started but never completed. What good is
|
||
partial CC3200-Launchpad board support with no wireless support?.
|
||
|
||
* Libraries/Header Files:
|
||
|
||
- libs/: Moved all of the libraries under a common directory called
|
||
libs/ (libc, libnx, and libxx). This almost certainly break libcxx
|
||
for now.
|
||
- libs/libc/time: Added an implementation of clock().
|
||
- libs/libc/lzf: Added a modified version of Marc Alexander Lehmann's
|
||
LIBLZF3.6 library From Boris Astardzhiev.
|
||
- libs/libc/unistd: Initial, minimal implementation of sysconf().
|
||
Only sufficient to support the functionality of less standard
|
||
getdtabilesize(). From Michael Jung.
|
||
- libs/libdsp: Added DSP support library. From Mateusz Szafoni.
|
||
- include/sys: Added resource.h.
|
||
- include/nuttx/video: Add overlay support to framebuffer interface
|
||
definition. From Marco Krahl.
|
||
|
||
* Tools:
|
||
|
||
- tools/gencromfs.c: Added tools/gencromfs.c, a tool that can be used
|
||
to generate CROMFS file system images.
|
||
- tools/mkromfsimg.sh: Include an option in mkromfsimg.sh to ignore
|
||
FAT/RAMDISK. This permits you to build tiny systems with ROMFS but
|
||
with the rather large FAT FS support. From Alan Carvalho de Assis.
|
||
- tools/nxstyle.c: Added check for blank lines before and after single
|
||
line comments. From Bob Feretich.
|
||
- tools/sethost.sh: Added support for macOS.
|
||
- tools/uncrustify.cfg: An initial cut at an uncrustify C formatting
|
||
script from Gregory Nutt. Updated, corrected, and verified. From
|
||
Bob Feretich.
|
||
|
||
* Build System:
|
||
|
||
- Makefile: Added support for nconfig frontend for 'make nconfig'.
|
||
From Michal Lyszczek.
|
||
- configs/: Added definition of strip to many Make.defs files.
|
||
- staging/: Remove fixed lib/ subdirectory and its content. Replace
|
||
with new directory called staging/ that is created dynamically when
|
||
building and removed when 'make clean' is done. This both improves
|
||
the naming and eliminates a garbage directory from the repository.
|
||
- tools/: Move all build-related files (except the top-level Makefile)
|
||
into the tools/ sub-directory. This really cleans up the top-level
|
||
directory.
|
||
|
||
* NSH: apps/nshlib:
|
||
|
||
- apps/nshlib: Added the mkfatfs -r option which can be used to
|
||
specify the number of entries in the FAT12/FAT16 root directory.
|
||
From Boris Astardzhiev.
|
||
|
||
* Examples/Tests: apps/examples:
|
||
|
||
- apps/examples/adxl372_test and lxm330spi_test: Added ADXL372 and
|
||
LSM330 tests. From Bob Feretich.
|
||
- apps/examples/cc3000: Removed the CC3000 example. From Alan
|
||
Carvalho de Assis.
|
||
- apps/examples/cromfs: Added an example of how to build a CROMFS
|
||
file system image.
|
||
- apps/examples/elf: Extend the ELF program module demo so that you
|
||
can use compressed ELF programs with CROMFS.
|
||
- apps/examples/elf: Use strip command to make ELF binaries MUCH
|
||
smaller. Added an option to strip debug symbols even if the debug
|
||
symbols are enabled in the base code.
|
||
- apps/examples/max31855: Added an example to read multiple max31855
|
||
sensors. From Tiago Almeida.
|
||
- apps/examples/netloop: Update network loopback example so that it
|
||
can be used to test TCP KeepAlive.
|
||
- apps/examples/nxdemo: Added nxdemo application From Alan Carvalho
|
||
de Assis.
|
||
- apps/examples/powerled: Added arch initialization.
|
||
- apps/examples/uavcan: Removed because apps/canutils/libuavcan is no
|
||
longer available.
|
||
|
||
* System Utilities: apps/system
|
||
|
||
- apps/system/lzf: Added the test case from Marc Alexander Lehmann's
|
||
LIBLZF3.6 librrary From Boris Astardzhiev.
|
||
- apps/system/embedlog: Support for embedlog data loggin package from
|
||
https://embedlog.kurwinet.pl/ From Michal Lyszczek.
|
||
- apps/system/zmodem: Added an option to enable hardware flow control
|
||
via termios. Allow stack size and priority to be configured.
|
||
- apps/system/zmodem: Call tcflush() before closing the serial port.
|
||
This is necessary because that close operation may hang if hardware
|
||
flow control is enabled. Consider this scenario: After the host
|
||
sz runs on the host, it exits and leaves CTS high. The target rz
|
||
completes, and tries to close the serial port. But if there is
|
||
buffered Tx data, then the close will hang when it tries to drain
|
||
the buffered Tx data since there is no where it can go. tcflush()
|
||
discards the buffered data and permits the close to continue.
|
||
There is additional logic in nuttx/drivers/serial needed to work
|
||
with this.
|
||
|
||
* CAN Utilities: apps/canutils:
|
||
|
||
- apps/canutils/libuavcan. Removed! libuavcan has not built for a
|
||
year or so. The basic problem is that as NuttX advances, the old
|
||
frozen version of libuavcan has become absolute because it violates
|
||
the portable POSIX OS interface. No one is maintaining the port so
|
||
there is no alternative but to remove it.
|
||
|
||
* Network Utilities: apps/netutils:
|
||
|
||
- apps/netutils/tftpc: Modified the TFTP client functions to use a
|
||
data read/write callback instead of a file. This allows TFTP to
|
||
write to arbitrary destination (in my case, a MTD device - for
|
||
firmware update). Two new functions are introduced for this, named
|
||
tftpget_cb and tftpput_cb. They are just made of most of the
|
||
existing code. The previously existing tftpget/tftpput functions
|
||
are now wrappers on the new ones, with callbacks that read/write
|
||
from files, so my modifications are backwards compatible with
|
||
existing applications, eg the associated nsh commands dont need to
|
||
be changed. From Sebastien Lorquet.
|
||
|
||
* Wireless Utilities: apps/wireless:
|
||
|
||
- apps/wireless/bluetooth/btsak: Added a Bluetooth debug tool.
|
||
|
||
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:
|
||
|
||
- sched/sched: Fix a deadlock in SMP mode. Two months ago, I
|
||
introduced sched_tasklist_lock() and sched_tasklist_unlock() to
|
||
protect tasklists in SMP mode. This change works well for HTTP
|
||
audio streaming aging test with lc823450-xgevk. However, I found a
|
||
deadlock in the scheduler when I tried similar aging tests with DVFS
|
||
autonomous mode where CPU clock speed changed based on cpu load. In
|
||
this case, call sequences were as follows. To avoid this deadlock,
|
||
I added sched_tasklist_unlock() when calling up_cpu_pause() and
|
||
sched_addreadytorun(). Also, added sched_tasklist_lock() after the
|
||
call. Also added critical sections to lib_filesem.c, mm_sem.c, and
|
||
net_lock.c for SMP for SMP. From Masayuki Ishikawa.
|
||
- sched/sched: Change ordering of round-robin time slice check
|
||
(sched_process_scheduler()) and processing of wdog timers
|
||
(wd_timer()). wd_timer()'s callback function can change current
|
||
running task and, hence, must be done after the time slice check.
|
||
The time slice check will decrement the currently running task's
|
||
time slice allotment. If such a context switch occurs, then the
|
||
newly started task will lost one could of that allotment before it
|
||
even has a chance to run. From EunBong Song.
|
||
|
||
* File System/Block and MTD Drivers:
|
||
|
||
- fs/fat: In fs_stat(), when stat'ing the root directory, avoid
|
||
calculating the address of the root directory entry. The
|
||
calculation is bogus (but not harmful) because the root directory
|
||
does not have a directory entry. Noted by Boris Astardzhiev.
|
||
- fs/fat: Avoid calculating the bogus directory entry address for
|
||
the FAT root directory (since it has no directory entry). This
|
||
change should have no effect, other than making the logic clearer.
|
||
From Boris Astardzhiev.
|
||
- fs/mount: Fix wrong size reported by df -h. Reason is that size
|
||
in bytes is calculated always on uint32_t types and cards bigger
|
||
than 4GB will overflow uint32_t type. Solution is to use uint64_t
|
||
where possible. From Michal Lyszczek.
|
||
- fs/smartfs: Fix a hardfault in SmartFS. Problem occurred when
|
||
opening a file with O_CREAT (only) when the file arelready exists
|
||
but has a size of zero. From Michal Lyszczek.
|
||
- fs/vfs: Fix negative errno set in fs_open.c From Michal Lyszczek.
|
||
- drivers/mtd: Fixed a W25 driver w25_cacheflush sector bug. From
|
||
lihaichen.
|
||
- drivers/mtd: mtdconfig_register() returned OK instead of -ENOMEM on
|
||
failed allocation. From Michal Lyszczek.
|
||
|
||
* Graphics/Display Drivers:
|
||
|
||
- drivers/lcd/ft80x: ACTIVE host command appears to be formatted
|
||
differently than other host commands; Fix ROM CHIPID. Appears to
|
||
be big-ending, BCD. Fix some compile issues when debug features
|
||
are enabled.
|
||
- drivers/lcd/ft80x: Fix a typo that caused the driver to fail to
|
||
recognize the ft801 chip version. From Gregory Nutt.
|
||
- Review all board implementations of board_lcd_initialize(). The
|
||
NuttX convention is that all internal functions that return errors
|
||
as an 'int' must return a negated errno value on failure and a non-
|
||
negative value on success. Most were right but eight of them had
|
||
cloned logic that returns 1 on success and zero on failure. both
|
||
of which are interpreted as success by the caller since they are
|
||
non-negative.
|
||
|
||
* Networking/Network Drivers:
|
||
|
||
- net/tcp: Fixed problem with send() retrun value when using
|
||
nonblocking I/O over buffered tcp socket From Dmitriy Linikov.
|
||
- net/sixlowpan: Fix a nasty, byte-ordering/endian-ness problem.
|
||
The root cause has been found and corrected. And a half dozen
|
||
or so bandaid fixes were reverted.
|
||
- net/sixlowpan: Preserve big-endian (network order) when
|
||
uncompressing address. From Anthony Merlino.
|
||
- net/sixlowpan: TCP send should have PSH and ACK flags set when
|
||
sending. This matches the standard network (Ethernet) TCP send
|
||
logic. From Anthony Merlino.
|
||
- net/udp: Fix several issues using connected UDP sockets: sendto()
|
||
should not accept an address. Normally send() should be used with
|
||
connect UDP sockets instead. recvfrom() is no longer necessary.
|
||
recvfrom() and poll() should not reset to accept any addresses but
|
||
should, instead, only accept inputs and events from the connected
|
||
remote peer. On of these issues was noted by ???
|
||
<liguiding@pinecone.net>. Changes were made as summarized here:
|
||
http://www.masterraghu.com/subjects/np/introduction/unix_network_programming_v1.3/ch08lev1sec11.html
|
||
From Gregory Nutt.
|
||
- net/udp: Resolve race condition in connection-less UDP sockets with
|
||
read-ahead buffering. In connection-mode UDP sockets, a remote
|
||
address is retained in the UDP connection structure. This
|
||
determines both there send() will send the packets and which packets
|
||
recv() will be accepted. This same mechanism is used for
|
||
connection-less UDP sendto: A temporary remote address is written
|
||
into the connection structure to support the sendto() operation.
|
||
That address persists until the next recvfrom() when it is reset to
|
||
accept any address. When UDP read-ahead buffering is enabled,
|
||
however, that means that the old, invalid remote address can be left
|
||
in the connection structure for some time. This can cause read-
|
||
ahead buffer to fail, dropping UDP packets. Shortening the time
|
||
between when he remote address is reset (i.e., immediately after the
|
||
sendto() completes) is not a solution, that does not eliminate the
|
||
race condition; in only makes it smaller. With this change, a flag
|
||
was added to the connection structure to indicate if the UDP socket
|
||
is in connection mode or if it is connection-less. This change
|
||
effects only UDP receive operations: The remote address in the UDP
|
||
connection is always ignored if the UDP socket is not in connection-
|
||
mode. No for connection-mode sockets, that remote address behaves as
|
||
before. But for connection-less sockets, it is only used by sendto().
|
||
|
||
* Wireless/Wireless Drivers:
|
||
|
||
- drivers/wiresless/ieee80211: Correct some initialization problems
|
||
with BCM43362 chip. From hhuysqt.
|
||
- drivers/ieee802154/xbee: Added a timeout to send logic to handle
|
||
case where XBee module fails to respond to a Transmit request with
|
||
a Transmit Status From Anthony Merlino.
|
||
|
||
* Common Drivers:
|
||
|
||
- Per OpenGroup.org, syslog -- and, hence, nonstandard vsyslog, and
|
||
debug wrappers -- does not return a value. Rename _vsyslog to
|
||
nx_vsyslog. Use internal nx_vsyslog in the few cases where a
|
||
return value is required.
|
||
- drivers/leds: Fixes RGB LED issues caused by uninitialized memory
|
||
with CONFIG_RGBLED_MULTICHAN. The uninitialized pwm_info_s struct
|
||
caused a rogue channel to be started causing errros in the pwm
|
||
driver From Anthony Merlino.
|
||
- drivers/sensors/lis2dh: Clear INT1 at SNIOC_WRITE_INT1THRESHOLD
|
||
ioctl. From Jussi Kivilinna.
|
||
- drivers/sensors/sht21: Changed I2C_TRANSFER return value so that
|
||
it return on zero on success, not the count of bytes transferred.
|
||
From Juha Niskanen.
|
||
- drivers/serial: Per Matias Edlund: I recently used the tcflush
|
||
function and found that it failed with ENOTTY. The reason is that
|
||
the TCFLSH case in the function uart_ioctl in the file
|
||
drivers/serial/serial.c does not update the ret value." On
|
||
success, the TCFLSH IOCTL logic needs to explicitly set the return
|
||
value (ret) to zero.
|
||
- drivers/serial: Added a timeout to uart_tcdrain(). Even if
|
||
tcflush() is used to discard buffered data, the close() can still
|
||
hang if (a) hardware flow control is enabled, (b) CTS == 1, and
|
||
(c) there is data stuck in the hardware Tx FIFO. tcflush() does
|
||
not currently clear the MCU serial drivers' hardware Tx FIFOs.
|
||
This is a workaround for that.
|
||
- drivers/sensors: Fix APDS9960 work queue BUG found by Kyle Lei.
|
||
From Alan Carvalho de Assis.
|
||
|
||
* Simulator:
|
||
|
||
- arch/sim: Various fixes necessary to build the simulator under
|
||
MSYS2.
|
||
|
||
* ARMv7-R:
|
||
|
||
- ARMv7-R: Corrected several ARMv7-R issues. From Ivan Ucherdzhiev.
|
||
|
||
* Infineon XMC4xxx Boards:
|
||
|
||
- XMC4500-Relax: Call xmc4_spidev_initialize() in xmc4_boot.c. From
|
||
Alan Carvalho de Assis.
|
||
|
||
* NXP/Freescale LPC17xx Drivers:
|
||
|
||
- LPC17xx USB: Fix USB device endpoint allocation bookkeeping. From
|
||
Michael Jung.
|
||
- LPC17xx USB: Freeing endpoints should be set the same allocations
|
||
as when endpoint was allocated.
|
||
- LPC17xx USB: Fix loss of RX initiatives. USB bulk endpoints are
|
||
double buffered on LPC17xx MCUs. This means that up to two packets
|
||
might be received on an OUT endpoint that can not be handled
|
||
immediately if the receive request queue is empty. Thus,
|
||
rxpending must be a counter not a boolean flag. From Michael Jung.
|
||
|
||
* NXP/Freescale Kinetis Drivers:
|
||
|
||
- Kinetis USG: USB device fixes: Use correct CONFIG OTG control,
|
||
Fix interrupt storm when cable is disconnected. The DM, DP state
|
||
were incorrect because the pulldowns were not enabled. Also the
|
||
pending asynchronous resume interrupt needed to be re-armed after
|
||
the suspend is in effect. This is now done in the isr. From David
|
||
Sidrane.
|
||
- Kinetis Serial: In kinetis_lowputc.c, fix esBRFA calculation
|
||
effecting baudrate. Previous BRFA was not cleared and or-ed into
|
||
new BRFA, hence, buadrate was wrong. Where Baud Rate Fractional
|
||
Divisor (BRFD) UART baud rate = clock / (16 * (SBR + BRFD)). From
|
||
David Sidrane.
|
||
- Kinetis Serial: In kinetis_lowputc.c, fixed parity settings.
|
||
Kinetis UART must be placed in 9 bit mode (M=1) with when 8 bit data
|
||
with parity is required. If left in 8 bit mode (M=0) with parity
|
||
then D7 of the TX/RX register becomes parity bit. Hence what is
|
||
called 9-bit or 8-bit Mode Select is a misnomer. 8 bit mode when
|
||
parity is enabled is realy 7 bit with parity. From David Sidrane.
|
||
|
||
* NXP/Freescale Kinetis Boards:
|
||
|
||
- configs/teensy-3.x: Remove CONFIG_USBDEV_DUALSPEED from the usbnsh
|
||
configuration. Hardware supports only FS.
|
||
|
||
* NXP i.MX6 Drivers:
|
||
|
||
- i.MX6: Bring in a few i.MX6 fixes that were committed to similar
|
||
files for the i.MX RT.
|
||
|
||
* STMicro STM32:
|
||
|
||
- STM32 F3: Problem: stm32f30xx hangs waiting for LSE to initialize.
|
||
Reason for hang is that operation of setting LSE_ON does not take
|
||
effect because there is no clock on PWR peripheral. This is
|
||
initialized later in the code From Michal Lyszczek.
|
||
|
||
* STMicro STM32 Drivers:
|
||
|
||
- STM32 and STM32 L4 1WIRE: In 1wire driver, do not write useless
|
||
WRITEBIT zero return value to const buffer From Juha Niskanen.
|
||
- STM32 HRTIM: Fixed capture_get function,. From raiden00pl.
|
||
- STM32 F3 ADC: Fixed bug in RCC reset logic that resets ADC1
|
||
configuration when both ADC1 and ADC2 are in use From Mateusz
|
||
Szafoni.
|
||
- STM32 Ethernet: In case of PHY failure, usually because of the
|
||
lack of 25/50 MHz REFCLK input, the Ethernet block would lock up
|
||
in a while loop waiting for readiness, which will never happened.
|
||
This prevented the board from starting at all in the case of a PHY
|
||
failure. This commit adds a retry loop to avoid bricking the board
|
||
if the Ethernet block is unable to start. From Sebastien Lorquet.
|
||
- STM32 F7 SDMMC: Added support for the second SDMMC device. The
|
||
second SDMMC device was already supported but the clock was never
|
||
enabled. This fixes that. From William Douglas.
|
||
- STM32 Serial: Fix UART glitch when lowputc is enabled. From
|
||
Simon Piriou.
|
||
- STM32 USB: Skip recipient check for descriptor related
|
||
requests From Simon Piriou.
|
||
|
||
* TI Tiva Drivers:
|
||
|
||
- Tiva ADC: Fix compilation errors on Tiva ADC code when ADC is
|
||
enable. From Vinicius Maciel.
|
||
- Tiva Serial: Allow building of Tiva platform with no serial
|
||
console. From Dmitry Sharihin.
|
||
|
||
* C Library/Header Files:
|
||
|
||
- lib/libc/netdb: Fixed boundary conditions in dns_recv_response().
|
||
Fixed typos in include/nuttx/net/dns.h. From Masayuki Ishikawa.
|
||
- libs/libc/modlib: Fixed backward test for an error in
|
||
modlib_verify.c.
|
||
|
||
* Build System:
|
||
|
||
- Makefiles: Eliminate the spurious errors reported by 'make
|
||
savedefconfig'.
|
||
- Makefile(s): There is a sort command in the 'make savedefconfig'
|
||
file. I found that sort behaves differently on different platforms
|
||
based on the environment variable LC_ALL. Now, Makefile.unix will
|
||
force LC_ALL=C just for the sort command so that we can all generate
|
||
equivalent defconfig files.
|
||
- Makefile(s): The clean_context target needs to invoke a
|
||
corresponding clean_context target in the apps/Makefile in order to
|
||
remove linkages. From Gregory Nutt.
|
||
- LibTargets.mk, tools/Config.mk: Drop executable bit on installed
|
||
libraries. The rules to install libraries under lib/ were modified
|
||
to use mode 0644 instead of the default 0755. From Andrey Zabolotnyi.
|
||
|
||
* Examples/Tests: apps/examples:
|
||
|
||
- apps/examples/ft80x: Fix some size calculations. Added option to
|
||
disable primitive tests. just too boring to have to watch over and
|
||
over again. Fix a typo in backlight fade logic; Fix error in
|
||
formatted display light debug dump output.
|
||
- apps/examples/ft80x: Text is handled by the coprocessor and, hence,
|
||
must use RAM_CMD, not RAM_DL.
|
||
- apps/examples/ft80x: Fix some errors in co-processor demos. Correct
|
||
an error in the spinner demo.
|
||
- apps/examples/nsh and posix_spawn: Must not call exec_setsymtab()
|
||
directly. That is a non-POSIX internal OS interface.
|
||
- apps/examples/ostest: Do not call AIO test without
|
||
CONFIG_EXAMPLES_OSTEST_AIO From Juha Niskanen.
|
||
- apps/examples/smps: Fix typos in Kconfig. All power, voltage,
|
||
current values were strings with no default. I assume they should
|
||
be 'int' with what default?.
|
||
- apps/examples/smps: Fixes in some printf and in Kconfig From
|
||
Mateusz Szafoni.
|
||
- apps/system/zmodem: Fix Makefile.host. It was broken when zmodem.h
|
||
was moved to apps/include/system. Fix an incompatibility with the way
|
||
that CRCs are calculated.
|
||
|
||
* System Utilities: apps/system:
|
||
|
||
- apps/system: Applications should use the standard clock() interface,
|
||
not the internal NuttX clock_systimer() interface.
|
||
- apps/system/stackmonitor: Fix comparison between pointer and zero
|
||
character constant. From Juha Niskanen.
|
||
|
||
* Network Utilities: apps/netutils:
|
||
|
||
- apps/netutils/netlib: Various fixes needed to get a clean netlib
|
||
build with Bluetooth only.
|
||
|
||
* Wireless Utilities: apps/wireless:
|
||
|
||
- apps/wireless: Applications should use the standard clock()
|
||
interface, not the internal NuttX clock_systimer() interface.
|