1102 lines
52 KiB
Plaintext
1102 lines
52 KiB
Plaintext
|
NuttX-7.23
|
||
|
----------
|
||
|
|
||
|
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 geometry 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 because 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 pseudo-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:
|
||
|
|
||
|
- Framebuffer 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.
|
||
|
- Framebuffer 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 independently 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 commands.
|
||
|
- 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
|
||
|
framebuffer 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 initialization 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 Pobří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 lengths.
|
||
|
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 TCP
|
||
|
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 Broadcast: 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 parameter 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 parameter 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 when
|
||
|
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 visible 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 to the highpri
|
||
|
configuration. From Mateusz Szafoni.
|
||
|
- STM3240G-EVAL: The timer frequencies (BOARD_TIMx_FREQUENCY) are
|
||
|
incorrectly defined in 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. 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 halves 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 files 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 resource 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_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.
|