diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2014-09-27 13:20:21 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2014-09-27 13:20:21 -0600 |
commit | 183e3c4ac8adb5b3f32e917a007780f8ca13f9e9 (patch) | |
tree | 722bc25d7e8134be602cb5150f43aaa05c508632 /nuttx/ReleaseNotes | |
parent | 7338e86fad993798e582a38894914b713533bd8e (diff) | |
download | px4-nuttx-183e3c4ac8adb5b3f32e917a007780f8ca13f9e9.tar.gz px4-nuttx-183e3c4ac8adb5b3f32e917a007780f8ca13f9e9.tar.bz2 px4-nuttx-183e3c4ac8adb5b3f32e917a007780f8ca13f9e9.zip |
Update ReleaseNotes in preparation for the 7.5 release
Diffstat (limited to 'nuttx/ReleaseNotes')
-rw-r--r-- | nuttx/ReleaseNotes | 407 |
1 files changed, 406 insertions, 1 deletions
diff --git a/nuttx/ReleaseNotes b/nuttx/ReleaseNotes index 5f495dd3e..a42a783e1 100644 --- a/nuttx/ReleaseNotes +++ b/nuttx/ReleaseNotes @@ -6744,7 +6744,7 @@ Additional new features and extended functionality: - Add support for the STM32F103RC and RD. From Kosma Moczek - Add a procfs entry to show the state of the CCM heap usage. - From Pelle Winderstam + From Pelle Winderstam * STMicro STM32 Drivers: @@ -6955,3 +6955,408 @@ Bugfixes. Only the most critical bugfixes are listed here (see the ChangeLog fo - NxPlayer: NxPlayer needs to set curbyte field to zero before enqueuing a buffer. Otherwise, it looks like beginning of the buffer has already been consumed. + +NuttX-7.5 +--------- + +The 105th release of NuttX, Version 7.5, was made on September 28, 2014, +and is available for download from the SourceForge website. Note +that release consists of two tarballs: nuttx-7.5.tar.gz and +apps-7.5.tar.gz. Both may be needed (see the top-level nuttx/README.txt +file for build information). + +Additional new features and extended functionality: + + * Core OS: + + - Watchdog Timer Allocation: (1) If we run out of pre-allocated + watchdog times, the logic will now allocate additional timers + from the heap. A reserve of pre-allocated watchdog timers is + maintained so that there will always be timers available for + interrupt handlers. (2) Added support for statically allocated + watchdog timer + - Address Environment Support: (2) New OS APIs integrated into all + platform-specific context switching logic (up_block_task(), + up_unblock_task(), _exit(), and others). + - Kernel Build Support: (1) The MPU based "kernel build" renamed to a + protected build (CONFIG_BUILD_PROTECTED); added support for the a + new MMU-based "kernel build" (CONFIG_BUILD_KERNEL), (2) The system + call library can now be built with CONFIG_NUTTX_KERNEL. New + selection: CONFIG_LIB_SYSCALL. + - System Startup: Add configuration options to start the system from + a program on a file system (versus an address in memory). + - Startup Parameter Passing. There used to be two ways to pass + parameters to new tasks, depending upon the configuration: Either + (1) argv[] as created as an array with each string strdup'ed. Or + (2) argv[] array and strings were created on the stack before the + new task was started. Now, there is only one way, way (1). Way + (2) might be slightly more compact, but this is not worth carry the + complexity of two different ways of doing the same thing. + - Board Initialization: Add capability to perform initial board + initialization on a separate worker thread. This is needed because + there are many cases where initialization logic cannot execute on + the start-up/IDLE thread. That is because blocking or waiting is + not permitted on the IDLE thread. + + * Memory Management: + + - Granule Allocator: (1) Add a new function to reserve un-allocatable + regions in the granule heap. (2) Add interfaces to support + un-initializing a granule allocator. + - Page Allocator: Add a simple physical page allocator based on the + existing NuttX granule allocator. I am not certain if the granule + allocator is sufficiently deterministic for long range use, but it + gets get a page allocator in place for testing very quickly. + - Remove CONFIG_MM_MULTIHEAP. Non-multiheap operation is no longer + supported. + - sbrk(): sbrk() is now supported in the kernel build to permit + dyanmically sized, per-process heaps. + - Per-Process Heaps: Space at the beginning of the process data space + is now reserved for user heap management structures. In the kernel + build mode, these heap structures are shared between the kernel and + use code in order to allocate user-specific data. + - User Heap Management: When a privileged thread exits, we have to + use the kernel allocator to free memory; when an unprivileged thread + exits, we don't have to do anything... heap memory will be cleaned + up when the address environment is torn down. + - Inter-Process Shared Memory Support: (1) Add implementation and + documentation for shmget(), shmctl(), shmat(), and shmdt(). (2) + Add system system calls to support the user call gate to the shared + memory interfaces. (3) Add platform-specific interface definitions + needed to support the shared memory feature. + - Virtual Page Allocator: Add support for a per-process virtual page + allocator. This is a new member of the task_group_s structure. The + allocator must be initialized when a new user process is started and + uninitialize when the process group is finally destroyed. It is + used by shmat() and shmdt() to pick the virtual address onto which + to map the shared physical memory. + + * File Systems/Block Drivers/MTD: + + - SMART FS and SMART FS procfs updates from Ken Pettit. + - The MTD Read-ahead/Write buffer layer appears is now functional. + + * Binary Formats: + + - Add logic to initialize the per-process user heap when each user + process is started. + + * Graphics: + + - Change all occurrences of NxConsole to NxTerm. + + * Networking: + + - PHY Interrupts: (1) Standardize a PHY interrupt attachment + interface. (2) Add support for an ioctl that can be used to notify + an application when there is a change in the network status + signalled by a PHY interrupt. + - Improved Send Logic: In the past, the first packet send to a new + network peer would fail; there would be no entry in the ARP table + for the peer and so an ARP request qould replace that first packet. + Now as an option if CONFIG_NET_ARP_SEND=y, all send logic will (1) + check if the peer MAC address is in the ARP table and, if not, (2) + send ARP requests periodically to get the mapping and (3) wait for + the ARP response. Then (4) when the ARP response is received then + the actual send logic will be initiated. Thus there may be a delay + with the first packet sent to a new peer, but the packet should not + be lost + + * Host Simulation: + + - Emulated SPI FLASH driver for the sim target from Ken Pettit. + + * Intel x86: + + - The default host is now x86_64 and the -m32 option will be + automatically selected for simulation builds. + + * Intel 8051 Family: + + - Removed all support for the 8051 family architecture from the NuttX + source tree. The obsoleted code along with the removal patch can + now be found at misc/Obsoleted/. This code was removed because (1) + although some functionality has been demonstrated, I am not aware of + any really successful ports of NuttX to any 8051, and (2) the 8051, + with its hardware stack, forces limitations and complications to the + other architectures and make growth and development of NuttX more + complex. + + * ZiLOG ZNeo Boards: + + - configs/16z: Support for this board has been removed from the NuttX + source tree (but still can be found in the misc/Obsoleted + directory). This port is not ready for usage but may return to the + NuttX tree at some point in the future. + + * Atmel SAM3/4 Boards: + + - SAM4E-EK: Add (1) a fully-functional ILI9341-based LCD driver and + (2) a fully-functional NxWM configuration. + + * ARMv7-A: + + - Address Environments: Add support for application address + environments using the Cortex-A MMU. Implement standardized + platform-specific interfaces of NuttX address environment + support. + - Cache Operations: Implement standardized, platform-specific cache + operations. These are called from the ELF loader in order to flush + D-cache and invalidate I-cache after an ELF module has been loaded + into memory. With this change, ELF modules work correctly on the + SAMA5/Cortex-A platform. + - Kernel Build: (1) Add implementations of system call gate. (2) Add + CRT0 start-up file that can be linked with separately built user + programs. (3) Add support for delivery of use-mode signals in the + kernel build. (4) Add logic to initialize the per-process user heap + when each user process is started. (5) ARMv7-A exception handling + needs to work a little differently if we support user mode + processes. This is because R13 and R14 are paged differently + between user and SVC mode. + - Shared Memory Support: (1) Add logic necessary to handle remapping + of shared memory on context switches. (2) Extend virtual/physical + address conversions to include addresses in shared memory. (3) Add + implementation of platform-specific shared memory support. + + * Atmel SAMA5D Drivers: + + - Implement all network ioctls, including the new ioctl to setup PHY + event notifications. + - In kernel build with address environment, need logic to map user + virtual addresses to physical addresses, and vice versa. + + * Atmel SAMA5D Boards: + + - SAMA5D3 Xplained, SAMA5D3-EK, and SAMA5D4-EK: Convert existing + board specific PHY interrupt interfaces to use newly defined + standard interface. + - SAMA5D4-EK: Add a configuration for testing the kernel build + configuration. There are configurations to boot either from an SD + card or from and in-memory ROMFS file system. + - SAMA5D4-EK: Add documentation/support for Rev E. board. + + * STMicro STM32 Drivers: + + - Ethernet: Modified to support the change to the network ioctl + signature changes. Also add support for new ioctl to setup PHY + event notifications. + + * STMicro STM32 Boards: + + - STM32F4Discovery with STM32F4DIS-BB: Add a network enabled NSH + configuration for the STM32F4Discovery board with the STM32F4DIS-BB + base board installed. Includes support for the microSD card slot on + the STM32F4DIS-BB base board. + + * TI Tiva Drivers: + + - Add support for the TI CC3200. From Jim Ewing. + + * TI Tiva Boards: + + - Add support for the TI CC3200 Launchpad. From Jim Ewing. + + * C Library: + + - Re-implemented poll() delay using sem_timedwait(). + + * Configuration/Build System: + + - Export Target: In the kernel or protected builds, (1) only the user + libraries should be exported, (2) do not copy internal header files + or build scripts if this is a kernel or protected build, and (3) + needs to bundle up the user C startup file (crt0), not the kernel + head object for the kernel and protected builds. + - Add logic that will permit us to build user libraries with different + CFLAGS than kernel code. This is needed because we need the + -fno-common option when building ELF code to prevent SHN_COMMON + relocations. + + * Applications: + + - NSH: Extend the NSH network initialization logic. There is now an + option that will create a network monitor thread that will monitor + the state of the link. When the link goes down, the code will + attempt to gracefully put the Ethernet driver in a down state; When + the link comes back, the code will attempt to bring the network back + up. + - ELF Example: The ELF test/example has been extended so the + individual ELF test programs can link against the SYSCALL library + (if it is available) or against the C library to eliminate or + minimize the need for symbol tables. + - Change all occurrences of NxConsole to NxTerm. + - MTDRWB Example: Add an example to test MTD R/W buffering. + - OS Test Example: Add a trivial test of sem_timedwait. + + * Application Configuration/Build System: + + - Import Target: (1) Add logic that will allow building applications + against a NuttX export package (vs. the nuttx/ source tree). (2) + Add .config file to export package. (3) Create apps/import. Create + apps/import/Make.defs that does things like define CFLAGS; ELF build + requires -fno-common in CFLAGS. Copy some base logic from + nuttx/tools/Config.mk to apps/import/Make.defs. (4) Add + apps/import/scripts/gnu-elf.ld GCC linker script for ELF import + builds. + - All Makefiles: (1) Add an install target to all makefiles. For + the import build, the top-level Makefile now does two passes: (1) + builds libapp.a, then (2) installs the programs into apps/bin. (2) + Add program installation for CONFIG_BUILD_KERNEL in all Makefiles + that build a main(). (3) For kernel build, the object file + containing main cannot go into library because of name collisions. + The object file must be handled as a special case in every Makefile. + - All Built-In Programs: With kernel build (CONFIG_BUILD_KERNEL), + entry point to all tasks is main(), not some xyz_main(). + - NSH: Several commands must be disabled in the kernel build because + they depend on interfaces that are not available outside of the + kernel: dd, df, losetup, mkfatfs, mkdr, and ps. + - apps/tools/: (1) Add mkimport.sh to expload an NuttX import package + and install in apps/import. (2) Add mkromfsimg.sh script to create + a BOOT ROMFS filesystem image. + - ELF and NxFLAT Examples: Do not build test cases that use + task_create() if there is an address environment. + + * Tools: + + - refresh.sh: Add a tool to make refreshing configurations easier + when you want to do a lot of them. + - mksyscall.c: Build syscalls that do not need header files. + - mkexport.sh: Add .config file to export package. + - See above for new apps/tools scripts. + +Efforts In Progress. The following are features that are partially +implemented but present in this release. They are not likely be be +completed soon. + + * Processes. Much of the work in this release is focused on the + realization of Unix-style user processes in NuttX. There is more to + be done, however. The full roadmap and status is available at: + http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes + + * XMega: There are some fragments in place for an XMega port. That + port has not really started, however. + + * Galileo: Similarly, there are fragments in place for an Intel Galileo + port. The port not been started in earnest either. + +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: + + - Kernel build fixes: (1) IDLE TCB setup needs to indicate that the + IDLE thread is a privileged, kernel thread. (2) Don't build + task_create() or task_spawn() interfaces if there is an address + environment. (3) posix_spawn() kernel proxy thread should be a + kernel thread, not a user task. + - Several pthread interfaces: Add const storage class to to phthread + parameters. From Freddie Chopin. + - sched/clock: Remove vestiges of g_tickbias; need, instead, to apply + time bias to g_basetime in order to provide the correct system time. + - System Calls: (1) Several typos fixed; corrected integration of + exevc(), execvl(), posix_spawn, and posix_spawnp system calls. (2) + If we are configured to use a kernel stack while in SYSCALL handling, + then we need to switch back to the user stack to deliver a signal. + + * File Systems/Block Drivers/MTD: + + - procfs: Fix some procfs breakage introduced by reorganizing some + non-reorganizable data structures. From Ken Pettit. + - AT45: In at45db_bwrite , the buffer is not increased when writing + more than 1 page. Sourceforge bug #34. + + * Binary Formats: + + - ELF relocations. Some relocation types do not have a named symbol + associated with them. The design did not account for that case. + - ELF Loader: Critical bugfix.. BSS was not being cleared. + + * Memory Management: + + - Granule allocator initialization uses wrong allocator to setting + aside kernel memory. + - Add a flag to group structure: If the group is created by a kernel + thread, then all resources in the group must be privileged. + + * Cryptogrphic Support: + + - crypto/cryptodev.c: Path segments reversed in include file path. Noted by Brennan Ashton. + + * Common Drivers: + + - Common CAN upper-half: In can_txdone, waiters on the semaphore + should be informed regardless of the return value of can_xmit. First + it returns -EIO if there are no new packets, and second the + information of the waiters is about the last transferred packet. + From Daniel Lazlo Sitzer. + + * ARM: + + - System Calls: Fix a typo in system call when fetching parameter from + the stack: regs[REG_PC]+4 is the address, not regs[REG_PC+4]. + + * STMicro STM32 Drivers: + + - STM32 F401 UART: Correct support for USART6 on this chip. From + Freddie Chopin. + - STM32 FLASH fixes: use size_t instead of uint16_t, make interface + more generic. From Freddie Chopin. + - Fix for UART7 and UART8 on STM32 clock enable from Aton. + - CAN: At the end of the interrupt handler, the interrupts were being + disabled, if all packets have been transferred when the interrupt + handler was invoked. This is problematic, because the interrupt + handler calls can_txdone of the upper half which can enqueue new + packets to send. Removed the block altogether, because can_txdone + calls can_xmit which disables interrupts if there are no new packets + to send. From Daniel Lazlo Sitzer. + - Additional STM32 CAN correction suggested by Max Holtzberg. + + * STMicro ST32 Boards: + + - configs/mikroe-stm32f4: Fix a few compile bugs and minor corrections + to the mikroe-stm32f4 configuration source. From Ken Pettit. + + * ARM9/ARMv7-A: + + - System Calls: Fix ARM7/9 and Cortex-A SYSCALLs: For threads in SVC + mode, the SVC instructions clobbers R14. This must be taken account + in the inline assembly. + - Task Setup: All tasks, even user mode tasks, must start in + supervisor mode until they get past the start-up trampoline. + - ARMv7-A: Modify up_fullcontextrestore() for CONFIG_BUILD_KERNEL. + It changed CPSR while in kernel. That will crash if the new CPSR is + user mode while executing in kernel space. Fixed by adding a + SYS_context_restore system call. There is an alternative, simpler + modification to up_fullcontextrestore() that could have been done: + It might have been possible to use the SPSR instead of the CPRSR and + then do an exception return from up_fullcontextrestore(). That + would be more efficient, but I never tried it. + + * Atmel SAM3/4 Boards: + + - SAM3X/Arduino Due: Fix typo in sam3x_periphclks.h; add SCLK + definitions to board.h header file. From Fabien Comte. + - SAM3 RTT: Only SAM4 family has RTTDIS bit in the MR register. + SourceForge bug #33 from Fabien Comte. + + * C Library: + + - sscanf(): NuttX libc tried to guess how many characters to parse, + extracted them into a buffer, then ran strtol() on that buffer. + That guess was often wrong. A better approach would be to call + strtol() directly on the input data, using the endptr return value + to determine how many characters to skip after parsing. From Kosma + Moczek. + - Corrected atan2 implementations from Denis Arnst. + - Change to lib_dtoa() to fix precision error from trailing zeroes. + From Bob Doiron. + + * Applications: + + - Fix NSH PS command: If there are no arguments, it could print + garbage for argument list. + + * Configuration/Build System: + + - Null Example: Need to include config.h it order know if this is or + is not a kernel build. This problem still exists in several other + file that may need to define main(). |