| NuttX-7.12 |
| ---------- |
| |
| The 112th release of NuttX, Version 7.12, was made on October 1, 2015, |
| and is available for download from the Bitbucket.org website. Note |
| that release consists of two tarballs: nuttx-7.12.tar.gz and |
| apps-7.12.tar.gz. These are available from: |
| |
| https://bitbucket.org/patacongo/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: |
| |
| * Graphics/Graphic Drivers: |
| |
| - Added SSD1351 OLED controller support. Contributed by Paul |
| Alexander Patience. |
| |
| * Common Device Drivers: |
| |
| - MS58xx: Generalize the MS5805 altimeter driver to support other |
| family members. From Paul Alexander Patience. |
| - CAN driver interface: Add an error indication bit to the CAN |
| message report. |
| - Developed a new interface for QSPI. Most QSPI hardware (such as the |
| SAMV71) used a programmed interface to access the QuadSPI FLASH. |
| That programmed interface is no compatible with the simpler NuttX |
| SPI data transfer interface. |
| - Added a driver for ST25L1*K QuadSPI parts. |
| - Renamed the battery driver interface to battery_gauge since it |
| really only implements a battery fuel gauge. From Alan Carvalho de |
| Assis. |
| - Added a new framework to support a batter charger interface. From |
| Alan Carvalho de Assis. |
| - Added a BQ24250 battery charger driver. From Alan Carvalho de Assis. |
| |
| * Networking: |
| |
| - Added support for the local loopback device (dev lo, hostname localhost). |
| - Added NetDB support for the local loopback device. |
| - Network initialization: Automatically initialize all the TUN and |
| loopback devices if they arein the configuration. |
| |
| * Simulation Platform: |
| |
| - The simulation now runs under Cygwin64. Modern Cygwin X86_64 |
| machines follow the Microsoft ABI for parameter passing. The Linux |
| System 5 ABI would not work on X86_64-based Cygwin machines. Newer |
| Cygwin tool chains do nor pre-pend symbol names with the underscore |
| character. |
| |
| * Atmel SAMA5Dx: |
| |
| - Added architectural support for the Atmel SAMA5D2 parts. Not fully |
| verified in this NuttX release. |
| |
| * Atmel SAMA5Dx Boards: |
| |
| - Added support for the Atmel SAMA45D2 Xplained Ultra board. Not |
| fully verified in this NuttX release. |
| |
| * Atmel SAMV7 Drivers: |
| |
| - SAMV7 USBHS DCD: The device controller driver is (finally) |
| functional. |
| |
| * NXP LPC17xx: |
| |
| - Implement options to use external SDRAM and or SRAM for the heap. |
| From Pavel Pisa. |
| |
| * NXP LPC43x: |
| |
| - Added architectural support for the LPC4370. From Lok Tep. |
| |
| * NXP LPC43xx Drivers: |
| |
| - Added Ethernet support. From Ilya Averyanov. |
| - Added LPC43xx EHCI driver from Ilya Averyanov. |
| |
| * NXP LPC43xx Drivers: |
| |
| - Added support for the NXP LPC4370-Link2 development board from Lok |
| Tep. |
| |
| * STMicro STM32: |
| |
| - Added architectural for STM32F303K6, STM32F303K8, STM32F303C6, |
| STM32F303C8, STM32F303RD, and STM32F303RE devices. From Paul |
| Alexander Patience. |
| |
| * STMicro STM32 Drivers: |
| |
| - Added OTG support for STM32F44x. From David Sidrane. |
| |
| * STMicro STM32 Boards: |
| |
| - Added support for the STMicro Nucleo F303ERE board from Paul |
| Alexander Patience. |
| |
| * C Library/Header Files: |
| |
| - stdlib: Add support for div() to the C library. From OrbitalFox. |
| Also added ldiv() and lldiv() which are equivalent to div() with |
| long and long long types, respectively, instead of int. |
| - Added an implementation of the standard shutdown function. |
| |
| * Tools: |
| |
| - tools/mksymtab: declare g_symtab array as const to occupy RO section |
| (Flash). From Pavel Pisa. |
| |
| * Build/Configuration System: |
| |
| - Simplify configs/ Makefiles by combining common logic into a new |
| Board.mk Makefile fragment. From Paul Alexander Patience. |
| |
| * Applications: apps/system: |
| |
| - apps/system/symtab: Optional canned symtab inclusion to the build. |
| When option CONFIG_SYSTEM_SYMTAB is selected and symbol table file |
| libc/symtab/canned_symtab.inc is prepared then application can use |
| system provided complete symbol table. The option has substantial |
| effect on system image size. Mainly code/text. If loading of |
| applications at runtime is not planned do not select this. From |
| Pavel Pisa. |
| |
| * Applications: apps/canutils: |
| |
| - apps/canutils/uavcan: Add support for libuavcan. From Paul Alexander Patience. |
| |
| * Applications: apps/examples: |
| |
| - apps/examples/can: Extend the CAN loopback test by adding more |
| command line options. |
| - apps/examples/usbserial: Can now be run as an NSH builtin-function. |
| Now uses a configurable IO buffer size. |
| - apps/examples/nettest: Add option to suppress network initialization. |
| This is necessary if the nettest is run from NSH which has already |
| initialized the network. |
| - apps/examples/nettest: Extend test so that can be performed using |
| the local loopback device. |
| - apps/examples/netloop: Add a test of the local loopback device. |
| - apps/examples/udpblaster: Add a test to stress the network by |
| sending UDP packets at a very high rate. . |
| - apps/examples/uavcan: libuavcan example from Paul Alexander Patience. |
| |
| 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: |
| |
| - wd_create(): Correct a counting error in the number of available |
| watchdog timers. When the number of free timers is low, the counter |
| could be incremented below zero. |
| - mq_open(): When message queue is opened, inode_reserve() leaves the |
| reference count at zero. mq_open() logic must assure that the |
| reference count of the newly created inode is one. |
| - work_queue(): Logic that sets the queued indication and the logic |
| that does the actual queuing must be atomic. |
| |
| * Binary Loader: |
| |
| - Fix a memory leak in the built-in application logic: File was not |
| being closed. From Bruno Herrera. |
| |
| * File System/Block Drivers: |
| |
| - poll(): If we fail to setup the poll for any file descriptor, for |
| any reason, set the POLLERR bit. |
| - rwbuffer: Fix some logic errors. From Dmitry Nikolaev via Juha |
| Niskanen. |
| - ROMFS: One allocation was not being freed if there was a subsequent |
| failure to allocation I/O buffers resulting in a memory leak on |
| certain error conditions. From Bruno Herrera. |
| |
| * Networking/Network Drivers: |
| |
| - Fix a bug in tun interface driver. From Max Neklyudov. |
| - recvfrom(): Correct wait for new data when NET_UDP_READAHEAD is |
| enabled. Fix size accounting when recvfrom_udpreadahead() sets |
| state.rf_recvlen == -1. I have not checked if data are accumulated |
| to the right position in the buffer however. From Pavel Pisa. |
| - networking: Correct return value from psock_tcp_accept(). From |
| SaeHie Park. |
| - TCP: Fix a problem in when there are multiple network devices. |
| Polls were being sent to all TCP sockets before. This is not good |
| because it means that packets may sometimes be sent out on the wrong |
| device. That is inefficient because it will cause retransmissions |
| and bad performance. But, worse, when one of the devices is not |
| Ethernet, it will have a different MSS and, as a result, incorrect |
| data transfers can cause crashes. The fix is to lock into a single |
| device once the MSS is locked locked down. |
| - net/tcp: The logic that binds a specific network device to a |
| connection was faulty for the case of multiple network devices. On |
| bind(), the local address should be used to associate a device with |
| the connection (if the local address is not INADDR_ANY); On connect(), |
| the remote address should be used (in case the local address is |
| INADDR_ANY). On accept(), it does not matter but the remote address |
| is the one guaranteed to be available. |
| - net/tcp: Fix unbuffered send compilation error when Ethernet is not |
| enabled. From Alan Cavalho de Assis. |
| |
| * ARMv7-M: |
| |
| - All ARMV7-M IRQ setup: Always set the NVIC vector table address |
| unconditionally. This is needed in cases where the code is running |
| with a bootload and when the code is running from RAM. It is also |
| needed by the logic of up_ramvec_initialize() which gets the vector |
| base address from the NVIC. Suggested by Pavel Pisa. |
| - Fix some H/W floating point logic: In the original implementation, |
| !defined(CONFIG_ARMV7M_CMNVECTOR) was a sufficient test to determine |
| if lazy floating point register saving was being used. But recents |
| changes added common lazy register as well so now that test must be |
| (!defined(CONFIG_ARMV7M_CMNVECTOR) || defined(CONFIG_ARMV7M_LAZYFPU)). |
| - ARMv7-M, all "lazy" interrupt stack logic. Assembly instruction |
| that fetches the saved value is incorrect; replace with more |
| traditional push and pop. This is an important fix. Noted by |
| Stefan Kolb. |
| - All ARMV7-M: Force 8-byte stack alignment when calling from assembly |
| to C to interrupt handling. |
| - up_schedulesigaction(): Fix logic that determines if there is a |
| pending signal action before scheduling the next signal action. |
| Both the test and the scheduling action need to be atomic. This |
| problem was fixed on the ARMv7-M but also ported to other |
| architectures that had the same issue. |
| |
| * NXP LPC43xx: |
| |
| - LPC43xx: Fix NVIC_SYSH_PRIORITY_STEP define. From Ilya Averyanov. |
| - LPC43xx: Fix missing #define in eeprom. From Ilya Averyanov. |
| |
| * NXP LPC43xx Drivers: |
| |
| - Fixed the SPI driver. From Ilya Averyanov. |
| |
| * Atmel SAMA5 Drivers: |
| |
| - LPC31 and SAMA5D EHCI: Fix qh_ioccheck to move bp to next QH. From |
| Ilya Averyanov. |
| - LPC31 and SAMA5D EHCI: Performance improvement: Do not disable the |
| asynchronous queue when adding a new QH structure. From Ilya |
| Averyanov. |
| |
| * C Library/Header Files: |
| |
| - gethostbyname(): correct returned address format when DNS is used. |
| The hostent.h_addr_list should point to raw in_addr or in6_addr |
| as defined in the standard. Original implementation used that for |
| numeric addresses but for DNS lookup returned pointer to whole |
| sockaddr_in or sockaddr_in6. From Pavel Pisa . |
| - asin(): The function did not convert for some input values. asing() |
| did not convert for values which do not belong to the domain of the |
| function. But aside of that the function also did not converge for |
| allowed values. I achieved a conversion of the function by |
| reducing the DBL_EPSION and by checking if the input value is in |
| the domain of the function. This is a fix for the problem but the |
| function should always terminate after a given number of iterations. |
| From Stefan Kolb. |
| - Change all references from avsprintf to vasprintf. From Sebastien |
| Lorquet. |
| |
| * Applications: apps/nshlib: |
| |
| - Fix error handling in 'cat' command. On a failure to allocate |
| memory, a file was not being closed. From Bruno Herrera. |
| - Fix error handling in 'mv' command. On a failure to expand the |
| second path, the memory allocated for the expansion of the first |
| path was not being freed. From Bruno Herrera. |
| |
| * Applications: apps/system: |
| |
| - apps/system/netdb: Failed to build if CONFIG_NET_HOSTFILE was not |
| defined because gethostbyaddr() was not available. Noted by |
| OrbitalFox. |
| |
| * Applications: apps/netutils: |
| |
| - Various Kconfig files in netutils: Fix some changes from from |
| NETUTILS_DNSCLIENT to NETDB_DNSCLIENT. From Pavel Pisa. |
| |
| * Applications: apps/modbus: |
| |
| - Macros PR_BEGIN_EXTERN_C and PR_END_EXTERN_C were not defined in |
| all contexts. Replace with explicit expansion in all cases. From Stefan Kolb. |