Skip to content
ChangeLog 767 KiB
Newer Older
Gregory Nutt's avatar
Gregory Nutt committed
	  Kconfig entries. Actual implmenetation for those functions will be
	  added in the subsequent patches.  From Heesub Shin (2016-11-06).
	* arch/arm/src/armv7-r: add cache handling functions.  This commit
	  adds functions for enabling and disabling d/i-caches which were
	  missing for ARMv7-R.  From Heesub Shin (2016-11-06).
	* arch/arm/src/armv7-r: fix typo in mpu support.  s/ARMV7M/ARMV7R/g.
	  From Heesub Shin (2016-11-06).
	* arch/arm/src/armv7-r: fix CPSR corruption after exception handling.
	  A sporadic hang with consequent crash was observed when booting. It
	  seemed to be caused by the corrupted or wrong CPSR restored on return
	  from exception. NuttX restores the context using code like this:

	      msr spsr, r1

	  GCC translates this to:

	      msr spsr_fc, r1

	  As a result, not all SPSR fields are updated on exception return.
	  This should be:

	      msr spsr_fsxc, r1

	  On some evaluation boards, spsr_svc may have totally invalid value at
	  power-on-reset. As it is not initialized at boot, the code above may
	  result in the corruption of cpsr and thus unexpected behavior.

	  From Heesub Shin (2016-11-06).
	* arch/arm/src/armv7-r: fix to restore the Thumb flag in CPSR.  Thumb
	  flag in CPSR is not restored back when the context switch occurs while
	  executing thumb instruction.  From Heesub Shin (2016-11-06).
	* sched/wqueue:  When queuing new LP work, don't signal any threads
	  if they are all busy.  From Heesub Shin (2016-11-06).
	* sched/wqueue: Signal sent from work_signal() may interrupt the low
	  priority worker thread that is already running. For example, the worker
	  thread that is waiting for a semaphore could be woken up by the signal
	  and break any synchronization assumption as a result. It also does not
	  make any sense to send signal if it is already running and busy. This
	  commit fixes it.  From Heesub Shin (2016-11-06).
	* arch/arm/src/stm32f7: STM32F7 SD/MMC driver depends on
	  CONFIG_SDIO_DMA which is only defined in stm32/Kconfig.  Changed to
	  CONFIG_STM32F7_SDMMC_DMA and defined in stm32f7/Kconfig (2016-11-07).
	* arch/arm/src/stm32: Add PWM driver support for STMF37xx.  The
	  changes have been tested successfuly for TIM4 and TIM17 (different
	  IPs).  From  Marc Rechté (2016-11-07).
	* sched/semaphore:  sem_trywait() no longer modifies the errno value
	  UNLESS an error occurs.  This allows these functions to be used
	  internally without clobbering the errno value.  From Freddie Chopin
	  (2016-11-09).
	* arch/arm/src/stm32l4: Change the way to configure quadrature encoder
	  prescalers.  From Sebastien Lorquet (2016-11-09).
	* libc/unisted: Patch brings strtol() and related functions more
	  conformant with POSIX.  Corner cases like strtol(-2147483648, NULL, 10)
	  now pass clang -fsanitize=integer without warnings.  From Juha Niskanen
	  (2016-11-10).
	* drivers/sensors and configs/stm32f103-minimum: Add Vishay VEML6070
	  driver and support for STM32F103-Minimum board.  From   From Alan
	  Carvalho de Assis(2016-11-13).
	* Misoc LM32: Corrects a bug that never occured in qemu on simulation or
	  real fpga. The error was that the r1 register was being modified out of
	  context switching and not restoring it.  From Ramtin Amin (2016-11-14)
	* arch/arm/src/samv71: A problem occurred with the SAMV7 USBDEVHS driver
	  if the USB cable is unplugged while a large amount of data is send over
	  an IN endpoint using DMA. If the USB cable is plugged in again after a
	  few seconds it is not possible to send data over this IN endpoint again,
	  all other endpoints work as expected.

	  The problem occurs because if the USB cable is unplugged while an DMA
	  transfer is in flight the transfer is canceled but the register
	  SAM_USBHS_DEVDMACTRL is left in an undefined state.  The problem was
	  fixed the problem by resetting the register SAM_USBHS_DEVDMACTRL to a
	  known state. Additionally all pending interrupts are cleared.

	  From Stefan Kolb (2016-11-14).
	* configs/esp32-core: ESP32 Core v2: Add configuration to supporting
	  linking NuttX for execution out of IRAM (2016-11-14).
	* libc/unistd: sleep() was returning remaining nanoseconds (kind of),
	  instead the remaining seconds.  From Eunbong Song (2016-11-15).
	* sched/irq:  Fixes for the SMP case: (1) Change order for SMP case in
	  enter_critical_section:  (1) Disable local interrupts BEFORE taking
	  spinlock and (2) If SMP is enabled, if any interrupt handler calls
	  enter_critical_section(), it should take the spinlock. (2016-11-15).
	* arch/xtensa: Add EXPERIMENTAL hooks to support lazy Xtensa co-
	  processor state restore in the future (2016-11-16).
	* Add some experimental changes to enter/leave_critical_section to
	  deal with the case where interrupts are disabled only on the local
	  CPU (2016-11-16).
	* sched/irq:  Add logic to handled nested calls to
	  enter_critical_section() from interrupts handlers (with SMP)
	  (2016-11-16).
	* drivers/timer:  Remove the timer driver TIOC_SETHANDLER IOCTL call.
	  This calls directly from the timer driver into application code.  That
	  is non-standard, non-portable, and cannot be supported (2016-11-17).
	*drivers/timer:  Add timer driver hooks to support signal notification
	  of timer expiration.  Commented out because invasive interface changes
	  would also be required to complete the implementation (2016-11-17).
	* arch/arm/src/armv7-m: Fix double allocation of MPU region in mmu.h
	  (2016-11-17).
	* timer driver: Use signal to notify of timer expiration. Add generic
	  argument so that there can be additional usage.  From Sebastien Lorquet
	  (2016-11-17).
	* All timer lower half drivers.  Port Sebastien's changes to all all
	  other implementations of the timer lower half.  Very many just and
	  untested.  Expect some problems. (2016-11-17).
	* sched/irq: irq_csection() has a bad assumption in the SMP case.  It
	  assumed that the state of certain variables.  That was true on entry
	  into the interrupt handler, but might change to the execution of logic
	  within the interrupt handler (2016-11-18).
	* config/ nucleo-l476rg: Add support for timers to nucleo l476.  From
	  Sebastien Lorquet (2016-11-18).
	* drivers/net:  Add option to use low-priority work queue to all drivers
	  in drivers/net.  Not yet added to all architecture-specific network
	  drivers (2016-11-18).
	* sched/wdog: Most interrupt handling logic interacts with tasks via
	  standard mechanism such as sem_post, sigqueue, mq_send, etc.  These all
	  call enter_critical_section and are assumed to be safe in the SMP case.

	  But certain logic interacts with tasks in different ways.  The only one
	  that comes to mind are wdogs.  There is a tasking interface that to
	  manipulate wdogs, and a different interface in the timer interrupt
	  handling logic to manage wdog expirations.

	  In the normal case, this is fine.  Since the tasking level code calls
	  enter_critical_section, interrupts are disabled an no conflicts can
	  occur.  But that may not be the case in the SMP case.  Most
	  architectures do not permit disabling interrupts on other CPUs so
	  enter_critical_section must work differently:  Locks are required to
	  protect code.

	  So this change adds locking (via enter_critical section) to wdog
	  expiration logic for the the case if the SMP configuration
	  (2016-11-18).
Gregory Nutt's avatar
Gregory Nutt committed
	* SAM3/4: Add delay between setting and clearing the endpoint RESET bit
	  in sam_ep_resume().  We need to add a delay between setting and
	  clearing the endpoint reset bit in SAM_UDP_RSTEP. Without the delay the
	  USB controller will (may?) not reset the endpoint.  If the endpoint is
	  not being reset, the Data Toggle (DTGLE) bit will not to be cleared
	  which will cause the next transaction to fail if DTGLE is 1. If that
	  happens the host will time-out and reset the bus.  Adding this delay
	  may also fix the USBMSC_STALL_RACEWAR in usbmsc_scsi.c, however this
	  has not been verified yet.  From Wolfgang Reißnegger (2016-11-18).
	* SAM3/4: Remove unused 'halted' flag in UDP driver.  From Wolfgang
	  Reißnegger (2016-11-18).
	* SAM3/4: Remove 'stalled' flag in UDP driver.  The flag is not necessary.
	  The state of the endpoint can be determined using 'epstate' instead.
	  From Wolfgang Reißnegger (2016-11-18).
	* USBMSC: Fix length of mode6 sense reply packet.  From Wolfgang
	  Reißnegger (2016-11-18).
	* configs/dk-tm4c129x: Typo fix.  From Wolfgang Reißnegger (2016-11-18).
	* Typo fix in sam_udp.c.  From Wolfgang Reißnegger (2016-11-18).
	* STM32: STM32F303xB and STM32F303xC chips have 4 ADCs.  From Paul A.
	  Patience (2016-11-19).
	* vfork(): Fix a race condition in the SMP case.  Existing logic
	  depended on the fact that the child would not run until waitpid was
	  called because the child had the same priority as the parent.  BUT
	  in the SMP case that is not true... the child may run immediately on
	  a different CPU (2016-11-19).
	* arch/:  Add option to use low-priority work queue to all Ethernet
	  drivers in arch that support CONFIG_NET_NOINTS (2016-11-19).
	* sched/clock:  Correct calculation for the case of Tickless mode with
	  a 32-bit timer.  In that case, the calculation was returning
	  millisecond accuracy.  That is not good when the timer accuracy is < 1
	  msec.  From Rajan Gill (2016-11-19).
	* sched/task: task_restart() test not supported on SMP systems.  This is
	  not fully implemented (2016-11-19).
	* This commit adds a new internal interfaces and fixes a problem with
	  three APIs in the SMP configuration.  The new internal interface is
	  sched_cpu_pause(tcb).  This function will pause a CPU if the task
	  associated with 'tcb' is running on that CPU.  This allows a different
	  CPU to modify that OS data stuctures associated with the CPU.  When the
	  other CPU is resumed, those modifications can safely take place.  The
	  three fixes are to handle cases in the SMP configuration where one CPU
	  does need to make modifications to TCB and data structures on a task
	  that could be running running on another CPU.  Those three cases are
	  task_delete(), task_restart(), and execution of signal handles.  In
	  all three cases the solutions is basically the same:  (1) Call
	  sched_cpu_pause(tcb) to pause the CPU on which the task is running,
	  (2) perform the necessary operations, then (3) call up_cpu_resume() to
	  restart the paused CPU (2016-11-20).
	* task_restart: Make sure new task starts with pre-emption disabled and
	  not in a critical section (2016-11-21).
	* Fix a typo in a spinlock macro (2016-11-21).
	* Spinlocks:  Added capability to provide architecture-specific memory
	  barriers.  This was for i.MX6 but does not help with the SMP problems.
	  It is still a good feature (2016-11-21).
	* Remove a assertion condition that appears to rarely cause false-alarm
	  assertions.  Teported by Petteri Aimonen (2016-11-21).
	* The examples/qencoder app was trying to init the encoder by a direct
	  call into the board, cheating in a local header to declare the normally
	  unavailable function prototype.  From Sebastien Lorquet (2016-11-22).
	* configs:  All QE encoder files.  Last change made timer hard-coded to 3.
	  Make configurable (2016-11-22).
	* configs: Remove all traces of the no-longer existent ARCHBUTTONS
	  example.  Remove all button configurations that depended on the
	  obsoleted ARCHBUTTON example (2016-11-22).
	* nucleo-l476rg: Add better selection of timer (2016-11-22).
	* implementation of dumpgpio for stm32l4, was required for pwm debug.
	  From Sebastien Lorquet (2016-11-22).
	* SMP: Add logic to avoid a deadlock condition when CPU1 is hung waiting
	  for g_cpu_irqlock and CPU0 is waitin for g_cpu_paused (2016-11-22).
	* Misoc:  Add timer driver.  From Ramtin Amin (2016-11-22).
	* Misoc:  Add commits and warnings about missing caculation of the timer
	  reload value (2016-11-22).
	* SAM3/4: Name of method is now setcallback, not sethandler (2016-11-22).
	* sam4s-xplained-pro/nsh: Configuration uses old, improper timer interface.
	  CONFIG_TIMER disabled in configuration. (2016-11-22).
	* sam4s-xplained-pro:  Remove obsolete timer initialization logic
	  (2016-11-22).
	* Misoc LM32: Make system timer configurable via CONFIG_USEC_PER_TICK.
	  From Ramtin Amin (2016-11-23).
	* LPC43xx: Add timer driver; configs/bambino-200e: Add support for timer
	  driver.  From Alan Carvalho de Assis (2016-11-23).
	* SMP: Fix backward condition in test (2016-11-23).
	* ARMv7-A SMP: Add a little logic to signal handling (2016-11-24).
	* Misoc LM32: Add signal handling logic.  From Ramtin Amin (2016-11-24).
	* SMP: Add spin_trylock().  Use this in conditions where other CPUs need
	  to stopped but we cannot call enter_critical_section (2016-11-24).
	* Fix for F1 RTC Clock, tested on F103.  From Maciej Wójcik (2016-11-25).
	* SMP:  Fix yet another potential deadlock (2016-11-25).
	* Enable CONFIG_RTC in the hymini-stm32v/nsh2 (kitchensink) config.
	  From Maciej Wójcik (2016-11-26).
	* This adds support for keeping i.MX6 inter-processor communication data
	  in a non-cached address region (2016-11-26).
	* i.MX6: Disable non-cached region support.  Add SCU register definitions
	  (2016-11-26).
	* i.MX6: Add some controls to enable SMP cache coherency in SMP mode
	  (2016-11-26).
	* ARMv7-A: Fix some SCU SMP logic (2016-11-26).
	* ARMv7-A/i.MX6:  Modify handling of the SMP cache coherency
	  configuration so that it is identical to the steps from the TRM.
	  Makes no differenct, however (2016-11-27).
	* The Smoothie project needs to compile C++ inside config/boardname/src/
	  to use with High Priority Interruption, then I modified the board
	  configs Makefile to support it.  It works fine for the first time
	  compilation, but if we execute "touch config/boardname/src/Pin.cxx"
	  and execute "make" it will not detect that Pin.cxx was modified. I
	  think there is some other place I should modify, but I didn't find
	  it.  From Alan Carvalho de Assis (2016-11-27).
	* ARMv7-A/i.MX6 SMP: Move SMP coherernt cache setup to earlier in
	  initialization of CPUn, n>0 (2016-11-27).
	* ARMv7 GIC: SGIs are non-maskable but go through the same path as other,
	  maskable interrupts.  Added logic to serialize SGI processing when
	  necessary (2016-11-27).
	* sched_note: Extend OS instrumentation to include some SMP events
	  (2016-11-27).
	* sched_note: Add spinlock instrumentation; In SMP configurations,
	  select to log only notes from certain CPUs (2016-11-28).
	* Misoc LM3: Add Misoc Ethernet driver.  Integrate network support into
	  configs/misoc/hello.  Remove configs/misoc/include/generated directory.
	  I suppose the the intent now is that this is a symbolic link?  DANGER!
	  This means that you cannot compile this code with first generating
	  these files a providing a symbolic link to this location!  From Ramtin
	  Amin (2016-11-28).
	* Add tools/showsize.sh (2016-11-28).
	* configs/misoc:  Add a sample directory containing generated sources.
	  This is really only useful for performing test builds.  You really
	  must generate the Misoc architecture for a real-life build.  From
	  Ramtin Amin (2016-11-28).
	* sched_note: Permit spinlock and critical section notes in in-memory
	  buffer iff sched_not_get() interfaces is disabled (2016-11-28).
	* STM32 DAC:  Fix shift value whenever there are is a DAC2 and, hence,
	  up to three interfaces.  From Marc Rechté (2016-11-29).
	* Back out a debug change that was included in commit (2016-11-29).
	* i.MX6: Don't output the alphabet if CONFIG_DEBUG_FEATURES is not set
	  (2016-11-29).
	* Misoc LM32: Add logic to flush/invalidate caches.  From Ramtin Amin
	  (2016-11-29).
	* drivers/net/: Adapt all Ethernet drivers to work as though
	  CONFIG_NET_MULTIBUFFER were set.  Remove all references to
	  CONFIG_NET_MULTIBUFFER (2016-11-29).
	* stm32_otghshost: if STM32F446 increase number of channels to 16.  From
	  Janne Rosberg (2016-11-30).
	* usbhost_composite: fix end offset in usbhost_copyinterface().  From
	  Janne Rosberg (2016-11-30).
	* usbhost_cdcacm: add CDC_SUBCLASS_ACM and CDC_PROTO_ATM to supported
	  class and proto.  From Janne Rosberg (2016-11-30).
	* LPC43 SD/MMC:  Correct some git definitions on SMMC control register
	  in lpc43_sdmmc.h.  From Alan Carvalho de Assis (2016-11-30).
	* STM32L4: Correct USART1/2 definitions.  Use default mbed UART4
	  settings.  From Sebastien Lorquet (2016-12-01).
	* boardctl:  Add new boardctl() command ,BOARDIOC_NX_START, to start the
	  NX server as a kernel thread (2016-12-01).
	* GPDMA driver for the LPC43xx.  The GPDMA block is basically the same
	  as the LPC17xx.  Only the clock configuration is different and LPC43xx
	  has four different DMA request sources, where LPC17xx has only two.
	  From Alan Carvalho de Assis (2016-12-01).
	* Remove RGMP and RGMP drivers (2016-12-02).
	* i.MX6:  Add an untested SPI driver taken directly from the i.MX1 port
	  (2016-12-02).
	* Eliminate CONFIG_NO_NOINTS.  There is no longer any support for
	  interrupt level processing of the network stack. Lots of files changed
	  -> lots of testing needed (2016-12-03).
	* Fix DEBUGASSERT() in group_signal.c.  From Masayuki Ishikawa
	  (2016-12-04).
	* Add support for the SAM5CMP-DB board.  From Masayuki Ishikawa
	  (2016-12-04).
	* SAM3/4:  Add SMP support for the dual-core SAM4CM.  From Masayuki
	  Ishikawa (2016-12-04).
	* C Library: Allow option to enable IP address conversions even when the
	  IP address family is not supported (2016-12-04).
	* SSD1306: Fix errors in SPI mode configuration.  From Gong Darcy
	  (2016-12-04).
	* SAMA5 does not build when executing from SDRAM before board
	  frequencies are not constant.  Rather, the bootloader configures the
	  clocking and we must derive the clocking from the MCK left by the
	  bootloader.  This means lots more computations.  This is untested on
	  initial commit because I don't have a good PWM test setup right now
	  (2016-12-04).
	* Olimex-LPC1766-STK: Enable procfs in NSH configuration. Automount
	  /proc on startup (2016-12-05).
	* SAM4CMP-DB: Add hooks to auto-mount the procfs file system on startup
	  in board bring-up logic (2016-12-05).
	* Remove all references to BOARDIOC_PWMSETUP and board_pwm_setup()
	  (2016-12-05).
	* Remove all references to BOARDIOC_ADCSETUP and board_adc_setup()
	  (2016-12-05).
	* Added Timers 2-5 and control of SAI and I2S PLLs.  From David Sidrane
	  (2016-12-05).
	* Added support for stmf469 SAI and I2S PLL configuration and STM446
	  fixes.  From David Sidrane (2016-12-05).
	* Expanded otgfs support to stm32F469 and stm32f446.  Added missing bits
	  definitions, Used stm32F469 and stm32f446 bit definitions,  Removed
	  unsed header file.  From David Sidrane (2016-12-05).
	* Remove BOARDIOC_CAN_INITIALIZE.  CAN initialization is now done in the
	  board initialization logic just like every other device driver
	  (2016-12-06).
	* STM32F7: Allow the config to override the clock edge setting.  From
	  David Sidrane (2016-12-06).
	* For Cortex-A9, should also set ACTLR.FW in SMP mode to enble TLB and
	  cache broadcasts.  Does not fix SMP cache problem (2016-12-07).
	* sched notes: Add additional note to see if/when CPU is started in SMP
	  mode (2016-12-07).
	* EFM32: Fix a compilation error.  From Pierre-noel Bouteville
	  (2016-12-07).
	* pthreads:  Add pthread_cleanup_push() and pthread_cleanup_pop()
	  (2016-12-08).
	* BUGFIX:STM32F427 was rebooting. Over reached family.  From David
	  Sidrane (2016-12-08).
	* Add pthread_setcanceltype() and pthread_testcancel() (2016-12-09).
	* Added STM32F469 RAM size and deliberated STM32F446 size.  From David
	  Sidrane (2016-12-09).
	* Typo in stm32f76xx77xx_pinmap.h edited online with Bitbucket.  From
	  David Sidrane (2016-12-09).
	* stm32_allocateheap.c edited online with Bitbucket.  From David Sidrane
	  (2016-12-09).
	* LPC43xx SD card: Correct pin configuration options needed for SD card
	  pins.  From Alan Carvalho de Assis (2016-12-09).
	* pthread_mutex_destroy(): Fix an error in destroying a mutex which can
	  occur after a pthread has been canceled while holding the mutex
	  (2016-12-09).
	* Add support for cancellation points (2016-12-09).
	* Forgot to add some files in the last commit (2016-12-10).
	* Correct some default font IDs.  From Pierre-Noel Bouteville
	  (2016-12-10).
	* task_delete() now obeys all cancellation point semantics (2016-12-10).
	* Add task_setcancelstate(), task_setcanceltype(), and task_testcancel().
	  These are non-standard interfaces analogous to the correponding pthread_
	  interfaces that provide cancellation controls for tasks (2016-12-10).
Gregory Nutt's avatar
Gregory Nutt committed

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