745 lines
33 KiB
Plaintext
745 lines
33 KiB
Plaintext
|
NuttX-7.24
|
||
|
----------
|
||
|
|
||
|
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 existing 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/, graphics/, 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.
|