diff --git a/ChangeLog b/ChangeLog index 0e09fdb5d6..6a8776761e 100755 --- a/ChangeLog +++ b/ChangeLog @@ -4458,14 +4458,14 @@ * configs/twr-k60n512: Converted configurations to use the konfig-frontends tool (2013-03-25). * arch/arm/src/lpc17xx/lpc17_lcd.c: Add an LCD framebuffer driver - for the LPC177x/8x family (2103-3-26). + for the LPC177x/8x family (2013-3-26). * arch/arm/src/lpc17xx/lpc17_emc.c and configs/open1788/src/lpc17_sdraminitialize.c: Began testing the Open1788 SDRAM. The SDRAM is basically functional, but there are failures with the SDRAM is stressed by the memory test at apps/example/ramtest (SDRAM support and the RAM test can be configured into the base configs/open1788/nsh configuration as described in - configs/open1788/READMT.txt (2103-3-27). + configs/open1788/READMT.txt (2013-3-27). * configs/open1788/nxlines: Add a configuration to test both the Open1788 LCD and SDRAM which is used as a framebuffer (2013-3-27). * arch/arm/src/lpc17xx/lpc17_gdma.c and lpc17_sdcard.c: Began @@ -7115,7 +7115,7 @@ * arch/arm/src/sama5/sam_boot.c, sam_irq.c, chip/sama5d3x_memorymap.h: When running from SDRAM, vectors must lie in SRAM (2014-4-2). * arch/arm/src/armv7-a/arm_head.S and cache.h: On start-up, make - certain the the MMU and caches are disabled (probably un-necessary) + certain that the MMU and caches are disabled (probably un-necessary) (2014-4-2). * arch/arm/src/sama5/sam_boot.c: If we have to copy vectors, then make sure to clean the DCache to be sure that the copied vectors are @@ -7584,10 +7584,10 @@ 'static const' when possible to save RAM usage. From Kosma Moczek (2014-6-30). * include/stdint.h: Correct naming of [U]INT_LEASTn_{MAX|MIN} - and [U]INT_FASTn{MAX|MIN}. From Kosma Moczek (2014-6-30). + and [U]INT_FASTn{MAX|MIN}. From Kosma Moczek (2014-6-30). * drivers/mtd/mtd-config: Extend erase block size to 18-bits in order (decrease block size to 14-bits) to handle parts with large - erase blocks. From Kosma Moczek (2014-6-30). + erase blocks. From Kosma Moczek (2014-6-30). * drivers/analog/adc.c: Remove empty ADC write method. From Kosma Moczek (2014-6-30). * arch/arm/src/stm32/stm32_serial.c: Unconfigure GPIO pins when @@ -8142,7 +8142,7 @@ * drivers/net/phy_notify.c, include/net/if.h, ioctl.h, netdev.h, phy.h, and net/netdev/netdev_ioctl.c: Finishes the ioctl definition to subscribe to PHY events. Revamp network ioctl signature to support - arguments other than struct mii_ioctl_data (2014-8-16). + arguments other than struct mii_ioctl_data (2014-8-16). * arch/arm/src/stm32/stm32_eth.c: Modified to support the change to the network ioctl signature changes. Also add support for new ioctl to setup PHY event notifications (2014-8-16). @@ -8182,14 +8182,14 @@ net/tcp/tcp_send_buffered.c, and tcp_send_unbuffered.c: If CONFIG_NET_ARP_SEND is enabled, then all ICMP, TCP, and UDP send operations will call arp_send() before attempting the real send - operation. arp_send() will check if the the IP address mapping is in + operation. arp_send() will check if the IP address mapping is in the ARP table and, if not send ARP requests periodically until it is. This eliminates losing the first outgoing message because there is not mapping in the ARP table (2014-8-18). * net/arp/arp_notify.c, arp_send.c, arp_arpin.c, and arp.h: Add signalling logic so that we do not have to wait so long with the network responses to ARP requests quickly (2014-8-19). - * include/nuttx/lcd/ili9341.h: \Add a register definition header file + * include/nuttx/lcd/ili9341.h: Add a register definition header file for the ILI9341 LCD (2014-8-19). * net/arp/Kconfig: ARP request logic is no longer EXPERIMENTAL (2014-8-20). @@ -8216,10 +8216,10 @@ * arch/arm/src/stm32/stm32_uart.h: STM32 F401: Correct support for USART6 on this chip. From Freddie Chopin (2014-8-22). * nuttx/sched/wdog and include/nuttx/wdog.h: Add support for statically - allocated watchdog timer (also eliminate some unconvential typing) + allocated watchdog timer (also eliminate some unconventional typing) (2014-8-22). * configs/p112/ostest and tools/mkdeps.c: Changes to try to get P112 to - compile with laster SDCC (it still does not) (2014-8-22). + compile with latest SDCC (it still does not) (2014-8-22). * sched/group/group_leave.c: Need to release the address environment when the task group is released (2014-8-22). * mm/mm_granreserve.c and and mm_granmark.c: gran_reserve(): Add a @@ -8247,7 +8247,7 @@ * arch/arm/src/armv7-a/arch_coherent_cache.c: New file. These cache operations 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 correcttly on the SAMA5/Cortex-A + With this change, ELF modules work correctly on the SAMA5/Cortex-A platform (2014-8-24). * configs/sim: Add build support for ELF modules. Useless at the moment because there is no x86 relocation logic support (2014-8-25). @@ -8295,7 +8295,7 @@ clobbers R14. This must be taken account in the inline assembly (2014-8029). * arch/arm/src/armv7-a/arm_syscall.c: Fix hard coded values in - dispatch_syscall() inline assembly. Back out/corect part of last + dispatch_syscall() inline assembly. Back out/correct part of last change; that was going the wrong direction. With this change, the apps/examples/elf test works with address environments and call gates! (2014-8029). @@ -8305,7 +8305,7 @@ only from a file system. This new configuration is defined but only partially integrated (2014-8-29). * tools/refresh.sh: Add a tool to make refreshing configurations easier - when you wnat to do a lot of them (2014-8-29). + when you want to do a lot of them (2014-8-29). * tools/mksyscall.c: Build syscalls that do not need header files (there are none, however) (2014-8-30). * include/nuttx/errno.h syscall/syscall.csv and syscall_funclookup.c: @@ -8343,7 +8343,7 @@ kfree() to kmm_free() and kuzalloc to kumm_zalloc() for consistency with the rest of the naming (2014-8-31). * mm/mm_sbrk.c, kmm_sbrk.c, umm_sbrk.c, and include/unistd.h: Initial - * implementation of sbrk() (2014-9-1). + implementation of sbrk() (2014-9-1). * arch/arm/src/armv7-a/arm_pgalloc.c, mm/umm_malloc.c, and mm_zalloc.c: Completes the implementation of sbrk() (untested) (2014-9-1). * configs/cc3200-launchpad: Updates to the CC3200-Launchpad configuration @@ -8355,7 +8355,7 @@ and sched.h, and arch/*/*/*/Make.defs: 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 (1) - argv[] array and strings were created on the stack before the new tas + 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 (2014-9-1). @@ -8377,16 +8377,16 @@ include/nuttx/addrenv.h, and mm/umm_*.c: Add support for delivery of use-mode signals in the kernel build (2014-9-2). * mm/mm_graninit.c: Granule allocator initialization uses wrong - allocator to setting aside kernel memory (2014-903). - * sched/init/os_start.c: IDLE TCB setup needs to indicate the the - IDLE thread is a privileged, kernel thread (2014-903). + allocator to setting aside kernel memory (2014-9-3). + * sched/init/os_start.c: IDLE TCB setup needs to indicate that the + IDLE thread is a privileged, kernel thread (2014-9-3). * include/nuttx/sched.h: Add a flag to group structure: If the group is created by a kernel thread, then all resources in the group must - be privileged (2014-903). + be privileged (2014-9-3). * sched/group/group_malloc.c, group_zalloc.c, group_free.c, group_create.c, group.h: Group creation logic must use new group flag when allocating resources so that the privileges on the resource are - set correctly (2014-903). + set correctly (2014-9-3). * sched/Kconfig and sched/init/os_bringup.c: Add capability to perform initial board initialization on a separate worker thread (2014-9-3). * tools/mkexport.sh: Fix 'make export'. Adding subdirectories to the @@ -8439,8 +8439,8 @@ * configs/sama5d4-ek/README.txt, Kconfig, knsh/defconfig.ROMFS, src/sam_bringup.c, and sama5d4-ek.h: SAMA5D4-EK kernel config can now boot from a ROMFS file system (2014-9-9). - * LibTargets.mk, Makefile.unix, and Makefile.win: Move commit library - targets out of Makefile.unix and Makeifle.win into a new LibTargets.mk + * LibTargets.mk, Makefile.unix, and Makefile.win: Move common library + targets out of Makefile.unix and Makefile.win into a new LibTargets.mk (2014-9-9). * LibTargets.mk and configs/sama5d4-ek/knsh/Make.defs: Add logic that will permit us to build user libraries with different CFLAGS than kernel @@ -8451,7 +8451,7 @@ a named symbol associated with them. The design did not account for that case (2014-9-9). * binfmt/binfmt_execmodule.c: When allocating a stack for a new process - using the user-sapce allocator, need to select the address environment + using the user-space allocator, need to select the address environment first (2014-9-9). * arch/Kconfig, arm/src/armv7-a/pginline.h, arm_addrenv.c, and arm_pgalloc.c and include/nuttx/addrenv.h: Add configuration to use @@ -8473,13 +8473,13 @@ configs/ea3131/locked/mklocked.sh: Replace the empty lib_initialize() function with a pre-processor macro (2014-9-11). * libc/misc/lib_stream.c: When a privileged thread exits, we have to use - the kernel alloctor to free memory; when an unprivileged thread exits, + 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 (2014-9-11). * arch/arm/src/stm32/stm32_serial.c and chip/stm32f20xxx_rcc.h: Fix for UART7 and UART8 on STM32 clock enable from Aton (2014-9-11). * arch/arm/src/armv7-a/arm_vectors.S: ARMv7-A: Exception register - save/restore needs to work a little differently if we support useri + save/restore needs to work a little differently if we support user mode processes (2014-9-11). * configs/cc3200-launchpad/src/cc3200_leds.c and other board files: Add LED support for the CC3200 Launchpad. From Jim Ewing (2014-9-11). @@ -8523,7 +8523,7 @@ sama5/sam_pgalloc.c, and include/nuttx/addrenv.h: Add a configuration option for dynamic stack management (stack management not yet implemented) (2014-9-13). - * arch/Kconfigm arm/src/armv7-a/addrenv.h, arm_addrenv.c, and + * arch/Kconfig arm/src/armv7-a/addrenv.h, arm_addrenv.c, and arm_addrenv_utils.c, a1x/Make.defs, and sama5/Make.defs, include/nuttx/addrenv.h and arch.h: Move static helper routines from arm_addrenv.c and may them global so that they can be shared by @@ -8544,14 +8544,14 @@ process stack to ustack to make room in the name space for a kstack (2014-9-14). * arch/arm/src/armv7-a/arm_addrenv_kstack.c, include/nuttx/addrenv.h, - arch.h, and othr files: Add the initial implementation of the process + arch.h, and other files: Add the initial implementation of the process kernel stack logic. Not yet integrated into the main OS logic nor tested (2014-9-14). * binfmt/binfmt_execsymtab.c and Makefile, sched/task/task_execv.c, task_posixspawn.c, and Make.defs, include/unistd.h, include/nuttx/binfmt/symtab.h, and libc/unistd/Make.defs: execv() is a basic system interface. It should not be in libc/ but rather in - sched/task. Its symboltable helper logic also belongs in the kernel + sched/task. Its symbol table helper logic also belongs in the kernel but belongs in binfmt/ with the other symbol table logic (2014-9-15). * include/sys/syscall.h, syscall/syscall.csv, syscall_lookup.h, and syscall_stublookup.c: execl() is not a system interface. It belongs @@ -8573,7 +8573,7 @@ armv7-a version needs to be different to handle the case where we are dispatch kernel mode signals when running under a user mode group (2014-9-16). - * arch/arm/src/armv7-a/arm_syscall.c: Correct stack handling is signal + * arch/arm/src/armv7-a/arm_syscall.c: Correct stack handling if signal deliver to user processes (2014-9-16). * arch/arm/src/armv7-a/arm_physpgaddr.c, pgalloc.h, sama5/sam_pgalloc.c, and sam_pgalloc.h: Move some share-able logic from sama5/sam_pgalloc.c @@ -8587,12 +8587,12 @@ 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 (2103-9-17). + Sitzer (2014-9-17). * drivers/can.c: 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 (2103-9-17). + Sitzer (2014-9-17). * SAMA5D4-EK: Add documentation/support for Rev E. board. Refresh NSH configuration. Fix some build errors/warnings introduced with recent work with the knsh configuration (2014-9-17). @@ -8642,7 +8642,7 @@ needed to support the shared memory feature (2014-9-23). * arch/arm/include/arch.h, src/armv7-a/addrenv.h, arm_addrenv.c, arm_addrenv_ustack.c, and arm_addrenv_utils.c: Add logic necessary - to handler remapping of shared memory on contex switches (2014-9-23). + to handle remapping of shared memory on context switches (2014-9-23). * include/nuttx/gran.h, mm/mm_gran/mm_granrelease.c, and Make.defs: Add interfaces to support un-initializing a granule allocator (2014-9-23). * arch/arm/src/armv7-a/arm_pgalloc.cm sched/group/group_addrenv.c, and diff --git a/ReleaseNotes b/ReleaseNotes index 5f495dd3e0..a42a783e1e 100644 --- a/ReleaseNotes +++ b/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().