695 lines
30 KiB
Plaintext
695 lines
30 KiB
Plaintext
|
NuttX-7.17
|
||
|
----------
|
||
|
|
||
|
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 currently 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 extended
|
||
|
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 prerequisite 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 I2C-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 Discovery: Add CAN support for STM32F4 Discovery. From
|
||
|
Matthias Renner.
|
||
|
- STM32F4 Discovery: added a canard configuration files. From
|
||
|
Matthias Renner.
|
||
|
- STM32F4 Discovery: Add FPU support for ostest for the STM32F4
|
||
|
Discovery 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 currently 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.
|
||
|
|
||
|
* Application 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 endpoint 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 earlier in the
|
||
|
initialization sequence (stm32_rcc.c() in order to avoid disabling
|
||
|
LSE during RTC initialization. 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'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.
|