Skip to content
ChangeLog 880 KiB
Newer Older
Gregory Nutt's avatar
Gregory Nutt committed
	    according the datasheet of Atmel. In short, this option switches
	    the processor from "fixed peripheral selection" (single device) to
	    "variable peripheral selection" (multiple devices on the bus).
	  - Add a new Function to the interface to control the timing and delays
	    of the chip according the ChipSelect lines. This function can
	    control the delay between the assertion of the ChipSelect and the
	    first bit, between the last bit and the de-assertion of the
	    ChipSelect and between two ChipSelects. This is needed to tune the
	    transfer according the specification of the connected devices.
Gregory Nutt's avatar
Gregory Nutt committed
	  - Add three "hw-features" for the SAMV7, which controls the behavior
	    of the ChipSelect:
	    - force CS inactive after transfer: this forces a (short)
	      de-assertion of the CS after a transfer, even if more data is
	      available in time
	    - force CS active after transfer: this forces the CS to stay active
	      after a transfer, even if the chip runs out of data.
	      Btw.: this is a prerequisit to make the LASTXFER bit working at all.
	    - escape LASTXFER: this suppresses the LASTXFER bit at the end of the
	      next transfer. The "escape"-Flag is reset automatically.
	  From Frank Benkert (2016-06-14)
Gregory Nutt's avatar
Gregory Nutt committed
	* Many CONFIG_DEBUG_* options did not have matching macros defined in
	  include/debug.h.  Rather, there were various definitions scattered
	  throughout the sourse tree.  These were collected together and
	  centralized with single macro definitions in include/debug.h
	  (2016-06-15)
	* STM32F7: Add SPI, I2C, and ADC drivers.  From Lok Tep (2016-06-15).
	* err(), warn(), info(), and alert() renamed to include leading '_'.
	  This was done to avoid some naming collisions (2-06-16
	* STM32: Move backup domain reset to to earlier in the initialization
	  sequence (stm32_rcc.c() in order to avoid disabling LSE during RTC
	  initialiation.  From Alan Carvalho de Assis (2016-06-16).
	* SYSLOG: syslog() will now automatically redirect output to lowsyslog()
	  if called from an interrupt handler (2016-06-16).
	* STM32: When configuring a GPIO via stm32_configgpio() the function
	  will first set the mode to output and then set the initial state of
	  the gpio later on.  If you have an application with an externaly
	  pulled-up pin, this would lead to a glitch on the line that may be
	  dangerous in some applications (e.G. Reset Line for other chips,
	  etc).  This changes sets the output state before configuring the pin
	  as an output.  From Pascal Speck  (2016-06-17).
	* STM32 F7: Apply Pascal Speck's GPIO STM32 change to STM32 L4
	  (2016-06-17).
	* STM32 L4: Apply Pascal Speck's GPIO STM32 change to STM32 L4.
	  From Sebastien Lorquet (2016-06-17).
	* Review all uses of *err().  These macro family should indicate only
	  error conditions.  Convert *err() to either *info() or add ERROR:,
	  depending on if an error is reported (2016-06-17).
	* STM32F7: Review, correct, and update I2C, SPI, and ADC drivers.  From
	  David Sidrane (2016-06-17).
Gregory Nutt's avatar
Gregory Nutt committed
	* LPC17 Ethernet:  Needs to correctly ignore PHYID2 revision number
	  when comparing PHY IDs (2016-06-18).
	* SYSLOG: Consolidate all SYSLOG logic in drivers/syslog.  Add an
	  abstraction layer that supports:  (1) redirection of SYSLOG outpout.
	  This is usually so that you can boot with one SYSLOG output but
	  transition to another SYSLOG output when the OS has initialialized,
	  (2) adds common serialization of interrupt output as a configuration
	  option.  Without this configuration setting, interrupt level output
	  will be asynchronous.  And (3) vsyslog is now a system call and is
	  usable with other-than-FLAT builds (2016-06-19).
	* TCP Networking: While working with version 7.10 I discovered a
	  problem in TCP stack that could be observed on high network load.
	  Generally speaking, the problem is that RST flag is set in
	  unnecessary case, in which between loss of some TCP packet and its
	  proper retransmission, another packets had been successfully sent.
	  The scenario is as follows:  NuttX did not receive ACK for some
	  sent packet, so it has been probably lost somewhere. But before
	  its retransmission starts, NuttX is correctly issuing next TCP
	  packets, with sequence numbers increasing properly. When the
	  retransmission of previously lost packet finally succeeds, tcp_input
	  receives the accumulated ACK value, which acknowledges also the
	  packets sent in the meantime (i.e. between unsuccessful sending of
	  lost packet and its proper retransmission). However, variable unackseq
	  is still set to conn->isn + conn->sent, which is truth only if no
	  further packets transmission occurred in the meantime.  Because of
	  incorrect (in such specific case) unackseq value, few lines further
	  condition if (ackseq <= unackseq)is not met, and, as a result, we
	  are going to reset label.  From  Jakub Łągwa (2016-06-20).
Gregory Nutt's avatar
Gregory Nutt committed
	* SYSLOG: Remove lowsyslog(), vlowsyslog(), and associated macros
	  *llinfo(), *llwarn(), and llerr().  In the redesigned syslog() logic,
	  these serve no purpose (2016-06-20).
	* Make system: Need to build the drivers/ directory even it file
	  descriptors are not supported.  There are things in the drivers/
Gregory Nutt's avatar
Gregory Nutt committed
	  directory that are still needed (like SYSLOG logic) (2016-06-20).
	* assert.h: Define static assert for C++ usage.  From Paul Alexander
	  Patience (2016-06-21).
	* arch/arm/src/stm32l4:  Add ioctls to set/get bit timing in stm32l4.
	  Add ioctl hooks to allow future management of can id filters. From
	  Sebastien Lorquet (2016-06-21).
	* drivers/can.c:  Add support for poll. From Paul Alexander Patience
	  (2016-06-21).
	* drivers/syslog: Extend SYSLOG logic so that we can send SYSLOG output
	  to a file.  Not verified on initial commit  (2016-06-21).
Gregory Nutt's avatar
Gregory Nutt committed
	* arch/arm/src/stm32l4: Add some CAN mode IOCTL calls.  These will be
	  useful for device autotest when the application boots.  They are
	  redundant with the CONFIG_CAN_LOOPBACK option, which can now just be
	  interpreted as a default setting.  From Sebastien Lorquet (2016-06-22).
	* drivers/syslog: syslog_dev_flush() needs to check if the inode is a
	  mountpoint before calling the flush() method.  Noted by David Sidrane
	  (2016-06-22).
	* arch/arm/src/stm32f7: Adds SDMMC1 for stm32F7 74-75.  From Lok Tep
	  (2016-06-22).
	* drivers/syslog: SYSLOG character device channel will now expand LF to
	  CR-LF.  Controllable with a configuration option (2016-06-22).
	* arch/arm/src/stm32l4: Implementation of loopback IOCTLs.  From
	  Sebastien Lorquet (2016-06-22).
	* Documentation: Add SYSLOG documentation to the porting guide
	  (2016-06-22).
	* configs/stm32f746g-disco:  Removed knsh configuration it failed to
	  refresh (via tools/refresh.sh).  I assume that it is a hand-edited
	  configuration and, hence, must be removed from the repository
	  (2016-06-23).
	* arch/arm/arc/sam34: DAC bugfix: DACC_WPMR_WPKEY_MASK -> DACC_WPMR_WPKEY.
Gregory Nutt's avatar
Gregory Nutt committed
	  Timer bugfix:  Fix ops check in TCIOC_STOP.  From Wolfgang Reissnegge
	  (2016-06-23).
Gregory Nutt's avatar
Gregory Nutt committed
	* configs/nucleo-144: Added SDMMC support to Nucleo-144. From David
	  Sidrane (2016-06-23).
Gregory Nutt's avatar
Gregory Nutt committed
	* arch/arm/src/stm32: Port STM32L4 CAN IOCTLs to STM32.  From Sebastien
	  Lorquet (2016-06-24).
	* drivers/ioexpander:  Add support for a very simple GPIO driver.  It
	  supports only pre-conrigured input and output pins and only basic
	  input and output operations (2016-06-24).
	* arch/arm/src/lpc43xx:  Correct auto-negotiation mode in the LPC43xx
	  Ethernet.  From Alexander Vasiljev (2016-06-24)
	* arch/arm/src/samv7: TWIHS Driver improved and GPIO-Driver fixed for
	  Open-Drain Pins
	  - sam_gpioread: Now the actual line level from the pin is read back.
	    This is extremely important for Open-Drain Pins, which can be used
	    bidirectionally
	  - Re-Implemented twi_reset-function and enhanced it so it can be
	    called from inside the driver (see next point)
	  - Glitch-Filter: Added a configuration option to enable the twi-built-
	    in glitch filter
	  - Added a "Single Master Mode": In EMC Testing the TWI-Bus got stuck
	    because the TWI-Master detected a Multi-Master access (but there is
	    no second master). With the option "Single Master" we detect these
	    events and automatically trigger a twi_reset. We also do an
	    automatic recovery if a slave got stuck (SDA stays low).
	  With the above changes I²C-Bus reliability in harsh environments (eg.
	  EMC) is greatly improved. The small change in the GPIO-Driver was
	  necessary because otherwise you cannot read back the correct line
	  status of Open-Drain Outputs and this is needed by the twi_reset
	  function.  From Michael Spahlinger (2016-06-24)
Gregory Nutt's avatar
Gregory Nutt committed
	* arch/arm/src/stm32f7:  BUGFIX:PLLs IS2 and SAI P Calculation. From
	  David Sidrane (2016-06-24).
	* arch/arm/src/stm32f7: USB support.  From Lok Tep (2016-06-27).
	* configs/olimex-stm32-e407:  Add support for Olimex STM32 E407
	  board.  From Mateusz Szafoni (2016-06-27).
	* drivers/ioexpander: Shadow-Mode: The output- and configuration
	  registers of the IO-Expander are held in the microcontrollers memory
	  and only written to the IO-Expander.  This reduces bus traffic and
	  is more error-proof than the normal read-modify-write operation. Retry
	  Mode: If enabled and an error occurs while writing to the IO-Expander
	  the current transmission is automatically repeated once. From Michael
	  Spahlinger (2016-06-27).
	* libc/hex2bin:  Move the portable library portion of apps/system/hex2bin
	  to nuttx/libc/hex2bin where it can be shared with the OS internals
	  (2016-06-27).
Gregory Nutt's avatar
Gregory Nutt committed
	* configs/nucleo-144: Added USB OTG device to Nucleo-144.  From David
	  Sidrane (2016-06-27).
	* arch/arm/src/stm32l4:  STM32 CAN fixes need to be backported to
	  STM32L4 as well (2016-06-27).
	* ARM stack check: Fix double fault on IDLE task with stack size = 0.
	  From David Sidrane (2016-06-27).
	* configs/nucleo-144: Added bbsram test to Nucleo-144.  From David
	  Sidrane (2016-06-27).
	* arch/arm/src/stm32f7: Added PWR, RTC, and BBSRAM support for stm32f7.
	  From David Sidrane (2016-06-27).
	* Build system: Fixed build of SAMV71-XULT/nsh.  With the changes from
	  26f7b8c the build process of the default configuration did not succeed
	  anymore.  From Michael Spahlinger (2016-06-28).
	* sched/semaphore: Need to set errno to EINVAL on errors in sem_post()
	  and sem_wait(). From Paul Alexander Patience (2016-06-28).
	* Build system: This change fixes a build problem that only occurs when
	  reconfiguring from Linux to Windows or vice-versa.  It is a problem
	  that was present but not usually experienced until two things happened:
	  (1) The pre_config target was added to run before the menconfig
	  operation and (2) the context target was added before the pre_config
	  target in order to set up the correct symbolic links (in the apps/platform
	  directory) needed by the pre_config target.
	  But then now if you start with a Linux system and run 'make menuconfig'
	  to switch to Linux, the context target will execute first and set up
	  POSIX style symbolic links before doing the menuconfig.  Then after the
	  menuconfig, the make will fail on Windows if you are using a Windows
	  native toolchain because that native toolchain cannot follow the Cygwin-
	  style symbolic links.
	  The fix here is to also execute the clean_context AFTER executing
	  menuconfig.  A lot more happens now:  It used to be that doing 'make
	  menuconfig' only did the menuconfig operation.  Now it does context,
Gregory Nutt's avatar
Gregory Nutt committed
	  pre_config, menuconfig, clean_context.  Not nearly as snappy as it used
	  to be (2016-06-28).
	* arch/arm/src/efm32, lcp43, stm32, stm32l4: disable interrupts with
	  NVIC_IRQ_CLEAR.  From Paul Alexander Patience (2016-06-28).
	* arch/arm/src/stm32f7: STMF7xxx RTC: (1) Remove proxy #defines, (2)
	  Ensure the LSE(ON) etal are set and remembered in a) A cold start
	  (RTC_MAGIC invalid) of the RTC, and b) A warm start (RTC_MAGIC valid)
	  of the RTC but a clock change.  The change was needed because in bench
	  testing a merge of the latest's STM32  53ec3ca (and friends) it became
	  apparent that the sequence of operation is wrong in the reset of the
	  Backup Domain in the RCC code.  PWR is required before the Backup
	  Domain can be futzed with. !!!This Code should be tested on STM32 and
	  if needed rippled to the STM32 families.  From David Sidrane
	  (2016-06-28).
	* arch/arm/src/stm32f7: Added STMF7xxx RTC.  From David Sidrane
	  (2016-06-28).
	* arch/arm/src/stm32: STM32 BBSRAM fixed (and formatted) flags.  From
	  David Sidrane (2016-06-28).
	* arch/arm/src/stm32f7: STM32F7 BBSRAM fixed (and formatted) flags.
	  From David Sidrane (2016-06-28).
	* arch/arm/src/stm32f7: Added STM32F7 DBGMCU.  From David Sidrane
	  (2016-06-28).
	* arch/arm/src/samv7: SAMV7: CAN Message Filtering fixed: (1) stdfilters
	  didn't work because the filter was never enabled (wrong number of bits
	  to shift), and (2) Filters were never used because the configuration
	  register cannot be written without using the initialization mode.
	  Both bugs are fixed by this change. Filtering has been tested with
	  both standard and extended identifiers and is now working properly.
	  From Michael Spahlinger (2016-06-29).
	* configs/Kconfig and dummy/: Add logic to support custom board
	  directories that include a Kconfig file.  During the context phase
	  of the build, any Kconfig file in the custom board directory is copied
	  into configs/dummy, replacing the existing Kconfig file with the
	  target Kconfig file (2016-06-29).
	* arch/arm/src/stm32l4: Port support for both RX FIFOs from STM32 CAN.
	  From Paul Alexander Patience (2016-06-29).
Gregory Nutt's avatar
Gregory Nutt committed
	* Remove all inclusion of header files from the apps/include directory.
	  This caused a lot of reshuffling of logic:  binfmt pcode support,
	  usbmonitor is now a kernel thread, TZ/Olson database moved to
	  libc/zoneinfo (2016-06-29).
	* drivers/mtd: Several MTD FLASH drivers nullify the freed 'priv'
	  structure and failed to return NULL as stated in the comments.
	  Result, will operate on a NULL pointer later.  Noted by David Sidrane
	  (2016-06-30).
	* arch/arm/src/kinetis:  Add basic support for the K64 family.  I
	  leveraged the changes from https://github.com/jmacintyre/nuttx-k64f
	  and merged into the existing kinetis code  with a lot of changes and
	  additions (like pin multiplexing definitions).  (2016-07-01).
	* configs/freedom-k64f: Add support for the NXP Freedom-K64F board.
	  This is primarily the work of Jordan Macintyre.  I leveraged this
	  code from https://github.com/jmacintyre/nuttx-k64f but with
	  significant corrections (LEDs, buttons, README, etc) and extensions
	  and updates to match more recent BSPs (2016-07-01).
	* libc/signal: Add raise() (2016-07-04).
Gregory Nutt's avatar
Gregory Nutt committed
	* drivers/syslog: Add a SYSLOG character device that can be used to re-
	  direct output to the SYSLOG (2016-07-05).
	* net/netdev: Break out internal interface psock_ioctl() (2016-07-06).
	* configs/stm32f4disovery: add can driver for stm32f4discovery.  From
	  Matthias Renner (2016-07-06).
	* configs/freedom-k64f: Increase MCU clock to 120MHz (2016-07-06).
	* arch/arm/src/stm32:  Add support for Tickless mode (two timer
	  implementation).  From Max Neklyudov (2016-07-06).
	* drivers/usbdev: cdcacm_unbind leaks write request objects.  This
	  arises due to freeing the bulk IN endpoint before the loop that
	  frees the requests via cdcasm_freereq.  That function checks the
	  parameters and skips the freeing if either is NULL.  Freeing the bulk
	  IN enpoint will cause the first param to be NULL, thereby bypassing
	  the free operation.  To fix, I moved the release of the bulk IN
	  endpoint until after to loop (much as was the case for the OUT and
	  read requests, which did not exhibit the problem).  From ziggurat29
	  (2016-07-07).
	* arch/arm/src/stm32l4: Update usb dev/host controller drivers to
	  reflect new(ish) logging standards; augment device enpoint and fifo
	  allocation #defines to do more sanity checking, and be automatically
	  adaptive to size changes.  Update README.txt to reflect current status
	  of the implementation.  From ziggurat29 (2016-07-07).
	* arch/arm/src/stm32f7: Fixed STM32F7 DMA stm32_dmacapable.  DMA working
	  on SDMMC.  From David Sidrane (2016-07-07).
	* configs/stm32f4discovery:  add configuration files for canard.  From
	  Matthias Renner (2016-07-08).
	* drivers/pipe: Add missing configuration for pipe ring buffer size.
	  From Frank Benkert (2016-07-08).
Gregory Nutt's avatar
Gregory Nutt committed
	* STM32L4: Fix incorrect clock setup for LPTIM1.  From ziggurat29
	  (2016-07-08).
	* nucleo-l476rg and stm32lf76vg-disco: Define timer clock frequencies on
	  STM32L4-based boards.  From ziggurat29 (2016-07-08).
	* STM32L4: Add support for tickless OS, and incidentally timers, pwm,
	  oneshot, free-running....  From ziggurat29 (2016-07-08).
	* SAM3/4 I2C: Fix reversed logic in twi_startmessage().  From Wolfgang
	  Reissnegger (2016-07-09).
	* VFS ioctl().  Per comments from David Sidrane, file_ioctl() should not
	  return succeed if the ioctl method is not supported.  It probably
	  should return ENOTTY in that case (2016-07-09).
	* libm: This change should significantly improve the performance of
	  single precision floating point math library functions. The vast
	  majority of changes have to do with preventing the compiler from
	  needlessly promoting floats to doubles, performing the calculation
	  with doubles, only to demote the result to float. These changes only
	  affect the math lib functions that return float. From David Alessio
	  (2016-07-11).
	* STM32F4 Discovery: Add FPU support for ostest for the STM32F4Discovery
	  platform. From David Alessio (2016-07-11).
	* Build system:  Remove the includes/apps link to apps/include.  It is
	  no longer used.  From Sebastien Lorquet (2016-07-11).
	* printf(): If there are no streams, let printf() fall back to use
	  syslog() for output (2016-07-11).
	* Qemu-i486: Fix qemu-i486/ostest/Make.defs test for M32.  From Heath
	  Petersen (2016-07-12).
	* UART 16550: Handle when CONFIG_SERIAL_UART_ARCH_IOCTL is not enabled.
	  From Heath Petersen (2016-07-12).
	* Kinetis Ethernet:  Add support for the KSZ8081 PHY (2016-07-12).
	* SST26 Driver: Before accessing the sst26 flash, the "Global Unlock"
	  command must me executed, which I do in the sst26 driver.  BUT re-
	  reading the datasheet, the WREN instruction is required to enable the
	  execution of this command. This was not done. I have no idea how the
	  driver currently works except by chance. The writes should never
	  happen at all, the flash is half-enabled!  From Sebastien Lorquet
	  (2016-07-12).
	* Freedom K64F: Add a networking NSH configuration. (2016-07-12).
	* N25Qxx Driver: Alter the notion of 'blocksize' to be equivalent to
	  'flash write page size' in order to align with assumptions in the
	  smartfs driver (at least, maybe other things do as well).  Correct a
	  bug that was previously masked by having blocksize=eraseblocksize
	  which would cause buffer overflows and delicious hardfaults.  Trivial
	  spelling changes in comments, etc.  From ziggurat29 (2016-07-12).
	* STM32L476 Discovery: Update stm32l476 disco to include init code for
	  smartfs and nxffs for cases where those fs are included in build.
	  From ziggurat29 (2016-07-12).
	* Kinetis Ethernet and Freedom-K64F:  Freedcom-K64F PHY address was
	  wrong.  Modified Ethernet driver to try all PHY addresses and then
	  only fail if the driver cannot find a usable PHY address.  MDIO pin
	  must have an internal pull-up on the Freedom-K64F (2016-07-12).
	* Kinetis Ethernet:  Add support for CONFIG_NET_NOINTS (2016-07-12).
	* SmartFS: Fix a 32-byte memory leak.  From Ken Pettit (2016-07-12).
	* Freedom-K64F: SDHC is now enabled in the nsh configuration (but does
	  not work)Add hooks for automounter; Change NSH configuration to use
	  Windows (2016-07-13).
	* SAMV7 USBHS Device:  This change solves a problem which causes data
	  loss while sending data via USB. This problem is caused by an incorrect
	  handling of the endpoint state in the USB driver sam_usbdevhs.  This
	  leads under some circumstances to situations in which an DMA transfer
	  is setup while a previous DMA transfer is currently active. Amongst
	  other things I introduced the new endpoint state USBHS_EPSTATE_SENDING_DMA
	  for the fix.  To reproduce the problem, I used a program which send as
	  many data as possible via a CDC/ACM device and verified the received
	  data on the PC.  From Stefan Kolb (2016-07-13).
	* STM32: Fix bug in oneshot timer.  From Max Neklyudov (2016-07-13).
	* STM32L4: Port foward bugfix from stm32 of oneshot timer.  From
	  ziggurat29 (2016-07-13).
	* STM32 and EFM32: I'm using syslog through ITM. In this case
	  syslog_channel function is call before RAM initialisation in
	  stm32_clockconfig. But syslog channel uses a global variable that is
	  reset to default by the RAM initialization.  From Pierre-noel
	  Bouteville (2016-07-14).
	* LPC43xx SPIFI: If CONFIG_SPIFI_SECTOR512 undefined, lpc43_bwrite
	  doesn't do actual write (probably copy/paste errors). Still not sure
	  about current state of lpc43_spifi implementation, but for me NXFFS
	  works with this patch.  From Vytautas Lukenskas (2016-07-14).
	* SMART MTD layer: Fixes freesector logic error when sectorsPerBlk=256,
	  adds DEBUGASSERT for invalid geometry and additional memory debug
	  logic.  Also fixes the dangling pointer on error bug.  From Ken
	  Pettit (2016-07-14).
	* arch/arm/src/lpc43xx: Extend LPC43xx EMC code to support SDRAM on a
Gregory Nutt's avatar
Gregory Nutt committed
	  dynamic memory interface.  From Vytautas Lukenskas (2016-07-19).
	* arch/sim/src:  Add the simulated QSPI (N25Q) flash to the simulation
Gregory Nutt's avatar
Gregory Nutt committed
	  and modify sim up_spiflash.c to enable it to run with different MTD
	  drivers based on config options (currently m25p, sst26 and w25).
	  From Ken Pettit (2016-07-19).
	* drivers/pipe:  Add support to allocating different sizes for pipe and
Gregory Nutt's avatar
Gregory Nutt committed
	  fifo buffers.  Adds mkfifo2() and pipe2() which are just like mkfifo()
	  and pipe(), but allow control of the size of the underlying, in-memory
	  circular buffer .  Move pipe() and mkpipe() to nuttx/libc, they are no
	  longer core OS interfaces.  Capability currenty used only by PTY logic
	  to support, configurable, smaller buffers for PTYs (2016-07-19).
	* include/nuttx/drivers:  Move driver-related files from include/nuttx
	  to include/nuttx/drivers.  Move driver related prototypes out of
	  include/nuttx/fs/fs.h and into new include/drivers/drivers.h
	  (2016-07-20).
	* include /nuttx/lib: Move library-related files from include/nuttx to
	  include/nuttx/lib  (2016-07-21).
	* drivers/serial/serial.c:  Fix a race condition noted by Stefan Kolb.
	  Between the test if the TX buffer is full and entering a critical
	  section, bytes may be removed from the TX buffer making the wait
	  unnecessary.  The unnecessary wait is an inefficiency, but not really
	  a problem.  But with USB CDC/ACM it can be a problem because the
	  entire TX buffer may be emptied when we lose the race.  If that
	  happens that uart_putxmitchar() can hang waiting for data to be
	  removed from an empty TX buffer (2016-07-22).
	* arch/arm/src/stm32 and stm32l4: STM32 F4/L4 RTC ALARM: were enabling
	  interrupts too early in the power-up sequence,  BEFORE the interrupt
	  system was being initialized (2016-07-23).
	* drivers/ioexpander: GPIO driver: Add support for receiving signals
	  from interrupt pins (2016-07-23).
	* drivers/usbdev: USBMSC: Add locks when removing request from queue.
	  From Wolfgang Reissnegger (2016-07-23).
	* drivers/usbdev: USBMSC: Fix reversed logic on waiting for SCSI thread
	  start.  The scsi thread was waiting for the wrong condition. However,
	  this was masked by the fact that the code creating the scsi thread was
	  also holding usbmsc_scsi_lock(priv) while initializing data, hence
	  this lock synchronized the scsi thread start with init completion.
	  From Wolfgang Reissnegger (2016-07-23).
	* arch/arm/src/sam34: SAM3/4 UDP: Fix handling of endpoint RX FIFO
	  banks.  This fixes a race condition where the HW fills a FIFO bank
	  while the SW is busy, resulting in out of sequence USB packets
	  (2016-07-23).
	* Freedom-K64F:  Add PWM support.  From Jordan MacIntyre (2016-07-25).

Gregory Nutt's avatar
Gregory Nutt committed
7.18 2016-10-08 Gregory Nutt <gnutt@nuttx.org>
Gregory Nutt's avatar
Gregory Nutt committed

	* drivers/serial/pty.c, serial.c, usbdev/cdcacm.c, include/nuttx/fs/ioctl.h:
	  Fix FIONWRITE and add FIONSPACE.  All implementations of FIONWRITE
	  were wrong.  FIONWRITE should return the number of bytes waiting in
	  the outgoing send queue, not the free space.  Rather, FIONSPACE should
	  return the free space in the send queue (2016-07-25).
	* lib_dumpbuffer:  Now prints a large on-stack buffer first to avoid
	  problems when the syslog output is prefixed with time.  From Pierre-
	  noel Bouteville (2016-07-27).
Gregory Nutt's avatar
Gregory Nutt committed
	* sched/clock and sched/sched: Add standard adjtime() interface and
	  basic timekeeping support.  Normally used with an NTP client to keep
	  system time in synchronizationi.  From Max Neklyudov (Merged on
Gregory Nutt's avatar
Gregory Nutt committed
	  20160-07-28).
	* arch/arm/src/stm32:  Add timekeeping support for the STM32 tickless
	  mode.  From Max Neklyudov (Merged on 20160-07-28).
	* Top-Level Makefiles.  Fix a chicken-and-egg problem. In the menuconfig
	  target, the context dependency was executed before kconfig-mconf.
	  That was necessary because the link at apps/platform/board needed to
	  be set up before creating the apps/Kconfig file.  Otherwise, the
	  platform Kconfig files would not be included.  But this introduces
	  the chicken-and-egg problem in some configurations.
	  In particular:  (1) An NX graphics configuration is used that requires
	  auto-generation of source files using cpp, (2) the configuration is
	  set for Linux, but (3) we are running under Cygwin with (4) a Windows
	  native toolchain.  In this case, POSIX-style symbolic links are set
	  up but the Windows native toolchain cannot follow them.
	  The reason we are running 'make menuconfig' is to change from Linux
	  to Cygwin, but the target fails.  During the context phase, NX runs
	  CPP to generate source files but that fails because the Windows native
	  toolchain cannot follow the links.  Checkmate.
	  This was fixed by changing all of the make menuconfig (and related)
	  targets.  They no longer depend on context being run.  Instead, they
	  depend only on the dirlinks target.  The dirlinks target only sets
	  up the directory links but does not try to run all of the context
	  setup; the compiler is never invoked; no code is autogeneraed; and
	  things work (2016-07-28).
	* tools/refresh.sh: Recent complexities added to apps/ means that
	  configuration needs correct Make.defs file in place in order to
	  configure properly (2016-07-28).
	* tools/kconfig2html.c: Update to handle absolute paths when sourcing
	  Kconfig files (2016-07-29).
	* libc/math: This fixes the following libc/math issues: (1) asin[f l]()
	  use Newton’s method to converge on a solution. But Newton’s method
	  converges very slowly (> 500,000 iterations) for values of x close
	  to 1.0; and, in the case of asinl(), sometimes fails to converge
	  (loops forever). The attached patch uses an trig identity for
	  values of x > sqrt(2). The resultant functions converge in no more
	  than 5 iterations, 6 for asinl().  (2) The NuttX erf[f l]() functions
	  are based on Chebyshev fitting to a good guess. The problem there’s a
	  bug in the implementation that causes the functions to blow up with x
	  near -3.0. This patch fixes that problem. It should be noted that
	  this method returns the error function erf(x) with fractional error
	  less than 1.2E-07 and that’s fine for the float version erff(), but
	  the same method is used for double and long double version which
	  will yield only slightly better precision. This patch doesn't address
	  the issue of lower precision for erf() and erfl(). (3) a faster
	  version of copysignf() for floats is included. From David S. Alessio
	  (2016-07-30).
	* I/O Expander: Remove hard-coded PCA9555 fields from ioexpander.h
	  definitons.  Add support for an attach() method that may be used when
	  any subset of pin interrupts occur (2016-07-31).
	* PCA9555 Driver:  Replace the signalling logic with a simple callback
	  using the new definitons of ioexpander.h.  This repartitioning of
	  functionality is necessary because (1) the I/O expander driver is the
	  lower-lower part of any driver that uses GPIOs (include the GPIO
	  driver itself) and should not be interacting directly with the much
	  higher level application layer.  And (2) in order to be compatible
	  with the GPIO driver (and any arbitrary upper half driver), the
	  PCA9555 should not directly signal, but should call back into the
	  upper half.  The upper half driver that interacts directly with the
	  application is the appropriate place to be generating signal
	  (2016-07-31).
	* drivers/ioexpander/skeleton.c: Add a skeleton I/O Expander driver
	  (based on the PCA9555 driver) (2016-07-31).
	* I/O Expander Interface:  Encode and extend I/O expander options to
	  include interrupt configuration (2016-07-31).
	* drivers/ioexpander: Add an (untested) TCA64XX I/O Expander driver
	  leveraged from Project Ara (2016-07-31).
	* I/O Expander Interface:  Add argument to interrupt callback.  Add a
	  method to detach the interrupt (2016-08-01).
	* drivers/ioexpander: Add a GPIO lower-half driver that can be used to
	  register a GPIO character driver for accessing pins on an I/O expander
	  (2016-08-01).
	* drivers/ioexpander: Add PCF8574 I/O Expander driver.  Some cleanup
	  also of other expander drivers (2016-08-01).
	* drivers/ioexpander: GPIO driver:  Add IOCTLs to get the pin type and
	  to unregister a signal handler (2016-08-01).
	* configs/sim: Add simulator-based test support for apps/examples/gpio
	  2016-08-01).
	* drivers/sensors:  Add KXTJ9 Accelerometer driver from the Motorola
	  Moto Z MDK (2016-08-02).
Gregory Nutt's avatar
Gregory Nutt committed
	* arch/arm/sim: Add a simulated I/O Expander driver (2016-08-03).
	* configs/sim: Add logic to set the simulated I/O expander for testing
	  with apps/examples/gpio (2016-08-03).
	* fs/fat: FAT performance improvement. In large files, seeking to a
	  position from the beginning of the file can be very time consuming.
	  ftell does lssek(fd, 0, SET_CURR).  In that case, that is wasted time
	  since we are going to seek to the same position.  This fix short-
	  circutes fat_seek() in all cases where we attempt to seek to current
	  position.  Suggested by Nate Weibley (2016-08-03).
	* tools/sethost.sh: Add sethost.sh.   This is a script that you can use
	  to quickly change the host platform from Linux to Windows/Cygwin.
	  Might save you a lot of headaches (2016-08-03).
	* arch/arm/src/tiva: Add tiva PWM lower-half driver implementation.
	  From Young  (2016-08-05).
	* drivers/spi/spi_transfer.c: Add a helper function that encapsulates
	  and manages a sequence of SPI transfers (2016-08-05).
	* drivers/spi: Add an SPI character driver that will permit access to
	  the SPI bus for testing purposes.  This driver is a simple wrapper
	  around spi_transfer() (2016-08-05).
	* drivers/wireless: Add MFRC522 RFID ISO14443 and Mifare transceiver
	  driver.  From Alan Carvalho de Assis (2016-08-06).
	* configs/stm32f103-minimum: Add board support to MFRC522 driver.  From
	  Alan Carvalho de Assis (2016-08-06).
	* arch/renesas: Rename arch/sh to arch/renesas (2016-08-06).
	* arch/arm/src/efm32, stm32, stm32l4: STM32 and EFM32 SPI drivers
	  adopted an incompatible conventions somewhere along the line.  The
	  set the number of bits to negative when calling SPI_SETBITS which had
	  the magical side-effect of setting LSB first order of bit
	  transmission.  This is not only a hokey way to pass control
	  information but is supported by no other SPI drivers.  This change
	  three things:  (1) It adds HWFEAT_LSBFIRST as a new H/W feature.
	  (2) It changes the implementations of SPI_SETBITS in the STM32 and
	  EFM32 derivers so that negated bit numbers are simply errors and it
	  adds the SPI_HWFEATURES method that can set the LSB bit order, and
	  (3) It changes all calls with negative number of bits from all
	  drivers: The number of bits is now always positive and SPI_HWFEATURES
	  is called with HWFEAT_LSBFIRST to set the bit order (2016-08-08).
	* arch/arm/src/stm32:  Add missing SPI2 and SPI3 support for STM32F3F3.
	  Add STM32F37XX DMA channel configuration.  For STM32F37XX,
	  SYSCFG_EXTICR_PORTE defined twice.  From Alan Carvalho de Assis
	  (2016-08-08).
	* arch/arm/src/stm32:  Make stm32_pwr_enablebkp thread safe.  From
	  Max Neklyudov (2016-08-09).
	* arch/arm/src/stm32: SAM3/4 GPIO: Enable peripheral clock for GPIO port
	  when GPIO is configured as input. The value of a GPIO input is only
	  sampled when the peripheral clock for the port controller the GPIO
	  resides in is enabled. Therefore we need to enable the clock even when
	  polling a GPIO.  From Wolfgang Reissnegger (2016-08-09).
	* arch/arm/src/tiva: Fix two bugs of tiva pwm lower-half driver
	  implementation. From Young (2016-08-10).
	* sched/group: Explicitly initialize the group tg_exitsem with
	  sem_init().  The existing logic worked because the correct
	  initialization value is all zero, but it is better to initialize the
	  semaphore explicitly (2016-08-10).
	* arch/arm/stm32: Fix bad pllmul values for STM32F1XX connectivity line.
	  STM32F1XX connectivity line supports only x4, x5, x6, x7, x8, x9 and
	  x6.5 values. From Michał Łyszczek (2016-08-11).
	* include/nuttx/timers: Add oneshot timer lower half interface
	  (2016-08-11).
	* arch/arm/src/stm32: Add a experimental oneshot, lower-half driver for
	  STM32 (2016-08-11).
	* arch/arm/src/samv7: Add option to support oneshot timer without free-
	  running timer.  Add oneshot lower half driver (2016-08-11).
	* arch/arm/src/sama5: Add option to support oneshot timer without free-
	  running timer.  Add oneshot lower half driver (2016-08-11).
	* arch/arm/src/sam34: SAM4CM: Add option to support oneshot timer without
	  free-running timer.  Add oneshot lower half driver (2016-08-11).
	* arch/arm/src/stm32l4: Add oneshot lower half driver (2016-08-11).
	* libc/stdlib: strtod() was not returning endptr on error conditions
	  (2016-08-11).
	* libc/math: floor(), floorf(), and floorl(): Fix logic error.  Was not
	  correctly handling negative integral value (2016-08-11).
	* configs/sim: Add a configuration useful for testing Mini Basic
	  (2016-08-12).
	* drivers/timers: Add an upper-half, oneshot timer character driver
	  (2016-08-12).
	* arch/sim/src: Add a simulated oneshot lowerhalf driver (2016-08-12).
	* arch/arm/src/stm32: STM32F3 SPI:  Fix the number of bit setting for
	  the F3.  That and data packing work differently on the STM32F3 than
	  for other STM32 parts (2016-08-12).
Gregory Nutt's avatar
Gregory Nutt committed
	* arch/arm/stm32 and stm32l4: Enabling SPI DMA loses other bits in CR2
	  (2016-08-13).
	* arch/arm/src/stm32: STM32F3 SPI:  Cannot write always 16-bit value to
	  DR register because of how the F3 implements data packing (2016-08-13).
Gregory Nutt's avatar
Gregory Nutt committed
	* Kinetis: Add support for I2C and RTC.  From v01d (phreakuencies)
	  (2016-08-13).
	* teensy 3.x i2c.  From v01d (phreakuencies) (2016-08-13).
	* SH1106 0.96 OLED module support (SSD1306 compatible) + I2C fixes.
	  From v01d (phreakuencies) (2016-08-13).
	* Add support for SAMV7 DACC module.  From iotr Mienkowski (2016-08-15).
	* Add oneshot board initialization to stm32f103-minimum.  From Alan
	  Carvalho de Assis (2016-08-15).
	* drivers/audio/tone.c: Add Audio Tone Generator for NuttX.  From Alan
	  Carvalho de Assis (2016-08-16).
	* configs/stm32f103-minimum: Add board configuration to initialize Audio
	  Tone Generator.  From Alan Carvalho de Assis (2016-08-16).
	* STM32F411 and STM32F446 map i2c2_sda_4 to different alternate function
	  numbers.  From Konstantin Berezenko (2016-08-17).
	* STM32 DMA Fix: Change stm32 adc dma callback to send channel number
	  instead of index.  From Konstantin Berezenko (2016-08-17).
	* SAMA5:  Add missing oneshot max_delay method (2016-08-18).
	* configs/stm32bufferfly2: Add support for the Kamami stm32butterfly2
	  development board with optional ETH phy.  From  Michał Łyszczek
	  (2016-08-19).
	* libc/misc: Separate XorShift128 PRNG from /dev/urandom and make it
	  generally available (2016-08-20).
	* sched/sched_cpuload_oneshot:  Use the oneshot timer with optional
	  entropy to measure cPU load if so configured (2016-08-20).
	* drivers/usbhost/usbhost_composite.c: An an EXPERIMENTAL prototype of
	  how USB host support for composite devices might be implemented.  This
	  feature is EXPERIMENTAL because (1) it is untested and (2) has some
	  know design issues that must be addressed before it can be of use
	  (2016-08-28).
Gregory Nutt's avatar
Gregory Nutt committed
	* CXXFLAGS: add -fcheck-new whenever -fno-exceptions is used.  From Beat
	  Küng (2016-08-23).
	* tools/mkfsdata.pl was still generating the old-style apps/include
	  inclusion paths (2016-08-23).
	* drivers/sensors:  Add drvier for the LIS3MDL 3 axis magnetometer. From
	  Alexander Entinger (2016-08-23).
	* drivers/sensors: Add driver for the  MLX90393 3 axis magnetometer.
	  From Alexander Entinger (2016-08-23).
	* drivers/mtd: Add Fujistu MB85RS256B ramtron support.  From Beat Küng
	  (2016-08-23).
	* drivers/sensors: Add driver for the LIS3DSH 3 axis accelerometer. From
	  Alexander Entinger (2016-08-24).
	* drivers/sensors: Add driver for the Bosch BMG160 3 axis gyroscope.
	  From Alexander Entinger (2016-08-24).
	* STM32: Add IAR-style STM32F1xx vectors. Tested on STM32F103RB and
	  STM32F107RC.  From Aleksandr Vyhovanec (2016-08-24).
	* libc/header files: Add POSIX type sig_atomic_t.  From Sebastien
	  Lorquet (2016-08-24).
	* libc/header files: isatty() should be prototypes in unstid.h, not
	  termios.h.  From Sebastien Lorquet (2016-08-24).
	* Documentation:  Update to NuttX C coding style document with additions
	  discussing long comments on the right side of a statement or data
	  definition (2016-08-24).
	* LPC43xx serial: Fix typos in LPC43 serial driver.  Found by Vytautas
	  Lukenskas (2016-08-24).
	* libc/time: This commit adds the difftime() function.  The function
	  depends on the toolchain-dependent CONFIG_HAVE_DOUBLE so is not
	  available on tiny platforms.  From Sebastien Lorquet (2016-08-24).
	* libc/stdio: Add support for remove().  From Sebastien Lorquet
	  (2016-08-25).
	* STM32 OTGFS device: Fix for lost first word from FIFO

	    1) Do not overwrite Reserved Bits in GINTSTS (per ref manual)*
	    2) Acknowledge all pending int on entry to ISR that are Only rc_w1*
	    3) Do not disable RXFVL*
	    4) Loop until RXFVL is cleared*
	    5) Only clear the NAK on the endpoint on the
	       OTGFS_GRXSTSD_PKTSTS_SETUPDONE to not loose the first WORD of
	      FIFO all the data  (Bug Fix)

	  Changed marked *are just driver clean up and ensure ints are not lost.
	  The bug fix is #5

	  Test case open putty and observer the Set/Get LineCoding. Without this
	  fix #5 the Get will not match the Set, and in fact the data might be
	  skewed by 4 bytes, that are lost from the FIFO if the
	  OTGFS_DOEPCTL0_CNAK bit is set in the OTGFS_GRXSTSD_PKTSTS_SETUPRECVD
	  as opposed to the OTGFS_GRXSTSD_PKTSTS_SETUPDONE

	    Set Line Coding DATA1: 4B | 00 c2 01 00 00 00 08 | c8 1B
	    Get Line Coding DATA1: 4B | .. .. .. .. 00 00 08   c8 .. 00 00 07 | 7a 72

	  From David Sidrane (2016-08-25).
	* Add system() to stdlib.h.  Actual implementation is in
	  apps/system/system (2016-08-25).
	* include/nuttx/input: Add missing prototype for btn_lower_initialize()
	  (2016-08-27).
	* configs/stm32f103-minimum: Add board config support to SPI LCD module
	  JLX12864G-086.  From Alan Carvalho de Assis (2016-08-28).
	* net/tcp:  tcp_ipvX_bind() not actually using the ported selected with
	  port==0.  Also removes duplicate call to pkt_input().  Issues noted by
	  Pascal Speck (2016-08-30).
	* STM32 F7: Remove duplicate call to pkt_input from Ethernet driver.
	  Issues noted by Pascal Speck (2016-08-30).
	* STM32L4 OTGFS device: Apply stm32 fix to stm32l4.  From Sebastien
	  Lorquet (2016-08-31).
	* drivers/contactless:  Remove contactless drivers from drivers/wireless
	  to drivers contactless.  From Sebastien Lorquet (2016-08-31).
	* USB host composite is at least partially functional. No longer depends
	  on CONFIG_EXPERIMENTAL (2016-09-02).
	* MTD: Fixed cloned typos in several FLASH drivers.  From Aleksandr
	  Vyhovanec (2016-09-02).
	* MTD: SPI-based driver for Macronix MX25L3233F or MX25L6433F.  From
	  Aleksandr Vyhovanec (2016-09-02).
Gregory Nutt's avatar
Gregory Nutt committed
	* sched/: The TCB nchildren field should not be incremented when
	  pthreads are created (2016-09-06).
	* sched/: Move fields related to parent/child task relationship out of
	  TCB into group structure (2016-09-06).
	* STM32L4: Add support for USART3-USART5.  For STM32L4 parts, the higher
	  number USART ports supported varies.  Add the HAVE_USARTx definitions
	  to the configuration to allow enabling the higher numbered USART ports.
	  From Jim Wylder (2016-09-15).
	* configs/stm32l476-mdk: Support basic booting and nsh on Motorola MDK.
	  The Motorola MDK is based off of an earlier version of NuttX.  This
	  only provides a basic NSH shell.  From Jim Wylder (2016-09-15).
	* STM32 USB: Set USB address to avoid a failed assertion.  From Pierre-noel
	  Bouteville (2016-09-15).
	* STM32 L4 and L7 USB: Pierre's assertion-avoidance change should also be
	  applied to STM32 F7 and L4 (2016-09-15).
	* sched/: mq_send() was not setting the errno value on certain failures
	  to allocate a message (2016-09-15).
	* include/nuttx/modem:  Move all modem-related IOCTL commands to a common
	  file to assure that they will be unique (2016-09-16).
	* STM32 F4 Discovery:  Add support for XEN1210 3D-board.  From Alan
	  Carvalho de Assis (2016-09-17).
	* drivers/sensors: Adds support for the  Sensixs XEN1210 3D-board.  This
	  sensor is used on NANOSATC-BR2 a Brazillian CUBESAT project.  From
	  Alan Carvalho de Assis (2016-09-16).
	* include/analog/dac.h: Make DAC structure packed.  From Marc Rechté
	  (2016-09-20).
	* All SAM Ethernet Drivers: Add support so that the drivers can be built
	  with CONFIG_NET_MULTIBUFFER=y (2016-09-20).
	* Tiva Ethernet:  Needs support for CONFIG_NET_MULTIBUFFER=y (2016-09-20).
	* drivers/net: NET_TUN=y => NET_MULTIBUFFER=y.  From Vladimir
	  Komendantskiy (2016-09-20).
	* SAM3/4: Fix GPIO pull-up/down code. Enabling the pull-down resistor
	  while the pull-up resistor is still enabled is not possible. In this
	  case, the write of PIO_PPDER for the relevant I/O line is discarded.
	  Likewise, enabling the pull-up resistor while the pull-down resistor
	  is still enabled is not possible. In this case, the write of PIO_PUER
	  for the relevant I/O line is discarded.  From Wolfgang Reißnegger
	  (2016-09-20).
	* SAM GPIO: Apply Wolfgang's change for SAM3/4 to SAMA5 and SAMV7
	  (2016-09-20).
	* Tiva QEI: Add QEI lower-half driver impl. for Tiva series chip.  From
	  Young (2016-09-21).
	* STM32, L4, and F7: Remove GPIO_ETH_RMII_TX_CLK. TX_CLK is not present
	  in RMII. Mateusz Szafoni (2016-09-22).
	* sched/: Define 'group' even if HAVE_GROUPID is not set.  From Mateusz
	  Szafoni (2016-09-22).
	* sched/: vector table should have dimension NR_IRQS, not NR_IRQS+1.
	  From Sagitta Li (2016-09-22).
	* fs/mount: Corrects a bad assertion noted by Pierre-noel Bouteville.
	  Also fixes a reference counting problem in an error condition:  When
	  the mountpoint inode is found but is not an appropriate mountpoint,
	  the reference count on the inode was not being decremented (2016-09-22).
	* libnx/nxglib: Fix handling of near-horizontal lines of width 1 in
	  nxgl_splitline().  Missing handling for degenerate condition caused
	  width 1 lines such as (0, 0) - (100, 10) to have gaps in the drawing.
	  From Petteri Aimonen (2016-09-22).
	* drivers/net/slip.c: Fix calculations using MSEC_PER_TICK.  If
	  USEC_PER_TICK is less than 1000, then MSEC_PER_TICK will be zero.  It
	  will be inaccurate in any case (2016-09-25).
	* Tiva QEI: Add a new ioctl command (set MAXPOS) for tiva QEI.  From
	  Young (2016-09-26).
	* LPC43xx Serial: There are some small problems in LPC43xx RS485 mode
	  configuration. In particular: (1) UART0,2,3 do not have DTR pins
	  (different from UART1), so, Kconfig needs to be adjusted. (2)
	  lpc43_uart.c in RS485 mode only configures DIR pin, but doesn't enable
	  pin output for UART0,2,3. (3) should be option to reverse DIR control
	  pin output polarity. (4) lpc43xx/chip/lpc43_uart.h doesn't have USART3
	  definitions.  NOTE: I didn't modified and didn't tested USART1, as it
	  has different hardware.  From Vytautas Lukenskas.  From Vytautas
	  Lukenskas (2016-09-30).
	* STM32 Ethernet: Correct typo in conditional logic.  From Neil Hancock
	  (2016-10-01).
	* sched/pthread and task:  When a pthread is started, there is a small
	  bit of logic that will run on the thread of execution of the new
	  pthread.  In the case where the new pthread has a lower priority than
	  the parent thread, then this could cause both the parent thread and
	  the new pthread to be blocked at the priority of the lower priority
	  pthread (assuming that CONFIG_PRIORITY_INHERITANCE is not selected).
	  This change temporarily boosts the priority of the new pthread to at
	  least the priority of the new pthread to at least the priority of the
	  parent thread.  When that bit of logic has executed on the thread of
	  execution of the new pthread, it will then drop to the correct
	  priority (if necessary) before calling into the new pthread's entry
	  point (2016-10-01).
	* configs/stm32f103-minimum: Add stm32_bringup support and userled
	  example to STM32F103 Minimum board.  From Alan Carvalho de Assis
	  (2016-10-02).
	* STM32 L4: Add support for quadrature encoders on STM32L4. Sebastien
	  Lorquet (2016-10-02).
	* configs: Add support for qencoders on various nucleo boards.  From
	  Sebastien Lorquet (2016-10-03).
	* STM32 L4 USB Device: Fixed L4 USB Driver by avoiding SETUPDONE and
	  EPOUT_SETUP.  From David Sidrane (2016-10-04).
	* configs/olimex-stm32-e407: Add some networking configurations.  From
	  Mateusz Szafoni (2016-10-06).
	* STM32 SPI: stm32_modifycr2 should be available on all platforms if DMA
	  is enabled. (2016-10-06).
	* STM32 DMA2D: fix an error in up_dma2dcreatelayer where an invalid
	  pointer was returned when a certain underlying function failed.  From
	  Jens Gräf (2016-10-07).

7.19 2016-12-26 Gregory Nutt <gnutt@nuttx.org>

Gregory Nutt's avatar
Gregory Nutt committed
	* include/nuttx/fs/nxffs.h: Needs forward reference to struct mtd_dev_s
	  and needs to include stdbool.h (2016-10-09).
	* STM32F103 Minimum: Note in Kconfig that the board supports buttons.
	  From Alan Carvalho de Assis (2016-10-11).
	* STM32F103 Minimum: Add button support.   From Alan Carvalho de Assis
	  (2016-10-11).
	* arch/arm/kinetis and configs/freedom-k64f: Add UID Unique ID.  From
	  Neil Hancock (2016-10-13).
	* arch/arm/src/stm32l4: (1) too many parentheses when calculating max
	  chan count and (2) channel 4 does not have a complementary output. From
	  Sebastien Lorquet (2016-10-14).
	* arch/arm/src/stm32l4: Support Complementary PWM outputs on STM32L4.
	  From Sebastien Lorquet (2016-10-14).
	* Support PWM testing on board nucleo-l476.  From Sebastien Lorquet
	  (2016-10-14).
	* arch/arm/src/stm32: Support oversampling by 8 for the STM32 F4.
	  From David Sidrane (2016-10-15).
	* libc/stdio: Fixes sscanf %sn where strlen(data) < n.  From David
	  Sidrane (2016-10-15).
	* arch/risc-v: Add support for the RISC-V architecture and
	  configs/nr5m100-nexys4 board.  I will be making the FPGA code for
	  this available soon (within a week I would say).  The board support on
	  this is pretty thin, but it seems like maybe a good idea to get the base
	  RISC-V stuff in since there are people interested in it.  From Ken
	  Pettit (2016-10-16).
	* C library:  Add a dummy setlocale() function to avoid drawing the
	  function from newlib (2016-10-17).
	* libc/wchar: Add wcslen, wmemchr, wmemcmp, wmemcpy and wmemset to NuttX.
	  From Alan Carvalho de Assis (2016-10-17).
	* syscalls: Add setlocale to libc.csv (2016-10-17).
	* libc/locale: Add clocale header file (2016-10-18).
	* libc/wchar:  Add functions btowc, mbrtowc, mbtowc, wcscmp, wcscoll,
	  wmemmove.  From Alan Carvalho de Assis (2016-10-18).
	* usbhost/enumerate: fix possible buffer overwrite.  From Janne Rosberg
	  (2016-10-18).
	* configs/Board.mk: Add extra clean operations (2016-10-18).
	* usbhost/composite: fix compile; missing semicolons.  From Jann
	  Rosberg (2016-10-18).
	* libc/stdio: Include wchar.h in lib_libvsprintf.c to fix compilation
	  error.  From Alan Carvalho de Assis (2016-10-18).
	* arch/arm/src/kinetis: Added missing headers.  From David Sidrane
	  (2016-10-18).
	* arch/arm/src/kinetis: Kinetis broke out SPI to kinetis/kinetis_spi.h.
	  From David Sidrane (2016-10-18).
	* arch/arm/src/kinetis: Broke out DMA to use the modern Nuttx chip
	  inclusion - still STUBS.  From David Sidrane (2016-10-18).
	* arch/arm/src/kinetis: Kinetis Support ARMV7 Common Vector and FPU.
	  From David Sidrane (2016-10-18).
	* arch/arm/src/kinetis: Kinetis Allow CONFIG_ARMV7M_CMNVECTOR,
	  CONFIG_STACK_COLORATION, CONFIG_ARCH_FPU.  From David Sidrane
	  (2016-10-18).
	* arch/arm/src/kinetis: Kinetis i2c driver offset swapped for value
	  in kinetis_i2c_putreg.  From David Sidrane (2016-10-18).
	* Add functions wcrtomb, wcslcpy, wcsxfrm, wctob, wctomb, wctype,
	  localeconv, strcoll, strxfrm. From Alan Carvalho de Assis
	  (2016-10-18).
	* libc/wctype: Add wctype.h; Move lib_wctype.c to libc/wctype.
	  From Alan Carvalho de Assis (2016-10-18).
	* include/: Modify locale.h to add localeconv() and lconv structure.
	  From Alan Carvalho de Assis (2016-10-18).
	* include/sys/time.h: timersub macro modified per recommendations of
	  phreakuencies (2016-10-18).
	* include/: Add isblank() macro to ctype.h.  From Alan Carvalho de
	  Assis (2016-10-19).
	* libc/wctype: Add iswctype, towlower, towupper and wcsftime functions.
	  From Alan Carvalho de Assis (2016-10-19).
	* syslog: Fixes required for file syslog output.  From Max Kriegleder
	  (2016-10-19).
	* arch/arm/src/stm32: add TIM8 to STM32F103V pinmap.  From Maciej Wójcik
	  (2016-10-19).
	* libc/locale: Allows c++ code to compile with or without
	  CONFIG_LIBC_LOCALE and will generate a link error if CONFIG_LIBC_LOCALE
	  is not defined and setlocale is referenced. With CONFIG_LIBC_LOCALE
Gregory Nutt's avatar
Gregory Nutt committed
	  defined setlocale will act as if MB string is not supported and return
	  "C" for POSIX. C and "". From David Sidrane (2016-10-19).
	* Xtensa ESP32: Add vectors for interrupt levels 2-6 (2016-10-20).
	* strtof():  Add strtof() as simply a copy of strtod with types and
Gregory Nutt's avatar
Gregory Nutt committed
	  limits changed (2016-10-20).
	* arch/arm/src/stm32v7:  Register the watchdog device at the configured
	  device path CONFIG_WATCHDOG_DEVPATH vs. hard-coded /dev/wdt.  From Frank
	  Benkert (2016-10-21).
	* configs/*/defconfig: The buttons example was changed to archbuttons.  As
Gregory Nutt's avatar
Gregory Nutt committed
	  a result all of the button configurations are broken and need some
	  renaming in the defconfig files.  Noted by Frank Berkert (2016-10-21).
	* configs/stm32f103-minimum: Add support to PWM on STM32F103-Minimum
	  board.  From Alan Carvalho de Assis (2016-10-21).
	* include/ctype.h and cxx/cctype: Implement ctype.h functions as inline
	  if possible.  cctype can then properly select namespace (2016-10-22).
	* libc/unisted: Add strtold() (2016-10-22).
	* sscanf:  Use strtof() instead of strtod() if a short floating point
	  value was requested.  The should help performance with MCUs with 32-bit
	  FPU support with some additional code size (2016-10-22).
	* Remove support for software prioritization of interrupts (2016-10-23).
	* drivers/net/tun.c: Fix bug in TUN interface driver.  From  Max
	  Nekludov (2016-10-24).
	* arch/arm/src/stm32: A new implementation of the STM32 F4 I2C bottom
	  half.  The commin I2C as this did not handled correctly in the current
	  implementation (see also https://github.com/PX4/NuttX/issues/54).  The
	  changes almost exclusively affect the ISR.  From Max Kriegleder
	  (2016-10-24).
	* arch/arm/src/stm32l4: Fix I2C devices RCC registers.  From Sebastien
	  Lorquet (2016-10-25).
	* arch/arm/src/stm32l4: Enable and renames for 32l4 UARTs 4 and 5.
	  From Sebastien Lorquet (2016-10-25).
	* configs/stm32f103-minimum: Fix Timers 2 to 7 clock frequencies.
	  From Alan Carvalho de Assis (2016-10-25).
	* arch/arm/src/stm32: Initial implemention of the STM32 F37xx SDADC
	  module. There are also changes to ADC, DAC modules. SDADC has only been
	  tested in DMA mode and does not support external TIMER triggers. This
	  is a work in progress.  From  Marc Rechté (2016-10-25).
	* Add logic to attach peripheral interrupt sources to CPU interrupts
	  (2016-10-25).
	* CHxN channels are always outputs.  From Sebastien Lorquet
	  (2016-10-26).
	* sched/semaphore: Within the OS, when a thread obtains a semaphore
	  count it must call sem_addholder() if CONFIG_PRIORITY_INHERITANCE is
	  enabled.  If a count is available, then sem_wait() calls
	  sem_addholder(), otherwise it waited for the semaphore and called
	  sem_addholder() when it eventually received the count.

	  This caused a problem when the thread calling sem_wait() was very
	  low priority.  When it received the count, there may be higher
	  priority threads "hogging" the CPU that prevent the lower priority
	  task from running and, as a result, the sem_addholder() may be
	  elayed indefinitely.

	  The fix was to have sem_post() call sem_addholder() just before
	  restarting the thread waiting for the semaphore count.

	  This problem was noted by Benix Vincent who also suggested the
	  solution (2016-10-26).
	* configs/stm32f103-minimum: Add RGB LED support on STM32F103 Minimum
	  board.  From Alan Carvalho de Assis (2016-10-26).
	* arch/arm/src/stm32f7: stm32_i2c.c Dejavu.  Fixes a bug previously
	  found in the F4. From David Sidrane (2016-10-26).
	* arch/arm/src/stm32f7: stm32f76xx77xx_pinmap.h Missed one.  From
	  David Sidrane (2016-10-26).
	* LPC43xx serial: Fix a typo in ioctl TIOCSRS485 ioctl.  From Vytautas
Gregory Nutt's avatar
Gregory Nutt committed
	  Lukenskas (2016-10-27).
	* sched/clock: Correct clock initialization.  The correct range for
	  the month is 0-11 but is entered as 1-12 in the .config file
	  (2016-10-27).
	* arch/*/include: Add architecture-specific inttypes.h.  From Paul
	  A. Patience (2016-10-27).
	* sched/Kconfig:  Add ranges to START_YEAR, MONTH, and DAY (2016-10-28).
	* configs/nucleo-f303re: Add STM32 F303RE hello configuration; remove
	  duplicate setting from board.h.   From  Marc Rechté (2016-10-18).
	* arch/arm/src/lpc43xx: Restore RS485 mode on serial port open (if
Gregory Nutt's avatar
Gregory Nutt committed
	  RS485 is enabled via menuconfig).  From Vytautas Lukenskas (2016-10-28).
	* arch/arm/src/stm32f7:  otgdev fixed typo.  From David Sidrane
	  (2016-10-28).
	* arch/xtensa: Basic architectural support for Xtensa processors and
	  the Expressif. ESP32 added.  Totally untested on initial release
	  (2016-10-31).
	* configs/esp32-core: Basic support for Expressif ESP32 Core v2 board
	  added.  The initial release includes an NSH and an SMP test
	  configuration.  Totally untested on initial relesae (2016-10-31).
	* configs/bambino-200e: Add basic support to Micromint Bambino 200E
	  board.  This includes contributions from Jim Wolfman.  From Alan
	  Carvalho de Assis (2016-11-01).
	* drivers/mtd/at24xx.c: Added EEPROM timeout.  Fromo Aleksandr
	  Vyhovanec (2016-11-02).
	* arch/misoc:  Adds basic support for the Misoc procoessors and the
	  LM32 in particular.  From Ramtin Amin (2016-11-01).
	* configs/misoc.  Board support for testing Misoc LM32 with Qemu.
	  From Ramtin Amin (2016-11-01).
	* arch/arm/src/stm32: I think, that Size is (highest address+1 - Base
	  address).  Base address has been removed and if address+count >= size
	  we are outside of the Flash.  From David Sidrane (2016-11-01).
	* sched/semaphore, sched/phread/, libc/semaphore, libc/pthread: Add
	  pthread_mutexattr_get/set_protocol and non-standard sem_get/set_protocol.
	  These may use to enable or disable priority inheritance on a single
	  semaphore (2016-11-02).
	* arch/arm/src/stm32:  Fix ADC compilation error when DMA isn't enabled.
	  From Paul A. Patience (2016-11-02).
	* drivers/ and drivers/spi: Fix Kconfig warning.  This commit moves the
	  ARCH_HAVE_SPI options outside the check for SPI.  Those options don't
Gregory Nutt's avatar
Gregory Nutt committed
	  depend on SPI, and Kconfig files  in arch/ enable them even if SPI
	  isn't  enabled.  Source the driver's Kconfig in drivers/Kconfig only
	  if support for the driver is enabled prevents us from defining these
	  ARCH_HAVE options in the driver's Kconfig. We should probably remove
	  the other checks in drivers/Kconfig and check if the drivers are
	  enabled only in their Kconfig.  From Paul A. Patience (2016-11-02).
Gregory Nutt's avatar
Gregory Nutt committed
	* Move protoypes for the non-standard include/semaphore.h file to the
	  non-standard include/nuttx/semaphore.h with the other non-standard
	  semaphore interfaces (2016-11-02).
	* include/semaphores.h: Provide macros for sem_setprotocol() and
	  sem_getprotocol() if priority inheritance is not enabled.  More
	  SEM_PRIO_* definitions to include/nuttx/semaphore.h (2016-11-02).
	* drivers/serial.c: Make sure that priority inheritance is not
	  enabled for the signaling semaphores used in the serial driver
	  (2016-11-03).
	* arch/arm/src/stm32f7: Fix to SPI-Master driver.  Without this the
	  chip select decoding feature will not work properly.  From Michael
	  Spahlinger (2016-11-03).
	* drivers/, net/, fs/, sched, arch/, graphics/, libnx,: Disable
	  priority inheritance on all semaphores used for signaling (2016-11-03).
	* sched/semaphore:   Handle a case of missing proxy for sem_setprotocol.
	  Reorder so that (1) this error is avoided, and (2) >No proxy is needed
	  if priority inheritance is not enabled (2016-11-03).
	* config/*/defconfgs: More fallout from name change of
	  apps/examples/buttons to archbuttons (2016-11-03).
	* configs/nucleo_f303re: Various fixes to get the adc configuration
	  building again after PR.  Refresh all configurations (2016-11-03).
	* arch/misoc/src/common:  Add interrupting Misoc serial driver.  From
	  Ramtin Amin (2016-11-04)
	* Fix a number of header files with mismatched 'extern C {' and '}'
	  (2016-11-05).
	* Provide do-nothing stubs for mutex attribute interfaces if features
	  ot enabled.  pthread_cond includes a signaling semaphore and should
	  call sem_setprotocol (2016-11-05).
	* arch/arm/src/armv7-r:  Fix compilation error.  This commit fixes
	  compilation errors on MPU support for ARMv7-R.  From Heesub Shin
	  (2016-11-06).
	* arch/arm/src/armv7-r: fix invalid drbar handling.  In ARMv7-R,
	  [31:5] bits of DRBAR is physical base address and other bits are
	  reserved and SBZ. Thus, there is no point in passing other than the
	  base address.  From Heesub Shin (2016-11-06).
	* arch/arm/src/armv7-r:  Remove the redundant update on SCTLR.
	  mpu_control() is invoking cp15_wrsctlr() around SCTLR update
	  redundantly.  From Heesub Shin (2016-11-06).
	* arch/arm/src/armv7-r: add new Kconfig entries for d/i-cache.
	  Unlike in ARMv7-A/M, Kconfig entries for data and instruction caches