1NuttX Release Notes 2=================== 3 4This file contains are the release notes for the NuttX (and apps) packages 5for every release. The text is just as was written at the time of release 6(with perhaps some corrected typos). Over the course of time, NuttX has 7used several different repositories: CVS, two SVN repositories, and 8currently a GIT repository. Therefore, revision information specific to an 9older repository may not be meaningful today. 10 11To make it easier to track there older versions in the current GIT 12repository, a GIT lightweight tag has been applied for each release. The 13tag name is the release name (for example, the release 6.27 has tag name 14"nuttx-6.27"). 15 16NuttX-0.1.0 17----------- 18 19This is the initial. This initial includes the complete NuttX RTOS 20with support for the Linux user mode simulation and the TI TMS320C5471 21(Arm7) processor. Partial support for the 87C52 is included. 22 23This release has been verified on both the Linux user-mode and C5471 24platforms using the test program under examples/ostest. Test results 25for the C5471 can be found in arch/c5471/doc/test-results.txt. 26 27This tarball contains a complete CVS snapshot from March 9,2007. 28 29NuttX-0.1.1 30----------- 31 32This is the second release of NuttX. This release includes the following. 33See the ChangeLog for more detailed description of the changes. 34 35(1) General OS bugfixes (see the ChangeLog for details), 36(2) bugfixes for the TI TMS320C5471 (Arm7) platform (see 37 the ChangeLog) 38(3) Complete support for the 87C52. (However, the 87C52 39 release is not stable enough for general usage). 40(4) Added the beginning of a shell call NuttShell (nsh) 41 42This release has been verified on the Linux user-mode platform, the 43Spectrum Digital TMS320C5471 EVM, and the PJRC 87C52 development board 44using the test program under examples/ostest. 45 46STATUS: The development status remains as ALPHA until further testing 47is performed. 48 49This tarball contains a complete CVS snapshot from March 14, 2007. 50 51NuttX-0.1.2 52----------- 53 54This is the third release of NuttX. This release is 55primarily a bugfix release with minimal new features. See 56the ChangeLog for a more detailed description of the 57changes. 58 59(1) Several important OS and ARM7 bugfixes, 60(2) opendir(), closedir(), readdir(), etc. added 61(3) Added C5471 watchdog timer. 62(4) Created a shareable, serial driver. 63(5) Added 'ls' command to NuttShell (nsh) 64(6) Added a test of the round robin scheduler 65 66This release has been verified on the Linux user-mode 67platform, the Spectrum Digital TMS320C5471 EVM using the 68test program under examples/ostest. 69 70This tarball contains a CVS snapshot from March 19, 2007. 71 72NuttX-0.2.1 73----------- 74 75This is the fourth release of NuttX. This release adds adds 76support for a new platform, restructures many header files, 77and adds a few new features: 78 79(1) Support for Neuros OSD / DM320 80(2) Restructuring of header files for better POSIX compliance 81(3) Added kill() 82(4) Added POSIX timers 83(5) bugfixes and documentation updates 84 85This release has been verified on the Linux user-mode 86platform, the Spectrum Digital TMS320C5471 EVM, and the 87Neuros OSD using the test program under examples/ostest. Because 88of the stability of these tests, the project status 89has been upgraded to 'beta.' 90 91This tarball contains a complete CVS snapshot from March 22, 2007. 92 93NuttX-0.2.2 94------------ 95 96This is the fifth release of NuttX. There is no major new 97functionality in this release. This release adds support 98for new pthread barrier APIs, changes the directory 99structure, to better handle different board configurations 100using the same processor architecture, and corrects a few 101defects. 102 103See the ChangeLog for a complete list of changes. 104 105This release has been verified on the Linux user-mode 106platform and the Neuros OSD using the test program under 107examples/ostest. There are no known, critical defects but 108the project development status remains at 'beta' status 109pending further test and evaluation. 110 111This tarball contains a complete CVS snapshot from 112March 26, 2007. 113 114NuttX-0.2.3 115------------ 116 117This is the sixth release of NuttX. This release is 118primarily a bugfix release. Numerous problems were fixed 119as detailed in the change log. New functionality includes 120support for timed message queues. 121 122See the ChangeLog for a complete list of changes. 123 124This release has been verified on the Linux user-mode 125platform and the Neuros OSD using the test program under 126examples/ostest. The results of the testing is available in 127the source tree under configs/ntosd-dm320/doc/test-results. 128There are no known, critical defects but the project 129development status remains at 'beta' status pending further 130test and evaluation. 131 132This tarball contains a complete CVS snapshot from March 29, 1332007. 134 135NuttX-0.2.4 136------------ 137 138This is the 7th release of NuttX. This release is only to roll out 139build changes to better support different SoC's that use the same 140processor architecture. In particular, the two existing ARM architectures, 141c5471 and DM320 were combined into a single ARM directory. This was done 142in preparation for an LPC2148 port that is currently in progress. There 143is NO new functionality or significant bugfixes in this release. 144 145See the ChangeLog for a complete list of changes. 146 147This release has been verified on the Linux user-mode platform 148and the Neuros OSD using the test program under examples/ostest. 149The results of the testing is available in the source tree under 150configs/ntosd-dm320/doc/test-results and under configs/sim/doc/test-results. 151There are no known, critical defects but the project development status 152remains at 'beta' status pending further test and evaluation. 153 154This tarball contains a complete CVS snapshot from April 28, 2007. 155 156NuttX-0.2.5 157------------ 158 159This is the 8th release of NuttX. This release includes: 160 161(1) Several bug fixes 162(2) Initial support for FAT filesystems. Testing has not 163 been exhaustive and some functionality is missing 164 (mkdir, stat, unlink chmod, and rename functionality is 165 not yet implemented). 166(3) Support for the NXP lpc2148 processor is included but 167 is untested as of this writing. The current 168 implementation includes only support for serial console 169 and timer interrupt. 170 171See the ChangeLog for a complete list of changes. 172 173This release has been verified only on the Linux user-mode 174platform. 175 176This tarball contains a complete CVS snapshot from May 19, 1772007. 178 179NuttX-0.2.6 180----------- 181 182This is the 9th release of NuttX. This is primarily a 183bugfix release to correct a number of problems introduced 184with the 0.2.5 release. This release does include some FAT 185filesystem extensions including unlink(), mkdir(), rmdir(), 186rename(), opendir(), closedir(), readdir(), seekdir(), 187telldir(), rewindir(). There are some pending FAT changes 188that did not make it into this release including stat(), 189truncate(), and long file names. 190 191See the ChangeLog for a complete list of changes. 192 193This release has been verified only on the Linux user-mode platform. 194 195This tarball contains a complete CVS snapshot from May 26, 2007. 196 197NuttX-0.2.7 198----------- 199 200This is the 10th release of NuttX. This is primarily a bugfix 201release to correct a number of problems reported to me (thanks 202Didier!). This release does include the final changes complete the 203FAT filesystem logic including stat(), statfs(), and non-standard 204APIs to manage FAT attributes. At present, FAT long file names and 205file truncate() are still not supported. 206 207See the ChangeLog for a complete list of changes. 208 209This release has been verified only on the Linux user-mode platform. 210 211This tarball contains a complete CVS snapshot from June 9, 2007. 212 213NuttX-0.2.8 214----------- 215 216This is the 11th release of NuttX. This release: 217(1) corrects important bugs in opendir() and realloc() 218(2) adds support for environment variables 219(3) adds several new C library interfaces 220(4) extends several example programs 221 222See the ChangeLog for a complete list of changes. 223 224This release has been verified only on the Linux user-mode platform. 225 226This tarball contains a complete CVS snapshot from July 2, 2007. 227 228NuttX-0.3.0 229----------- 230 231This is the 12th release of NuttX. This release includes the initial 232integration of a network subsystem and the uIP TCP/IP stack into NuttX 233(see http://www.sics.se/~adam/uip/index.php/Main_Page). Also included 234is a device driver for the Davicom DM90x0 Ethernet controller. 235 236This integration is very preliminary. Only a small portion of the 237network functionality has been integrated and there are a number of 238open issues (see the TODO file). The network subsystem is pre-alpha 239at this point in time. I expect that it will stabilize and mature 240over the next few releases. 241 242The baseline functionality of NuttX continues to mature and remains at 243post-beta (as long as the network is not used). 244 245See the ChangeLog for a complete list of changes. 246 247This release has been verified only on the Neuros OSD (DM320 ARM9) 248platform using the DM90x0 driver. 249 250This tarball contains a complete CVS snapshot from November 6, 2007. 251 252NuttX-0.3.1 253----------- 254 255This is the 13th release of NuttX and the second release containing 256the integration of a network subsystem and the uIP TCP/IP, UDP, and 257ICMP stacks into NuttX (see http://www.sics.se/~adam/uip/index.php/Main_Page). 258 259Many network-related problems have been fixed and the implementation 260has matured significantly. However, the level of network reliability 261is probably still at the pre-alpha or early level. It is sufficiently 262complete that you may begin to perform some network integration and 263is expected to achieve beta level of reliability over the next few 264releases. 265 266The baseline functionality of NuttX continues to mature and remains at 267post-beta (as long as the network is not used). 268 269See the ChangeLog for a complete list of changes. 270 271This release has been verified only on the Neuros OSD (DM320 ARM9) 272platform using the DM90x0 driver. 273 274This tarball contains a complete CVS snapshot from November 19, 2007. 275 276NuttX-0.3.2 277----------- 278 279This is the 14th release of NuttX and the 3rd release containing 280the integration of a network subsystem and the uIP TCP/IP, UDP, and 281ICMP stacks into NuttX (see http://www.sics.se/~adam/uip/index.php/Main_Page). 282 283Many network-related problems have been fixed and the implementation 284has matured significantly. This release consists of: 285 286o TCP-related bug-fixes 287o TCP performance improvements 288o Initial UDP integration 289o Initial uIP micro webserver integration 290 291See the ChangeLog for a complete list of changes. 292 293The level of network reliability is at alpha level is expected to 294achieve beta level of reliability over the next few releases. 295 296The baseline functionality of NuttX continues to mature and remains at 297post-beta. 298 299This release has been verified only on the Neuros OSD (DM320 ARM9) 300platform using the DM90x0 driver. 301 302This tarball contains a complete CVS snapshot from November 23, 2007. 303 304NuttX-0.3.3 305----------- 306 307This is the 15th release of NuttX and the 4th release containing 308the integration of a network subsystem and the uIP TCP/IP, UDP, and 309ICMP stacks into NuttX (see http://www.sics.se/~adam/uip/index.php/Main_Page). 310 311Many network-related problems have been fixed and the implementation 312has matured significantly. This release consists of: 313 314o TCP-related bug-fixes for disconnecting sockets 315o Correction of some TCP read-ahead logic 316o TCP performance improvements 317o Misc. additions and cleanup (See the ChangeLog for a complete list of 318 changes). 319 320The level of network reliability is at an early beta release level. The 321baseline functionality of NuttX continues to mature and remains at 322post-beta. Open network-related issues include only: 323 324o Some minor unimplemented BSD socket functionality, 325o Thread safety issues: the same socket cannot be used concurrently on 326 different threads. 327o Pending design changes necessary to support multiple network interfaces. 328o IPv6 support is incomplete. 329 330This release has been verified only on the Neuros OSD (DM320 ARM9) 331platform using the DM90x0 driver. Any feedback for improving the network 332reliability/performance would be greatly appreciated. 333 334This tarball contains a complete CVS snapshot from November 28, 2007. 335 336NuttX-0.3.4 337----------- 338 339This is the 16th release of NuttX and the 5th release containing 340the integration of a network subsystem and the uIP TCP/IP, UDP, and 341ICMP stacks into NuttX (see http://www.sics.se/~adam/uip/index.php/Main_Page). 342 343This release is primarily a bug-fix release. New features include 344only: 345 346o TELNET front-end to NSH, 347o DHCPC server functionality, and 348o C5471 Ethernet driver. 349 350Numerous network related problems were fixed related to DHCPC, UDP 351input processing, UDP broadcast, send timeouts, and bad compilation when 352uIP is compiled at high levels of optimization. 353 354The level of network reliability is at a strong beta release level. The 355baseline functionality of NuttX continues to mature and remains at 356post-beta or production level. 357 358Parts of this release were verified only on the Neuros OSD (DM320 ARM9) 359platform using the DM90x0 Ethernet driver and other parts on the Spectrum 360Digital C5471 EVM using the C5471 Ethernet driver. Any feedback about bugs 361or suggestions for improving the network reliability/performance would be 362greatly appreciated. 363 364This tarball contains a complete CVS snapshot from December 10, 2007. 365 366NuttX-0.3.5 367----------- 368 369This is the 17th release of NuttX this release is primarily a bug-fix 370release and intended to synchronize with the current CVS contents. See 371the ChangeLog for a detailed list of changes and fixes. 372 373This release were verified only on the Spectrum Digital C5471 EVM using 374the C5471 Ethernet driver. Any feedback about bugs or suggestions for 375improvement would be greatly appreciated. 376 377This tarball contains a complete CVS snapshot from December 18, 2007. 378 379NuttX-0.3.6 380----------- 381 382This is the 18th release of NuttX. This release contains on a few 383changes. The primary purpose of this release is to synchronize with 384the release of the pascal-0.1.0 add-on package. 385 386This release of NuttX includes the following changes: 387 388* Fixes for use with SDCC compiler 389* Added a simulated z80 target (arch/z80) 390* Fix deadlock errors when using stdio but with no buffering 391* Add support for the add-on Pascal P-Code interpreter (pcode/) 392 (see the pascal-0.1.0 package) 393 394This release were verified only on the simulated Z80 and host 395simulation targets. As usual, any feedback about bugs or suggestions 396for improvement would be greatly appreciated. 397 398This tarball contains a complete CVS snapshot from January 6, 2007. 399 400==== 401 402There was an error in the initial 0.3.6 release that prevented 403a successful build unless the Pascal add-on was present. The 404tarball was patched to include the fix. Make sure that you download 405the nuttx-0.3.6.1.tar.gz version to avoid this problem. 406 407NuttX-0.3.7 408----------- 409 410This is the 19th release of NuttX. This release includes the 411preliminary port of NuttX to the ZiLOG z16f 16-bit microcontroller. 412This port was verified using the ZiLOG z16f2800100zcog Development 413and the ZiLOG ZDS-II toolchain. See http://www.zilog.com for 414further information. 415 416I emphasize that this is a preliminary release of the z16f port and 417is only alpha or, perhaps, pre-alpha quality as of this writing. 418There are a list of known issues in the TODO file in the root of 419the NuttX directory. The overall quality of NuttX (excluding the 420z16f port) continues to improve beyond the late beta level. 421 422The z16f port required numerous changes to NuttX to handle: 423 424* NEAR and FAR addressing, and 425* Use of a Windows native toolchain in a Cygwin build environment. 426 427In addition to the z16f port, at least one very critical bug was 428found and corrected in NuttX: The thread-specific errno value of one 429task was being randomly trashed when a different thread exited. 430 431This release were verified on the ZiLOG z16f2800100zcog, Neuros OSD 432(ARM9), and the simulation platforms. As usual, any feedback about bugs 433or suggestions for improvement would be greatly appreciated. 434 435This tarball contains a complete CVS snapshot from January 31, 2008. 436 437NuttX-0.3.8 438----------- 439 440This is the 20th release of NuttX. This is a minor bugfix release. 441It corrects a few minor problems, adds a few minor features, and 442continues the integration of the ZiLOG Z18F and of the Pascal P-Code 443add-on. This release is synchronized with the release of Pascal-0.1.2. 444 445This tarball contains a complete CVS snapshot from February 10, 2008. 446 447NuttX-0.3.9 448----------- 449 450This is the 21st release of NuttX. This is a minor future enhancement 451release. This release includes support for the ZiLOG Z8Encore! micro- 452controller. Also included is the initial framework for support for 453the Z80, XTRS platform (http://www.tim-mann.org/xtrs.html). 454 455This released has been verified only on the ZiLOG ZDS-II Z8Encore! 456chip simulation. 457 458This tarball contains a complete CVS snapshot from March 9, 2008. 459 460NuttX-0.3.10 461------------ 462 463This is the 22nd release of NuttX. This is an important bug fix 464release. This release incorporates fixes to correct critical list 465handling errors in task shutdown logic: One in timer deletion logic 466(timer_delete.c) and one in stream logic (lib_init.c). This release 467also includes support to ZiLOG EZ80Acclaim microcontroller (EZ80F91 468chip) and configurations for the ZiLOG z8f64200100kit (Z8F6423) and 469ez80f0910200kitg (EZ80F091) development kit. 470 471NuttX-0.3.11 472------------ 473 474This is the 23rd release of NuttX. This is another important bugfix 475release. This releases fixes several bugs: 476 477* Two POSIX timer bugs: a memory leak as well a fatal sequencing error. 478* Several FAT filesystem errors. 479* A deadlock that can occur in opendir() 480 481A few new features were also added: 482 483* Support for recursive mutexes 484* Added a RAM disk block driver 485* The host simulator no longer uses direct Linux system calls and 486 now also works on Cygwin. 487* The OS test was strengthen and now runs as an endurance test 488 489These changes were verified only on the Host simulator under Cygwin. 490Please report any errors to me. 491 492This tarball contains a complete CVS snapshot from June 1, 2008. 493 494NuttX-0.3.12 495------------ 496 497This is the 24th release of NuttX. This release includes some minor 498bugfixes as well as a few new features. Bugs fixed include: 499 500* Corrected an error in recursive mutex implementation. 501* task_create() was only dup()ing the first three file descriptors. 502* Fixed driver open reference counting errors in dup(), dup2(), and exit(). 503* Fixed error handling logic in fflush(). 504 505New features were also added: 506 507* Pipes and pipe() API 508* FIFOs and mkfifo() API 509* mkfatfs() API can be used to format FAT file systems. 510 511These changes were verified only on the Host simulator under Cygwin. 512Please report any errors to me. 513 514This tarball contains a complete CVS snapshot from August 10, 2008. 515 516NuttX-0.3.13 517------------ 518 519This is the 25th release of NuttX. This release includes some 520important bugfixes as well as a few new features. Bugs fixed 521include: 522 523* Fixed problems with Cygwin-based console input. NSH now works 524 with the Cygwin simulator. 525* sched_get_priority_max/min returned error on SCHED_RR 526* Corrected detection of End-of-File in fgets() 527* Fixed an error in opendir() that could cause an assertion to fail 528 inappropriately. 529* Corrected an error in the FAT that caused files opened for writing 530 with O_APPEND to fail. 531* Fix error in getopt() when called with argc==1 532* Fix error in stat() when used on the root directory 533* Fixed a critical bug that effects the way that environment variables 534 are shared among pthreads. 535* uIP port now supports multi-threaded, concurrent socket access. 536 So, for example, one thread can be reading from a socket while 537 another is writing to the socket. 538 539New features were also added: 540 541* New OS APIs: chdir() and getcwd() 542* The NuttX shell (NSH) has been extended in many ways. 543 - New commands: mkfatfs, mkfifo, sleep, usleep, nice, sh, cd, and pwd 544 - New memory inspection commands and heap usage commands 545 - New capabilities: 546 - Execution of commands in background 547 - Execution of simple scripts 548 - Redirection of command output 549 - Last command status ($?) 550 - Now supports if-then[-else]-fi construct 551 - Other features as noted in the ChangeLog. 552 553These changes were verified only on the Host simulator under Cygwin 554and under Linux and also on the Neuros OSD (ARM9). Please report 555any errors to me. 556 557This tarball contains a complete CVS snapshot from September 1, 2008. 558 559nutt-0.3.14 560----------- 561 562This is the 26th release of NuttX. This release includes some 563important bugfixes as well as a few new features. Critical bugs 564fixed include: 565 566FAT FS: 567 * Fixed several critical bugs with regard to fat reading and 568 writing and FAT12 accesses. Basically the FAT FS only worked 569 with my tiny test files and test cases. A lot of stronger FAT 570 tested is still needed! 571 * Fixed another FAT bug in implementation of FAT lseek(); 572 this prohibited correct random access to large files. 573 574Network: 575 * Corrected a critical bug that may prevent recvfrom from receiving 576 packets from most remote UDP port numbers. 577 * Corrected an error in multi-threaded socket handling in send() and 578 sendto(). Outgoing data could overwrite incoming data. 579 * Corrected IP checksum calculation in ICMP and UDP message send logic. 580 * Corrected an error in send() timeout logic. 581 582New features were also added: 583 584Network: 585 * Added support for application access to ICMP protocol stacks 586 * Added ping request logic (net/uip). 587 * Added basic TFTP client logic (netutils/tftpc). 588 589NuttShell (NSH): 590 * New commands: 'test', '[', 'ping', 'mkrd', 'xd', and TFTP 'get' and 'put' 591 See the new NuttShell User Guide for additional information. 592 593Other less critical bugs were also fixed and other less important 594features were were added. See the ChangeLog for details. 595 596These changes were verified only on the Neuros OSD (ARM9). Please 597report any errors to me. 598 599This tarball contains a complete CVS snapshot from September 8, 2008. 600 601nutt-0.3.15 602----------- 603 604This is the 27th release of NuttX. This release includes some new features: 605 606* Adds support for the ROMFS filesystem 607* ROMFS supports mmap() to provide eXecute In Place (XIP) capability 608* NuttShell (NSH) can be configured to use ROMFS to provide a tiny read-only 609 filesystem with a startup script in /etc. 610* Completed the basic port of the NXP LPC2148 on the mcu123.com board. 611 The basic port includes successful booting, timer interrupts, 612 serial console, successfully passing the examples/ostest, and a 613 NuttShell (NSH) configuration. 614 615These changes were verified only on the mcu123.com NXP LPC2148 616board. Please report any errors to me. 617 618This tarball contains a complete CVS snapshot from September 20, 2008. 619 620nutt-0.3.16 621----------- 622 623This is the 28th release of NuttX. This release includes the first 624support for USB in NuttX. A set of USB APIs were added to support 625USB device controller drivers and bindings to USB device class 626drivers. The form of the interface was inspired by the Linux Gadget APIs. 627 628At present USB device controller drivers are included for: 629 * The NXP LPC214x. This driver has been verified and is an early alpha 630 stage in quality. 631 * TI DM320. Coding for this driver is complete but it is completely 632 untested as of this release. 633 634A controller-independent class driver is also included for: 635 * USB serial class device driver (emulates the Prolific PL2303 636 serial-to-USB adapter). This driver has only been verified with 637 the Linux host PL2303 driver. 638 639Other new features include: 640 * Add an option to set aside a separate stack for interrupt 641 handling (ARM only). This is useful when memory is constrained, 642 there are multiple tasks, and the interrupt stack requirement 643 is high (as when USB is enabled). 644 645A few bugs were also fixed: 646 * Fixed the frequency of system timer interrupts in the NXP LPC214x port 647 (off by 20x in nuttx-0.3.15) 648 * Fixed serial driver bugs related to (1) open counts and (2) recognizing 649 O_NONBLOCK on read. 650 * Fixed an error in read(); it was not setting the errno on errors returned 651 from the driver. 652 653These changes were verified only on the mcu123.com NXP LPC2148 board 654using with a Linux host. Please report any errors to me. 655 656This tarball contains a complete CVS snapshot from October 10, 2008. 657 658UPDATE 659------ 660This release does not build for the ARM target when USB is disabled. 661Here is the fix: 662 663Index: arch/arm/src/common/up_internal.h 664=================================================================== 665RCS file: /cvsroot/nuttx/nuttx/arch/arm/src/common/up_internal.h,v 666retrieving revision 1.13 667diff -u -r1.13 up_internal.h 668--- arch/arm/src/common/up_internal.h 6 Oct 2008 16:20:52 -0000 1.13 669+++ arch/arm/src/common/up_internal.h 13 Oct 2008 20:48:21 -0000 670@@ -200,7 +200,8 @@ 671 extern void up_usbinitialize(void); 672 extern void up_usbuninitialize(void); 673 #else 674-# define up_netinitialize() 675+# define up_usbinitialize() 676+# define up_usbuninitialize() 677 #endif 678 679 #endif /* __ASSEMBLY__ */ 680 681NuttX-0.3.17 682------------ 683 684This is the 29th release of NuttX. This release includes the 685additional support for USB in NuttX. The following new features 686were added: 687 688* Added support for SPI-based MMC/SD cards (with an SPI driver 689 for the NXP LPC214x). 690* Added USB storage class device side driver (BBB) 691* Added an example that demonstrates the USB storage class by 692 exporting the SPI based MMC/SD card on the NXP LPC214x. 693 694This is an early alpha release of these drivers. At present they 695only work with debug features enabled so there are probably some 696race conditions that occur only with debug features disabled. 697(Anyone out there with a USB analyzer? I would love to know what 698is happening.) 699 700Several important bugs were also fixed in the FAT file system, USB 701serial driver and NXP LPC214x USB controller driver. (See the ChangeLog 702for details.) 703 704These changes were verified only on the mcu123.com NXP LPC2148 board 705using a Linux development environment. USB testing was performed 706using both a Linux host and a WinXP host. Please report any errors 707to me. 708 709This tarball contains a complete CVS snapshot from October 28, 2008. 710 711NuttX-0.3.18 712------------ 713 714This is the 30th release of NuttX. This release includes two 715partially completed ports, several new features, and a couple of 716important bug fixes. The two partially completed ports are: 717 718 * The STMicro STR71x processor and configuration for the Olimex 719 STR-P711 board. 720 * The Hitachi SH-1 using the SH1_LCEVB1 (SH-1/US7032EVB1) board 721 722Progress on these ports is stalled (as detailed in the ChangeLog). 723 724The new features focus primarily on management of block devices and 725extensions of the NuttShell (NSH). These include: 726 727 * A loop device that converts a file into a block device. 728 * A block to character (BCH) driver that allow access a block device as 729 if it were character device. 730 * Added strcasecmp() and strncasecmp() libc functions. 731 * Added the 'dd' and 'losetup' commands to NSH. These commands 732 (along with mkfatfs and mount), give good management of filesystems 733 on the target. 734 735Several bugs were fixed, the most important of which are: 736 737 * Fixed a race condition workaround delay in LPC214X SPI logic. 738 This was also the cause of some bad MMC/SD performance on that 739 platform. 740 741 * Fixed a recently introduced FAT file system problem: It would 742 mount a (invalid) FAT file system even if the medium is not formatted! 743 744 * Corrected two other important errors in the FAT lseek() implementation: 745 1 - The sectors-per-cluster value was being reset to "1". 746 2 - Important lseek logic was omitted when the seek position was zero. 747 748The FAT filesystem has had many bugs fixed in it and, I think, is 749now maturing and becoming stable. 750 751These changes were verified only on the mcu123.com NXP LPC2148 752board, the Hitachi SH1_LCEVB1 board, and the Linux simulator, all 753using a Linux development environment. Please report any errors 754to me. 755 756This tarball contains a complete CVS snapshot from November 16, 2008. 757 758NuttX-0.3.19 759------------ 760 761This is the 31st release of NuttX. This release includes the 762following new feature: 763 764 * Add poll() and select() APIs that may be used to monitor for 765 data availability on character devices or TCP/IP sockets. 766 * Implemented support TCP/IP connection backlog. This allows 767 select() to wake-up on new connections to a listener socket. 768 * Added definition of a framebuffer driver and implement framebuffer 769 drivers for the simulated platform and the TI DM320 (untested 770 as of the initial check-in). 771 * Partially developed a graphics framework based on the framebuffer 772 drivers, however, this will not be ready for use for a few more 773 releases. Currently this includes only a few color conversion 774 routines and some rasterizing functions. A tiny windowing system 775 is under development but not ready for check-in yet. 776 * Added support for fixed precision math. 777 * Added support for outgoing multicast packets. 778 779Several bugs were fixed, the most important of which are: 780 781 * Fixed an important bug in the TCP/IP buffering logic. When 782 TCP/IP read-ahead is enabled and not recv() is in-place when a 783 TCP/IP packet is received, the packet is placed into a read-ahead 784 buffer. However, the old contents of the read-ahead buffer 785 were not being cleared and old data would contaminate the newly 786 received buffer. 787 788 * Changed the behavior of the serial driver read. It now returns 789 data as it is available rather than waiting for the full requested 790 read size. This makes functions like fgetc() work much more 791 smoothly. 792 793These changes were verified only on the Neuros OSD (ARM9) using a 794Linux development environment. Please report any errors to me. 795 796This tarball contains a complete CVS snapshot from November 26, 2008. 797 798NuttX-0.4.0 799----------- 800 801This is the 32nd release of NuttX. This release adds graphics 802support and a tiny windowing subsystem. That new graphics subsystem 803is documented at http://nuttx.sourceforge.net/NXGraphicsSubsystem.html. 804No other substantial changes were made. 805 806These changes were verified only on the NuttX simulation platform 807with X11 windows simulating a device framebuffer. Please report any 808errors to me. 809 810The version number was bumped up to 0.4.0 in part to reflect the 811new graphics subsystem, but also to recognize the NuttX is approaching 812complete functionality. In the 0.3.x versions, network support was 813added, Pascal P-code runtime support was added, FAT and ROMFS 814filesystems were added, MMC/SD and USB device support were added. 815There were also numerous extensions to the NuttShell, NuttX APIs, 816and architecture ports. 817 818This tarball contains a complete CVS snapshot from December 6, 2008. 819 820NuttX-0.4.1 821----------- 822 823This is the 33rd release of NuttX. This is a minor bugfix release. 824The primary reason for this release is to correct numerous build 825errors that have accumulated for the ZiLOG ZDS-II based targets. 826All ZDS-II targets now build correctly (but have not been re-tested). 827In addition to platform-specific build failures, this release also 828adds the following features which were not tested as of the time 829of the release: 830 831 * Board support for the ZiLog ez80Acclaim! ez80f910200zco Development Kit 832 * ZiLOG eZ80F91 EMAC driver 833 834These changes were verified only on the NuttX simulation platform. 835Please report any errors to me. 836 837This tarball contains a complete CVS snapshot from February 6, 2009. 838 839NuttX-0.4.2 840----------- 841 842This is the 34th release of NuttX. This release adds no new OS 843features but does include support for two new architectures: 844 845 * ez80Acclaim! Basic support has been integrated and verified 846 for the ez80f910200zcog-d board (eZ80F91-based). That basic 847 support includes timer interrupts and serial console. Ongoing 848 work includes an EMAC driver that should be integrated for the 849 next release nuttx-0.4.2. eZ80Acclaim! support has been in the 850 code base for some time, but has only just been integrated due 851 to toolchain issues. 852 853 * Renesas M16C/20. Support for the Renesas SKP16C20 board has 854 been included in the NuttX source tree. However, as the 855 eZ80Acclaim!, testing and integration of that port is stalled 856 due to toolchain issues. 857 858These changes were verified only on the ZiLOG eZ80910200zcog-d 859board. Please report any errors to me. 860 861This tarball contains a complete CVS snapshot from February 28, 2009. 862 863NuttX-0.4.3 864----------- 865 866This is the 35th release of NuttX. This release one important new 867OS feature and corrects and extends the eZ80 port: 868 869 * Priority Inheritance. The basic NuttX waiting logic was extended 870 to support priority inheritance. See the NuttX User Manual for 871 further information: 872 http://nuttx.apache.org/docs/latest/reference/user/05_counting_semaphore.html. 873 874 * ez80Acclaim! Corrected several critical, show-stopping bugs on that 875 platform including: 876 - Errors in the serial driver interrupts. 877 - An error in the eZ80 table. 878 * eZ80Acclaim!: Completed integration of the eZ80F91 EMAC driver. 879 880These changes were verified only on the ZiLOG eZ80910200zcog-d board 881and on Cygwin-based simulation platform in various configurations. 882Please report any errors to me. 883 884This tarball contains a complete CVS snapshot from March 13, 2009. 885 886NuttX-0.4.4 887----------- 888 889This is the 36th release of NuttX. This release focuses on bugfixes 890and extending and verifying certain networking features. 891 892 * Important bugs were fixed in NSH, UDP checksum calculation, UDP 893 bind() behavior for port==0, the eZ80Acclaim! EMAC driver, Z80 894 interrupt handling, and in the C libraries. 895 896 * Testing was extended to further verify the tiny webserver, 897 DHCPD, wget(), and sendmail. 898 899See the Changelog for a detailed description of these changes. 900 901These changes were verified only on the ZiLOG eZ80910200zcog-d board 902using the ZDS-II toolchain in Cygwin-based environment. Please 903report any errors to me. 904 905This tarball contains a complete CVS snapshot from March 29, 2009. 906 907NuttX-0.4.5 908----------- 909 910This is the 37th release of NuttX. This release focuses on a few new features. 911 912 * The basic port for the Freescale ARM920T i.MX1 processor on the 913 Freescale MX1ADS board. Coding is complete for this port, but 914 it is has not yet fully integrated 915 * Extended I2C and SPI interface definitions 916 * Add basic support for C++ applications. Very simple C++ 917 applications can now be built against NuttX without any external 918 libraries. At present, only the most primitive C++ programs 919 are supported, but it is hoped that this support will be extended 920 in future releases. 921 922See the Changelog for a detailed description of these changes. 923 924This tarball contains a complete CVS snapshot from April 19, 2009. 925 926NuttX-0.4.6 927----------- 928 929This is the 38th release of NuttX. The release features support 930for the Micromint Eagle-100 development board. This board is based 931around, the Luminary LM3S6918 MCU. This is the first ARM Cortex-M3 932architecture supported by NuttX. This initial, basic port includes 933timer and serial console with configurations to execute the NuttX 934OS test and to run the NuttShell (NSH). Work is still underway on 935this port and current plans are to have I2C, SSI, MMC/SD, and 936Ethernet driver in the 0.4.7 release. 937 938Additional work was done on the MXADS i.MX1 port, however, that 939work has been set aside until I complete work on the Eagle-100 (I 940also need to come up with a 3V power supply). 941 942Other changes in this release include: Extensions to the SPI interface 943definition in order to handle 9-bit interfaces to displays. Several 944bugs were fixed (see the ChangeLog for a complete list of changes). 945 946This tarball contains a complete CVS snapshot from May 19, 2009. 947 948NuttX-0.4.7 949----------- 950 951This is the 39th release of NuttX. This release focuses on cleaning 952up and extending the Eagle100/LM3S6918 port released in nuttx-0.4.6 953and on improved MMC/SD support. New features include: 954 955 * Improved reliably and additional drivers for the Eagle-100 board 956 (LM3S6918 ARM Cortex-M3). Additional drivers include Ethernet, 957 SSI, and support for the on-board LEDs and microSD cards. 958 959 * The SPI-based MMC/SD driver was extended to support SDHC Version 960 2.xx cards. 961 962In addition, this release includes several important bugfixes for 963the LM3S6918, the LPC2148, the SPI-based MMC/SD driver, and to 964FAT32. See the ChangeLog for details of these bugfixes. 965 966This tarball contains a complete CVS snapshot from May 29, 2009. 967 968NuttX-0.4.8 969----------- 970 971This is the 40th release of NuttX. This release adds: 972 973 * Support for the Olimex STRP711 board. That board is based on 974 the STMicro STR711 MCU (ARM7TDMI). Integration is complete on 975 the basic port (boot logic, system time, serial console). Two 976 configurations have been verified: (1) The board boots and 977 passes the OS test with console output visible on UART0, and 978 the NuttShell (NSH) is fully functional with interrupt driven 979 serial console. An SPI driver is available but untested (because 980 the Olimex card slot appears to accept only MMC cards; I have 981 only SD cards). Additional needed: USB and driver, MMC 982 integration. 983 984 * Support for the CodeSourcery and devkitARM Windows-native GNU 985 toolchains. Makefiles have been modified for the LM3S6918, 986 LPC2148, and STR711 to support these toolchains under Cygwin. 987 988This tarball contains a complete CVS snapshot from June 13, 2009. 989 990NuttX-0.4.9 991----------- 992 993This is the 41st release of NuttX. This release adds: 994 995 * Support for a new binary format call NXFLAT that can be used to 996 execute separately linked programs in place in a file system. 997 See https://nuttx.apache.org/docs/latest/components/nxflat.html. 998 999 * Several important bugs were files related to networking and ROMFS. 1000 See the ChangeLog for a complete list. 1001 1002This tarball contains a complete CVS snapshot from June 26, 2009. 1003 1004NuttX-0.4.10 1005----------- 1006 1007This is the 42nd release of NuttX. This released focused on the 1008port of Jeff Poskanzer's THTTPD HTTP server (see 1009http://acme.com/software/thttpd/). As of the 0.4.10 release, that 1010port is still not fully complete and functional. However, numerous 1011related bug-fixes and functional additions for THTTPD were added: 1012 1013 * Several new standard C-library functions (fileno, strstr, 1014 strpbrk, fcntl). 1015 * Improved and extended timing APIs (mktime, gmtime, gmtime_r, 1016 gettimeofday, localtime, localtime_r, and strftime) 1017 * Networking enhancements: recvfrom() and accept() now work with 1018 non-blocking sockets. 1019 * NXFLAT extensions (exec) 1020 * Pattern matching logic. 1021 * And miscellaneous bug fixes (see the ChangeLog for details). 1022 1023This tarball contains a complete CVS snapshot from August 8, 2009. 1024 1025NuttX-0.4.11 1026------------ 1027 1028This is the 43rd release of NuttX. This release of NuttX incorporates 1029the verified port of Jeff Poskanzer's THTTPD HTTP server (see 1030http://acme.com/software/thttpd/). Many of the key features of 1031THTTPD have been tested on the Micromint Eagle-100 development board 1032(Cortex-M3). These tests verify: 1033 1034 * Serving of files from any file system 1035 * Execution of CGI executable. This release supports execution 1036 of NXFLAT executables on a ROMFS file system 1037 (https://nuttx.apache.org/docs/latest/components/nxflat.html) 1038 1039A standard CGI interface is used: Information is pasted to the CGI 1040program via POST commands and via environment variables. CGI socket 1041I/O is redirected to stdin and stdout so that the CGI program only 1042need to printf() to send its content back to the HTTP client. 1043 1044Another value to this THTTPD integration effort has been that THTTPD 1045has provided a very good test bed for finding NuttX networking bugs. 1046Several very critical networking bugs have been fixed with this 10470.4.11 release (see the ChangeLog for details). Networking throughput 1048has also been greatly improved. Anyone using NuttX networking 1049should consider upgrading to this release. 1050 1051This tarball contains a complete CVS snapshot from September 16, 2009 1052 1053NuttX-0.4.12 1054------------ 1055 1056This is the 44th release of NuttX. This release adds basic support 1057for the STMicro STM32, Cortex-M3 MCU. The specific port is to the 1058STMicro STM3210E-EVAL development board based around the STM32F103ZET6 1059MCU. Some highlights of this port: 1060 1061 * This basic port includes boot-up logic, interrupt driven serial 1062 console, and system timer interrupts. 1063 * Includes a basic STMicro RIDE7 project that can be used to 1064 perform basic STM32 board bring-up (due to RIDE7 size limitations, 1065 it cannot be used for the full NuttX bring-up). 1066 * Working, Tested Configurations: the NuttX OS test and the 1067 NuttShell (NSH) example. 1068 1069This basic STM32 port will be extended in the 0.4.13 NuttX release. 1070Functionality needed for complete STM32 support includes: USB 1071device driver, LCD driver and NX bringup on the development board's 1072display and MicroSD support. An SPI driver and a DMA support was 1073included in this 0.4.12 release, but is not yet tested. 1074 1075This tarball contains a complete CVS snapshot from October 17, 2009 1076 1077NuttX-0.4.13 1078------------ 1079 1080This is the 45th release of NuttX. The release extends the support 1081for the STMicro STM32 microcontroller. Minimal support for the 1082STM3210E-EVAL development board based around the STM32F103ZET6 MCU 1083was released in NuttX-0.4.12. This release adds: 1084 1085 * A simple interface definition to support some FLASH, EEPROM, 1086 NVRAM, etc. devices. 1087 * Verified SPI operation using driver for SPI based FLASH parts 1088 M25P64 and M25P128. 1089 * Improved Cortex-M3 context switching. This should improve 1090 context switching performance be 2x in certain cases. 1091 * Added a USB device-side driver for the STM32. This is an early 1092 release of a very complex driver; some bugs are expected. 1093 * The USB driver has been verified against the USB serial device 1094 class driver. There is at least one known outstanding issue 1095 (see the full bug description in the TODO list). 1096 1097This release also corrects some important bugs in the early STM32 release: 1098 1099 * Fixed several errors the prevented operation of NuttX on an 1100 STM32 development board using USART2 as the serial console. 1101 * Fixed and optimization-dependent race condition in the clock 1102 initialization. 1103 * Fixed a critical bug in the interrupt control logic that could 1104 cause interrupt operations to failed used for interrupts in a 1105 certain range. 1106 1107This tarball contains a complete CVS snapshot from November 4, 2009 1108 1109NuttX-4.14 1110---------- 1111 1112This is the 46th release of NuttX. The release extends the support 1113for the STMicro STM32 microcontroller. Minimal support for the 1114STM3210E-EVAL development board based around the STM32F103ZET6 MCU 1115was released in NuttX-0.4.12 and extended in NuttX-0.4.13 to include 1116initial USB support. This completes the STM32F103ZET6 and adds: 1117 1118New Generic RTOS Features: 1119 1120 * Added generic support that can be included in any block driver 1121 to provide read-ahead buffering and write buffering for improved 1122 driver performance. 1123 * Added a generic worker thread that can used to defer processing 1124 from an interrupt to a task. 1125 * Defined a generic SD/SDIO interface can can be bound to a MMC/SD 1126 or SDIO driver to provide SDIO support. 1127 * Implemented a an SDIO-based MMC/SD driver using this new SDIO 1128 interface. 1129 1130New STM32 Features: 1131 1132 * Add support to configure an STM32 input GPIO to generate an 1133 EXTI interrupt. 1134 * Added support for buttons on the STM3210E-EVAL board. 1135 * Implemented an STM32 version of the common the SDIO interface. 1136 * Added a configuration to exercise the STM32 with the USB mass 1137 storage device class example. 1138 1139This release also corrects some important bugs in the early STM32 release: 1140 1141 * Correct error handling in the mount() logic. 1142 * Fixed several STM32 DMA-related issues. Integrated and debugged 1143 STM32 DMA functionality that was added in 0.4.12. 1144 * Fixed several bugs in the STM32 USB device-side driver. 1145 1146NOTE: This version, 4.14, is equivalent to what would have been 1147called 0.4.14 to follow 0.4.13. The zero has been eliminated from 1148the front of the version number to avoid confusion about the state 1149of development: Some have interpreted the leading zero to mean 1150that the code is in some way unstable. That was not the intent. 1151Beginning in January 2010, I will switch to the 2010.nn versioning 1152as many others have done to avoid such confusion. 1153 1154This tarball contains a complete CVS snapshot from December 2, 2009 1155 1156NuttX-5.0 1157--------- 1158 1159This is 47th release of NuttX and the successor to nuttx-4.14. This 1160major revision number has been incremented to indicate that an 1161incompatibility with previous nuttx releases has been introduced. 1162This version adopts standard fixed width integer names as specified 1163by the ANSI C99 standard. The core logic of NuttX is older than 1164that standard and did not conform to it. 1165 1166If you have applications running on NuttX-4.14, those applications 1167should continue to build and execute without problem on NuttX-5.0. 1168However, if you have device drivers or other OS-internal logic, you 1169will probably have to make some minor changes to your code to use 1170this version. Below is a summary of those changes: 1171 1172 * If you include sys/types.h to get the non-standard, fixed width 1173 integer types (uint32, uint16, ubyte, etc.), that is no longer 1174 necessary. 1175 * Instead, you will need to include stdint.h where the new fixed 1176 width integer types are defined (uint32_t, uint16_t, uint8_t, etc). 1177 * You will have to change all occurrences of the following types: 1178 1179 uint32 -> uint32_t 1180 uint16 -> uint16_t 1181 ubyte -> uint8_t 1182 uint8 -> uint8_t 1183 sint32 -> int32_t 1184 sint16 -> int16_t 1185 sint8 -> int8_t 1186 1187 * In addition, the non-standard type 'boolean' must replaced with 1188 the standard type 'bool'. The type definition for 'bool' is in 1189 stdbool.h 1190 1191This change in typing caused small changes to many, many files. It 1192was verified that all configurations in the release still build 1193correctly (other than the SDCC-based configurations). Regression 1194testing was performed on a few configurations, but it is possible 1195that minor build issues still exist. (If you encounter any, please 1196let me know and I will help you to fix them.) 1197 1198In the course of the regression testing, several important bugs 1199unrelated to the type changes were found and corrected. 1200 1201 * Fixed an important error in the RX FIFO handling logic of the 1202 LM3S6918 Ethernet driver. 1203 * Corrected the handling of TCP sequence numbers in the TCP stack. 1204 * And other less important bugs as detailed in the ChangeLog. 1205 1206The primary focus of this release was standards compatibility, but 1207a few new features were added including a (1) Flash Translation 1208Layer (FTL) that will support filesystems on a FLASH device and (2) 1209partial ports for the STM32F107VC and HCS12 C9S12NE64 MCUs. Those 1210ports are very incomplete as of this writing. 1211 1212This tarball contains a complete CVS snapshot from December 21, 2009 1213 1214NuttX-5.1 1215--------- 1216 1217This is the 48th release of NuttX. This release adds support for 1218two new MCU architectures in various states of development: 1219 1220* AT91SAM3U (http://www.atmel.com/products/at91/sam3landing.asp?family_id=605) 1221 1222 This release adds support for the SAM3U-EK development board with 1223 the AT91SAM3U4E MCU 1224 (http://www.atmel.com/dyn/products/product_card_mcu.asp?part_id=4562). 1225 As with most NuttX architecture releases, the release will be 1226 rolled out in two parts: A basic port and an extended port. 1227 1228 NuttX-5.1 includes the basic port for the SAM3U-EK board. This 1229 release passes the NuttX OS test and is proven to have a valid 1230 OS implementation. It supports the basic boot-up, serial console 1231 and timer interrupts. A configuration to support the NuttShell 1232 is also included. 1233 1234 The extended port will also include support for SDIO-based SD 1235 cards and USB device (and possible LCD support). These extensions 1236 may or may not happen by the NuttX 5.2 release as my plate is 1237 kind of full now. 1238 1239* LPC3131 (http://ics.nxp.com/products/lpc3000/lpc313x.lpc314x.lpc315x/) 1240 1241 This release also adds the complete implementation of the basic 1242 port for the NXP LPC3131 MCU on the Embedded Artists EA3131 board 1243 (http://www.embeddedartists.com/products/kits/lpc3131_kit.php). 1244 That port, unfortunately has stalled due to tools issues. Those 1245 tool issues have been resolved and I am confident that the verified 1246 basic port will be available in NuttX-5.2. 1247 1248 The extended release will follow and should include SDIO-based 1249 SD card support and device USB. 1250 1251A few additional features and bugfixes of a minor nature were also 1252incorporated as detailed in the ChangeLog. 1253 1254NuttX-5.2 1255--------- 1256 1257This is the 49th release of NuttX. This release completes the 1258verification of the basic port for the NXP LPC3131 MCU on the 1259Embedded Artists EA3131 board 1260(http://www.embeddedartists.com/products/kits/lpc3131_kit.php). 1261This basic port includes basic boot-up, serial console, and timer 1262interrupts. This port has been verified on the using the NuttX OS 1263test and includes a working implementation of the NuttShell (NSH). 1264 1265An extended release will follow and should include SDIO-based SD 1266card support and device USB. 1267 1268NuttX-5.3 1269--------- 1270 1271This is the 50th release of NuttX. This release support for one new 1272architecture: 1273 1274 * A basic port for the NXP LPC2378 MCU on the Olimex-LPC2378 1275 development board was contributed by Rommel Marcelo. 1276 1277And extensions to two existing architectures: 1278 1279 * David Hewson contributed a dual-speed (full/high) USB device-side 1280 driver for the NXP LPC3131 on the Embedded Artists EA3131 1281 development board. 1282 1283 * A DMA driver and a high speed MCI driver for the Atmel AT91SAM3U 1284 are included (but not fully tested in this release). 1285 1286Two important bugfix was also included: 1287 1288 * An important fix to the USB mass storage driver was contributed 1289 by David Hewson. 1290 * A serious error in the AT91SAM3U PIO handling was fixed. 1291 1292NuttX-5.4 1293--------- 1294 1295This is the 51st release of NuttX. This release includes one new, 1296important extension to th NX graphics system (See 1297https://nuttx.apache.org/docs/latest/components/nxgraphics/index.html). 1298 1299NX was develop a couple years back on hardware that supported only 1300framebuffer devices, that is, video hardware with video memory 1301directly converts the memory content to video. However, most MCUs 1302that NuttX focuses on do not support such video memory; rather, 1303that typically only support LCDs via parallel or serial interfaces. 1304 1305This release of NuttX extends NX so that now renders directly to 1306the LCD device via its serial or parallel interface. No in-memory 1307copy of the screen memory need be maintained so this solution should 1308also work in MCUs with very limited SRAM. 1309 1310This initial release of this feature includes the verified NX 1311extensions plus a driver for the HX8347, 16-bit parallel LCD. This 1312LCD supports 16-bit RGB (5:6:5). 1313 1314NuttX-5.5 1315--------- 1316 1317This is the 52nd release of NuttX. This release includes one new 1318port, some new drivers and some important bugfixes: 1319 1320 * NuttX was ported to the Luminary/TI LM3S6965 Ethernet Evaluation 1321 Kit. At present, that port includes an OS test configuration 1322 and a NuttShell (NSH) configuration with Telnet support. 1323 1324 MMC/SD and Networking support are provided but not thoroughly 1325 verified in this release: Current development efforts are focused 1326 on porting the NuttX window system (NX) to work with the 1327 Evaluation Kits OLED display. 1328 1329 * A NuttX Ethernet driver for the Microchip ENC28J60 SPI Ethernet 1330 chip is available in the source tree (but has not yet been fully 1331 verified because I haven't properly connected it to hardware 1332 yet). 1333 1334 * The Olimex STR-P711 NuttX port was extended to support the 1335 ENC28J60 and some new networking configurations were added. 1336 The ENC28J60 has not been tested on the STR-P711, however, 1337 because of hardware issues (I don't think the USB powered board 1338 provides enough power for the ENC28J60 and I don't have the 1339 right wall wart yet). 1340 1341 Along the way, external interrupt support (XTI) was added to 1342 the STMicro STR-P711 port and some important bugs were fixed 1343 in the STR-P711 SPI driver. 1344 1345 * Added (optional) floating point support for printf(). 1346 (Contributed by Yolande Cates.) 1347 1348 * Corrected an important UDP reference counting error. It was 1349 not a serious error, but it trigger an assertion was IS a serious 1350 error. 1351 1352NuttX-5.6 1353--------- 1354 1355This is the 53rd release of NuttX. This release includes one several 1356new drivers for existing NuttX ports: 1357 1358 * This port adds support for the RiT displays P14201 4-bpp, 1359 greyscale OLED. 4-bpp greyscale support was integrated into 1360 the NX graphics sub-system and verified using the TI/Luminary 1361 LP3S6965 Ethernet Evaluation Kit. 1362 1363 * The M25Px driver was extended for the M24P1 FLASH part (see NOTE). 1364 1365 * An I2C driver and (basic) SPI driver were added for the NXP 1366 LPC313x port. The I2C interface definition was extended to 1367 efficiently handle multiple I2C transfers. 1368 (Contributed by David Hewson.) 1369 1370As well as a few, important USB-related bugfixes (See the ChangeLog 1371for details). 1372 1373This release also includes the beginnings of a port for the NXP 1374LPC1768 MCU. However, it is too early for that port to be useful 1375(stay tuned for a future announce of the availability of the LPC1768 1376port). 1377 1378NuttX-5.7 1379--------- 1380 1381This is the 54th release of NuttX. This release adds basic support 1382for one new ARM Cortex-M3 architecture: 1383 1384 * Added support for NXP LPC1768 MCU as provided on the Nucleus 1385 2G board from 2G Engineering (http://www.2g-eng.com). 1386 * Some initial files for the LPC17xx family were released in NuttX 1387 5.6, but the first functional release for the NXP LPC1768/Nucleus2G 1388 occurred with NuttX 5.7. 1389 * That initial basic release included timer interrupts and a 1390 serial console and was verified using the NuttX OS test. 1391 * That release includes a verified NuttShell (NSH) configuration 1392 (see the https://nuttx.apache.org/docs/latest/components/nsh/index.html). 1393 * Also included are unverified SPI and USB device drivers. 1394 1395Further efforts include: 1396 (1) development of a DMA support library 1397 (2) SPI-based MMC/SD support 1398 (3) verification of the USB driver 1399 1400Watch for announcement of the completed LPC1768 port expected in 1401NuttX-5.8. 1402 1403NuttX-5.8 1404--------- 1405 1406This is the 55th release of NuttX. This includes several important 1407bugfixes: 1408 1409 * Corrects some interrupt vectoring for the TI/Stellarix LM3S 1410 port 1411 * Correct initialization logic for NXP LPC17xxx NuttX ports: 1412 Power was not being provided to the GPIO module! 1413 * Corrected (but did not verify) implementation of the optional 1414 interrupt stack feature (all Cortex M3 architectures). 1415 * Correct a HardFault in the LPC17xx SSP driver. 1416 1417Additional minor fixes are also included as detailed in the ChangeLog. 1418 1419Several new features have been fully developed and included in this 1420release, but full verification of most of these new features has 1421been blocked for a variety of issues: 1422 1423 * Added microSD support for the NuttShell (NSH) configuration in 1424 the Nucleus2G LPC1768 port. For reasons that have not yet been 1425 determined, I have not successfully accessed the microSD card 1426 as of this writing. 1427 * Two USB configurations were also added for the Nucleus2G board: 1428 One to support the USB serial device and one for the USB mass 1429 storage device. Some testing of the USB driver was performed, 1430 but full verification is stalled for an OTG style USB cable. 1431 * LEDs now work correctly on the Nucleus2G LPC1768 board. 1432 * The NuttX/uIP networking subsystem now supports IGMPv2 client. 1433 IGMP (Internet Group Multicast Protocol) network "appliances" 1434 to join into multicast groups. Outbound traffic to enter and 1435 leave multicast groups has been verified, but full verification 1436 will require a switch capable of multicast. Issues associated 1437 with the receipt of multicast packets are likely. 1438 1439NuttX-5.9 1440--------- 1441 1442This is the 56th release of NuttX. This release is difficult to 1443categorize; NuttX-5.9 was really released because there were too 1444many changes accumulating in CVS -- a few important, some unfinished 1445implementations, and a couple of important bugfixes. 1446 1447 * By far biggest change in this release is the complete implementation 1448 of on-demand paging support. This feature will allow you to 1449 execute large programs on a mass storage device (such as SPI 1450 FLASH) in a small RAM. All of the core on-demand paging logic 1451 was completed 1452 (see https://nuttx.apache.org/docs/latest/components/paging.html) 1453 and support was implemented for the ARM-9 family. A test 1454 configuration is in place for the NXP LPC3131. It has been 1455 verified that this new logic does not interfere with normal 1456 fixed-page ARM9 operation, but otherwise this new on-demand 1457 paging feature is untested. 1458 * Add support for the CodeSourcery toolchain to the Olimex-lpc2378 1459 port and for the Neuros OSD port. 1460 * The Neuros OSD port has been updated to work with the production 1461 v1.0 OSD (previously it only worked with the development board). 1462 * And some miscellaneous feature enhancements as detailed in the 1463 ChangeLog. 1464 1465This includes several important bugfixes: 1466 1467 * NXP LPC17xx - Fixed a critical bug in the GPIO configuration 1468 logic: When attempting to set no pull-up or pull-down (floating), 1469 it would, instead, select pull-down. 1470 1471 * TI/Luminary LM3Sxxxx - Fixed: 1472 (1) A logic error in an address table lookup. 1473 (2) GPIO port encoding the limited support to only 8 GPIO ports. 1474 1475 * Corrected the lease time in the DHCPC implementation: It was 1476 not in host byte order. 1477 1478 * And several other less important bugs as documented in the 1479 ChangeLog: Warnings, cornercase compilation problems, etc. 1480 1481NuttX-5.10 1482---------- 1483 1484This is the 57th release of NuttX. This release includes a combination 1485of some new features as well as several bugfixes. New features 1486include: 1487 1488 * TI/Luminary Stellaris LM3S9B96: 1489 Header file changes contributed by Tiago Maluta. 1490 * TI/Luminary Stellaris LM3S8962: 1491 Header file changes and support for the Stellaris LM3S8962 1492 Ethernet+CAN Evaluation Board contributed by Larry Arnold. 1493 * On-Demand Paging Support: 1494 The basic logic for the On-Demand Paging feature is complete, 1495 implemented for the NXP LPC3131, and partially tested. See 1496 https://nuttx.apache.org/docs/latest/components/paging.html. 1497 Some additional test infrastructure will be needed in order to complete 1498 the verification. See configs/ea3131/README.txt for details. 1499 * Two Pass Build Support: 1500 The make system now supports a two pass build where a relocatable, 1501 partially linked object is created on the first pass and that 1502 object is linked with the NuttX libraries to produce the final 1503 executable on the second pass. This two pass build is currently 1504 only used to support the On-Demand paging feature: The first 1505 pass link forces critical logic into the locked text region; 1506 the second pass builds the NuttX executable more-or-less as 1507 normal. 1508 * CONFIG_APP_DIR: 1509 Generalized the way in which applications are built and linked 1510 with NuttX. The new configuration CONFIG_APP_DIR replaces 1511 CONFIG_EXAMPLE. CONFIG_EXAMPLE used to identify the sub-directory 1512 within the NuttX examples/ directory that held the example 1513 application to be built. That made it awkward to configure to 1514 build an application that resides outside of the NuttX examples/ 1515 directory. CONFIG_APP_DIR is more general; it can be used to 1516 refer to any directory containing the application to be built. 1517 1518 For people who have their own configurations and/or Makefiles, 1519 you will need to make a couple of changes: 1520 1521 - Replace all occurrences of CONFIG_EXAMPLE=foobar with 1522 CONFIG_APP_DIR=examples/foobar in all of the configuration 1523 files. 1524 - Replace any occurrences of examples/$(CONFIG_EXAMPLE) with 1525 $(CONFIG_APP_DIR) 1526 - Replace any occurrences of lib$(CONFIG_EXAMPLE)$(LIBEXT) 1527 with libapp$(LIBEXT) in your Makefiles. 1528 - Check any other occurrences of CONFIG_EXAMPLE. 1529 1530 * Several bugfixes are included as well as code changes to eliminate 1531 some warnings. See the ChangeLog for details. 1532 1533NuttX-5.11 1534---------- 1535 1536This is the 58th release of NuttX. This is a bugfix release. 1537 1538 * One very important bug fixes a race condition that can occur 1539 using semaphores that can be awakened by signals. Under this 1540 particular race condition, a task could hang waiting for a 1541 semaphore. 1542 * Corrections to lm3s8962 port contributed by Larry Arnold. That 1543 port is purported to work correctly with these changes in place. 1544 1545Plus less critical bugfixes as detailed in the ChangeLog. New features 1546include: 1547 1548 * A new configuration to support the mbed.org LPC1768 board. 1549 (Contributed by Dave Marples.) 1550 * A driver for the Atmel AT45DB161D 4Mbit SPI FLASH part 1551 1552NuttX-5.12 1553---------- 1554 1555This is the 59th release of NuttX. This is a critical bugfix release. 1556 1557 * Fixed an important error in the signal trampoline logic. 1558 Essentially, interrupts are re-enabled while the signal handler 1559 executes, but the logic to re-disable the interrupts before 1560 returning from the signal handler trampoline was missing. Under 1561 certain circumstances, this can cause stack corruption. This 1562 was discovered by David Hewson on an ARM9 platform, but since 1563 the code has been leveraged, the bug has been propagated from 1564 ARM to Cortex-M3, AVR32, M16C, SH1, ZNEO, eZ80, Z8, and Z80 -- 1565 almost every architecture. The correction has been incorporated 1566 for all architectures but only verified on a few. 1567 1568Other notable changes in NuttX-5.12: 1569 1570 * A complete port for the AVR32 (AT32UC3B0256) is incorporated 1571 in the source tree. Testing of this port is underway now. This 1572 release was made before verifying this port in order to get the 1573 important bugfix in place. 1574 1575 * Other miscellaneous bugfix and enhancements as noted in the 1576 ChangeLog. 1577 1578NuttX-5.13 1579---------- 1580 1581This is the 60th release of NuttX. Headlines for this release 1582include: 1583 1584 * AVR32, www.mcuzone.com AVR32DEV1 1585 1586 The port for the www.mcuzone.com AVRDEV1 board based on the 1587 Atmel AT32UC3B0256 MCU was (almost) fully integrated. The port 1588 now successfully passes the NuttX OS test (examples/ostest). 1589 A NuttShell (NSH) configuration is in place (see the NSH User 1590 Guide at https://nuttx.apache.org/docs/latest/components/nsh/index.html). 1591 Testing of that NSH configuration, however, has been postponed 1592 (because it got bumped by the Olimex LPC1766-STK port -- see below) 1593 1594 Current Status: I think I have a hardware problem with my serial 1595 port setup. There is a good chance that the NSH port is complete 1596 and functional, but I am not yet able to demonstrate that. At 1597 present, I get nothing coming in the serial RXD line (probably 1598 because the pins are configured wrong or I have the MAX232 1599 connected wrong). 1600 1601 A complete port will include drivers for additional AVR32 UC3 1602 devices -- like SPI and USB --- and will be available in a 1603 later release, time permitting. 1604 1605 * LPC1766, Olimex LPC1766-STK 1606 1607 Support for the Olimex-LPC1766 is newly added to NuttX and is 1608 still undergoing development, test, and integration. Verified 1609 configurations for the NuttX OS test and for the NuttShell (NSH, 1610 see the NSH User Guide at 1611 https://nuttx.apache.org/docs/latest/components/nsh/index.html . 1612 Additional USB configurations are in the release as well, but 1613 they have not yet been verified. Goals for NuttX-5.14 include: 1614 (1) An Ethernet driver, (2) Verified USB support, and (3) SD 1615 card support. 1616 1617 * Additional changes and bugfixes as detailed in the ChangeLog. 1618 1619NuttX-5.14 1620---------- 1621 1622The 61st release of NuttX, NuttX-5.14, was made on November 27, 16232010. This release includes multiple, important bugfixes as well 1624as a new driver for the NXP LPC1766. 1625 1626This release corresponds with SVN release number: r3137 1627 1628Important bugfixes include: 1629 1630 * Cortex-M3 Hard Fault. Fixed a hard fault problem that can occur 1631 if certain types of interrupts are pending at the time another 1632 interrupt returns. This problem has only been observed on the 1633 LPC1766 (returning from a SYSTICK interrupt with a pending 1634 Ethernet interrupt). However, it is assumed that all Cortex-M3 1635 ports could have this as a latent bug. 1636 1637 * TCP/IP Sequence Number Bug. Corrected errors some important 1638 logic in the way that sequence numbers are managed when send() 1639 sends out packets before a previous packet has been acknowledged. 1640 Some of that send() logic was incompatible with logic in the 1641 uIP layer. Errors seen include: (1) The final final packet in 1642 a sequence of packets might be too large! In the THTTPD example, 1643 this might leave some garbage at the bottom of the display. Or 1644 (2) send() might hang with outstanding, unacknowledged data 1645 (and with no re-transmission requests). This was due to 1646 differences in sequence number handling in send() and in 1647 uip_tcpinput.c; uip_tcpinput.c thought (incorrectly) that all 1648 of the bytes were acknowledged; send.c knew that they were not. 1649 1650 * One-Shot POSIX Timer Bug. Fixed an error in set-up of a one-shot 1651 POSIX timer. It was using the repetitive timer value (which 1652 is zero in the one-shot case), always resulting in a 10Ms timer! 1653 Found and fixed by Wilton Tong. 1654 1655Additional support has been included for the Olimex-LPC1766. Support 1656for that board was added to NuttX 5.13. This release extends that 1657support with an Ethernet driver. Verified configurations are now 1658available for the NuttX OS test, for the NuttShell (NSH, see 1659https://nuttx.apache.org/docs/latest/components/nsh/index.html), 1660for the NuttX network test, and for the THTTPD webserver. 1661(Additional USB configurations are in the release as well, but those 1662have not yet been verified. Goals for NuttX-5.15 (and beyond) include: 1663(1) Verified USB support, (2) SD card support, and (3) LCD support. 1664 1665NuttX-5.15 1666---------- 1667 1668The 62nd release of NuttX, NuttX-5.15, was made on December 12, 16692010. This release includes several bugfixes as well as feature 1670enhancements, primarily for the Olimex LPC1766-STK board. 1671 1672Important bugfixes included: 1673 1674 * Additional fixes needed with the TCP sequence number problem 1675 "fixed" in NuttX-5.14. 1676 * In the send() logic, now checks if the destination IP address 1677 is in the ARP table before sending the packet; an ARP request 1678 will go out instead. This improves behavior, for example, on 1679 the first on the first GET request from a browser 1680 * All USB class drivers need to call DEV_CONNECT() when they are 1681 ready to be enumerated. That is, (1) initially when bound to 1682 the USB driver, and (2) after a USB reset. 1683 * The SPI_SETBITS macro was calling the SPI setmode method. 1684 * And several other bug fixes of lower importance (see the 1685 ChangeLog for details). 1686 1687And feature enhancements: 1688 1689 * The LPC176x Ethernet driver was using all of AHB SRAM Bank0 for 1690 Ethernet packet buffers (16K). An option was added to limit 1691 the amount of SRAM used for packet buffering and to re-use any 1692 extra Bank0 memory for heap. 1693 1694 * Enabled networking and SD/MMC card support in the Olimex 1695 LPC1766-STK NuttShell (NSH) configuration. 1696 1697 * The LPC176x USB driver is now fully fully functional. 1698 * Added an optional cmddata() method to the SPI interface. Some 1699 devices require an additional out-of-band bit to specify if the 1700 next word sent to the device is a command or data. The cmddata 1701 method provides selection of command or data. 1702 1703 * A driver for the Nokia 6100 LCD (with either the Phillips PCF8833 1704 LCD controller and for the Epson S1D15G10 LCD controller) and 1705 an NX graphics configuration for the Olimex LPC1766-STK have 1706 been added. However, neither the LCD driver nor the NX 1707 configuration have been verified as of the this release. 1708 1709NuttX-5.16 1710---------- 1711 1712The 63rd release of NuttX, Version 5.16, was made on January 10, 17132010 and is available for download from the SourceForge website. 1714This release includes initial support for USB host in NuttX. The 1715USB host infrastructure is new to NuttX. This initial USB host release 1716is probably only beta quality; it is expected the some bugs remain 1717in the logic and that the functionality requires extension. 1718 1719Below is a summary of the NuttX USB host implementation as extracted 1720from the NuttX Porting Guide: 1721 1722 6.3.9 USB Host-Side Drivers 1723 * include/nuttx/usb/usbhost.h. All structures and APIs needed to 1724 work with USB host-side drivers are provided in this header 1725 file. 1726 * struct usbhost_driver_s. Each USB host controller driver must 1727 implement an instance of struct usbhost_driver_s. This structure 1728 is defined in include/nuttx/usb/usbhost.h. Examples: 1729 arch/arm/src/lpc17xx/lpc17_usbhost.c. 1730 * struct usbhost_class_s. Each USB host class driver must implement 1731 an instance of struct usbhost_class_s. This structure is also 1732 defined in include/nuttx/usb/usbhost.h. Examples: 1733 drivers/usbhost/usbhost_storage.c 1734 * USB Host Class Driver Registry. The NuttX USB host infrastructure 1735 includes a registry. During its initialization, each USB host 1736 class driver must call the interface, usbhost_registerclass() 1737 in order add its interface to the registry. Later, when a USB 1738 device is connected, the USB host controller will look up the 1739 USB host class driver that is needed to support the connected 1740 device in this registry. Examples: drivers/usbhost/usbhost_registry.c, 1741 drivers/usbhost/usbhost_registerclass.c, and 1742 drivers/usbhost/usbhost_findclass.c, 1743 * Detection and Enumeration of Connected Devices. Each USB host 1744 device controller supports two methods that are used to detect 1745 and enumeration newly connected devices (and also detect 1746 disconnected devices): 1747 + int (*wait)(FAR struct usbhost_driver_s *drvr, bool connected); 1748 Wait for a device to be connected or disconnected. 1749 + int (*enumerate)(FAR struct usbhost_driver_s *drvr); 1750 Enumerate the connected device. As part of this enumeration 1751 process, the driver will (1) get the device's configuration 1752 descriptor, (2) extract the class ID info from the configuration 1753 descriptor, (3) call usbhost_findclass() to find the class 1754 that supports this device, (4) call the create() method on 1755 the struct usbhost_registry_s interface to get a class instance, 1756 and finally (5) call the connect() method of the struct 1757 usbhost_class_s interface. After that, the class is in charge 1758 of the sequence of operations. 1759 * Binding USB Host-Side Drivers. USB host-side controller drivers 1760 are not normally directly accessed by user code, but are usually 1761 bound to another, higher level USB host class driver. The class 1762 driver exports the standard NuttX device interface so that the 1763 connected USB device can be accessed just as with other, similar, 1764 on-board devices. For example, the USB host mass storage class 1765 driver (drivers/usbhost/usbhost_storage.c) will register a 1766 standard, NuttX block driver interface (like /dev/sda) that can 1767 be used to mount a file system just as with any other other 1768 block driver instance. In general, the binding sequence is: 1769 1770 1. Each USB host class driver includes an initialization entry 1771 point that is called from the application at initialization 1772 time. This driver calls usbhost_registerclass() during this 1773 initialization in order to makes itself available in the 1774 event that the device that it supports is connected. Examples: 1775 The function usbhost_storageinit() in the file 1776 drivers/usbhost/usbhost_storage.c 1777 2. Each application must include a waiter thread thread that 1778 (1) calls the USB host controller driver's wait() to detect 1779 the connection of a device, and then (2) call the USB host 1780 controller driver's enumerate method to bind the registered 1781 USB host class driver to the USB host controller driver. 1782 Examples: The function nsh_waiter() in the file 1783 configs/nucleus2g/src/up_nsh.c and the function nsh_waiter() 1784 in the file configs/olimex-lpc1766stk/src/up_nsh.c. 1785 3. As part of its operation during the binding operation, the 1786 USB host class driver will register an instances of a standard 1787 NuttX driver under the /dev directory. To repeat the above 1788 example, the USB host mass storage class driver 1789 (drivers/usbhost/usbhost_storage.c) will register a standard, 1790 NuttX block driver interface (like /dev/sda) that can be 1791 used to mount a file system just as with any other other 1792 block driver instance. Examples: See the call to 1793 register_blockdriver() in the function usbhost_initvolume() 1794 in the file drivers/usbhost/usbhost_storage.c. 1795 1796NuttX-5.17 1797---------- 1798 1799The 64th release of NuttX, Version 5.17, was made on January 19, 18002011 and is available for download from the SourceForge website. 1801This release follows close on the heels of the 5.16 release and 1802extends the USB host capabilities first introduced in that version. 1803 1804 * The LPC17xx USB host controller driver was extended to (1) add 1805 support for low-speed devices, (2) handle multiple concurrent 1806 transfers on different endpoints (still only one TD per endpoint), 1807 and (3) handle periodic interrupt endpoint types. 1808 1809 * Add a USB host HID keyboard class driver. Now you can connect 1810 a standard USB keyboard to NuttX and receive keyboard input for 1811 an application. 1812 1813And other changes as detailed in the ChangeLog. 1814 1815NuttX-5.18 1816---------- 1817 1818The 65th release of NuttX, Version 5.18, was made on February 27, 18192011 and is available for download from the SourceForge website. 1820This is first release from the new NuttX SVN repository. This 1821release is made primarily to keep the release tarball in synchronization 1822with SVN. Many smaller changes have been made as identified in the 1823ChangeLog. Headlines include: 1824 1825 * Incorporate several important uIP patches -- including the well 1826 known patch to handle missing SYNACK. 1827 * The Freescale mc8s12ne64 port is code complete but testing has 1828 not yet begun due to toolchain issues. Added support for the 1829 Future Electronics Group NE64 Badge board. 1830 * Added support for a new STM32 board, the ISOTEL NetClamps VSN 1831 V1.2 ready2go sensor network platform. This board is based on 1832 a STM32F103RET6 and includes some interesting power saving/clock 1833 control extensions. 1834 * USB host support expanded to handle vendor specific USB devices. 1835 * Incorporated the LUFA HID parser. 1836 * Various bugfix as detailed in the ChangeLog 1837 1838NuttX-5.19 1839---------- 1840 1841The 66th release of NuttX, Version 5.19, was made on March 12, 2011 1842and is available for download from the SourceForge website. This 1843release includes several new features in various states of integration 1844and maturity: 1845 1846 * 486SX QEMU port. This port supports the Intel 486SX architecture 1847 using the QEMU simulator. Initial functionality is in place a 1848 partially tested. There are still some outstanding issues with 1849 timer interrupts. 1850 * Platform specific application support. A new apps/ directory 1851 appears in this port. This apps/ directory provides a mechanism 1852 for applications using NuttX to have a highly customized 1853 initialization process. It supports a set of end-user applications 1854 than can be executed (1) standalone so you can have a fully 1855 customized application startup, or (2) on top of NSH. Think 1856 of it this way: In a buckled-up embedded application, your 1857 end-user programs will probably have their own dedicated start-up 1858 logic. But, during development, you might want to have you 1859 applications available and executable from the NSH command line. 1860 This apps/ add-on (and NSH hooks) was contributed by Uros to 1861 accomplish just that. 1862 * NSH was also extended to support application specific ROMFS 1863 /etc/init.d/rcS start-up scripts. This feature, as well, as 1864 all of the above-mentioned apps/ directory support was contributed 1865 by Uros Platise 1866 * Additional NSH improvements and bug fixes. See the Changelog 1867 for details. 1868 * This release also provides a new SLIP network driver. This 1869 driver should support point-to-point network communications to 1870 a host using TCP/IP or UDP. This driver is code complete, but 1871 not tested in this release. 1872 * New RAMTRON FRAM driver (contributed by Uros Platise) 1873 * New generic 16550 UART driver. 1874 * Cortex-M3 Power improvements: Waits for Interrupt (WFI) in idle 1875 loop for reduced power consumption (LPC17xx and STM32 only - 1876 contributed by Uros Platise)) 1877 * New waitpid() system interface. 1878 * Additional bugfixes: pipes, stdint.h, STM32 SDIO and SPI drivers 1879 1880NuttX-6.0 1881--------- 1882 1883The 67th release of NuttX, Version 6.0, was made on March 21, 2011 1884and is available for download from the SourceForge website. The 1885version number of this release was bumped from 5.19 to 6.0. A 1886change in the major revision number is used to reflect an incompatibility 1887with previous versions. In this release, the NuttX core OS 1888functionality has been separated from NuttX application-related 1889functionality. These are provided as separate tarballs: 1890 1891 * nuttx-6.0.tar.gz, and 1892 * apps-6.0.tar.gz 1893 1894The purpose of this separation is both to better organize and 1895modularize the NuttX source tree, but also to provide better support 1896for incorporation of end-user applications with NuttX. 1897 1898The incompatibility results from the changes to the board configuration 1899logic needed to supported the separable application. The major 1900changes to the configuration include: 1901 1902 * CONFIG_APPS_DIR - This should not be set. The default is 1903 ../apps. This should only be set if you have a custom, 1904 product-specific application directory in some different location. 1905 1906 * appconfig - Each board configuration now requires a new file 1907 called 'appconfig.' As its name suggests, this file provides 1908 new configuration information needed by the logic in ../apps. 1909 1910In addition to this major reorganization in the directory structure, 1911this release also includes some important extensions to existing 1912features and some important bugfixes. These include: 1913 1914 * The SLIP driver was been well debugged and significantly 1915 re-designed. Now you can have an Ethernet connection to you 1916 board even if you have no Ethernet hardware. How cool is that? 1917 1918 * The QEMU i486 port is now functional. It has also been reported 1919 to work on the Bifferboard (see http://bifferos.bizhat.com/). 1920 1921 * And extensions to the uIP driver interface, and 1922 1923 * Bug fixes to fopen() and STM32 GPIO configuration 1924 1925Please see the ChangeLog for details. 1926 1927NuttX-6.1 1928--------- 1929 1930The 68th release of NuttX, Version 6.1, was made on April 10, 2011 1931and is available for download from the SourceForge website. The 19326.0 release introduced a detach-able application environment to 1933build applications outside of the NuttX source tree. The primary 1934purpose of this release is to correct numerous build problems 1935introduced by that architectural change: 1936 1937 * In many newer environments, NuttX produced strange Makefile 1938 errors but built correctly in older environments. A fix provided 1939 by Rafael Noronha was incorporated and is reported to fix those 1940 build problems. 1941 * The apps/ directory build system would not handle Windows-native 1942 toolchains due to obscure path formatting issues. 1943 * And other problems as detailed in the Changelog. 1944 1945Many additional changes were made in the 6.1 release for another 1946major architectural change: NuttX will now build as a separately 1947linked microkernel. In this build option the RTOS builds as a 1948kernel, applications build separately and interface with kernel via 1949system calls. Applications run in user mode and kernel logic users 1950in kernel-mode. This provides a secure environment for NuttX. This 1951feature is fully coded in NuttX-6.1, but has not been tested due 1952to higher priority tasks that have arisen. 1953 1954Related to this change, support for the Cortex-M3 memory protection 1955unit (MPU) has been integrated with the NuttX kernel build to provide 1956an even higher level of security. 1957 1958NOTE: This kernel build is an option; the default build configuration 1959is still the standard, flat, unsecured RTOS as in previous releases. 1960 1961Additional new features in this release: 1962 1963 * Support for LPC17xx GPIO interrupts (with much support from 1964 Decio Renno). 1965 * Basic timer support for STM32 (Contributed by Uros Platise) 1966 * A binfs file system. This is a tiny pseudo file system that 1967 lets named applications to be viewed and accessed in NSH under 1968 the /bin directory. 1969 * An I2C-based driver for the LIS331DL MEMS motion sensor. 1970 (Contributed by Uros Platise.) 1971 * A configuration for the Embedded Artists LPCXpresso LPC1768 board. 1972 * The user_initialize() interface has been removed. 1973 1974And several bugfix associated with SD drivers, opendir(), signed 19758-bit types (int8_t), and USB serial device. See the ChangeLog for 1976details. 1977 1978NuttX-6.2 1979--------- 1980 1981The 69th release of NuttX, Version 6.2, was made on May 6, 2011 and 1982is available for download from the SourceForge website. The 6.2 1983release includes several new features: 1984 1985 * NXFFS: The obvious new feature is NXFFS, the NuttX wear-leveling 1986 FLASH file system. This new file system is intended to be 1987 small for the MCU usage and has some limitations. No formal 1988 documentation of NXFFS yet exists. See the fs/nxffs/README.txt 1989 file for details (see 1990 http://svn.code.sf.net/p/nuttx/code/trunk/nuttx/fs/nxffs/README.txt?view=log) 1991 * Support for NXP LPCXpresso LPC1768 board on the Embedded 1992 Artists base board. The Code Red toolchain is supported under 1993 either Linux or Windows. Verified configurations include 1994 dhcpd, nsh, nx, ostest, thttpd, and usbstorage. 1995 * Support for the Univision UG-9664HSWAG01 OLED with Solomon 1996 Systech SD1305 LCD controller. 1997 * A new RAM MTD driver with FLASH simulation capability. 1998 * A version.h file is now automatically generated so that C code 1999 can now be version aware. 2000 2001In addition to these new feature, several important bugfixes are 2002included in this release correcting problems with dup2(), LPC17xx 2003GPIO interrupts, LPC17xx UART2/3, the FAT file system, build issues, 2004and strrch(). See the ChangeLog for more details. 2005 2006NuttX-6.3 2007--------- 2008 2009The 70th release of NuttX follows only a nines days after the release 2010of version 6.2. It was released on May 15, 2011. This special 2011back-to-back release was made so that the current released version 2012of NuttX will correspond to the initial release from the RGMP 2013project. 2014 2015This release adds architecture support and build configuration for 2016RGMP. RGMP is a project for running GPOS and RTOS simultaneously 2017on multi-processor platforms. See 2018http://rgmp.sourceforge.net/wiki/index.php/Main_Page for further 2019information about RGMP. 2020 2021This release also includes support for STM32 FLASH, build improvements, 2022and initial, incomplete support for the MicroChip PIC32MX MCU. Bug 2023fixes are included for some build problems, USB host class driver 2024error handling, NX graphics color mapping, and problems with C 2025standard I/O buffer flushing. See the ChangeLog for further details. 2026 2027NuttX-6.4 2028--------- 2029 2030The 71st release of NuttX, Version 6.4, was made on June 5, 2011 2031and is available for download from the SourceForge website. The 20326.4 release includes several new features: 2033 2034 * A new, full-featured FTP client. This client may be used as a library 2035 for automated FTP or via an FTP client shell. The FTP shell 2036 supports the following commands: cd, chmod, get, help, idle, 2037 login, ls, quit, mkdir, noop, put, pwd, rename, rhelp, rm, 2038 rmdir, size, time, and up. A configuration is available for 2039 the NXP LPC17xx to demonstrate this functionality. 2040 * A functional C1101 wireless driver (contributed by Uros Platise) 2041 * A PCI-based E1000 Ethernet driver (contributed by Yu Qiang) 2042 * New C library functions: inet_addr() (contributed by Yu Qiang), 2043 strndup(), asprintf() 2044 * Reduced memory allocation overhead for MCUs with small heaps (<64K). 2045 * fdopen() now works with socket descriptors allowing standard 2046 buffered C functions to be used for network communications. 2047 * The NSH ifconfig command can now be used to set or change the 2048 IP address (contributed by Yu Qiang) 2049 2050This release also includes some completed but untested functionality. 2051 2052 * The MicroChip PIC32MX port is now code complete and ready to 2053 begin testing. Unfortunately, testing will be delayed due to 2054 tool issues. 2055 * Support for the NXP LPC315x MCUs. 2056 2057Additional miscellaneous enhancements and bug fixes to task_delete(), 2058recvfrom(), and other changes as noted in the ChangeLog. 2059 2060NuttX-6.5 2061--------- 2062 2063The 72nd release of NuttX, Version 6.5, was made on June 21, 2011 2064and is available for download from the SourceForge website. The 20656.5 release is all about support for the Atmel 8-bit AVR family. 2066I have been interested in the AVR family for some time but because 2067of the severe SRAM constraints and because of the availability of 2068many tiny schedulers for the AVR, it has not been "on the radar 2069screen." However, I have recently become interested because of 2070interest expressed by members of the forum and because of the 2071availability of newer, larger capacity AVR parts (that I don't have 2072yet). 2073 2074This release corresponds with SVN release number: r3730 2075 2076This release includes support for the following AVR boards. As 2077with any initial support for new architectures, there are some 2078incomplete areas and a few caveats that need to be stated. Here 2079they are, ordered from the least to the most complete: 2080 2081 * SoC Robotics Amber Web Server (ATMega128). 2082 2083 This port of NuttX to the Amber Web Server from SoC Robotics 2084 (http://www.soc-robotics.com/index.htm). Is only partially in 2085 place. The Amber Web Server is based on an Atmel ATMega128 2086 (128K FLASH but only 4K of SRAM). 2087 2088 STATUS: Work on this port has stalled due to toolchain issues. It 2089 is complete, but untested. 2090 2091 * Micropendous 3 AT9USB647 2092 2093 This port of NuttX to the Opendous Micropendous 3 board. The 2094 Micropendous3 may be populated with an AT90USB646, 647, 1286, 2095 or 1287. See http://code.google.com/p/opendous/. I have only 2096 the AT90USB647 version for testing. This version has very 2097 limited memory resources: 64K of FLASH and 4K of SRAM. 2098 2099 STATUS: The basic port was released in NuttX-6.5. This basic 2100 port consists only of a "Hello, World!!" example that demonstrates 2101 initialization of the OS, creation of a simple task, and serial 2102 console output. The tiny SRAM limits what you can do with the 2103 AT90USB647 (see issues below). 2104 2105 * PJRC Teensy++ 2.0 AT9USB1286 2106 2107 This is a port of NuttX to the PJRC Teensy++ 2.0 board. This 2108 board was developed by PJRC (http://pjrc.com/teensy/). The 2109 Teensy++ 2.0 is based on an Atmel AT90USB1286 MCU with 128K 2110 of FLASH and 8K of SRAM; a little more room to move than the 2111 AT90USB647. 2112 2113 STATUS: The basic port was released in NuttX-6.5. This basic 2114 port consists of a "Hello, World!!" example and also slightly 2115 simplified NuttShell (NSH) configuration (see the NSH User Guide 2116 at https://nuttx.apache.org/docs/latest/components/nsh/index.html). 2117 2118 An SPI driver and a USB device driver exist for the AT90USB as 2119 well as a USB mass storage configuration. However, this 2120 configuration is not fully debugged as of the NuttX-6.5 release. 2121 2122AVR-specific issues. The basic AVR port is solid and biggest issue 2123for using AVR is its tiny SRAM memory and its Harvard architecture. 2124Because of the Harvard architecture, constant data that resides to 2125flash is inaccessible using "normal" memory reads and writes (only 2126SRAM data can be accessed "normally"). Special AVR instructions 2127are available for accessing data in FLASH, but these have not been 2128integrated into the normal, general purpose OS. 2129 2130Most NuttX test applications are console-oriented with lots of 2131strings used for printf and debug output. These strings are all 2132stored in SRAM now due to these data accessing issues and even the 2133smallest console-oriented applications can quickly fill a 4-8K 2134memory. So, in order for the AVR port to be useful, one of two 2135things would need to be done: 2136 21371. Don't use console applications that required lots of strings. 2138 The basic AVR port is solid and your typical deeply embedded 2139 application should work fine. 2140 21412. Create a special version of printf that knows how to access 2142 strings that reside in FLASH (or EEPROM). 2143 2144NuttX-6.6 2145--------- 2146 2147The 73rd release of NuttX, Version 6.6, was made on July 11, 2011 2148and is available for download from the SourceForge website. The 21496.6 release adds several smaller features but is mostly a bugfix 2150release. 2151 2152Bugfixes include 2153 2154 * Fixed several NX Graphics bugs: Rendering fonts at >8 bits-per-pixel, 2155 graphics move logic, and display artifacts that appear when a 2156 window is closed. 2157 * Corrections to the USB host mass storage class driver 2158 * STM32 bugfixes: serial driver, GPIO interrupt handling 2159 * LPC17xx: Changes for a success compilation with no console. 2160 * Corrections to the Teensy AT90USB SD driver 2161 * Changes for a clean compilation under the ZDS-II toolchain. 2162 2163Minor features: 2164 2165 * Add logic to extract printf strings from FLASH (but there are 2166 still printf issues for that target) 2167 * Added a configuration for the Sure Electronics PIC32MX board. 2168 However, higher priority tasks have stopped work on that 2169 configuration. 2170 * Added several new configurations for the STMicro STM3210E-EVAL 2171 board. 2172 * Added support for the STM3210E-EVAL board: (1) LCD in either 2173 landscape or portrait mode, and (2) interrupting buttons. 2174 * Added a configuration option to use different serial ports for 2175 debug and for the NSH serial console (there are some issues 2176 with CR-LF expansion and character echo if NSH is not run on 2177 the console). 2178 * Standardized the button press and button interrupt interfaces 2179 so that they are common across all boards. 2180 * Added a new graphics example that focuses on placing text on 2181 the background while pop-up windows occur. Text should continue 2182 to update normally with or without the popup windows present. 2183 * Added ARM stack checking logic. 2184 2185See the ChangeLog for a detailed description of these changes. 2186 2187NuttX-6.7 2188--------- 2189 2190The 74th release of NuttX, Version 6.7, was made on August 2, 2011 2191and is available for download from the SourceForge website. Note 2192that release consists of two tarballs: nuttx-6.7.tar.gz and 2193apps-6.7.tar.gz. Both may be needed (see the top-level nuttx/README.txt 2194file for build information). Changes in this release are summarized 2195below: 2196 2197 * New OS APIs: Add the standard sem_timedwait() interface. 2198 * FAT File System: Adds (optional) support for VFAT long file 2199 names. 2200 * USB: Now the mass storage device can be connected when needed 2201 and disconnected when not needed (or re-connected as a different 2202 kind of device). 2203 * Touchscreen Support: Defined a new NuttX touchscreen interface. 2204 Added a driver for the TI TSC2007 touchscreen controller chip. 2205 * NX Fonts: Add support for multiple fonts; developed a tool to 2206 convert open source fonts into NuttX format; Converted and 2207 installed nine new, high quality fontsets. 2208 * NX Graphics: Add new NX APIs to support drawing of wide lines 2209 in any orientation. Added new low level routines to set 2210 individual pixel more efficiently. 2211 * Build system: Added a export target that will bundle up all 2212 of the NuttX libraries, header files, and the startup object 2213 into an exportable tarball. 2214 * LPC17xx: A CAN driver was contributed by Li Zhuoyi (Lzyy). 2215 * STM32: New NX-related configurations to exercise text and 2216 graphic image displays. 2217 * C Library: Added a fixed precision atan2() math function. 2218 * Bugfixes: Serial RX overrun error, FAT upper/lower NT 8.3 name 2219 handling fixed. FAT directory allocation and initialization 2220 bug. STM32 SDIO DMA race condition bug. eZ80 UART1 serial 2221 driver errors (Paul Osmialowski) 2222 2223NuttX-6.8 2224--------- 2225 2226The 75th release of NuttX, Version 6.8, was made on August 19, 2011 2227and is available for download from the SourceForge website. Note 2228that release consists of two tarballs: nuttx-6.8.tar.gz and 2229apps-6.8.tar.gz. Both may be needed (see the top-level nuttx/README.txt 2230file for build information). Changes in this release are summarized 2231below: 2232 2233 * NuttX has been ported to run on the Freescale Cortex-M4 "Kinetis" 2234 boards. Two board ports are available for (1) the Kinetis 2235 KwikStik-K40 and (2) the Kinetis TWR-K60N512 tower. 2236 * Support for RGMP 0.3. This version of RGMP now runs on the 2237 OMAP4430 (arm) pandaboard 2238 * LPC17xx CAN driver extended to support both CAN1 and CAN2 2239 (submitted by Li Zhuoy (Lzzy)) 2240 * Fixed several critical bugs related to signal handling 2241 initialization and for signals the wake up tasks that are waiting 2242 to send or receive message queues.Both are important. (submitted 2243 by hkwilton). 2244 * drivers/can.c: Fixed a semaphore overflow problem in the CAN 2245 driver (reported by Li Zhouy (Lzzy)). 2246 * Added a new ADC driver infrastructure and TI ADS1255 driver 2247 both developed and submitted by Li Zhouy (Lzzy)). 2248 2249See the Changelog for additional changes included in this release. 2250 2251NuttX-6.9 2252--------- 2253 2254The 76th release of NuttX, Version 6.9, was made on September 11, 2011 2255and is available for download from the SourceForge website. Note 2256that release consists of two tarballs: nuttx-6.9.tar.gz and 2257apps-6.9.tar.gz. Both may be needed (see the top-level nuttx/README.txt 2258file for build information). 2259 2260This release includes a few new features and several important bug fixes. 2261The new features (some still incomplete) include: 2262 2263 * Analog Support/ NXP LPC17xx: New DAC sub-system including ADC and DAC 2264 drivers for the LPC17xx. Extensions to the ADS1255 driver. 2265 (Contributed by Li Zhuoyi (Lzyy)) 2266 2267 * Power Management: Added a new NuttX power management sub-system for 2268 controlling and coordinating reduced power states. At present, only 2269 verified in a simulation environment. 2270 2271 * I2C Test Tool: A new application was added that can be used to 2272 verify and debug I2C interfaces from the NuttShell (NSH) command 2273 line. 2274 2275 * NuttShell (NSH): In addition to the I2C test tool, a date command 2276 is now supported (if CONFIG_RTC is defined) that can be used to 2277 read and set the RTC. 2278 2279 * NXP LPC17xx: I2C and DAC driver for the NXP LPC17xx family submitted by Li Zhuoyi 2280 (Lzyy) 2281 2282 * Kinetis Cortex-M4: Added a SDHC driver for the Kinetis parts. 2283 Complete debug of the Kinetis SDHC driver was not completed, however, 2284 do to some higher priority tasks that forced me to stop work. 2285 2286 * Other new drivers: Driver for I2C-based at24cxx EEPROM submitted by 2287 Li Zhuoyi (Lzyy); Driver for the LM-75 temperature sensor. Support 2288 for the LM-75 temperature sensor integrated into the SM3210E-EVAL 2289 development board. 2290 2291 * NuttX Graphics (NX): Added new NX interfaces for drawing circles, 2292 both circle outlines and filled circles. 2293 2294 * FLASH: Added a function that accepts the path to a block driver and 2295 then erases the underlying FLASH memory 2296 2297 * Build System: The Make export logic now also tries to track down all 2298 architecture-specific header files and include these in the NuttX 2299 export bundle as well. Various changes and modifications so that 2300 NuttX wil build on FreeBSD using the ASH shell (submitted by Kurt Lidl). 2301 2302Bugfixes, order roughly on decreasing criticality include: 2303 2304 * STM32 I2C Driver: Add resets, timeout, and other fixes to work 2305 reliably with the I2C tool. Corrected a major error introduced in 2306 NuttX 6.8. 2307 2308 * BCH Driver. Several important bugs (noted by Li Zhuoyi (Lzyy)) 2309 were fixed. 2310 2311 * C Library: Fixed errors in gmtime() and gmtime_r() that could lead to 2312 errors in date calculations. 2313 2314 * Timing: Correct an error in the tv_nsec calculation that happens 2315 only config CONFIG_RTC is enabled 2316 2317 * Build System: Use of -print-libgcc-file-name to get path to 2318 libgcc.a might select the wrong libgcc.a if a multilib toolchain 2319 is used 2320 2321NuttX-6.10 2322---------- 2323 2324The 77th release of NuttX, Version 6.10, was made on October 6, 2011 2325and is available for download from the SourceForge website. Note 2326that release consists of two tarballs: nuttx-6.10.tar.gz and 2327apps-6.10.tar.gz. Both may be needed (see the top-level nuttx/README.txt 2328file for build information). 2329 2330This release corresponds with SVN release number: r4028 2331 2332This release includes a few new features and several important bug fixes. 2333The new features (some still incomplete) include: 2334 2335 * CDC ACM serial class device-side driver 2336 2337 * RTC: Now supports hi-res and lo-res hardware RTC. The lo-res RTC 2338 runs at 1Hz. 2339 2340 * STM32 I2C driver. Now supports faster, polled mode of operation. 2341 Added an I2C trace capability. 2342 2343 * ADS7843E touchscreen driver. As used on the SAM3U-EK development 2344 board. 2345 2346 * AT91SAM3U SPI driver. To support the ADS7843E toucscreen 2347 2348 * X11 Support on simulation target. Build errors in the X11 windows 2349 for the simulated target have been correct. Added support for a 2350 simulated touchscreen on the X11 window (based on mouse inputs). 2351 2352 * System Timer. Added support for a 64-bit system timer. 2353 2354 * TIFF Support. Added a TIFF library (currently used for storing 2355 LCD screen shots). 2356 2357 * LCD Support. Added a test to verify that we read and write correct 2358 to LCD GRAM memory. 2359 2360 * I2C tool. Extended to support to include a verify command and 2361 repetitions and auto-address increment for most commands. 2362 2363 * USB terminal example. Line oriented serial bridge connects a host 2364 USB serial terminal to a host UART serial terminal. 2365 2366 * Build System. apps/ Makefile will now include external directories 2367 in the application build. 2368 2369Bugfixes, order roughly on decreasing criticality include: 2370 2371 * Message Queues. Correct errors in mq_timedsend() and 2372 mq_timedreceive(). 2373 2374 * FAT. Writes that cross sector boundaries, stray write into the FAT, 2375 and a FAT long file name issue 2376 2377 * NXFFS. Added a missed error check. Files cannot be opened for 2378 writing if they are already opened for reading. 2379 2380 * Library: fopen() for append modse was not appending. 2381 2382 * STM32 I2C driver. Correct another conflict between concurrent FSMC 2383 and I2C1 accesses. Fixed some bad error detection logic. 2384 2385 * STM32 SDHC driver. Interrupts were being left disabled. 2386 2387NuttX-6.11 2388---------- 2389 2390The 78th release of NuttX, Version 6.11, was made on November 12, 2011 2391and is available for download from the SourceForge website. Note 2392that release consists of two tarballs: nuttx-6.11.tar.gz and 2393apps-6.11.tar.gz. Both may be needed (see the top-level nuttx/README.txt 2394file for build information). 2395 2396This release corresponds with SVN release number: r4090 2397 2398This release is a maintenance release that includes a few new features 2399and some important bugfixes. New features include: 2400 2401 * NX Graphics: New interfaces to read from graphics memory 2402 * Drivers: AT24 FLASH driver will now supports clustering of blocks 2403 to achieve a larger, more usable block size for NXFFS. 2404 * STM32: LCD color corrections 2405 * PIC32: Board configuration for the Microchip PIC32 Ethernet Starter kit 2406 (not yet verified), new GPIO support library, button and LED support 2407 for the Sure Electronics PIC32MX board. A lot of progress has been 2408 made on the PIC32 NuttX port, but it is still not ready for prime time. 2409 * NXP LPC3152: Board configuration for the Embedded Artists EA3152. 2410 2411Bugfixes, order roughly on decreasing criticality include: 2412 2413 * NXFFS: Corrected critical bugs in initialization, some full FLASH handling, 2414 and errors in certain cases where the FLASH is repacked. 2415 * ARM EABI: Fix stack alignment required for passing floating point values. 2416 * Build system: Fix build issues when g++ is used as the compiler. 2417 * NX Graphics: Bitmap error handling, correct RGB color conversion macros, 2418 Error when the background window is released. 2419 * STM32: RTC build fixes, LCD color corrections 2420 * Simulation target: build fixes 2421 * C Library: fclose() return value. 2422 2423See the change log for more detailed information. 2424 2425NuttX-6.12 2426---------- 2427 2428The 79th release of NuttX, Version 6.12, was made on December 6, 2011 2429and is available for download from the SourceForge website. Note 2430that release consists of two tarballs: nuttx-6.12.tar.gz and 2431apps-6.12.tar.gz. Both may be needed (see the top-level nuttx/README.txt 2432file for build information). 2433 2434This release corresponds with SVN release number: r4141 2435 2436New features in this release include: 2437 2438 * STM32. Basic support added for the STM32 F4 family. Board support 2439 verified for the STMicro STM3250G-EVAL board. 2440 * FAT. Enhanced partition handling. 2441 * SDIO-Based SD Card support. Add support for large (>4Gb) devices 2442 * Graphics. Added four new small sans serif fonts. 2443 * Drivers. Fix a banding problem with the R61580 LCD. 2444 2445Bugfixes, order roughly on decreasing criticality include: 2446 2447 * FAT. Fix errors in how the first entries in the root directory are 2448 added. Fix errors in FAT date/time handling. 2449 * Signals. Fix bug in certain sig_timedwait() error handling. 2450 * Drivers. Fix cloned errors in poll() handling in several drivers. 2451 * Message Queues. errno was not being set correctly by mq_notify(). 2452 * C Library. wchar_t is a built-in type for C++ 2453 2454NuttX-6.13 2455---------- 2456 2457The 80th release of NuttX, Version 6.13, was made on December 26, 2011 2458and is available for download from the SourceForge website. Note 2459that release consists of two tarballs: nuttx-6.13.tar.gz and 2460apps-6.13.tar.gz. Both may be needed (see the top-level nuttx/README.txt 2461file for build information). 2462 2463This release corresponds with SVN release number: r4231 2464 2465New features in this release include: 2466 2467 * Drivers. New standard interface for PWM drivers and common 2468 "upper half" PWM driver. Updated the MP25x driver to support 2469 the Macronix MX25 chips (submitted by Mohammad Elwakeel). 2470 * STM32 F1/F4. Added an Ethernet driver, ADC drivers, DAC driver, 2471 PWM driver, CAN driver, F4 RTC driver, F4 DMA support, 2472 logic for saving/restoring F4 FPU registers in context switches. 2473 * STM32 Boards. Added STM3240G-EVAL DHPCD and nettest configuration. 2474 Support for a new STM32 board, the HY-Mini STM32v board, was 2475 contributed by Laurent Latil 2476 * PIC32. The port to the Microchip PIC32MX is finally functional and 2477 reliable. The NuttX PIC32 port has verified configurations for 2478 the OS test and the NuttShell (NSH) both exist. 2479 * Tests: New re-usable tests (in apps/examples) for PWM, ADC, and 2480 CAN loopback. Several existing tests can now be built as NSH built-in 2481 applications (dhcpd, nettest, and all of the new tests). 2482 2483Bugfixes, order roughly on decreasing criticality include: 2484 2485 * STM32: Correct handling of data overrun conditions. Existing logic 2486 would hang with infinite interrupts when a data overrun occurred. 2487 * DHCPD. Fix several problems using host order address where network 2488 addresses expected (and vice versa). 2489 2490And several others. See the ChangeLog for more details. 2491 2492NuttX-6.14 2493---------- 2494 2495The 81st release of NuttX, Version 6.14, was made on January 15, 2012, 2496and is available for download from the SourceForge website. Note 2497that release consists of two tarballs: nuttx-6.14.tar.gz and 2498apps-6.14.tar.gz. Both may be needed (see the top-level nuttx/README.txt 2499file for build information). 2500 2501This release corresponds with SVN release number: r4301 2502 2503New features in this release include: 2504 2505 * Drivers. The upper-half PWM driver will now support a pulse count (as 2506 would be needed to control a stepper motor). 2507 2508 * STM32. The CAN driver has been verified in loopback mode. ADC driver 2509 support for the STM32 F4. Add support for UART4-5 and USART6 2510 (Contributed by Mike Smith). The PWM driver now supports a pulse 2511 count for TIM1 and TIM8. Timer driver now supports the F4's 32-bit 2512 timers (Contributed by Mikhail Bychek) 2513 2514 * STM32F4Discovery. Support for the STM32F4-Discovery board contributed 2515 by Mike Smith. 2516 2517 * STM3240G-EVAL. Add support for user control of LEDs. 2518 2519 * LPC17xx. Add support for loopback mode to CAN driver. CAN TX done 2520 perations are now interrupt driver. Now supports configurable CAN bit 2521 rate. 2522 2523 * LPC1766-STK. Add support for on-board buttons. Add support for user 2524 control of LEDs. 2525 2526 * LM3S. Add support for the LM3S6432S2E on the TI RDK-S2E (Contributed 2527 by Mike Smith) 2528 2529 * PIC32MX. USB device-side driver (needs further testing). A partial 2530 Ethernet driver is also in place. 2531 2532 * Library. Support added for fixed floating point fieldwidths in output 2533 formatting (Contributed by Mikhail Bychek) 2534 2535 * Build. New targets apps_clean and apps_distclean to simplify working 2536 with application directories. 2537 2538Bugfixes include: 2539 2540 * Drivers. Fixed a buffer-full test in the upper-half CAN driver. 2541 2542 * STM32. GPIO initialize logic (submitted by Mike Smith). Fix the 2543 debug logic that dumps the GPIO configuration. 2544 2545 * LPC17xxx. Correct an integer overflow in GPIO interrupt setup 2546 (prevented pins > 15 from being used as interrupt sources). Correct 2547 a value used in GPIO interrupt number range test. 2548 2549 * FAT. Now returns the correct error value when it is unable to 2550 recognize the file system. 2551 2552 * Build. macOS build fixes (submitted by Mike Smith) 2553 2554And several others. See the ChangeLog for more details. 2555 2556NuttX-6.15 2557---------- 2558 2559The 82nd release of NuttX, Version 6.15, was made on February 12, 2012, 2560and is available for download from the SourceForge website. Note 2561that release consists of two tarballs: nuttx-6.15.tar.gz and 2562apps-6.15.tar.gz. Both may be needed (see the top-level nuttx/README.txt 2563file for build information). 2564 2565This release corresponds with SVN release number: r4387 2566 2567New features and extended functionality: 2568 2569 * General Drivers: Add support for (29-bit) extended CAN IDs. Add an 2570 infrastructure to support battery drivers. Add a driver for MAX17040x 2571 battery "fuel gauge". Add support for Composite USB drivers (in 2572 particular for a CDC/ACM with MSC USB composite driver). 2573 2574 Added a new RAM logging driver. This will allow debug output into 2575 a RAM buffer associated with a character driver at /dev/ramlog. 2576 Added the new command 'dmesg' to NSH that can be used to dump the 2577 current contents of the log. This is useful for systems that do not 2578 have the usual serial console (for example, if you only have a 2579 Telnet console with NSH). 2580 2581 * Networking: Add a lower level, primitive socket interface. Telnet 2582 driver: 2583 2584 A New Telnet daemon was created. It wraps a Telnet session within a 2585 character driver that can serve as a "controlling terminal." The 2586 Telnet session will then be inherited by tasks created from the 2587 Telnet session and the stdin/stdout from the created task will 2588 still go through the same Telnet connection. 2589 2590 * STM32 Drivers. PWM driver pulse count was limited to 128; now is 2591 (essentially) unlimited. Add support for (29-bit) extended CAN IDs. 2592 Add support for I2C3. The SDIO driver is (mostly) verified on the 2593 STM32 F4 platforms. 2594 2595 * LPC17xx Drivers. Extended the CAN driver so that the TSEG1 and TSEG2 2596 bit times can be set via the NuttX configuration. Add support for 2597 (29-bit) extended CAN IDs. 2598 2599 * PIC32 Drivers. The PIC32 Ethernet driver is code complete (but still 2600 untested). 2601 2602 * FTPD. Add a new FTP server daemon. This is based loosely on 2603 the hwport_ftpd library provided by Jaehyuk Cho. 2604 2605 * Library: Add support for on_exit(). Implemented tcsetattr() and 2606 tcgetattr(). Moved the old, too-smart fgets() to a new application 2607 library function called readline(). Dumbed down the original fgets(). 2608 Add strcasestr(), avsprintf(), inet_ntop(), and inet_pton(). 2609 Add support to enable or disable debug output. 2610 2611 * Build system: Support for building a 32-bit simulation executable on 2612 a 64-bit Linux machine. Correct a dependency issue in the arch/*/src/board 2613 directory. 2614 2615Bugfixes: 2616 2617 * System: Correct PTHREAD_MUTEX_INITIALIZER 2618 2619 * FAT: Fix an error in the FAT statfs() reported by David Sidrane. 2620 2621 * STM32: Fix clock frequencies for APB2 timers. Correct AFIO register 2622 offset. 2623 2624 * PIC32. Correct GPIOs used for LEDs on the Sure PIC32MX board. 2625 2626 * NSH. Wait for a USB connection if a USB serial class is used to 2627 interface with the host. 2628 2629Additional bugfixes, name changes, and other differences as detailed in the 2630ChangeLog. 2631 2632NuttX-6.16 2633---------- 2634 2635The 83rd release of NuttX, Version 6.16, was made on March 10, 2012, 2636and is available for download from the SourceForge website. Note 2637that release consists of two tarballs: nuttx-6.16.tar.gz and 2638apps-6.16.tar.gz. Both may be needed (see the top-level nuttx/README.txt 2639file for build information). 2640 2641This release corresponds with SVN release number: r4475 2642 2643New features and extended functionality: 2644 2645 * ARMv7M Support: Includes new, streamlined Cortex-M exception 2646 handling provided by Mike Smith. Context switching support for the 2647 Cortex-M4 FPU registers is now provided (in both "lazy" and "non-lazy" 2648 modes) 2649 2650 * General Drivers: Added a generic "upper half" Quadrature Encoder driver. 2651 The USB CDC/ACM serial driver can now be dynamically connected or 2652 disconnected from the host (programmatically or using NSH commands). 2653 2654 * STM32 Drivers: Added a "lower half" Quadrature Encoder driver. 2655 Verified the STM32 F4 DMA driver; Added F4 DMA support to the existing 2656 STM32 SDIO driver. 2657 2658 * STM32 Board Support. Added support for the STM32 F2 family and 2659 for the STM3220G-EVAL board (contributed by Gary Teravskis). 2660 Support is now included for C++ static constructors (verified using 2661 the Atollic toolchain). Added support for the SRAM available on the 2662 STM3240G-EVAL board. 2663 2664 * PIC32 Drivers. PIC32MX USB (device) driver is now functional. 2665 The PIC32MX Ethernet driver not yet fully verified (and an 2666 unverified SPI driver is also available). 2667 2668 * Networking. Added a lower-level, thread-independent socket layer. 2669 Parts of this layer were created in 6.15 to support the FTPD 2670 controlling terminal; this support has been extended in order 2671 to support an NFS file system (not yet released). 2672 2673 * NuttShell (NSH). NSH will now support a USB serial connection for 2674 the console (such as CDC/ACM). This is useful in environments 2675 where there is no physical serial port on the board. 2676 2677 * Build System. Reorgnaization of networking header files. 2678 2679Critical Bugfixes. The following bug fixes are considered critical: 2680 2681 * Networking: Fixed a "leak" in the TCP/IP read-ahead buffering logic. 2682 Corrected an error in TCP/IP sequence numbering/ACK logic which 2683 occurred when read-ahead buffering memory is exhausted. 2684 2685 * STM32 Drivers: Fixed an buffer sizing error in the STM32 Ethernet 2686 driver. 2687 2688Additional Bugfixes: Other important bug fixes are listed below. See 2689the ChangeLog of a complete, detailed list of bug fixes. 2690 2691 * Networking: Corrected recv()/recvfrom() return value. Added logic to 2692 monitor for loss of connection after a new connection has been 2693 established via accept() (Contributed by Max Nekludov). Add 2694 logic to select() to correctly handle POLLHUP (Contributed by Max 2695 Nekludov) 2696 2697Additional bugfixes, name changes, and other differences as detailed in the 2698ChangeLog. 2699 2700NuttX-6.17 2701---------- 2702 2703The 84th release of NuttX, Version 6.17, was made on April 14, 2012, 2704and is available for download from the SourceForge website. Note 2705that release consists of two tarballs: nuttx-6.17.tar.gz and 2706apps-6.17.tar.gz. Both may be needed (see the top-level nuttx/README.txt 2707file for build information). 2708 2709This release corresponds with SVN release number: r4607 2710 2711New features and extended functionality: 2712 2713 * Networking: Additional low-level, thread-independent socket 2714 interfaces (for NFS client support). 2715 2716 * RTC: Added a new interface call clock_synchronize(). This function 2717 will reload the system time from an RTC and is required when the 2718 system re-awakens from certain deep-sleep modes. 2719 2720 * Graphics: Add NxConsole. This is a character device driver that 2721 wraps an NX window and can be re-directed for stdout. This allows, 2722 for example, a pop-up graphics window that contains a NuttShell (NSH) 2723 session. A test of NxConsole is available at apps/examples/nxconsole. 2724 2725 * Watchdog Drivers: Added an interface definition an "upper half" 2726 driver to support watchdog timers. 2727 2728 * Calypso: Support for TI Calypso-based cellphones (as supported by 2729 the Osmocom-BB project) was contributed by members of the Osmocom-BB 2730 team. This includes configurations for the Compal e88 and e99 phones. 2731 2732 * USB Device Interface: Needed to extend the USB device interface 2733 because there was no mechanism for passing endpoint OUT data that 2734 may need to accompany a setup request. 2735 2736 * STM32 drivers: Added some power management controls for entering 2737 reduced power consumption states. An OTG FS driver was completed 2738 and partially verified (this driver seems to be functional but since 2739 it has been test so lightly, it might better be listed in the 2740 next section "Work in progress"). 2741 2742 * PIC32 drivers: The PIC32 Ethernet driver is now stable. The PIC32 2743 USB device controller driver is now functional (but not yet stable). 2744 2745 * PIC32 boards: Added support for the Sure DB-DP11212 PIC32 General 2746 Purpose Demo Board. There is now a PIC32 Starter Kit that 2747 provides NSH only through a Telnet connection. 2748 2749 * Build System: Some header files were moved into include/nuttx. 2750 The goal is to move any non-standard header files to include/nuttx 2751 or include/arch. Moved include/math.h to include/nuttx/math.h; 2752 this file is now only instantiated as the 'system' math.h if 2753 CONFIG_ARCH_MATH_H=y is defined. 2754 2755 * Tools: Added tools/cmpconfig.c, a tool for comparing two 2756 configuration files. 2757 2758Work in progress. This release includes some partially completed 2759work that is still not ready for prime time. 2760 2761 * NFS Client: Work is progressing on support for an NFS client 2762 file system. This is a port of the BSD NFS client file system 2763 that is being done by Jose Pablo Rojas V. 2764 2765 * Automated Configuration: Automated configuration based on the 2766 kconfig-frontends tool is being incorporated into the build 2767 system. The configuration is still not complete enough for 2768 general use in this release. 2769 2770 * STM32 Drivers: Added files that will (eventually) hold an STM32 2771 OTG FS host driver. This is still a work in progress. 2772 2773Bugfixes: 2774 2775 * Networking: Corrected a deadlock that only occurred when 2776 executing the NSH 'ifconfig' command over Telnet. 2777 2778 * File system: Fix incorrect return errno value from read() when 2779 the file is opened write-only. 2780 2781 * Graphics: Fix several compilation errors that have crept into the 2782 multi-user NX server because of lack of use. 2783 2784 * STM32: In order to use CAN2, both CAN1 and CAN2 clocking must be 2785 enabled. Fixed a troublesome bug in the STM32 F4 I2C driver that 2786 resulting in timeouts. 2787 2788 * LPC17xx: Fixes for errors the crept in the LPC17xx DAC logic 2789 Contributed by Lzyy). 2790 2791 * Build System: Reordered the link command line to account for new 2792 versions of libgcc.a that require symbols from the application 2793 (abort()). 2794 2795NuttX-6.18 2796---------- 2797 2798The 85th release of NuttX, Version 6.18, was made on May 19, 2012, 2799and is available for download from the SourceForge website. Note 2800that release consists of two tarballs: nuttx-6.18.tar.gz and 2801apps-6.18.tar.gz. Both may be needed (see the top-level nuttx/README.txt 2802file for build information). 2803 2804The majority of changes in this release are focused on supporting the 2805synchronized release of NxWM, the NuttX tiny window manager. That 2806window manager is released as part of the NxWidgets package, but depends 2807upon many of the changes in this NuttX release. 2808 2809This release corresponds with SVN release number: r4751 2810 2811New features and extended functionality: 2812 2813 * Drivers. Added a watchdog timer driver infrastructure. Add general 2814 support for STMicro STMPE811 I/O Expander/touchscreen device. 2815 2816 * STM32. Add support for the STM32 IWDG and WWDG watchodog timers. DMA 2817 now supports circular buffer mode; serial driver now uses circular 2818 DMA to improve Rx performance (Contributed by Mike Smith). 2819 2820 * STM3240G-EVAL Board. Add support for the LCD and for the STMPE811 2821 I/O Expander as a touchscreen controller. 2822 2823 * PIC32 Boards. Board support for the Mikroelektronika PIC32MX7 2824 Multimedia Board (MMB) and for the Sparkfun UBW32 PIC32 board. 2825 2826 * NX. Framed windows are now draw in three colors instead of just two. 2827 Numerous other extensions needed to support NxWM (see the ChangeLog 2828 for details). 2829 2830 * Library. Add prctl() command that can be used to setting and getting 2831 the names of threads. This (plus several other improvements and bug 2832 fixes) are part of a larger effort to improve task monitoring 2833 capabilities. 2834 2835Work in progress. This release includes some partially completed 2836work that is still not ready for prime time. 2837 2838 * NFS Client. Work is progressing on support for an NFS client 2839 file system. This is a port of the BSD NFS client file system 2840 that is being done by Jose Pablo Rojas V. 2841 2842 * Automated Configuration. Automated configuration based on the 2843 kconfig-frontends tool is being incorporated into the build 2844 system. The configuration is still not complete enough for 2845 general use in this release. 2846 2847 * STM32 Drivers. Added files that will (eventually) hold an STM32 2848 OTG FS host driver. This is still a work in progress. 2849 2850Bugfixes (see the change log for details) : 2851 2852 * sched_setscheduler() return value (Contributed by Richard Cochran). 2853 2854 * stdio. Ignore CONFIG_STDIO_LINEBUFFER if the file was opened in binary mode. 2855 2856 * fopen(). Correct an error in parsing open mode string. 2857 2858 * serial driver. Improved performance be reducing the amount of time 2859 that Rx interrupts are disabled. 2860 2861 * recvfrom(). Fix a compilation problem. 2862 2863 * CDC/ACM device driver. Fix an infinite loop that occurs when the serial 2864 device is unregistered. 2865 2866 * STM32 OTG FS device driver. Numerous fixes and the driver is partially 2867 functional but there are still some issues that become apparent when 2868 debug output is disabled. 2869 2870 * fcntl(). Always returned zero on success; however, some fcntl commands 2871 need to return non-zero values on success. 2872 2873 * graphics: Many multi-use mode fixes added to support NxWM (see the 2874 ChangeLog for details). Auto-raise is temporarily disabled in multi- 2875 user mode because it causes some problems with NxWM. 2876 2877 * on_exit(): Fix compilation errors if CONFIG_SCHED_ONEXIT is enabled. 2878 2879NuttX-6.19 2880---------- 2881 2882The 86th release of NuttX, Version 6.19, was made on June 15, 2012, 2883and is available for download from the SourceForge website. Note 2884that release consists of two tarballs: nuttx-6.19.tar.gz and 2885apps-6.19.tar.gz. Both may be needed (see the top-level nuttx/README.txt 2886file for build information). 2887 2888This release corresponds with SVN release number: r4847 2889 2890This release features new support for a Network File System (NFS) client. 2891This feature allows a tiny, embedded MCU to mount a remote file system 2892exported by an NFS server and then to access the file system as it would 2893any local file system. Then the tiny MCU can effectively have terabytes 2894of storage! 2895 2896This might be useful for data collection, for MCU configuration information, 2897for software updates, for providing modular, loadable code modes, controlling 2898a "farm" of MCUs, ... there are many possibilities and opportunities for 2899innovation! 2900 2901The NuttShell (NSH) now supports the following command: 2902 2903 nfsmount <server-address> <mount-point> <remote-path> 2904 2905That command will mount the remote NFS server directory <remote-path> at 2906<mount-point> on the target machine. <server-address> is the IP address of 2907the remote server. 2908 2909The NFS development was the graduation project of Jose Pablo Rojas V. who 2910is a student at the Instituto Tecnológico de Costa Rica (ITCR, or TEC). 2911A lot of effort went into understanding what a tiny, embedded NFS client should 2912do and getting the target resource usage to a bare minimum. Only around a 2913kilobyte or so of memory is required to run the NFS client (and most of that 2914for I/O buffers). Jose Pablo has spent several months living with NFS and 2915should be congratulated. 2916 2917Additional new features and extended functionality: 2918 2919 * Drivers: SSD1289 LCD driver, MIO283QT2 LCD driver 2920 2921 * LM3S: Additional register definition header files (contributed by Max 2922 Neklyudov). 2923 2924 * STM32 Boards: The STM32F4Discovery will now support an SSD1289 LCD, 2925 The STM3220G-EVAL board support is now equivalent to the STM3240G-EVAL 2926 board support. 2927 2928 * PIC32 Boards: The Mikroelektronika PIC32MX7 MMB board port is now 2929 functional, very complete, and stable. 2930 2931 * Graphics: The NxConsole will now take keyboard input from the NX graphics 2932 subsystem. This means that if there are multiple NxConsole windows, only 2933 the top instance that has focus will receive the keyboard input. 2934 2935 * apps/: Add the capability to use an arbitrary USB device as the console 2936 (not necessarily /dev/console). Additional enhancements for USB consoles. 2937 Added the 'mv' command. 2938 2939Work in progress. This release includes some partially completed 2940work that is still not ready for prime time. 2941 2942 * Automated Configuration. Automated configuration based on the 2943 kconfig-frontends tool is being incorporated into the build 2944 system. The configuration is still not complete enough for 2945 general use in this release. 2946 2947 * STM32 Drivers. Added files that will (eventually) hold an STM32 2948 OTG FS host driver. This is still a work in progress. 2949 2950Bugfixes (see the change log for details) : 2951 2952 * General: sleep() and usleep() return values, sig_timedwait() errno setting 2953 on timeout. 2954 * Drivers: STMPE811 touchscreen driver, USB PLC2303, USB CDC/ACM 2955 * STM32: Several USB device controller driver fixes, F4 interrupt priorities 2956 (contributed by Mike Smith). 2957 * Graphics: Keyboard input, fill trapezoid bug 2958 2959As well as other, less critical bugs (see the ChangeLog for details) 2960 2961NuttX-6.20 2962---------- 2963 2964The 87th release of NuttX, Version 6.20, was made on July 12, 2012, 2965and is available for download from the SourceForge website. Note 2966that release consists of two tarballs: nuttx-6.20.tar.gz and 2967apps-6.20.tar.gz. Both may be needed (see the top-level nuttx/README.txt 2968file for build information). 2969 2970This release corresponds with SVN release number: r4937 2971 2972Additional new features and extended functionality: 2973 2974 * Power Management: An evolving power management example is being 2975 created by Diego Sanchez. This effort currently involves on the 2976 STM32 F1 but clearly demonstrates the NuttX power management 2977 system which will automatically drive the system to lower power 2978 usage states due to lack of use. 2979 2980 * Drivers: Added a driver for the SST 25 SPI-based FLASH parts. 2981 2982 * PIC32: Added support for the PIC32MX1 and PIC32MX2 families. 2983 Added support for the microchipOpen and Pinguino toolchains. 2984 2985 * NXP LPC43XX: Added support for the entire LPC43xx family 2986 2987 * PIC32 boards: Added support for the DTX1-4000L "Mirtoo" module 2988 from http://www.dimitech.com/ (PIC32MX2). 2989 2990 * NXP LPC43XX Boards: Added support for NGX LPC4330-Xplorer board. 2991 2992 * NXP LPC17XX Boards: Added support for Micromint Lincoln60 board 2993 (LPC1769). 2994 2995 * LM3S Boards: Add a configuration to support the TI/Stellaris 2996 EKK-LM3S3B96 development board. Contributed by Jose Pablo Rojas V. 2997 2998 * Library: NuttX now supports platform-specific stdarg.h header 2999 files. 3000 3001Work in progress. This release includes some partially completed 3002work that is still not ready for prime time. 3003 3004 * Automated Configuration. Automated configuration based on the 3005 kconfig-frontends tool is being incorporated into the build 3006 system. The configuration is still not complete enough for 3007 general use in this release. 3008 3009 * STM32 Drivers. Added files that will (eventually) hold an STM32 3010 OTG FS host driver. This is still a work in progress. 3011 3012Bugfixes (see the change log for details) : 3013 3014 * PIC32: GPIO output configuration (critical bug) 3015 * STM32: Typos in pin mapping files. 3016 * LM3S: Fixed an optimization related but that caused slow start-up 3017 times if optimization was disabled. 3018 * Library: Fixed signed extension but in all limit.h files 3019 (reported by Lorenz Meier). inet_ntoa compilation failure 3020 on Z80. 3021 3022As well as other, less critical bugs (see the ChangeLog for details) 3023 3024NuttX-6.21 3025---------- 3026 3027The 88th release of NuttX, Version 6.21, was made on August 25, 2012, 3028and is available for download from the SourceForge website. Note 3029that release consists of two tarballs: nuttx-6.21.tar.gz and 3030apps-6.21.tar.gz. Both may be needed (see the top-level nuttx/README.txt 3031file for build information). 3032 3033This release corresponds with SVN release number: r5052 3034 3035Additional new features and extended functionality: 3036 3037 * Core: Add support for multiple registered atexit() functions. Syslog 3038 extended: Now any character driver may be used for the debug logging 3039 device. Mountpoint traversal logic. 3040 * Drivers: Added support for the TI PGA112-7 amplifier/multiplexor. 3041 * LPC43xx: Added clock ramp-up logic to run at 204 MHz 3042 * LPC43xx Drivers: SPIFI block driver, RS-485 support, Minimal termios 3043 support. Framework for USB0 device controller driver. 3044 * LPC17xx Drivers: Minimal termios support 3045 * STM32: Support for STM32 F1 "Value Line" (contributed by Mike Smith). 3046 Add support for STM32 F107 "Connectivity Line" (contributed by Max 3047 Holtzberg). 3048 Clock restart logic needed for recovery from low power modes. 3049 * STM32 Drivers: RTC alarm support. Usable for wakeup from sleep mode, 3050 Minimal serial termios support. USB OTG FS host driver (alpha). 3051 * STM32 Boards: Add power management hooks for the STM32F4Discovery, 3052 Add support for the Olimex STM32-P107 (contributed by Max Holtzberg). 3053 * PIC32: Add support for the Pinguino MIPS toolchain. 3054 * PIC32 Drivers: GPIO driver now supports F1 analog regiaters (ANSEL). 3055 * PIC32 Boards: Add support for the PGA117 on the Mirtoo module. 3056 * Calypso: Add support for the SSD1783 LCD on the Compal E99. 3057 * Library: cfsetispeed(), cfsetospeed(), tcflush(), memchr(), and 3058 memccpy(). 3059 * Applications: Port of freemodbus-v1.5.0. Add support for testing 3060 devices with multiple ADC, PWM, and QE devices. 3061 NSH: NSH 'mount' command (with no arguments) will now show mounted 3062 volumes. Add new NSH 'df' command. Extended 'help' support. NSH 3063 now catches the return value from spawned applications (provided 3064 by Mike Smith). 3065 * Build System: mkconfig will not define CONFIG_DRAM_END. A lot of 3066 progress has been made on the automated NuttX configuration logic 3067 (Thanks go to Richard Cochran). 3068 * Documentation: Document ways to customize the behavior of NSH. 3069 3070Bugfixes (see the change log for details) : 3071 3072 * Serial drivers (all): Fix ioctl return value. Common "upper half" 3073 serial driver will now return with EINTR if a serial wait is 3074 interrupted by a signal. 3075 * FAT: Fix statfs() file name length. 3076 * LPC43xx: Clock configuration. 3077 * STM32: Pinmap fixes, SPI driver re-initialization 3078 * STM32 Boards: Correct and lower SDIO frequency for F2 and f4 boards. 3079 * AVR: C++ build issues. 3080 * PM: Fix a place where interrupts were not be re-enabled. 3081 * Applications: NSH application start-up race conditions. 3082 * Library: Fieldwidth and justification for %s format. Fixed several 3083 issues with presenting floating point numbers. NULL definition 3084 for C++ 3085 3086As well as other, less critical bugs (see the ChangeLog for details) 3087 3088NuttX-6.22 3089---------- 3090 3091The 89th release of NuttX, Version 6.22, was made on September 29, 2012, 3092and is available for download from the SourceForge website. Note 3093that release consists of two tarballs: nuttx-6.22.tar.gz and 3094apps-6.22.tar.gz. Both may be needed (see the top-level nuttx/README.txt 3095file for build information). 3096 3097This release corresponds with SVN release number: r5206 3098 3099Note that all SVN information has been stripped from the tarballs. If you 3100need the SVN configuration, you should check out directly from SVN. Revision 3101r5206 should equivalent to release 6.22 of NuttX 6.22: 3102 3103 svn checkout -r5206 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code 3104 3105Or 3106 3107 svn checkout -r5206 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code 3108 3109Additional new features and extended functionality: 3110 3111 * RTOS: Application entry point is no longer user_start, but can be 3112 configured using CONFIG_USER_ENTRYPOINT. NuttX now supports two work 3113 queues: A lower priority work queue (for extended processing) and a 3114 higher priority work queue (for quick, high priority operations). 3115 3116 * Memory Management: Added a new granule-based allocated that can be 3117 used to manage, aligned and quantized DMA memory. 3118 3119 * File System: Add hooks to allocate I/O memory with and external 3120 allocated (need if required by DMA). 3121 3122 * Networking: ENC28J60 driver is (finally) verified. 3123 3124 * Drivers: Add hooks USB device drivers to allocate I/O memory with and 3125 external allocated (need if required by DMA). Driver for the Windbond 3126 SPI FLASH family (W25x16, W25x32, W25x64, and others). ADS7843E driver 3127 extended for TSC2046 and XPT2046 and verified. 3128 3129 * ARMv7-M: Added logic to reset the MCU using the NVIC. 3130 3131 * STM32: Add support for STM32F103VET6. 3132 3133 * STM32 Drivers: Add logic to re-initialize UARTs a second time to 3134 enable DMA (Mike Smith). I2C driver error recovery (Mike Smith). 3135 3136 * STM32 boards: Support for USB host added add to several configurations 3137 (or at least explained in README files). Support for the Shenzhou 3138 STM32F107 board (see www.armjishu.com). Support for M3 Wildfire 3139 STM32F103 board (v2 and v3). 3140 3141 * Build System: Kconfig string de-quoting logic. Remove comments from 3142 defconfig files (Kate). Add tool to create NuttX-style symbol tables. 3143 Numerous changes to configuration logic as needed for the new mconf-based 3144 configuration (much of this from Richard Cochran). Refactor common 3145 Make.defs logic into tools/Config.mk (Richard Cochran). 3146 3147 * Library: Configurable terse output from strerror(). Added perror() (Kate). 3148 Add %n format to sscanf() (Kate). 3149 3150 * Applications: Numerous changes and extensions to the old uIP web server 3151 (from Kate and Max Holtzberg, see the ChangeLog for specific extensions). 3152 UDP network discovery utility (Max Holtzberg). Embeddable Lightweight 3153 XML-RPC Server (http://www.drdobbs.com/web-development/an-embeddable-lightweight-xml-rpc-server/184405364, Max Holtzberg). 3154 3155Bugfixes (see the change log for details). Some of these are very important 3156(marked *critical*): 3157 3158 * RTOS: Fixes to priority inheritance logic (*critical*). waitpid() 3159 critical section. Assertion in work_cancel() (Mike Smith). mmap() (Kate). 3160 3161 * FAT File System: Improper Boolean expression caused un-necessary writes 3162 and performance issues (*critical*, Ronen Vainish). 3163 3164 * Networking: Remove an un-necessary delay from recvfrom(). This greatly 3165 improves network performance (*critical*, Max Holtzberg). 3166 3167 * Graphics: NX parameter checking errors. 3168 3169 * Drivers: Fix double release of memory in SDIO-based, MMC/SD driver 3170 (Ronen Vainish). 3171 3172 * LPC17xx: Ethernet driver fixes needed for certain PHYs (Kate). 3173 3174 * AVR: Fix build error (Richard Cochran). 3175 3176 * STM32: USB OTG FS host driver NAKing an retries. Power management 3177 compilation errors (Diego Sanchez). Missing SPI3 remap logic. 3178 3179 * STM32 Drivers: Fix for Ethernet errata for STM32F107 (*critical*). 3180 Ethernet buffer alignment check. Add "kludge" to Ethernet driver to 3181 handle DM9161 PHY which (at least on the Shenzhou board), sometimes 3182 does not come up correctly. 3183 3184 * Applications: THTTPD (Kate). NSH ping when IP address is on a different 3185 network (Darcy Gong). 3186 3187 * Library: fread(), fflush(), fdopen(): Fix error handling logic (Ronen 3188 Vainish). Fix some field-width handling issues in sscanf() 3189 3190As well as other, less critical bugs (see the ChangeLog for details) 3191 3192NuttX-6.23 3193---------- 3194 3195The 90th release of NuttX, Version 6.23, was made on November 5, 2012, 3196and is available for download from the SourceForge website. Note 3197that release consists of two tarballs: nuttx-6.23.tar.gz and 3198apps-6.23.tar.gz. Both may be needed (see the top-level nuttx/README.txt 3199file for build information). 3200 3201This release corresponds with SVN release number: r5313 3202 3203Note that all SVN information has been stripped from the tarballs. If you 3204need the SVN configuration, you should check out directly from SVN. Revision 3205r5313 should equivalent to release 6.23 of NuttX 6.23: 3206 3207 svn checkout -r5313 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code 3208 3209Or 3210 3211 svn checkout -r5313 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code 3212 3213Additional new features and extended functionality: 3214 3215 * RTOS: If both atexit() and on_exit() are enabled, use on_exit() to 3216 implement atexit(). Updates for RGMP 4.0. 3217 3218 * Binfmt: Add support for loading and executing ELF binary modules from 3219 a file system. 3220 3221 * Drivers: Maxim MAX11802 touchscreen controller (Petteri Aimonen) 3222 3223 * STM32 Driver: Implementation of /dev/random using the STM32 Random Number 3224 Generator (RNG). 3225 3226 * STM32 Boards: ADC support for the Shenzhou IV board. Relay support for 3227 the Shenzhou IV board. 3228 3229 * C Library: Support is now included for the add-on uClibc++ C++ 3230 standard library support. This includes support for iostreams, strings, 3231 STL, RTTI, exceptions -- the complete C++ environment. (uClibc++ is 3232 provided as a separate add-on package due to licensing issues). 3233 3234 Optimized generic and ARM-specific memcpy() function. Optimized 3235 memset() function. 3236 3237 Add support for ferror(), feof(), and clearerror(). Add support for 3238 __cxa_atexit(). 3239 3240 Math Library: Port of the math library from Rhombus OS by Nick Johnson 3241 (Darcy Gong). 3242 3243 * Applications: New NSH commands: ifup, ifdown, urlencode, urldecode, 3244 base64enc, bas64dec, md5 (Darcy Gong). Add support for NSH telnet login 3245 (Darcy Gong). Enancements to NSH ping command to support pinging hosts 3246 with very long round-trip times. Extensions to the ifconfig command 3247 Darcy Gong), 3248 3249 Many extensions to the webclient/wget and DNS resolver logic from Darcy 3250 Gong. JSON, Base64, URL encoding, and MD5 libraries contributed by Darcy 3251 Gong. 3252 3253 New examples: ELF loader, JSON, wgetjson, cxxtest, relays. 3254 3255Bugfixes (see the change log for details). Some of these are very important 3256(marked *critical*): 3257 3258 * Drivers: W25 SPI FLASH 3259 3260 * STM32 Drivers: ADC reset 3261 3262 * Graphics: Missing implementation of the blocked method (*critical*, 3263 Petteri Aimonen). 3264 3265 * C Library: Floating point numbers in printf and related formatting functions 3266 (Mike Smith), cf[get|set]speed() (Mike Smith) 3267 3268As well as other, less critical bugs (see the ChangeLog for details) 3269 3270NuttX-6.24 3271---------- 3272 3273The 91st release of NuttX, Version 6.24, was made on December 20, 2012, 3274and is available for download from the SourceForge website. Note 3275that release consists of two tarballs: nuttx-6.24.tar.gz and 3276apps-6.24.tar.gz. Both may be needed (see the top-level nuttx/README.txt 3277file for build information). 3278 3279This release corresponds with SVN release number: r5447 3280 3281Note that all SVN information has been stripped from the tarballs. If you 3282need the SVN configuration information, you should check out directly from 3283SVN. Revision r5447 should equivalent to release 6.24 of NuttX 6.24: 3284 3285 svn checkout -r5447 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code 3286 3287Or (HTTP): 3288 3289 svn checkout -r5447 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code 3290 3291Additional new features and extended functionality: 3292 3293 * RTOS: 3294 3295 - Implemented the POSIX pause() function (still has some compiance 3296 issues). 3297 - Tasking logic is extended to support the notion of address 3298 environments. An address environment is the key notion underlying 3299 "process" vs. tasks. If tasks are created with address environments 3300 (by binfmt), the OS will propagate that environment to child threads 3301 and will destroy the address environment when the "process" exists. 3302 - If support for the PATH variable is enabled, the OS start up logic 3303 will create an initial environment containing the default PATH 3304 setting (CONFIG_PATH_INITIAL). This initial PATH will then be 3305 inherited by all tasks. 3306 3307 * Binfmt 3308 3309 - The NuttX binary loaders have been updated to support the PATH 3310 environment variable. Now, if the PATH is properly defined, programs 3311 can be executed from mass storage using only the file name. This 3312 feature is added to support more standard behavior (eventually, NSH 3313 will support execution of programs in file systems by just entering 3314 the file name, perhaps in 6.25?). 3315 - The NXFLAT and ELF binary loaders have been extended to create 3316 address environments for any new tasks executed from the file system. 3317 This feature requires that the architecture support a memory management 3318 unit (MMU) and the address environment interfaces declared in 3319 include/nuttx/arch.h (currently, this is only supported by the z180). 3320 3321 * Drivers: LCD driver for the Univision UG-2864AMBAG01 OLED 3322 3323 * STM32: Support for STM32F100 high density chips contributed by Freddie 3324 Chopin. 3325 3326 * STM32 Drivers: Added optional RS-485 direction bit control (from 3327 Freddie Chopin). 3328 3329 * STM32 Boards: 3330 3331 - Support for generic STM32F100RC board contributed by Freddie Chopin. 3332 - stm32f4discovery/nxlines: STM32F4Discovery support for the 3333 UG-2864AMBAG01 OLED. 3334 - stm32f4discovery/winbuild: A version of the NuttX OS test 3335 configured to build natively on Windows. 3336 - stm32f4discovery/elf: Now uses the PATH variable to find ELF 3337 executables. 3338 - configs/cloudctrl: Added for Darcy Gong's CloudController board 3339 3340 * PIC32 Boards: Update the Mirtool configuration for Release 2 of the 3341 Mirtoo module. 3342 3343 * Calypso: Add Calypso keypad driver. From Denis Cariki. 3344 3345 * ZiLOG: 3346 3347 - Add support for the z180 chip family and, specifically, for 3348 the P112 retro hardware (see http://p112.feedle.net/). 3349 - All ZiLOG configurations updated to use the current ZDS-II 3350 and/or SDCC toolchains. 3351 3352 * Graphics: 3353 3354 - Add a semaphore handshake so that operations on buffers from 3355 the NXMU client will be blocked until the NX server operates on the 3356 buffer data (from Petteri Aimonen). 3357 - nxtk_subwindowmove() and nxtk_getwindow(): Improvements to clipping 3358 logic from Petteri Aimonen. 3359 3360 * C Library: lib/ sub-directory renamed libc/ (there is a new lib/ sub- 3361 directory that is used to hold all archives). 3362 3363 * C++: Exception stubs from Petteri Aimonen. 3364 3365 * Applications: 3366 3367 - Add NSH hexdump command to dump the contents of a file (or character 3368 device) to the console (contributed by Petteri Aimonen). 3369 - Extend the NSH ifconfig command plus various DHCPC improvements 3370 (from Darcy Gong). 3371 3372 * apps/examples: 3373 3374 - ostest: Replace large tables with algorithmic prime number 3375 generation. This allows the roundrobin test to run on platforms 3376 with minimal SRAM (Freddie Chopin). 3377 - keypadtest: A new keypad test example contributed by Denis Carikli. 3378 - elf and nxflat: If CONFIG_BINFMT_EXEPATH is defined, these examples 3379 will now use a relative path to the program and expect the binfmt/ 3380 logic to find the absolute path to the program using the PATH 3381 variable. 3382 3383 * Build system: 3384 3385 - New top-level Makefiles: Makefile.unix and Makefile.win (along with 3386 numerous changes to other make-related files). This adds basic 3387 support for building NuttX natively under Windows from a CMD.exe 3388 window (rather than in a POSIX-like environment). This build: (1) 3389 Uses all Windows style paths, (2) Uses primarily Windows batch 3390 commands from cmd.exe, with (3) a few extensions from GNUWin32. 3391 3392 This capability should still be considered a work in progress 3393 because: (1) it has not been verfied on all targets and tools, 3394 and (2) still lacks some of the creature-comforts of the more 3395 mature environments (like a function configure.sh script and 3396 'make menuconfig' support). 3397 3398 - Example Windows native builds for STM32F4Discovery, eZ80, z16f, z8, 3399 Z80, and Z180. 3400 - Several configurations have been converted to work the kconfig- 3401 frontends mconf configuration tool: stm32f4discovery/nxlines, and 3402 all eZ80, z16f, z8, Z80, and Z180 configurations. 3403 - Architectures now include a common Toolchain.defs file that can be 3404 used to manage toolchains in a more configurable way (most of this 3405 contributed by Mike Smith). 3406 3407 * Build tools: 3408 3409 - Renamed tools/winlink.sh to tools/copydir.sh. 3410 - Several new tools/scripts to support the Windows native build: 3411 tools/mkdeps.bat, tools/mkdeps.c, tools/link.bat, unlink.bat, and 3412 copydir.bat. 3413 - tools/incdir.sh and incdir.bat now support an -s option to generate 3414 system header file paths. 3415 - tools/b16.c: Fixed precision math conversion utility. 3416 3417Bugfixes (see the change log for details). Some of these are very important 3418(marked *critical*): 3419 3420 * RTOS: Fix some backward conditional compilation in the work queue 3421 logic (Freddie Chopin). 3422 3423 * File System: Uninitialized variable caused assertions (from Lorenz 3424 Meier). 3425 3426 * Drivers: Partial fix for STM32 OTGFS device drivers and fix for short, 3427 unaligned writes in the flash translation layer (drivers/mtd/ftl.c), 3428 both from Petteri Aimonen. 3429 3430 * STM32 Drivers: 3431 3432 - Qencoder driver and TIM3 driver fixes from Ryan Sundberg. 3433 - Fix timeout delay calculation in the STM32 OTG FS host driver. 3434 3435 * LPC17xx Drivers: Resources not being properly released when I2C 3436 driver is un-initialized. 3437 3438 * Graphics: 3439 3440 - Fix logic when the mouse drags outside of the window; fix 3441 another "blocked message" handling case (both from Petteri Aimonen). 3442 - nxtk_filltrapwindow(): Correct an offset problem (also from Peterri 3443 Aimonen). 3444 - nxglib_splitline(): Correct the "fat flat line" bug. 3445 3446 * C Library: 3447 3448 - nrand() changes to prevent coefficients from becoming zero which 3449 would "lock up" the random number generate. 3450 - Add rounding functions to the math library (contributed by Petteri 3451 Aimonen). 3452 3453 * Build system: Changes to MIN definitions in all limit.h header files 3454 to avoid integer overflows. For example from (-128) to (-127 - 1) 3455 (from Petteri Aimonen). 3456 3457 * Applications: Modbus fixes from Freddie Chopin. 3458 3459As well as other, less critical bugs (see the ChangeLog for details) 3460 3461NuttX-6.25 3462---------- 3463 3464The 92nd release of NuttX, Version 6.25, was made on February 1, 2013, 3465and is available for download from the SourceForge website. Note 3466that release consists of two tarballs: nuttx-6.25.tar.gz and 3467apps-6.25.tar.gz. Both may be needed (see the top-level nuttx/README.txt 3468file for build information). 3469 3470This release corresponds with SVN release number: r5595 3471 3472Note that all SVN information has been stripped from the tarballs. If you 3473need the SVN configuration information, you should check out directly from 3474SVN. Revision r5595 should equivalent to release 6.25 of NuttX: 3475 3476 svn checkout -r5595 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code 3477 3478Or (HTTP): 3479 3480 svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code 3481 3482Additional new features and extended functionality: 3483 3484 * OS Initialization 3485 3486 - Removed support for CONFIG_BUILTIN_APP_START. This is not really a 3487 useful feature and creates a violation of the OS layered 3488 architecture. 3489 3490 * Task Creation: 3491 3492 - Implement a simple vfork(). In NuttX-6.25, this interface is 3493 available only for ARM7/9, ARMv7-M (Cortext-M3/4), and MIPS32 3494 (PIC32MX) platforms. 3495 - exec() now sets the priority of the new task to the same priority as 3496 the parent task (instead of the arbitrary value of 50). 3497 - New, partially compliant implementations of execv() and execl(). 3498 These are only partially compliant because they do not overlay any 3499 existing "process space" but rather create the new task and exit(). 3500 - Add a complete implementation of posix_spawn(). This standard 3501 interface is a better match for an MMU-less architecture than are 3502 vfork() plus execv() or execl(). 3503 - Add a task start hook that will be called before the task main 3504 is started. This can be used, for example, to schedule C++ 3505 static constructors to run automatically in the context of the 3506 new task. 3507 3508 * Task Parentage 3509 3510 - Repartitioned tasking data structures. All shared resources are now 3511 collected together in a "task group". A task group includes the 3512 original task plus all of the pthreads created by the task. 3513 - Added support for remember the parent "task group" when a new task is 3514 started. 3515 - Added optional support to record the membership of each thread in 3516 the "task group". 3517 - Implement support for retaining child task status in the "task group" 3518 after the child task exists. This is behavior required by POSIX. 3519 But in NuttX is only enabled with CONFIG_SCHED_HAVE_PARENT and 3520 CONFIG_SCHED_CHILD_STATUS 3521 - Add internal logic to "reparent" a task. This is useful, 3522 for example, where the child task is created through a trampoline 3523 task that redirects I/O. Reparenting allows the caller of posix_spawn() 3524 to be reparented for the eventual child thread. 3525 - Added support for SIGCHLD. Sent to all members of the parent task 3526 group when the file member of the child task group exits. 3527 - If SIGCHLD and retention of child task exist status are enabled, then 3528 a more spec-compliant version of waitpid() is enabled. 3529 - New interfaces waitid() and wait() are also enabled when SIGCHLD 3530 is enabled. 3531 3532 * File System 3533 3534 - dup() and dup2() can new be used with opened files in a mounted file 3535 system. This supports re-direction of output in NSH to files. 3536 - The binfs file system was moved from apps/builtin to fs/binfs. The 3537 binfs file system was extended to support execution of "builtin 3538 applications" using exec(), execv(), execl(), or posix_spawn(). 3539 - Added logic based on SIGCHLD to automatically unload and clean-up 3540 after running a task that was loaded into memory. 3541 3542 * Binary Formats 3543 3544 - Much of the logic for "builtin applications" was moved from 3545 apps/builtin to nuttx/binfmt/libbuiltin. Includes some extensions 3546 contributed by Mike Smith. 3547 - A binary loader was added for builtin applications to support 3548 execution of "builtin applications" using exec(), execv(), 3549 execl(), or posix_spawn(). 3550 3551 * Drivers: 3552 3553 - Added logic to marshal and serialized "out-of-band" keyboard 3554 commands (such as cursor controls and key release events) intermixed 3555 with normal ASCII keypress data. The encoding is partially integrated 3556 in the HID keyboard driver and the decoding full integrated into the 3557 apps/examples hidkbd and keypadtest (the latter contributed by Denis 3558 Carlikli). 3559 - Driver for the UG-2864HSWEG01 OLED contributed by Darcy Gong. 3560 - Add support for removable serial devices (like USB serial). This 3561 support is enabled by CONFIG_SERIAL_REMOVABLE. 3562 3563 * ARMv7-M: 3564 3565 - Added an option to use the BASEPRI register to disable interrupts 3566 (instead of the PRIMASK). This eliminates some innocuous hardfaults 3567 that interfere with some debug tools. You need to switch to the 3568 BASEPRI method only if you have such tool interference. 3569 3570 * STM32 Drivers 3571 3572 - Bring STM32 F1 DMA capabilities up to par with the STM32 F2/F4 3573 (contributed by Mike Smith). 3574 - Add support for USART single wire mode (Contributed by the PX4 3575 team). 3576 - Updates to support for SPI DMA on the STM32 F1/F2/F4. From 3577 Petteri Aimonen. 3578 3579 * STM32 Boards: 3580 3581 - New configuration to support the UG-2864HSWEG01 OLED on the 3582 STM32F4Discovery board. 3583 - Added a posix_spawn() test configuration for the STM32F4Discovery. 3584 3585 * LM3S/LM4F 3586 3587 - Files and directories repartitioned to support both LM3S and LM4F 3588 using the STM32 organization as a model. 3589 - Partial definitions for the LM4F contributed by Jose Pablo Carballo 3590 (this is still a work in progress). 3591 3592 * LM3S Boards 3593 3594 - Added scripts and documentation to use OpenOCD with the LM3S (from 3595 Jose Pablo Carballo). 3596 3597 * LPC176x/LPC178x 3598 3599 - Files and directories repartitioned to support both LPC175x/LPC176x 3600 and the LPC177x/LPC178x families using the STM32 organization as a 3601 model. The LPC1788 port is a work in progress by Rommel Marcelo. 3602 3603 * LPC176x/LPC178x Boards: 3604 3605 - Added a configuration to support the Wave Share Open1788 board. 3606 This is still a work in progress by Rommel Marcelo. 3607 3608 * LPC2148 Boards: 3609 3610 - Add basic support for the The0.net ZP213x/4xPA board (with the LPC2148 3611 and the UG_2864AMBAG01 OLED). 3612 - Add an nxlines configuration for the ZP213x/4xPA (with the LPC2148 3613 and the UG_2864AMBAG01). 3614 3615 * Simulator: 3616 3617 - Add an nxlines configuration for the simulator. 3618 3619 * Networking: 3620 3621 - Add logic to work around delayed ACKs by splitting packets 3622 (contributed by Yan T.). 3623 - Split net_poll() to create the internal interface psock_poll(). 3624 3625 * LCDs: 3626 3627 - Added support for LCD1602 alphanumeric LCD (HD4468OU controller). 3628 3629 * Graphics: 3630 3631 - Added 5x8 monospace font. This tiny font is useful for graph 3632 labels and for small bitmapped display. Contributed by Petteri 3633 Aimonen. 3634 3635 * Build System: 3636 3637 - Add an options to better manage toolchain prefixes. 3638 - Redesigned how the context target works in the apps/ directory. 3639 The old design caused lots of problems when changing configurations 3640 because there is no easy way to get the system to rebuild the 3641 context. This change should solve most the problems and eliminate 3642 questions like "Why don't I see my builtin application in NSH?" 3643 3644 * Kconfig Files: 3645 3646 - There are several new configurations that use the kconfig-frontends 3647 tools and several older configurations that have been converted to 3648 use these tools. There is still a long way to go before the conversion 3649 is complete: 3650 3651 configs/sim/nxwm 3652 configs/sim/nsh 3653 configs/stm3220g-eval/nxwm 3654 configs/stm32f4discovery/posix_spawn 3655 configs/olimex-lpc1766stk/nsh 3656 configs/olimex-lpc1766stk/hidkbd 3657 configs/olimex-lpc1766stk/nettest 3658 configs/open1788/ostest 3659 configs/stm32f4discovery/nsh 3660 configs/stm32f4discovery/usbnsh 3661 configs/lm326965-ek (all configurations) 3662 configs/mcu123-214x/nsh 3663 configs/ubw32/ostest 3664 3665 * Tools: 3666 3667 - tools/kconfig.bat: Kludge to run kconfig-frontends from a DOS shell. 3668 - tools/configure.c: configure.c can be used to build a work-alike 3669 program as a replacement for configure.sh. This work-alike 3670 program would be used in environments that do not support Bash 3671 scripting (such as the Windows native environment). 3672 - tools/configure.bat: configure.bat is a small Windows batch 3673 file that can be used as a replacement for configure.sh in a 3674 Windows native environment. configure.bat is actually just a 3675 thin layer that executes configure.exe if it is available. If 3676 configure.exe is not available, then configure.bat will attempt 3677 to build it first. 3678 3679 * Applications: 3680 3681 - New and modified examples: 3682 3683 apps/examples/wlan: Remove non-functional example. 3684 apps/examples/ostest: Added a test of vfork(). Extend signal 3685 handler test to catch death-of-child signals (SIGCHLD). Add a 3686 test for waitpid(), waitid(), and wait(). 3687 apps/exampes/posix_spawn: Added a test of posix_spawn(). 3688 3689 - NSH: 3690 3691 NSH now supports re-direction of I/O to files (but still not from). 3692 The block driver source argument to the mount command is now 3693 optional for file systems that do not require a block driver. 3694 NSH can now execute a program from a file system using posix_spawn(). 3695 Added support for a login script. The init.d/rcS script will be 3696 executed once when NSH starts; the .nshrc script will be executed 3697 for each session: Once for serial, once for each USB connection, 3698 once for each Telnet session. 3699 3700 - Supports a new daemon that can be used to monitor USB trace outpout. 3701 - Removed non-functional wlan example. 3702 3703Bugfixes (see the ChangeLog for details). Some of these are very important: 3704 3705 * Tasking: 3706 3707 - Fixed a *critical* task exit bug. Here is the failure scenario: 3708 (1) sched_lock() is called increments the lockcount on the current 3709 TCB (i.e., the one at the head of the ready to run list), (2) 3710 sched_mergepending is called which may change the task at the head 3711 of the ready-to-run list, then (3) sched_unlock() is called which 3712 decrements the lockcount on the wrong TCB. The failure case that 3713 I saw was that pre-emption got disabled in the IDLE thread, locking 3714 up the whole system. 3715 3716 * Signals: 3717 3718 - sigtimedwait() would return a bad signal number if the signal was 3719 already pending when the function was called. 3720 3721 * Drivers: 3722 3723 - Some SD cards will appear busy until switched to SPI mode for 3724 first time. Having a pull-up resistor on MISO may avoid this 3725 problem, but this fix from Petteri Aimonen makes it work also 3726 without pull-up. 3727 3728 * STM32 Drivers: 3729 3730 - STM32 FLASH driver counting error (from Freddie Chopin). 3731 - STM32 F4 maximum SPI frequency was wrong (corrected by Petteri 3732 Aimonen). 3733 3734 * STM32 Boards 3735 3736 - Due to cloning of untested code, the logic to control on-board 3737 LEDs did not work on any STM32 boards. 3738 - Serial devices number /dev/ttyS0-5 is there is a serial console, 3739 but /dev/ttyS1-6 if there is no serial console. 3740 3741 * Binary Formats 3742 3743 - C++ static constructors execute now using a start taskhook 3744 so that they execute in the context of the child task (instead 3745 of in the context of the parent task). 3746 3747 * File Systems: 3748 3749 - Several FAT-related bugs fixed by Petteri Aimonen. 3750 3751 * Networking: 3752 3753 - Fix poll/select issure reported by Qiang: poll_interrupt() must call 3754 net_lostconnection() when a loss of connection is reported. Otherwise, 3755 the system will not remember that the connection has been lost and will 3756 hang waiting on a unconnected socket later. 3757 - Similar issues corrected for recvfrom() and send(). 3758 - Telnetd would hang in a loop if recv() ever returned a value <= 0. 3759 3760 * Libraries: 3761 3762 - fread() could hang on certain error conditions. 3763 - Can't handle SYSLOG output to a character device from the IDLE task 3764 (because the IDLE task can't block). 3765 3766 * Build System: 3767 3768 - Serial was driver was not being built if there is no console 3769 device. Obviously, the serial driver may be needed even in 3770 this case. 3771 3772 * Additional Bugfixes: 3773 3774 - sig_timedwait() and clock_time2ticks.c: Timing "rounding" logic 3775 - ARM9 Compilation issue with low vectors. 3776 - readline() return value 3777 - Others as detailed in the ChangeLog: HID keyboard, LPC17xx bit 3778 definitions, strndup(), PL2303, SYSLOG error handling, AT25, 3779 apps/examples. 3780 3781NuttX-6.26 3782---------- 3783 3784The 93rd release of NuttX, Version 6.26, was made on March 15, 2013, 3785and is available for download from the SourceForge website. Note 3786that release consists of two tarballs: nuttx-6.26.tar.gz and 3787apps-6.26.tar.gz. Both may be needed (see the top-level nuttx/README.txt 3788file for build information). 3789 3790This release corresponds with SVN release number: r5745 3791 3792Note that all SVN information has been stripped from the tarballs. If you 3793need the SVN configuration information, you should check out directly from 3794SVN. Revision r5745 should equivalent to release 6.26 of NuttX: 3795 3796 svn checkout -r5745 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code 3797 3798Or (HTTP): 3799 3800 svn checkout -r5745 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code 3801 3802Additional new features and extended functionality: 3803 3804 * OS Initialization: 3805 3806 - Add an additional call-out to support board-specific driver 3807 initialization during the boot-up phase (available with 3808 CONFIG_BOARD_INITIALIZE=y). 3809 3810 * Tasking: 3811 3812 - New interface task_spawn() that is like posix_spawn(), but uses 3813 entry point addresses like task_create(). 3814 - Additional data restructuring as a continuation of the task group 3815 changes of NuttX 6.25. These data structures were moved from the 3816 TCB structure into the task group: pthread join data, 3817 atexit/on_exit callbacks, waitpid data structures, and message 3818 queues. 3819 - TCBs for tasks and pthreads are now separate structures. This 3820 saves a little memory since tasks do not have to carry the overhead 3821 for threads and vice versa. 3822 3823 * Kernel Build: 3824 3825 - Extensive changes were made to support the kernel build mode. In 3826 this mode, NuttX is built as a monolithic kernel. NuttX is built 3827 as a separate kernel mode "blob" and the applications are built 3828 as a separate user mode "blob". The kernel runs in kernel mode and 3829 the applications run in user mode (with the MPU restricting user 3830 mode accesses). Access to the kernel from the user blob is only 3831 via system calls (SVCalls). 3832 - Extensive changes were made to the syscall, SVCall, and trapping 3833 logic. Many internal interfaces were renamed. 3834 - The memory manager was extended to support both kernel- and user- 3835 mode allocations. Logic within the kernel needs to use the 3836 correct kernel- or user-space allocator, depending upon the user 3837 of the allocated memory. 3838 - The user-space blob now contains a header built in at the beginning 3839 of the block that provides the same information that was previously 3840 provided by a kludgy, auto-generated header file (user_map.h). 3841 - Basic support implemented for the ARMv7-M family with fragments 3842 also implemetned for the ARMv6-M and MIPS32 families. 3843 - Kernel build supported added for the LPC17xx Open1788 and for 3844 the Atmel SAM3U-EK board. All testing is being performed on the 3845 Open1788 board. 3846 3847 * Signals: 3848 3849 - Delivery of signals to threads within a task group is now compatible 3850 with the way that signals are delivered to threads within a process. 3851 3852 * Drivers: 3853 3854 - Add a driver for the SST29VF NOR FLASH parts. 3855 - USB device trace/debug feature extended to decode device-specific 3856 trace events to make the trace output more readable (from Petteri 3857 Aimonen). 3858 - USB MSC device driver can not support names of differing sizes 3859 in the USB descriptor and the SCSI fields (from Petteri Aimonen). 3860 - Locking added to MMC/SD SPI drivers so that MMC/SD can co-exist on 3861 the same bus as other SPI devices. Frequency is reset each time 3862 that the MMC/SD SPI has the bus locked. (from Petteri Aimonen). 3863 3864 * ARMv6-M (Cortex-M0): 3865 3866 - Added support for the ARM Cortex-M0 family. 3867 3868 * nuvoTon NUC120: 3869 3870 - Added support for the nuvoTon NUC120 MCU (Cortex-M0). 3871 3872 * nuvoTon NUC120 Boards: 3873 3874 - Added basic support for the nuvoTon NuTiny-SDK-NUC120 board (Cortex-M0). 3875 3876 * LPC17xx: 3877 3878 - Added support for the LPC177x and LPC178x families. Most of this is 3879 the work of Rommel Marcelo. 3880 3881 * LPC17xx Boards: 3882 3883 - Added support for Zilogic System's ARM development Kit, ZKIT-ARM-1769. 3884 From Rashid. 3885 - The port for the WaveShare Open1788 board is now functional. Basic 3886 OS test and NuttShell (NSH) configurations are functional. More 3887 driver development and testing is needed (from Rommel Marcelo). 3888 3889 * LPC17xx Drivers: 3890 3891 - Added an SD card MSI driver for the LPC178x. The driver is marginally 3892 functional but requires DMA capability to be reliable. 3893 3894 * STM32 3895 3896 - Support extended to handle the STM32 F3 family (Cortex-M4 with F1-like 3897 peripherals). 3898 3899 * STM32 Boards 3900 3901 - Added support the STMicro STM32F3Discovery board (STM32 F3). 3902 3903 * Stellaris LM3S/LM4F 3904 3905 - Basic support for the LM4F120 family is in place, but untested (mostly 3906 from Jose Pablo Carballo). 3907 3908 * Stellaris LM4F Boards 3909 3910 - Add support for the LM4F120 LaunchPad (untested). 3911 3912 * Networking: 3913 3914 - select() should now allocate a little less memory. 3915 3916 * Memory Management: 3917 3918 - Extended to support multiple heaps. This is used as part of 3919 the kernel build in order to support separator user- and 3920 kernel-mode heaps. 3921 - The stand-alone memory manager test had to be removed. It 3922 was too entangled and made extension of the memory manager 3923 nearly impossible. This is a loss. 3924 3925 * Build System: 3926 3927 - Several configurations converted to use the kconfig-frontends 3928 configuration tool. There are still many more that need to 3929 be converted. 3930 3931 * C Library: 3932 3933 - Move the workqueue logic into the C library. There is now a 3934 special user-space version of the work queue (which will only 3935 be used with a NuttX kernel build). 3936 - Implementation of itoa() contributed by Ryan Sundberg. 3937 3938 * Applications: 3939 3940 - The NSH builtin task logic now uses task_spawn() to start builtin 3941 applications. 3942 - The OS test now includes a test cased to verify task_restart(). 3943 3944Efforts In Progress. The following are features that are partially 3945implemented but present in this release. Most are expected to be fully 3946available in NuttX 6.27. 3947 3948 * LM4F120 LaunchPad port. Code is in place, but nothing has been tested. 3949 3950 * WaveShare Open1788 port. This port as actually complete and 3951 functional. However, there is still ongoing development and 3952 testing of drivers. 3953 3954 * Kernel Build. Much progress has been made, but there kernel build is 3955 not yet fully functional due to several user resources that are not yet 3956 properly disentangled from the kernel blob. 3957 3958 * Conversion of old configurations to use the kconfig-frontends 3959 tool is an ongoing effort that will continue for some time. 3960 3961Bugfixes (see the ChangeLog for details). Some of these are very important: 3962 3963 * Tasking: 3964 3965 - The wrong PID was being signalled with SIGCHLD. It should be 3966 the PID of the task that create the task group, not the ID of 3967 the last thread to leave the task group. 3968 - Added logic so that some internal resources and states are recovered 3969 when tasks are deleted or restarted. Handle cases where there are 3970 outstanding timed events pending when tasks are deleted or restarted. 3971 3972 * ARMv7-M: 3973 3974 - Several fixes to the MPU control logic. 3975 3976 * Drivers: 3977 3978 - Removable serial drivers race conditions fixed. 3979 - MAX11802 timing bug (from Petteri Aimonen). 3980 3981 * STM32 Drivers: 3982 3983 - Handle cases were SPI DMA logic fails if sem_wait is awakened 3984 by a signal. Need to clear error flags to prevent corruption of 3985 subsequent transfers. Also, bit count should not be changed while 3986 the SPI peripheral is enabled (from Petteri Aimonen). 3987 - Fixes to the OTG FS device driver from Petteri Aimonen. 3988 - Fix typos in DMA register header file (from Yan T.) 3989 3990 * Graphics: 3991 3992 - Correction to the hyphen in the SANS 17x22 font (from Petteri 3993 Aimonen). 3994 3995 * Networking: 3996 3997 - Corrected errors in the socket poll/select logic. Additional 3998 state logic was needed to detect if the socket is still connected 3999 before starting the poll wait. (bug reported by Qiang Yu). 4000 4001 * Memory Management: 4002 4003 - mallinfo() should hold the memory manager semaphore (from Petteri 4004 Aimonen. 4005 4006 * Build System: 4007 4008 - Resolved several build errors reported by Mike Smith. 4009 4010 * Applications: 4011 4012 - Fixed an NSH memory leak: Needed to detach after creating each 4013 pthread. 4014 - readline() now returns EOF on any failure (instead of a negated 4015 errno value). This is because the underlying read is based on 4016 logic similar to getc. The value zero (meaning end-of-file) 4017 was being confused with a NUL. So if a NUL was received, the 4018 NSH session would terminate because it thought it was the end of 4019 file. 4020 4021NuttX-6.27 4022---------- 4023 4024The 94th release of NuttX, Version 6.27, was made on April 28, 2013, 4025and is available for download from the SourceForge website. Note 4026that release consists of two tarballs: nuttx-6.27.tar.gz and 4027apps-6.27.tar.gz. Both may be needed (see the top-level nuttx/README.txt 4028file for build information). 4029 4030Additional new features and extended functionality: 4031 4032 * OS Initialization: 4033 4034 - Add missing registration of /dev/zero. Registration of /dev/null 4035 should depend upon conditional compilation. From Ken Pettit. 4036 4037 * Tasking: 4038 4039 - Added a new interface to set aside memory on the task's stack. This 4040 is used (at least in the kernel build) to hold task arguments. 4041 - Remove up_assert_code(). One assertion routine is enough. 4042 4043 * Kernel Build: 4044 4045 - Extensive changes were made to support the kernel build mode. In 4046 this mode, NuttX is built as a monolithic kernel. NuttX is built 4047 as a separate kernel mode "blob" and the applications are built 4048 as a separate user mode "blob". The kernel runs in kernel mode and 4049 the applications run in user mode (with the MPU restricting user 4050 mode accesses). Access to the kernel from the user blob is only 4051 via system calls (SVCalls). 4052 - Kernel build configurations for the Open1788 board and for the 4053 STM32F4Discovery now execute correctly. 4054 - Changes were made to task and thread start-up routines, signal 4055 handling, data structures, ARMv7-M SVCalls, stack management 4056 interfaces, 4057 4058 * Drivers: 4059 4060 - Driver for the ST7567 LCD Display Module from Univision Technology 4061 Inc. Contributed by Manikandan.S 4062 - SPI initialize functions renamed so that multiple SPI blocks can 4063 be initialized. 4064 - Extended to support the RAMTRON FM25V01 device. Contributed by 4065 Lorenz Meier 4066 - Serial drivers: TIOCSERGSTRUCT ioctls now conditioned on 4067 CONFIG_SERIAL_TIOCSERGSTRUCT 4068 4069 * ARMv7-M (Cortex-M3/4): 4070 4071 - Added support for modifiable interrupt vectors in RAM 4072 4073 * nuvoTon NUC1xx: 4074 4075 - Added kernel build support 4076 4077 * Freescale Kinetis: 4078 4079 - Add kernel build support 4080 - Add support for the Kinetis L family of Cortex-M0+ MCUs. Contributed 4081 by Alan Carvalho de Assis. 4082 4083 * LPC17xx: 4084 4085 - Now holds off sleep mode in the IDLE loop is DMA is in progress 4086 (because sleep mode will disable CPU SRAM). 4087 4088 * LPC17xx Boards: 4089 4090 - ZKIT-ARM-1769: Now supports the ST7567 LCD display module. Added 4091 an nxhello configuration for testing (Manikandan.S). 4092 - ZKIT-ARM-1769: Add support for both CAN1 and CAN2. Contributed by 4093 M.Kannan 4094 4095 - Open1788: Basic support for the WaveShare Open1788 board is complete 4096 with working OS test, NSH, and graphics configurations. 4097 - Open1788: Integrated the LPC178x LCD driver with the WaveShare display. 4098 Touchscreen support is included, however, there appears to be an 4099 issue with the Open1788 touchscreen interrupt signal. 4100 - Open1788: Now supports SDRAM (used to provide the LCD framebuffer). 4101 - Open 1788: Reversed sense of the IDLE LCD. It is now off when the 4102 LPC17 is sleeping and on when awake. That is much a better visual 4103 indication of the dynamic CPU load 4104 4105 * LPC17xx Drivers: 4106 4107 - Added an LCD framebuffer driver for the LPC177x/8x family. 4108 - Implemented LPC17xx GPDMA support. 4109 - Integrated the LPC17xx GPDMA support into the SD card driver. 4110 - SSP driver adapted to work with the LPC178x family. 4111 - Separate LPC176x and LPC178x GPIO logic; this logic is too different 4112 to maintain in one file with conditional compilation. 4113 - Re-design of the GPIO logic for the LPC178x family by Rommel Marcelo. 4114 4115 * LPC43xx: 4116 4117 - Added kernel build support 4118 4119 * STM32: 4120 4121 - Added support for kernel mode build. 4122 - Added architecture support for the STM32 F427/F437 chips. Contributed 4123 by Mike Smith 4124 4125 * STM32 Boards: 4126 4127 - Added a configuration to support a kernel mode build of the OS test 4128 on the STM32F4Discovery 4129 4130 * Stellaris LM3S/LM4F: 4131 4132 - Added kernel build support 4133 - Added support for the 7 UARTs on the LM4F120 4134 4135 * Stellaris LM4F Boards: 4136 4137 - Added scripts and instructions to simplify use of OpenOCD with ICDI 4138 (JP Carballo) 4139 - The basic for the Stellaris LM4F120 Launchpad is complete. This 4140 includes support for OS test and NSH configurations. Additional 4141 driver development is needed. 4142 4143 * Build System: 4144 4145 - Directories where the same sources files are used to build different 4146 objects in the first and second pass kernel builds need to keep those 4147 objects in separate directories so that they are not constantly 4148 rebuilt. 4149 4150 * Applications: 4151 4152 - apps/system/ramtest: Add a simple memory test that can be built 4153 as an NSH command. 4154 4155 * Tools: 4156 4157 - kconfig2html is a new tool which will replace the hand-generated 4158 documentation of the NuttX configuration variables with auto- 4159 generated documentation. 4160 4161Efforts In Progress. The following are features that are partially 4162implemented but present in this release. Most are expected to be fully 4163available in NuttX 6.28. 4164 4165 * A port to the Freescale Freedom KL25Z is complete but not yet stable 4166 enough. The KL25Z is a low-cost Cortex-M0+ part with 128KB of FLASH 4167 and 16KB of SRAM. This is is the effort of Alan Carvalho de Assis. 4168 4169 * Conversion of old configurations to use the kconfig-frontends 4170 tool is an ongoing effort that will continue for some time. 4171 At this time, only 32% of the configurations have been converted 4172 to use the kconfig-frontends tools. 4173 4174Bugfixes (see the ChangeLog for details). Some of these are very important: 4175 4176 * Tasking: 4177 4178 - Fixed a critical bug: When there is pending C buffered output 4179 and the system is very busy, the a pthread may be blocked at 4180 a critical point when trying to exit. Blocking at this critical 4181 point would cause crashes. All entire task/thread exit logic 4182 paths were reviewed and failsafe mechanisms were put in place 4183 to assure that exitting tasks never block after task teardown 4184 has been started. 4185 4186 * ARMv6-M: 4187 4188 - Fixed parameter passing for all system call inline functions with > 3 4189 parameters 4190 - Fixed a major problem: The Cortex-M0 has no BASEPRI register but the 4191 logic of NuttX-6.26 was using it to manage interrupts. Switch to 4192 using the PRIMASK instead. This means that hardfaults will (again) 4193 occur when SVC instructions are executed 4194 4195 * ARMv7-M: 4196 4197 - Corrected Correct MPU sub-region settings for unaligned regions. 4198 - In exception handling with CONFIG_NUTTX_KERNEL, need to explicitly 4199 set and clear the privilege bit in the CONTROL 4200 - Fixed parameter passing for all system call inline functions with > 3 4201 parameters 4202 4203 * Drivers: 4204 4205 - Support for O_NONBLOCK was not supported in the "upper half" 4206 serial driver. 4207 - PL2303 compilation errors 4208 4209 * Stellaris LM3S/4F: 4210 4211 - Corrected typos in alternate function definitions. 4212 4213 * LPC17xx Drivers: 4214 4215 - Added a work-around for an ADC errata. From Chris Taglia 4216 - Only one ADC pin was configured. Need to configure all that 4217 are in the ADC0 set. From MKannan 4218 4219 * File Systems: 4220 4221 - The FAT logic was not making a distinction between directory 4222 non-existence and file non-existence so when it you try to 4223 create a file in a non-existent directory, it would create a 4224 file with the name of the missing directory. Reported by Andrew 4225 Tridgell 4226 - Several fixes to the FAT file system from Ronen Vainish. These 4227 fixes mostly involve the logic to extend directory clusters for 4228 the case of long file names but also include a few important 4229 general fixes (such as for storing 32 bit FAT values) 4230 - mkfatfs was writing the boot code to the wrong location. From 4231 Petteri Aimonen 4232 4233 * Networking: 4234 4235 - Fixed a compilation error when socket options are are disabled. 4236 Reported by Daniel O'Connor 4237 4238 * C Library: 4239 4240 - Corrected an error in sscanf. If %n occurs in the format statement 4241 after the input data stream has been fully parsed, the %n format 4242 specifier will not be handled. Reported by Lorenz Meier 4243 - strchr(str, '\0') should return a pointer to the end of the string, 4244 not NULL. From Petteri Aimonen 4245 4246 * Build System: 4247 4248 - Fix naming of NuttX target if EXEEXT is defined. 4249 4250 * Applications: 4251 4252 - OS test: Fix timing error in non-cancelable thread test. 4253 - NSH: Correct the test of the skip input parameter. Was limiting the 4254 range to <= count. From Ken Petit. 4255 4256NuttX-6.28 4257---------- 4258 4259The 95th release of NuttX, Version 6.28, was made on June 14, 2013, 4260and is available for download from the SourceForge website. Note 4261that release consists of two tarballs: nuttx-6.28.tar.gz and 4262apps-6.28.tar.gz. Both may be needed (see the top-level nuttx/README.txt 4263file for build information). 4264 4265Additional new features and extended functionality: 4266 4267 * File Systems: 4268 4269 - SMART FLASH file system (contributed by Add Ken Pettit). 4270 4271 * MTD (FLASH) Drivers: 4272 4273 - Add support of MTD partitions via a new MTD driver that manages a 4274 set of MTD devices, each managing a subset of the FLASH region 4275 managed by the parent MTD driver. 4276 - Extended the MTD interface to provide an (optional) method to 4277 perform byte oriented writes if supported by the FLASH part. 4278 - M25Px driver re-architected to use the byte write capability (when 4279 possible) and to use 4KB sectors for the erase block size when the 4280 part supports it (from Ken Pettit). 4281 4282 * LCD Drivers: 4283 4284 - New interface definitions to support audio devices (from Ken Pettit) 4285 and alphanumeric, segment LCDs. 4286 4287 * Wireless Drivers: 4288 4289 - Added new driver for the wireless nRF24L01+ transceiver (from 4290 Laurent Latil). 4291 4292 * Calypso: 4293 4294 - Added support for the Pirelli DP-L10 phone (from Craig Comstock via 4295 Alan Alan Carvalho de Assis) 4296 4297 * STM32: 4298 4299 - Added an option to conditionally disable the "wfi" sleep mode. This 4300 is needed with certain JTAG debuggers to prevent the debug session 4301 from being disconnected (from Ken Pettit). 4302 - Added support for the STM32L (STM32L15X/STM32L16x) family. 4303 - Added STM32F103C4 and F103C8 chip support (from Laurent Latil). 4304 - Added a new interface function, stm32_dmacapable() that can be used 4305 to determine if DMA is possible from the specified memory address 4306 (from Petteri Aimonen) 4307 4308 * STM32 Drivers: 4309 4310 - If CONFIG_STM32_DMACAPABLE is defined, the STM32 SPI driver now uses 4311 stm32_dmacapable() to determine if it is possible to perform DMA 4312 from the specified address. This change is important for the STM32 4313 F4 which may have SPI data buffers allocated on the stack in CCM 4314 memory which cannot support the DMA (from Petteri Aimonen). 4315 4316 * STM32 Boards: 4317 4318 - Support added for the MikroElektronika Mikromedia for STM32F4 4319 development board (from Ken Pettit) with the MIO283QT2 LCD and 4320 touchscreen. Several graphics configurations are included. 4321 - The HY-mini STM32v board now uses the common SSD1289 driver 4322 and supported the card detect interrupt. Several new 4323 configurations also added and some removed (from Laurent Latil). 4324 - Support added for the R65105-based LCD that comes with some 4325 HY-Mini STM32v boards (from Christian Faure). 4326 - Added basic support for the STM32L-Discovery board. Drivers 4327 for the on-board segment LCD are included. 4328 - Added support for the STM32 Tiny development board based on the 4329 STM32 F103C8T6 MCU. This includes support for the nRF24L01+ 4330 wireless on the board (from Laurent Latil). 4331 4332 * Stellaris LM3S/LM4F: 4333 4334 - Support added for a TI/Stellaris internal FLASH MTD driver (from Max 4335 Holtzberg). 4336 4337 * Stellaris LM4F Boards: 4338 4339 - The LM3S6965-EK now has configurations for the UDP discovery tool and 4340 for the TCP echo server (both from Max Holtzberg) 4341 4342 * Atmel ATSAM3/4: 4343 4344 - Reorganized, renamed, and updated directory structure to better 4345 support additional members of the SAM3/4 family. 4346 - Added support for both the ATSAM4S and ATSAM4L families. The 4347 ATSAM4S is similar to the ATSAM3U, but the ATSAM4L is quite a 4348 different beast, really much more akin to the AVR32s SoCs but 4349 with a Cortex-M4. 4350 4351 * Atmel ATSAM3/4 Boards: 4352 4353 - Added support for the Atmel SAM4L Xplained Pro development board. 4354 This board features the ATSAM4LC4C MCU (Cortex-M4 with 256KB FLASH + 4355 32KB SRAM). 4356 - Added support for the Atmel SAM4S Xplained development board. This 4357 board features the ATSAM4S16C MCU (Cortex-M4 with 1MB FLASH + 128KB 4358 SRAM). 4359 4360 * PIC32MX Boards: 4361 4362 - Added support for the 1602 segment LCD on-board the Sure PIC32MX 4363 board. This board will now also support a USB NuttX console and 4364 the USB monitor test program. 4365 4366 * Build System: 4367 4368 - Clean-up of almost all .gitignore files: Made scope of ignore to be 4369 only the current directory; Ignore .dSYM files in directories where 4370 .exe's may be built. Also, in Makefiles, clean .dSYM files in 4371 directories where an .exe may be built. 4372 - Standardize and consolidated all build-as-an-NSH-application 4373 configuration settings. Now only CONFIG_NSH_BUILTIN_APPS is 4374 sufficient to build an application, test, or or example as an NSH 4375 builtin application. 4376 - Added support for a generic ARM, ARMv6-M and ARMv7-M Windows EABI 4377 toolchains. 4378 4379 * Libraries: 4380 4381 - Added encoder/decoder logic to marshal and serialize special segment 4382 LCD (SLCD) commands intermixed with normal ASCII data. This is the 4383 similar to the encoding/decoding logic that is used to marshal 4384 special commands from a keyboard. 4385 - Add dprintf() and vdprintf() (the latter from Andrew Tridgell). 4386 - Add an application that may be built as an NSH builtin command that 4387 will erase FLASH using a flash_eraseall NSH command (from Ken Pettit). 4388 4389 * Applications: 4390 4391 - Added an MTD partition test/examples. Currently used with (1) the a 4392 simulation configuration to test MTD partitions on a RAM emulation 4393 of FLASH and (2) with the Mikroe STM32F4 configuration. 4394 - Added a test/example to verify alphanumeric, segment LCDs. 4395 - Added a simple single threaded, poll based TCP echo server based 4396 on W. Richard Stevens UNIX Network Programming Book (from Max 4397 Holtzberg). 4398 - Added several tests of the SMART block driver and file system (from 4399 Ken Pettit). 4400 - Added a runtime configuration for the UDP discover utility (from 4401 Max Holtzberg). 4402 - Added an example application to demo the nRF24L01 driver (from 4403 Laurent Latil). 4404 - New and modified NSH commands: 4405 Added a -h option to the df command to show the volume information 4406 in human readable form (from Ken Petit). 4407 Add a new mksmartfs command (from Ken Petit). 4408 4409Efforts In Progress. The following are features that are partially 4410implemented but present in this release. Most are expected to be fully 4411available in NuttX 6.28. 4412 4413 * Audio System: 4414 4415 - A complete audio subsystem include CODECs, higher level management, 4416 interface definitions, and audio drivers was contributed by Ken 4417 Pettit. This work has not been completely verified as of this 4418 release and so is categorized as a work-in-progress. At present, 4419 progress is blocked due to issues interfacing with the VS1053 4420 audio DAC on the Mikroe STM32F4 board. 4421 4422 * kconfig-fronted Configuration: 4423 4424 - Conversion of old configurations to use the kconfig-frontends 4425 tool is an ongoing effort that will continue for some time. 4426 At this time, only 43% of the configurations have been converted 4427 to use the kconfig-frontends tools. 4428 4429Bugfixes (see the ChangeLog for details). Some of these are very important: 4430 4431 * Tasking: 4432 4433 - Modify assertion in the priority inheritance logic that is reported 4434 to cause false alarm assertions. 4435 4436 * Kernel Build: 4437 4438 - Typo in syscall proxying logic corrected by Ken Pettit. 4439 4440 * Networking: 4441 4442 - Poll setup/teardown logic should ignore invalid (i.e., negative) 4443 file descriptors (from Max Holtzberg). 4444 - When readahead data is available, the network poll() logic should 4445 set POLLIN (or POLLRDNORM), not POLLOUT (from Max Holtzberg). 4446 4447 * LCD Drivers: 4448 4449 - Correct power controls in the MIO283QT2 LCD driver. 4450 4451 * USB Device Controller Drivers: 4452 4453 - Change the default IN request buffer size from 64 to 96. This will 4454 avoid requests of exactly MAXPACKET size and, hence, avoid so many 4455 NULL packets. Also, fix the OUT request buffers size to exactly the 4456 max packet size. It really cannot be any other size. 4457 4458 * STM32 Drivers: 4459 4460 - Correct some bad STM32 F1 DMA definitions that crept into the system 4461 a few months ago a broke STM32 F1 DMA (from Laurent Latil) 4462 - Fixed an error in NULL packet handling in the STM32 F1 USB device 4463 controller driver: If the NULL-packet needed flag ever got set, 4464 then it was not being cleared and infinite NULL packets resulted. 4465 This only affects the CDC/ACM class and was the cause of the 4466 failures using the USB CDC/ACM device as a NuttX console. With this 4467 change the USB works well as an alternative NuttX console device for 4468 the STM32 F1 family. 4469 - Correct some bad condition compilation in the RCC logic (CONFIG_ 4470 missing from setting names). This affects some STM32 FLASH pre- 4471 fetch settings (from Lorenz Meier). 4472 - Change for hardware flow control support for STM32. The change also 4473 fixes incorrect operation of USART2 and UART5 in current master 4474 (from Lorenz Meier and Mike Smith). 4475 - Fixed a backward conditional in USB OTG FS host controller driver 4476 that prevented detection of disconnection events (from Scott). 4477 4478 * LPC17xx Drivers: 4479 4480 - I2C interrupt control. Also correction for a single byte read 4481 timeout error (from M. Kannan). 4482 4483 * Freescale Kinetis: 4484 4485 - Freedom KL25Z pin multiplexing and LED control corrections (from 4486 Alan Carvalho de Assis) 4487 4488 * PIC32MX: 4489 4490 - Fix NULL packet handling in the PIC32 USB device driver. Without 4491 this fix the CDC/ACM driver cannot be used reliably with the PIC32 4492 USB. With this change the USB works well as an alternative NuttX 4493 console device. 4494 4495 * Graphics: 4496 4497 - Default priorities for NxWidget and NxWM threads should be 100, 4498 not 50, to be consistent with other default priorities. 4499 4500 * Applications: 4501 4502 - Remove the CONFIG_EXAMPLES_NXTEXT_NOGETRUN option from the NXTEXT 4503 example. The test logic was bad for the case where this options is 4504 not selected. Also, completed the empty Kconfig file. 4505 - C++ name mangling was occurring when this example is built as an NSH 4506 built-in application causing the entry to be undefined when called 4507 from C code. 4508 - Add some missing NSH library configuration values (from Lorenz 4509 Meier). 4510 4511NuttX-6.29 4512---------- 4513 4514The 96th release of NuttX, Version 6.29, was made on July 31, 2013, 4515and is available for download from the SourceForge website. Note 4516that release consists of two tarballs: nuttx-6.29.tar.gz and 4517apps-6.29.tar.gz. Both may be needed (see the top-level nuttx/README.txt 4518file for build information). 4519 4520Additional new features and extended functionality: 4521 4522 * Drivers: 4523 4524 - Generalized the SSD1306 driver and added support UG-2832HSWEG04 4525 which is very similar to the existing support for the 4526 UG-2864HSWEG01. 4527 - Added support for a generic bit-bang SPI driver. This includes 4528 both a common "upper half" driver as well as a platformp-specific 4529 "lower half" dirvers based on a common "template." 4530 4531 * ARMv7-A, Cortex-A5 4532 4533 - Added support for the ARMv7-A architecture and the Cortex-A5 in particular. 4534 4535 * ARMv7-M, Cortex-M3/4 4536 4537 - Modified how some registers are copied during a context switch (with 4538 lazy FPU register saving). This should save some context switching 4539 time when the context switch is due to interrupt level processing. 4540 4541 * STM32: 4542 4543 - Added support for a separate CCM heap. This may be useful for 4544 segregating allocations for CCM (which cannot be used for DMA) 4545 from other allocations (that may be used used for DMA). 4546 4547 * STM32 Drivers: 4548 4549 - DAC: Added support for DAC DMA (contributed by John Wharington). 4550 - I2C: An I2C driver for the STM32 F3 family (from John Wharington). 4551 4552 * Atmel AT91 SAM/4: 4553 4554 - Add support for SAM3X and SAM3A chips 4555 4556 * Atmel AT91 SAM/4 Drivers: 4557 4558 - Re-architect the SAM3/4 SPI driver so that is it compatible with the 4559 SPI drivers of other MCUs. 4560 - Added register definition file for the SAM4L LCD peripheral. 4561 - Added SAM4L PDCA register definition file 4562 4563 * Atmel AT91 SAM/4 Boards: 4564 4565 - SAM4L-Xplained: Added support for the SPI-based SD card on the I/O1 4566 module. 4567 - SAM4L-Xplained: Added a driver for the LED1 segment LCD module. 4568 - SAM4L-Xplained: Added support for the UG-2832HSWEG04 OLED on the 4569 SAM4L Xplained Pro's OLED1 module 4570 - SAM4S-Xplained: Added support for on-board 1MB SRAM 4571 - Arduino Due: Basic support for the Arduino Due (SAM3X) is now 4572 included. 4573 - SAM3U-EK: The touchscreen is now functional. 4574 4575 * Atmel AT91 SAMA5D3 4576 4577 - Added support for the Atmel AT91SAMA5D3 Cortex-A5 chip family. 4578 4579 * Atmel AT91 SAMA5D3 Boards 4580 4581 - Added support for the Atmel SAMA5D3x-EK boards which use the AT9 4582 SAMA5D3x chips (x=1,3,4,5). 4583 4584 * Freescale KL25Z Drivers 4585 4586 - Freescale KL25Z TSI register definitions and example TSI driver for 4587 the Freedom KL25Z board from Alan Carvalho de Assis. 4588 - Added SPI driver and register definitions for the Freescale KL25Z. 4589 - Added a framework for controlling SPI-related discrete inputs and 4590 outputs. Taken from work by Alan Carvalho de Assis 4591 4592 * Build System: 4593 4594 - New sub-directories to hold SPI-related files: includes/nuttx/spi.h 4595 moved to include/nuttx/spi/.; SPI-related Kconfig info moved from 4596 drivers/Kconfig to drivers/spi/kconfig. 4597 - Finally... I changed the naming of configuration variables like 4598 CONFIG_DRAM_ to CONFIG_RAM_. This has bothered me for a long time 4599 since most boards don't have DRAM. The more generic RAM naming 4600 should not produce so much cognitive dissonance 4601 4602 * Libraries: 4603 4604 - Added CRC16 support. 4605 4606 * Applications: 4607 4608 - Added Zmodem file transfer support. This may be used as an embedded 4609 library or may be built as 'sz' and 'rz' commands that can be 4610 executed from NSH. 4611 - C++ initializers should be set once and, preferably, in the context 4612 of the task that uses any C++ statically initialized classes. This 4613 only becomes an issue if cxxtest or helloxx are built as NSH builtin 4614 applications. Then you want the initialization done in cxxtext or 4615 helloxx and not in NSH (and certainly not twice). Added 4616 configuration options to control who does the C++ initialization. 4617 NSH now does not do C++ initialization be default and must be 4618 configured to do otherwise. Conversely, cxxtest and helloxx 4619 will always do C++ initialization unless configured do otherwise. 4620 - examples/cxxtext: Add ostream test as provided by Michael. 4621 - NSH: Added a 'cmp' command that can be used to compare two files 4622 for equivalence. Returns an indication if the files differ. 4623 Contributed by Andrew Tridgell (via Lorenz Meier). 4624 4625Efforts In Progress. The following are features that are partially 4626implemented but present in this release. They are not likely to be 4627completed soon. 4628 4629 * Audio System: 4630 4631 - A complete audio subsystem include CODECs, higher level management, 4632 interface definitions, and audio drivers was contributed by Ken 4633 Pettit. This work has not been completely verified as of this 4634 release and so is categorized as a work-in-progress. At present, 4635 progress is blocked due to issues interfacing with the VS1053 4636 audio DAC on the Mikroe STM32F4 board. 4637 4638 * kconfig-fronted Configuration: 4639 4640 - Conversion of old configurations to use the kconfig-frontends 4641 tool is an ongoing effort that will continue for some time. 4642 At this time, only 45% of the configurations have been converted 4643 to use the kconfig-frontends tools. 4644 4645Bugfixes (see the ChangeLog for details). Some of these are very important: 4646 4647 * File Systems: 4648 4649 - Fixed compilation error if no file systems are enabled: Change 4650 error to ERROR. 4651 - Read-Ahead/Write buffering: Correct typos that can cause failures 4652 in some configurations (From Chia Cheng Tsao). 4653 4654 * Drivers 4655 4656 - Remove the wait for the touchscreen busy bit in the ADS7843E driver. 4657 From my reading of the ADS7843 spec, it would not be appropriate to 4658 wait for the BUSY bit to de-asserted anyway (since it is only de- 4659 asserted when we read the data). Most boards do not even bother to 4660 provide the BUSY bit. 4661 - MMC/SD SPI based driver: Driver needs to make sure that the SPI 4662 mode and data width are correct. 4663 - ENC28J60: Change buffer ordering to work around Errata. From Dave 4664 (ziggurat29). 4665 4666 * USB Device Controller Drivers: 4667 4668 - Fixed a typo in the composite device driver unitialization logic. 4669 DEV1 should be DEV2 in one case. 4670 - usbdev.h: Fix some typos that cause compiler errors when 4671 CONFIG_USBDEV_DMA and CONFIG_USBDEV_DMAMEMORY are selected (From 4672 Chia Cheng Tsao). 4673 4674 * ARM9: 4675 4676 - Fix a bug (uninitialized register error) that crept in the ARM9 4677 boot-up code several years ago. Obviously no one has used the 4678 ARM9 NuttX port for years! 4679 4680 * STM32 Drivers: 4681 4682 - Fix STM32 OTF FS endpoint allocation logic. Apparently the same 4683 endpoint can be allocated as both an IN or an OUT endpoint. The 4684 existing implementation only supported one allocation, either IN or 4685 OUT. This resulted in failures to allocate endpoints when used with 4686 the CDC/ACM + MSC composite driver (From Chia Cheng Tsao). 4687 - SDIO: Add support for the data block end (DBCKEND) interrupt to 4688 terminate transfers (From Chia Cheng Tsao). 4689 - DAC: Fixed numerous DAC driver errors and added support for DAC 4690 DMA (contributed by John Wharington). 4691 4692 * SAM3/4: 4693 4694 - SAM4S: Correct configuration of PIO pins for SAM4S B and C peripherals. 4695 - Need to disable write protection before configuring PIO pins. 4696 - GPIO configuration logic must protect against re-entrancy. 4697 - Clocking must be applied to the SMC module for the 3X and 3A family in 4698 order for the NFC SRAM to be functional. 4699 - Fixed some errors for interrupts on ports D-F. 4700 4701 * SAM3/4 Drivers: 4702 4703 - Common SPI driver: Fix SPI mode setting. In the SAM3/4 family, the 4704 clock phase control (CPHA) is inverted (NPHA). Also fixed an 4705 incorrect pointer test. Was checking if the wrong pointer was NULL. 4706 4707 * SAM3/4 Boards: 4708 4709 - SAM3U-EK: Fix polarity of the /PENIRQ signal (it is active low). 4710 The SAM3U-EK board now runs at 96MHz. 4711 4712 * Applications: 4713 4714 - apps/examples/nxhello: Minor fix for compilation error when the 4715 display resolution is low (< 8bpp) due to a typo that has been there 4716 for a long time. Also Correct default colors when in Y1 code mode. 4717 - apps/system/ramtest: The RAM test was not correctly built 4718 into the configuration and build system. 4719 - apps/examples/composite: Change to prevent some false alarm debug 4720 assertions (From Chia Cheng Tao). 4721 4722NuttX-6.30 4723---------- 4724 4725The 97th release of NuttX, Version 6.30, was made on September 14, 2013, 4726and is available for download from the SourceForge website. Note 4727that release consists of two tarballs: nuttx-6.30.tar.gz and 4728apps-6.30.tar.gz. Both may be needed (see the top-level nuttx/README.txt 4729file for build information). 4730 4731Additional new features and extended functionality: 4732 4733 * Common Drivers: 4734 4735 - Extended TERMIOS support for serial and CDC/ACM drivers. From 4736 Mike Smith, Andrew Tridgell and Lorenz Meier. 4737 - Added option to disable serial port reordering. From Lorenz Meier. 4738 - Several changes to the USB host control interface and extensions to 4739 common USB host logic to handle host controllers with multiple 4740 downstream ports in the root hub. 4741 - USB device tracing: Extended decoding and stringifying of USB trace 4742 output to include trace output from class drivers. 4743 - USB host tracing: Added support for USB host tracing similar in 4744 some ways to USB device tracing: Stringification is an inherent 4745 part of the trace decoding (not an option). Only available in the 4746 SAMA5 USB host drivers now. 4747 4748 * Networking / Network Drivers 4749 4750 - Support for the Microchip ENCX24J600 Ethernet driver from Max 4751 Holtzberg 4752 - CC3000 Networking. Initial support for the TI CC3000 network 4753 module on the Freescale Freedom-KL25Z board from Alan Carvalho 4754 de Assis. This is still a work in progress. 4755 4756 * ARMv7-A, Cortex-A5 4757 4758 - Restructured some MMU-related logic and header files. 4759 - Hooks added for Cortex-A8, but not yet used. 4760 4761 * STM32 Drivers: 4762 4763 - STM32 SPI: nbits() interface extended to control bit order as well 4764 as bit width (from Teemu Pirinen) 4765 4766 * STM32 Boards 4767 4768 - Olimex STM32-P107: Incorporate ENCX24J600 networking for the Olimex 4769 STM32 P107 board. 4770 - LeafLabs Maple Board: Add board support for the LeafLabs Maple and 4771 Maple Mini boards. From Librae. 4772 4773 * Atmel AT91 SAMA5D3x 4774 4775 - Added support for the SAMA5 DMAC controllers. 4776 - DMA-capable drivers for the SAMA5 SPI peripherals. 4777 - DMA-capable HSCMCI 0/1/2 drivers. 4778 - Support for PIO interrupts 4779 - Utilities for intelligent conversions between physical and virtual 4780 addresses. 4781 - Added USB host controller drivers for both the OHCI (low- and full- 4782 speed) peripheral and the ECHI (high-speed) peripheral. 4783 - Added USB device controller for the SAMA5 UDPHS peripheral (full- 4784 and high-speed). 4785 - Added a Two Wire (TWI) driver. This is a variant of I2C. 4786 4787 * Atmel AT91 SAMA5D3x-EK Development Boards 4788 4789 - Now supports onboard SDRAM. Modified heap initialization logic 4790 to include SDRAM if configured. 4791 - Integrated a FAT file system on the on-board SPI-based AT25 serial 4792 FLASH 4793 - Integrated HSMCI0 and HSMCI1 support for the microSD and full file 4794 SD card slots. Includes PIO interrupts for card detection events. 4795 - Integrated USB OHCI and ECHI host and high-speed peripheral support. 4796 File system on AT25 now exported via Mass Storage Class. Includes 4797 PIO VBUS controls. 4798 - Integrated the TWI driver and the I2C tool. Added support for an 4799 external AT24 serial EEPROM. 4800 4801 * Applications: 4802 4803 - apps/examples/cc3000. Initial support for the TI CC3000 network 4804 module on the Freescale Freedom-KL25Z board from Alan Carvalho de 4805 Assis. Includes the test to verify the CC3000. 4806 - apps/examples/usbmsc: apps/examples/usbstorage renamed usbmsc for 4807 consistency. Change submitted by CCTSAO. 4808 - apps/system/usbmonitor: The USB monitor has been extended so that 4809 it can be used with USB device or host trace data. 4810 4811Efforts In Progress. The following are features that are partially 4812implemented but present in this release. They are not likely to be 4813completed soon. 4814 4815 * CC3000 Networking 4816 4817 - CC3000 Networking. Initial support for the TI CC3000 network 4818 module on the Freescale Freedom-KL25Z board from Alan Carvalho 4819 de Assis. This is still a work in progress. 4820 4821 * kconfig-fronted Configuration: 4822 4823 - Conversion of old configurations to use the kconfig-frontends 4824 tool is an ongoing effort that will continue for some time. 4825 At this time, only 46% of the configurations have been converted 4826 to use the kconfig-frontends tools. 4827 4828Bugfixes (see the ChangeLog for details). Some of these are very important: 4829 4830 * File Systems: 4831 4832 - ROMFS: Fix an error where long (>15) file names were read 4833 incorrectly from a ROMFS file system. From Mike Smith 4834 - NXFFS: Clean up some compiler warnings. 4835 4836 * Common Drivers 4837 4838 - MMC/SD driver: Correction for a bad return value when multiple 4839 block SDIO transfers are suppressed. By Andrew Tridgell. 4840 - USB HID keyboard and mass storage host-side class drivers: Fix some 4841 compilation errors and warnings when pre-allocated data structures 4842 are used. 4843 - USB device-side class drivers: Fix some compilations errors when 4844 DUALSPEED (i.e., full- and high-sped) support is enabled. 4845 - CDC/ACM and PL2303: Don't use max packetsize assigned to the endpoint 4846 when allocating request buffers; The default value of the endpoint 4847 max packetsize may be incorrect because the endpoint has not yet 4848 been configured. Really only an issue for high-speed endpoints. 4849 - USB Host Mast Storage Class: Fixed a problem that was causing some 4850 devices to fail to initialize: If device is returning fatal transfer 4851 errors while attempting to initialize, don't bother with the startup 4852 retries; abort immediately so that the device will be reset and we 4853 can try again with a better ready device. 4854 - USB Host Mast Storage Class: Correct a reference counting error: 4855 When an MSC device transfer fails while waiting for UnitTestReady, 4856 the reference count on the class was not being decremented. The end 4857 result is a memory leak as can be seen by the USB device numbers 4858 incrementing: sda, sdb, sdc, ... 4859 - USB Device CDC/ACM: Fix backward conditional compilation in the 4860 CDC/ACM driver with regard to remote wakeup and self-powered 4861 capabilities. From the PX4 team via Lorenz Meier, 4862 4863 * Networking / Network Drivers 4864 4865 - ARP IP harvesting: Correct backward condition in netmask task. 4866 From Max Holtzberg. 4867 - Network connection monitor: Fixes a race condition where a loss of 4868 connection may not be detected when the connection is lost before it 4869 has been accepted (from Max Holtzberg). 4870 - TCP/IP Backlog: Fix a critical bug in the TCP/IP backlog 4871 initialization: Only the first backlog buffer was getting added to 4872 the free list. From Max Holtzberg. 4873 - ENC28J60: Fixes and improvements back-ported from the ENCX24J600 4874 to the ENC28J60 by Max Holtzberg. 4875 4876 * STM32 Drivers: 4877 4878 - STM32 I2C fixes for the STM32 F3 family from John Wharington. 4879 - STM32 I2C Correct an error that crept into the STM32 F1 I2C 4880 driver with some recent changes. From Librae 4881 - STM32 F4: Added some missing CONFIG_SERIAL_TERMIOS support; Fixed 4882 some STM32 F4 Timer 8 pin configurations. From CCTSAO. 4883 - STM32 SDIO: If CONFIG_SDIO_BLOCKSETUP defined, OS would crash. Now 4884 Generate an error if CONFIG_SDIO_BLOCKSETUP is defined; that 4885 option is not yet supported by the STM32 SDIO driver. From CCTSAO 4886 - STM32 I2C Timers: Some CCER bit settings changed. Submitted by 4887 CCCTSAO. 4888 - STM32 CAN: Fix access to CAN filter registers. From the PX4 team 4889 via Lorenz Meier. 4890 - STM32 Kconfig: Fix STM32 UART7/8 Kconfig names and UART DMA. From 4891 the PX4 team via Lorenz Meier. 4892 4893 * LPC17xx Drivers 4894 4895 - Fix #endif with missing #if in USB host header file. Reported 4896 by Andrew Bradford, 4897 4898 * SAM3/4 Boards: 4899 4900 - Corrected DMA-related problems: Bad register definitions, parameters 4901 reversed in a function call. 4902 - Correct a race condition in the HSMCI driver when an interrupt 4903 occurs before the wait for the interrupt begins. 4904 - Peripheral clock setup: Correct a typo in a register name. 4905 4906 * Atmel AT91 SAMA5D3 4907 4908 - Order of some operations changed in boot-up logic to defer 4909 enabling of caching of memory regions until SDRAM is initialized. 4910 - Correct handling of spurious interrupts. 4911 4912 * Freescale KL25Z Drivers 4913 4914 - KL25Z SPI: Correct typo in name of a function. From Alan Carvalho 4915 de Assis. 4916 4917 * Applications: 4918 4919 - apps/examples/composite: Fix a typo that can cause a configuration 4920 error. From CCTSAO. 4921 - apps/examples/pwm: Clean-up some configuration confusion. 4922 - apps/netutils/dhcpd/dhcpd.c: Fixed calculation of the next lease 4923 address. From Paolo Messina. 4924 - apps/examples/usbmsc: Don't try to control USB trace if we are 4925 an NSH built-in task. In that case our attempts are inadequate 4926 and only interfere with with other logic that is attempting to 4927 to do the same thing (in NSH or in the USB monitor). 4928 - apps/examples/usbmsc: IMPORTANT bug fix: Change how the msconn 4929 works. Because of recent changes the msconn command was hanging. 4930 This was because the USB MSC start-up logic creates a pthread; 4931 Now waitpid() will wait until all members of the task group 4932 exit. So NSH was hanging in waitpid when msconn started even 4933 though msconn returned. The USB MSC logic really should not use 4934 a pthread, but we are stuck with that for now. The work-around 4935 is the msconn now daemonizes itself so that it so that the pthread 4936 is created in a different task group. 4937 - apps/nshlib: Fix NSH listing output for the case of a single file. 4938 From the PX4 team; provided by Lorenz Meier. 4939 4940NuttX-6.31 4941---------- 4942 4943The 98th release of NuttX, Version 6.31, was made on October 28, 2013, 4944and is available for download from the SourceForge website. Note 4945that release consists of two tarballs: nuttx-6.31.tar.gz and 4946apps-6.31.tar.gz. Both may be needed (see the top-level nuttx/README.txt 4947file for build information). 4948 4949Additional new features and extended functionality: 4950 4951 * General: 4952 4953 - Standardized stack checking logic so the interfaces can be used 4954 by common stack monitoring logic. 4955 4956 * Audio Subsystem and Audio Drivers: 4957 4958 - Ken Pettit has finally released his long awaited audio subsystem. 4959 This is a generic audio subsystem that is appropriate for the 4960 deeply embedded MCU. Current testing has, however, been focused 4961 on the VS1053 CODEC chip. 4962 - Ken Pettit's VS1053 audio CODEC driver is now functional. 4963 4964 * Networking / Network Drivers 4965 4966 - Add the prefix ETH0 to all PHY configuration selections. This 4967 will allow us to support to Ethernet MAC drivers with two different 4968 PHYs (identified with ETH0 and ETH1). Enabled with CONFIG_NETDEV_MULTINIC. 4969 - Add MII/RMII PHY definitions for the Micrel KSZ8051 PHY. 4970 - Add GMII/GRMII PHY definitions for the Micrel KSZ9021/31 PHY. 4971 - New network-optimized, higher-performance sendfile() implementation 4972 from Max Holtzberg. 4973 - Added a simple routing table. This table is currently only used (1) 4974 when we need to look-up an Ethernet device based on an IP address, 4975 and (2) in the ARP logic when we need to request the MAC address of 4976 the router, vs the MAC address of the peer. 4977 - Make net_close() nonblocking and free unestablished connections if 4978 no free connections available. From Max Holtzberg. 4979 - Changed the meaning of the uip_*input functions. They now return 4980 success when a packet is dropped; This is needed for the ENCX24J600 4981 driver that must make a decision to return the packet or not: It 4982 should not retry dropped packets. From Max Holtzberg. 4983 - David Sidrane has completed integration of the CC3000 networking. 4984 This is much more than a network driver: It is a complete 4985 replacement for the NuttX networking with off-chip networking support 4986 in the CC3000. 4987 - Numerous enhancements to the ENCX24J600 driver from Max Holtberg. 4988 4989 * Other Common Drivers: 4990 4991 - The SST25 serial FLASH MTD driver now includes support for the 4992 SST25VF016B. From David Sidrane. 4993 - Add a preflight method to the SDIO interface to support the STM32 4994 DMA usage model. From Mike Smith. 4995 - Enhanced the MMC/SD SDIO driver to perform DMA preflight operations 4996 and fail DMA read/write requests that fail preflighting. From Mike 4997 Smith. 4998 - Add an ioctl command that can be used to trigger ADC/DAC conversion 4999 under application control. 5000 5001 * File Systems: 5002 5003 - Enhanced the FAT32 filesystem code to understand DMA preflight 5004 failures, and to use the file sector buffer as a bounce buffer when 5005 a user-supplied buffer is not suitable for DMA. From Mike Smith. 5006 5007 * Atmel AT91 SAMA5D3x 5008 5009 - Add support so that subsets of the total DRAM (and other external 5010 memory) can be added to the heap, leaving other memory reserved for 5011 other purposes (like the LCDC framebuffers). 5012 5013 * Atmel AT91 SAMA5D3x Drivers: 5014 5015 - Use more descriptive task names when starting the EHCI and OHCI 5016 monitor tasks. 5017 - Added a 10/100Base-T Ethernet (EMAC) driver. 5018 - Added a 1000Base-T Ethernet (GMAC) driver. 5019 - Added a Real Time Clock (RTC) driver and integrated with the NuttX 5020 system time logic. 5021 - Added support for /dev/random using the SAMA5D3x True Random Number 5022 Generator (TRNG). 5023 - Added a Watchdog Timer (WDT) driver. 5024 - Added a Timer/Counter (TC) library with interface that make be used 5025 by other drivers that need timer support. 5026 - Added an ADC driver that can collect multiple samples using the 5027 sequencer, can be trigger by a timer/counter, and supports DMA data 5028 transfers. 5029 - Added a touchscreen driver based on the special features of the 5030 SAMA5D3 ADC peripheral. 5031 - Added an LCD controller (LCDC) frame buffer driver. 5032 - Added a CAN driver. However, testing has been delayed because of 5033 cabling issues. 5034 - Basic header file support is available for the Image Sensor 5035 Interface (ISI) camera interface. Work on the camera driver is 5036 underway and is expected in the next release. 5037 5038 * Atmel AT91 SAMA5D3x-EK Development Boards 5039 5040 - Add OS test support for the FPU test. 5041 - Enable the task name feature board configuration sto provide 5042 prettier ps command output. 5043 - Added NX and NxWM configurations to verify the LCD and touchscreen. 5044 There are still some outstanding issues with the NxWM configuration 5045 as of this release. 5046 - The TRNG and /dev/random are now enabled by default in the demo 5047 configuration. 5048 5049 * Atmel AT91 SAM3/4 Boards: 5050 5051 - Add configuration to select revision 3 of the Arduino Due which has 5052 some small but important differences. Suggested by gdi@embedders.org. 5053 5054 * STMicro STM32: 5055 5056 - Add support for the STM32F207ZE chip. From Martin Lederhilger. 5057 5058 * STMicro STM32 Boards: 5059 5060 - Add configuration for the Spark Core. The initial check-in is 5061 basically the Maple Mini board and subsequent development by David 5062 Sidrane is his special Spark emulation hardware. The configuration 5063 should be very mature when actual Spark hardware is available. 5064 - Support for the Olimex STM32 P207 board added by Martin Lederhilger. 5065 - Configuration for the Mikroe STM32F4 board configuration updated for 5066 audio support by Ken Pettit. 5067 5068 * NXP LPC17xx Boards: 5069 5070 - zkit-arm-1769: LED1 is now user controllable after booting. From 5071 Rashid Fatah. 5072 5073 * Kinetis KL Drivers: 5074 5075 - PIT and TPM register definitions header files for the from Alan 5076 Carvalho de Assis. 5077 - Added low-level getc() function for operation with no file system. 5078 The KL25Z can now support NSH in a very minimal system that does 5079 not even have a file system. 5080 5081 * Kinetis KL Boards 5082 5083 - A new configuration called minnsh was added is an experiment to 5084 see how small we can get the NuttX footprint and still support NSH. 5085 From Alan Carvalho de Assis.. 5086 5087 * TI Calypso Phones: 5088 5089 - Basic board support for the Motorola C139 (Compal E86) phone. From 5090 Craig Comstock. 5091 5092 * Applications: 5093 5094 - Moved several useful examples from apps/examples to apps/system. 5095 This includes USB MSC, USB CDC/ACM, and USB Composite. 5096 - New addroute and delroute commands added to NSH in order to manage 5097 the network routing table. 5098 - Numerous enhancements and updates to the CC3000 example from David 5099 Sidrane. 5100 - Add a new stack monitor daemon that can be used to constantly 5101 monitor stack usage by all threads. 5102 - Numerous changes to get NSH working with no file system. Basically 5103 this suppresses I/O redirection and replaces file I/O with calls to 5104 low-level console read/write functions. Suggested by Alan Carvalho 5105 de Assis. 5106 - apps/system/nxplayer: A new, command-line media player called 5107 'nxplayer' from Ken Pettit. 5108 - apps/examples/random: Add a simple test that dumps values from 5109 /dev/random. 5110 - apps/examples/adc: Add support so that a ADC driven by software 5111 triggering can be tested. 5112 5113 * Build System: 5114 5115 - The MKDEP tools now support a new argument that identifies the 5116 object file path. 5117 5118Efforts In Progress. The following are features that are partially 5119implemented but present in this release. They are not likely to be 5120completed soon. 5121 5122 * kconfig-fronted Configuration: 5123 5124 - Conversion of old configurations to use the kconfig-frontends 5125 tool is an ongoing effort that will continue for some time. 5126 At this time, only 48% of the configurations have been converted 5127 to use the kconfig-frontends tools. 5128 5129Bugfixes (see the ChangeLog for details). Some of these are very important: 5130 5131 * Initialization and Scheduling: 5132 5133 - IDLE thread initialization logic should not call group_setupidlefiles() 5134 if there are no file descriptors (and, hence, no file system). 5135 - Fix some cornercase error handling logic: If sched_releasetcb() is 5136 called as part of a failed pthread startup before the flags field in 5137 the TCB has been initialized, then a crash occurs. Pointed out by 5138 David Sidrane. 5139 5140 * Networking / Network Drivers: 5141 5142 - Look up of a device using subnet will fail if the packet is being 5143 sent out of our subnet (via a router). The fallback here is just to 5144 use the only device ("eth0") if the subnet lookup fails (this logic 5145 was extended to handle multiple Ethernet devices by adding a simple 5146 routing table). 5147 - Fix some backward conditional logic in send() that enabled the 5148 check if the ARP address is in the ARP table. From Max Holtzberg. 5149 - Notify the socket layer from the network monitor if a connection is 5150 lost before the monitoring callback has been registered. From Max 5151 Holtzberg. 5152 - send(): Reset the send timeout when the data is ACKed, not when the 5153 data is sent. Remove conditions on checking for timeout. From Max 5154 Holtzberg. 5155 - Correct how the TCP/IP initial minimum MSS is calculated. Max 5156 Holtzberg. 5157 - TCP state machine: Move tcp connection into SYN_RCVD state after 5158 aception instead of bypassing and moving directly into ESTABLISHED. 5159 From Max Holtzberg. 5160 - Numerous fixes to the ENCX24J600 driver from Max Holtberg. 5161 5162 * USB Drivers: 5163 5164 - Change naming of SELFPOWERED and REMOTEWAKEUP to avoid name 5165 collisions. Prepend the name of the driver (for example 5166 CDCACM_SELFPOWERED). 5167 - CDC/ACM class driver: Change the interval for the interrupt 5168 endpoint from 0xff (invalid) to 10. This is not a critical 5169 change but will avoid a complaint from the Linux driver when 5170 it overrides the 0xff value. 5171 5172 * ARM Cortex-A5: 5173 5174 - Fix an error in data cache clean and invalidate functions: Fix of 5175 addresses to cache line boundaries. 5176 5177 * Atmel AT91 SAMA5D3x Drivers: 5178 5179 - Correct some inconsistencies in the way that USB configuration 5180 settings are used. This caused compilation errors in SAMA5 OHCI 5181 when USB debug was ON but USB host tracing was off. 5182 - When 480MHz UPLL is used to drive OHCI, it should have a divider 5183 of 10. However, that does not work. A divider of 5 does. Why?. 5184 - OHCI HCD: Fix a place where DMA-related data needed to be flushed 5185 to data cache; Fix another where a virtual address was being used 5186 in a register where a physical address was required. 5187 - HSMCI Driver: TX DMA disabled. It is just not reliable. No idea 5188 why. RX DMA is still used. 5189 - STM32F103C pinmapping corrections from David Sidrane. 5190 5191 * Atmel SAMA5D3x-EK Board 5192 5193 - Increase the number of pre-allocated watchdog timers. The default 5194 number of 4 was easily being exhausted in the more complex 5195 configurations. 5196 5197 * STMicro STM32: 5198 5199 - STM32 F4 DMA definitions: Typo fixes for UART7 and UART8 DMA 5200 configs. From Mike Smith. 5201 - DMA priority configuration corrections from Mike Smith. 5202 - Changes to the stm32_dmacapable API. In order to correctly 5203 verify that a buffer can be transferred, the transfer count and 5204 the CCR value are required. Implemented stm32_dmacapable for 5205 stm32f1xx devices. Enhanced stm32_dmacapable for stm32f2xx and 5206 stm32f4xx devices to check for additional conditions that will cause 5207 DMA to fail or lose data. 5208 - STM32 F1 DMA fix from David Sidrane: The DMA_CNDTRx register 5209 cannot be modified if the DMA channel is disabled. 5210 5211 * STMicro STM32 Drivers: 5212 5213 - Fix compilation errors from bad bit definitions in ADC and PWM 5214 register. From Martin Lederhilger. 5215 - DMA-related fixes to the SPI driver from Ken Pettit. 5216 5217 * NXP LPC17xx Drivers: 5218 5219 - Remove undefined spi_select() prototype. This was causing compile 5220 time warnings. 5221 5222 * NXP LPC17xx Boards: 5223 5224 - zkit-arm-1768: MMC/SD is on SPI, not SSP0. From Rashid Fatah. 5225 5226 * C Library 5227 5228 - scanf() fixes from kfrolov: 1) sscanf() function hangs in the 5229 following example: sscanf("2", "%u,%u,%u,%u", ...), 2) sscanf() 5230 returns incorrect number of parsed numbers if some arguments 5231 can't be parsed: sscanf("=2", "%u,%u,%u,%u",...)==1 instead of 5232 0, and 3) using of char* instead of const char* in vsscanf 5233 function leads to warnings from GCC. 5234 5235 * Build System 5236 5237 - Dependency generation generation was broken for directories that 5238 keep objects in a sub-directory. The MKDEP tools now support a new 5239 argument that identifies the object file path. 5240 - tools/define.sh: 'cut' no longer works as it once did. Script 5241 adapted to observed behavior. 5242 5243 * Applications: 5244 5245 - Remove a warning from the NSH library when DHCP is not enabled. 5246 - Default NSH IP address should be 0x0a000001 (10.0.0.1), not 5247 0xa0000001 (160.0.0.1). Ditto for the gateway. 5248 - Add some missing options to the OS test Kconfig file 5249 - Fix some bad conditional compilation in the USB monitor. 5250 - Fix default I2C frequency used by the I2C tool: 400KHz instead 5251 of 4MHz. Suggested by Max Kriegleder. 5252 - Increase stack size for the system/info command. Ken Petit 5253 reports that this simple command can exceed its 768 stack size 5254 under certain conditions. The size is marginal and has been 5255 increased to 1024 by default but is also now configurable. 5256 - apps/Makefile: Needs to include external/Make.defs if we want 5257 allow external applications to participate in the NuttX 5258 configuration. Suggested by gdi@embedders.org. 5259 - apps/netutils/telnetd: Missing argument to debug statement 5260 can cause crashes in certain error conditions. From David 5261 Sidrane. 5262 - apps/examples/can: Correct an error in a debug statement. From 5263 Martin Lederhilger. 5264 5265NuttX-6.32 5266---------- 5267 5268The 99th release of NuttX, Version 6.32, was made on December 7, 2013, 5269and is available for download from the SourceForge website. Note 5270that release consists of two tarballs: nuttx-6.32.tar.gz and 5271apps-6.32.tar.gz. Both may be needed (see the top-level nuttx/README.txt 5272file for build information). 5273 5274Additional new features and extended functionality: 5275 5276 * General: 5277 5278 - Extension and standardization of stack debug logic. Now includes 5279 coloration of the IDLE and interrupt stacks as well as the heap. 5280 Suggested by David Sidrane. 5281 5282 * Audio Subsystem and Audio Drivers: 5283 5284 - I2S interface definition. Integrates with audio sub-system. 5285 - VS1053 worker thread stack size is now configurable and assigned a 5286 name via pthread_setname_np(). From Ken Pettit. 5287 5288 * Networking / Network Drivers 5289 5290 - Updates and adaptations to support for TI CC3000 wireless module 5291 from David Sidrane. These updates include multi-threading support 5292 and interface and header file changes to integrate more seamlessly 5293 with NuttX applications. 5294 5295 * File Systems: 5296 5297 - procfs: Add support for a tiny procfs file system. The initial 5298 offering is little more that a proof of concept but may be developed 5299 further in subsequent releases. 5300 - NXFFS: An initial attempt was made to integrate NXFFS with the NAND 5301 MTD driver. Changes were made to handle bad blocks. However, I 5302 later realized that NXFFS cannot handle NAND because the way that 5303 is re-writes blocks is incompatible with the NAND ECC handling. 5304 These changes were backed-out so as not to introduce turmoil, but 5305 can be re-enabled if needed via configuration option. 5306 - NXFFS: Make the start up scan of the media a configuration option. 5307 It just takes to long and is not really necessary! Those rare cases 5308 where the scan was helpful can be fixed using MDIOC_BULKERASE IOCTL 5309 command. 5310 5311 * General Drivers: 5312 5313 - I2S: A simple character driver was added to support I2S accesses. 5314 This driver in its current state is intended only to support I2C 5315 testing and would not be appropriate to used for any real driver 5316 application. 5317 5318 * MTD Drivers 5319 5320 - Add a container for an MTD device that can be used to provide a 5321 simple, lightweight interface to configuration data storage that 5322 resides on some storage media that is wrapped as an MTD device. 5323 From Ken Pettit. 5324 - New interface definition for lower half NAND drivers. 5325 - MTD Nand: Add MTD NAND driver that will support ONFI devices, 5326 non-ONFI devices (via table lookup), bad block checking, software 5327 ECC (Hamming), and will interact with the lower-half, hardware- 5328 specific, NAND driver. Based on BSD-compatible Atmel sample code. 5329 - MTD geometry structure is now packed so that it can support larger 5330 erase block sizes needed by NAND without increasing the size of 5331 the geometry structure. 5332 - SST25: Add another SST25 SerialFlash driver, sst25xx.c. This one 5333 differs from sst25.c in that it supports larger SST25 parts: In 5334 the larger parts support page write instead of byte/word writes 5335 like the smaller parts. From Ken Pettit. 5336 5337 * USB Drivers 5338 5339 - STM32 F1 USB Device: Add support for decoded USB trace strings. 5340 From David Sidrane. 5341 5342 * ARM 5343 5344 - Add more ARM9 cache management functions to flush and invalidate 5345 D-Cache for DMA support. 5346 5347 * Atmel AT91 SAMA5D3x Drivers: 5348 5349 - Many new drivers including CAN, PWM, SSC/I2S 5350 - PCK: Add support for programmable clock outputs. 5351 - NAND: Driver with hardware ECC and DMA support 5352 5353 * Atmel AT91 SAMA5D3x Boards: 5354 5355 - SAMA5D3x-EK: Add support for the apps/examples/i2schar test. 5356 - SAMA5D3x-EK: Provides board-specific memory controller initialize 5357 for NAND flash. 5358 - SAMA5D3x-EK: Add support for "auto-mounting" NAND MTD block driver 5359 or NXFFS file system. 5360 5361 * Atmel AT91 SAM3/4 Boards: 5362 5363 - Basic support for the Atmel SAM4E family. From Mitko. 5364 5365 * STMicro STM32: 5366 5367 - Added support for the STM32F429. From Ken Pettit. 5368 - Added support for GPIOK and GPIOJ. From Ken Pettit. 5369 5370 * STMicro STM32 Drivers 5371 5372 - STM32 F4 OTG FS/HS Device: OTG FS device and host drivers extended 5373 so that they can support either the OTG FS peripheral or the OTG HS 5374 peripheral (in FS mode). This was done as a quick way to get USB 5375 support on the STM32F429 which has only OTG HS. From Ken Pettit. 5376 - Added header files and driver framework for the STM32F429 LTDC 5377 framebuffer driver. From Ken Pettit. 5378 5379 * STMicro STM32 Boards: 5380 5381 - Support for the Spark board was completely by Davide Sidrane. The 5382 Spark configuration includes integrated CC3000 wireless support, FAT 5383 file system on the SerialFlash and a composite device that can be 5384 used both to export the FAT file system and to provide a serial 5385 interface. 5386 - The Mikroe-stm32f4 now uses /dev/config for configuration data 5387 storage. From Ken Pettit. 5388 - Added support for the STM32F429I-Discovery board from Ken Pettit. 5389 - Added board support for the ViewTool STM32F103/F107 board with the 5390 STM32F107VCT6 installed. 5391 5392 * NXP LPC31xx Drivers: 5393 5394 - USB ECHI HCD: Add a driver for the low-/full-/high-speed variant 5395 of the EHCI host controller. 5396 5397 * NXP LPC31xx Boards: 5398 5399 - Board-specific USB host support for the Embedded Artists EA3131 board. 5400 (Missing PCA9532 controls). 5401 - Add support for the Olimex LPC-H3131 board. Including USB host 5402 support (which does not depend on the PCA8532 interface). 5403 5404 * Kinetis KL Drivers: 5405 5406 - PWM driver for the Freescale Kinetis KL family from Alan Carvalho 5407 de Assis. 5408 5409 * Kinetis KL Boards 5410 5411 - Freedom-KL25Z: Add PWM support from Alan Carvalho de Assis. 5412 5413 * TI Stellaris LM3S 5414 5415 - Don't initialize .data in start-up logic if not running from FLASH. 5416 5417 * Applications: 5418 5419 - apps/platform: A new home for platform-specific application code. 5420 - Define a common interface that can be used to manage platform- 5421 specific configuration data. From Ken Pettit. 5422 - apps/examples/configdata: A unit test for the MTD configuration 5423 data driver from Ken Pettit. 5424 - Aapps/platform/mikroe-stm32f4: dd platform-specific storage of 5425 configuration data for the Mikroe-stm32f4. From Ken Pettit. 5426 - apps/examples/cc3000: Fine tuning of memory usage from David Sidrane. 5427 - apps/system/nxplayer: Play thread stack size is now configurable. 5428 All NxPlayer threads now have names assigned via pthread_setname_np(). 5429 From Ken Pettit. 5430 - apps/examples/i2schar: The I2S test based on the I2S character 5431 driver. 5432 - apps/examples/hidkbd/hidkbd_main.c: Now calls a function named 5433 arch_usbhost_initialize() that must be provided by the platform- 5434 specific code. 5435 - NSH: 5436 5437 - hexdump: Add skip= and count= options to the hexdump command. From Ken Pettit. 5438 - Allow USB trace without a USB console. From David Sidrane. 5439 - Mount command updates from Ken Pettit. 5440 - Add an option to the mkfatfs command to specify FAT12, FAT16, or FAT32. 5441 5442 * Tools 5443 5444 - tools/mkctags.sh: A script for creating ctags from Ken Pettit. 5445 5446Efforts In Progress. The following are features that are partially 5447implemented but present in this release. They are not likely to be 5448completed soon. 5449 5450 * kconfig-fronted Configuration: 5451 5452 - Conversion of old configurations to use the kconfig-frontends 5453 tool is an ongoing effort that will continue for some time. 5454 At this time, only 50% of the configurations have been converted 5455 to use the kconfig-frontends tools. 5456 5457Bugfixes (see the ChangeLog for details). Some of these are very important: 5458 5459 * File Systems 5460 5461 - FAT: In one error return case, the error return value was not being 5462 set, making the failure look like success. From David Sidrane. 5463 - mount: SMART FS must be included in the conditional compilation for 5464 the set of file systems that require block drivers. From Daniel 5465 Palmer. 5466 - SmartFS: Fixed a minor bug with SMART partition number reporting 5467 that would only be seen if both partition support and multi-root 5468 directory support are enabled at the same time. From Ken Pettit. 5469 - Deadlock: The inode semaphore must be re-entrant. Here is the re- 5470 entrant path that I found: (1) USB host connects to FLASH drive and 5471 creates /dev/sda, (2) /dev/sda is mounted, (3) FLASH drive is 5472 removed but /dev/sda is not destroyed because there is still a 5473 reference on the device because of the mount, (4) umount() is 5474 called, taking the inode semaphore, now the driver tries to destroy 5475 the block driver by calling unregister_blockdriver(). But (5) 5476 unregister_blockdriver() also takes the inode semaphore causing a 5477 deadlock if the inode semaphore is not re-entrant. 5478 - FAT: Fix a typo in the FAT16 formatting logic. Was this ever able to 5479 format a FAT16 volume? 5480 5481 * MTD Drivers 5482 5483 - MTD Partitions: Fix erase block vs page block confusion. From Ken 5484 Pettit 5485 - SST25 Serial Flash: Improved write performance by fixing a bug that 5486 prevented operation in the faster write mode. From David Sidrane. 5487 5488 * USB Drivers: 5489 5490 - USB MSC Device: pthread_join() does not work if called from a 5491 different task group than the pthread. This is correct behavior, 5492 but still a problem. The correct solution would be configure the 5493 USB MSC thread to a task, however, this workaround from David 5494 Sidrane plugs the hole for now. 5495 - USB CDC/ACM, USB MSC, and Composite Device Classes: Un-initialization 5496 logic caused re-use of a stale pointer. Changed to a two pass 5497 un-initialization for the case of the composite driver: Memory 5498 resources are not freed until the second un-initialization pass. 5499 From David Sidrane. 5500 5501 * STMicro STM32 Drivers: 5502 5503 - STM32 F1 USB Device: Fix some errors that cause crashes when the USB 5504 was disconnected. From David Sidrane. 5505 - STM32 F1 USB Device: Correct EP0 state handling logic when buffers 5506 larger than the EP0 packet size are sent. From David Sidrane. 5507 - STM32 F1 USB Device: The long outstanding bug involving the handling 5508 of OUT SETUP commands has been fixed in the STM32 F1 USB device 5509 driver by David Sidrane. 5510 - Kconfig: Add missing setup of CAN TSEG1 and TSEG2 values. From 5511 Martin Lederhilger. 5512 5513 * Tools 5514 5515 - tools/mkconfig.c: SMART FS must be included in the conditional 5516 compilation for the set of writable file systems. Noted by Daniel 5517 Palmer. 5518 5519 * Applications: 5520 5521 - apps/platform/Makefile: Was not dealing with the bin sub-directory 5522 correctly. 5523 - apps/system/composite/composite_main.c: The wrong handle was getting 5524 nullified. From David Sidrane. 5525 5526NuttX-6.33 5527---------- 5528 5529The 100th release of NuttX, Version 6.33, was made on January 30, 2014, 5530and is available for download from the SourceForge website. Note 5531that release consists of two tarballs: nuttx-6.33.tar.gz and 5532apps-6.33.tar.gz. Both may be needed (see the top-level nuttx/README.txt 5533file for build information). 5534 5535Additional new features and extended functionality: 5536 5537 * Core OS Interfaces 5538 5539 - nanosleep() added. sleep() and usleep() are no longer core OS 5540 interfaces. These have been moved into the library and re-implemented 5541 as simple wrappers around nanosleep(). 5542 5543 * File Systems 5544 5545 - procfs restructured by Ken Pettit. Added files for MTD status. 5546 - procfs extended to show uptime and task group status. 5547 - procfs now shows stack information. 5548 5549 * Networking 5550 5551 - Add support for the SO_LINGER socket option. Extended from logic 5552 provided by Jason Jiang. Enabled with CONFIG_NET_SOLINGER. 5553 - TCP write buffering support added. From Jason Jiang. 5554 - Changes from Max Holtzberg to improve how network status is 5555 reported. New controls to manage carrier detect. 5556 5557 * Graphics 5558 5559 - Massive reshuffling of files with little or no logic changes. This 5560 reshuffling was necessary to build graphics applications with the 5561 kernel builds where the graphics application lie in user space and 5562 the core graphic server likes in kernel space. Moved much logic out 5563 of nuttx/graphics to a new user library, libnx. 5564 5565 * Cortex-A5/A8/A9 5566 5567 - Existing Cortex-A5 support updated to include Cortex-A8/9. 5568 - Add the syscall.h header file needed for the Cortex-A architecture. 5569 - Start-up logic now supports execution from FLASH with .data and 5570 .bss in SDRAM. This was not possible prior to this because .bss 5571 and .data were initialized before SDRAM was configured. 5572 5573 * Allwinner A10: 5574 5575 - Basic support for the Allwinner A10 (Cortex-A8) is in place. 5576 5577 * Allwinner A10 boards 5578 5579 - Support for the pcDuino v1 board has been added. This support 5580 is not yet very mature and still lacks many drivers. It is a 5581 good starting point, however, if anyone wants to develop A10 5582 support. 5583 5584 * Atmel SAMA5D3X 5585 5586 - Start-up logic now supports execution from FLASH with .data and 5587 .bss in SDRAM. This was not possible prior to this because .bss 5588 and .data were initialized before SDRAM was configured. 5589 5590 * Atmel SAMA5D3X Boards 5591 5592 - Partial logic in place to support the OV2640 camera. Still needs 5593 quite a bit of additional logic to be useful. 5594 5595 * ARMv7-M 5596 5597 - Add support for high priority, nested interrupts. This change 5598 effects not only core ARMv-7M logic, but all ARMv7-M MCU logic: 5599 LM3S, LM4F, LPC17xx, LPC43xx, SAM3, SAM4, and STM32. See 5600 https://cwiki.apache.org/confluence/display/NUTTX/High+Performance%2C+Zero+Latency+Interrupts 5601 5602 * STMicro STM32 5603 5604 - Add clocking support for STM32F107 USB OTG FS (which does not yet 5605 work) 5606 - Single-wire UART support for the F1 series from Thomas Grubler. 5607 5608 * STMicro STM32 Boards 5609 5610 - The Viewtool board can now be configured to support either the 5611 STM32F103VCT6 or the STM32F107VCT6. 5612 - The Viewtool STM32F107VCT6 now supports networking with the 5613 DP83848C module installed. 5614 - Add support for Viewtool SSD1289-based LCD on the Viewtool 5615 STM32F103VCT6 board (untested) 5616 - Add support for the XPT2046 touchscreen controller on the Viewtool 5617 LCD module connected to the Viewtool STM32F103 board. 5618 - Added kernel mode build support for the STM3240G-EVAL board. Added 5619 a new kernel mode NxWM build configuration 5620 - C++ static constructor logic from the nuttx/configs/stm3240g-eval/ 5621 directory to the apps/platform/stm3240g-eval/up_cxxinitialize.c 5622 where is belongs so that it is available in user-space in the kernel 5623 mode build. 5624 - Add native Windows build support for the Olimex STM32 P107. From 5625 Max Holtzberg 5626 - Support for the STM32VL-Discovery board. Contributed by Alan 5627 Carvalho de Assis 5628 - Added a configuration for testing simple configurations on the 5629 PX4FMU v2. 5630 5631 * ZiLOG ZNEO Boards 5632 5633 - Add an NSH configuration for the Z16F2800100ZCOG ZNEO board. 5634 - Added support for the Toyaga 16Z ZNEO board. The 16Z board is 5635 based on the ZiLOG ZNEOZ16F2811AL20EG part. See 5636 https://github.com/toyaga/16z for further information 5637 - Developed a patch to work around a compiler error that is revealed 5638 when building the NSH configuration. 5639 5640 * Architecture-Independent Drivers 5641 5642 - OV2640 Camera Driver. 5643 - Support for the Sharp Memory LCD from Librae. 5644 5645 * Library 5646 5647 - Pattern matching logic extended to handle set of characters and 5648 ranges of character values. From Ken Pettit. 5649 - sleep() and usleep() moved into the C library. These are not 5650 longer core OS interfaces; they are simple wrappers for the 5651 nanosleep(). 5652 - Add an implementation of gets_s(). 5653 - Extend fopen() to include support for C11 exclusive open ("x") 5654 open mode. 5655 - Add an implementation of stpcpy() 5656 - strtol(), strtoll, strtoul(), strtoull(), and strtod() from 5657 libc/string to libc/stdlib where they belong. 5658 5659 * Header Files 5660 5661 - Add rsize_t to include/sys/types.h 5662 - Add the C11 thread.h header file 5663 5664 * Configuration/Build System 5665 5666 - Top level Makefile now supports qconfig and/or gconfig targets that 5667 may be used for configuration. These may be used if you build 5668 kconfig-frontends with support for kconfig-qconf and/or 5669 kconfig-gconf. 5670 - Add CONFIG_DEBUG_NOOPT. Now you can independently enable/disable 5671 debug symbols and optimization 5672 - File system related header files moved to include/nuttx/fs 5673 - Video related header files moved to include/nuttx/video 5674 - Changes for native Windows build: fix creation of a .version file 5675 if one does not exist. Make sure that the APPDIR environment 5676 variable is set before configuring. From Max Holtzberg. 5677 - Board configuration sub-directory can now be specified. The default 5678 need not be used. This is only useful when CONFIG_ARCH_BOARD_CUSTOM 5679 is selected and there is no meaningful default sub-directory. 5680 - Many functions renamed to better conform with the naming standard: 5681 up_buttoninit() renamed to board_button_initialize(), up_buttons() 5682 renamed to board_buttons(), up_irqbutton() renamed to 5683 board_button_irq(), up_ledinit() renamed to board_led_initialize(), 5684 up_ledon() renamed to board_led_on(), and up_ledoff() renamed to 5685 board_led_off(). All prototypes removed from board.h header files. 5686 Now ONLY prototypes in include/nuttx/arch.h. 5687 5688 * Applications 5689 5690 - NSH: Refactor. Separate NSH command handling and command execution 5691 from NSH line parsing. 5692 - NSH: Will now support multiple commands on a command line, each 5693 separated with a semi-colon. 5694 - NSH: Add support of commands enclosed in back quotes as command 5695 arguments. 5696 - NSH: Can now handle arguments that are concatenations of constant 5697 strings, command return data, application return data, and 5698 environment variables. 5699 - NSH: Add true and false commands. 5700 - NSH: Add support for while-do-done and until-do-done loops. These 5701 only work when executing a script file because they depend on the 5702 ability to seek in the file to implement the looping behaviors. 5703 Can be conditionally compiled out to reduce footprint. 5704 - NSH: Loosen up if-then-else-fi syntax to allow a command to be on 5705 the same line as the then or else tokens like: 5706 "if true; then echo true; else echo false; fi". More like bash. 5707 - NSH: Add a break command that can be executed with a loop to 5708 terminate the loop immediately. 5709 5710 - system/inifile: A simple .INI file parser. 5711 - system/vi: Add support for a tiny, VI work-alike editor. This is 5712 a minimal full screen editor that works with a terminal emulator 5713 that using VT100 commands. 5714 5715Efforts In Progress. The following are features that are partially 5716implemented but present in this release. They are not likely to be 5717completed soon. 5718 5719 * kconfig-fronted Configuration: 5720 5721 - Conversion of old configurations to use the kconfig-frontends 5722 tool is an ongoing effort that will continue for some time. 5723 At this time, only 53% of the configurations have been converted 5724 to use the kconfig-frontends tools. 5725 5726Bugfixes (see the ChangeLog for details). Some of these are very important: 5727 5728 * Core OS 5729 5730 - Added missing sem_timedwait() system call. 5731 5732 * Networking 5733 5734 - Prevent tcp_connect callback from being double freed. From Max 5735 Holtzberg 5736 - uiplib: Support new definitions and state passing for network 5737 device status. From Maz Holtzberg. 5738 5739 * File Systems 5740 5741 - FAT: (1) A correction to FAT cluster allocation, and (2) Fix to some 5742 root directory logic that was conditionally done only for FAT 32. 5743 Apparently this needs to done for all FAT types. Both from Andrew 5744 "Tridge" Tridgell via Lorenz Meier. 5745 5746 * Binary Formats 5747 5748 - Fix a small memory leak when attempting to load a program from a file. 5749 5750 * Cortex-A8/9 5751 5752 - Fix some errors in the cache invalidation logic (only seem to matter 5753 for Cortex-A8). 5754 - Add more nop's after enabling the MMU. The cortex-a8 seems to need 5755 these 5756 5757 * Graphics 5758 5759 - Fix a typo that caused a compilation error when 5760 CONFIG_NXCONSOLE_BPP < 8. From Librae 5761 5762 * ARMv7-M 5763 5764 - Correct alignment of RAM vector table. 5765 - Interrupt handling: Do not disable and enable the IRQ on each 5766 entry, (2) this interferes with controlling the IRQ interrupt 5767 setting from interrupt handlers, and (3) up_disable_irq() does 5768 not work anyway so that this has never done anything. 5769 - Fix all implementations of up_disable_irq() for all Cortex-M3 and 5770 M4 architectures: To enable an interrupt on the Cortex-M3/4 CPU, 5771 you need to set a bit in the ISER register. To disable the 5772 interrupt, you need to set a bit in the ICER register. Existing 5773 logic was trying to disable interrupts by clearing the bit in the 5774 ISER register. That will not work; writing a '0' to the ISER 5775 register has no effect. That means that up_disable_irq() was 5776 doing nothing! It turns out that that is not really important 5777 because up_disable_irq() is not really used for that purpose. But 5778 some spurions STM32 ADC interrupts have been reported to me and this 5779 turned out to be the cause in that case. Thanks to Manuel Stühn for 5780 the tip. 5781 5782 * STMicro STM32 5783 5784 - Fix configuration and pin definitions that would prevent building 5785 USB for the connectivity and performance lines. 5786 - STM32L15xx: Fix a typo in USB pin definitions 5787 - Fix pin definition names for SPI2 MOSI and MISO. Noted by Brian Webb 5788 - Various fixes for STM32F103ZE SPI3 pin mapping definitions. From 5789 Steve Redler IV 5790 5791 * STMicro STM32 Boards 5792 5793 - Olimex STM32-P107: Failed to build if SPI3 for UEXT is not remapped. 5794 From Max Holtzberg 5795 5796 * x86 Boards 5797 5798 - Add a configuration option to select the -m32 compiler option when 5799 building for a 32-bit target on a native 64-bit compiler. So far, 5800 only used for the qemu/i486 configuration. 5801 - Patch from Matt Campbell to fix 'Error: .size expression for idle_stack 5802 does not evaluate to a constant". 5803 5804 * Library 5805 5806 - strftime(): Needs null termination on the generated string. From 5807 Max Holtzberg. 5808 - Typo in ctype.h macro name: iscntrl(), not iscontrol(). 5809 - If there are no arguments (argc == 1), then getopt() will leave the 5810 optind variable in an undefined state (2014-1-20). 5811 - ARMv7-M memcpy(): Assembler changes with the gcc-47 distribution 5812 from ARM mean that we need to be explicit about branch sizes; one 5813 or more of the wide branch opcodes results in bad table branching. 5814 From Mike Smith. 5815 5816 * Configuration/Build System 5817 5818 - Fixes for some tools/ for Windows build issues from Max Holtzberg. 5819 - Config.mk: 'cypath' must be called if we are using a Windows native 5820 toolchain with the Cygwin 'make' to convert paths to proper 5821 Windows paths. From Richard Cochran. 5822 - ARM Makefile: Dependency directory list is now computed from the 5823 VPATH. From Richard Cochran. 5824 - builtin/Makefile: Fixes for native Windows build from Max Holtzberg. 5825 - Refactor some configuration dependencies: NSH networking features 5826 should depend on netutil selections; netutil selections, in turn, 5827 should depend on networking selections. 5828 5829 * Applications 5830 5831 - NSH: Modified the df -h logic to eliminate truncating numbers in 5832 conversion (like 7900 -> 7M). From Ken Pettit. 5833 5834NuttX-7.1 5835--------- 5836 5837The 101st release of NuttX, Version 7.1, was made on March 15, 2014, 5838and is available for download from the SourceForge website. Note 5839that release consists of two tarballs: nuttx-7.1.tar.gz and 5840apps-7.1.tar.gz. Both may be needed (see the top-level nuttx/README.txt 5841file for build information). 5842 5843 The previous NuttX version was 6.33. The NuttX minor version number is 5844 incremented on each release, but the major version number is incremented 5845 only when an incompatibility with previous versions is included in the 5846 release. In this case, the legacy, manual configuration is no longer 5847 supported by the NuttX build system beginning with NuttX 7.1. Only the 5848 newer configurations generated by the kconfig-frontends tools will generate 5849 viable NuttX configurations. 5850 5851 All board configurations in the NuttX source tree have been converted to 5852 use the newer configuration, but if you have some older style configurations 5853 for you board, you will need to convert those configurations to use the 5854 kconfig-frontends tools before taking any new code from the repository. See 5855 https://cwiki.apache.org/confluence/display/NUTTX/Converting+Legacy+Configurations+to+Use+kconfig-mconf 5856 for some guidelines. 5857 5858Additional new features and extended functionality: 5859 5860 * Core OS: 5861 5862 - System time logic now includes logic to measure and calculate the 5863 CPU load percentage (from David Alessio). This CPU load logic 5864 extended to keep counts on each thread. The per-thread CPU is 5865 now reported in the procfs under <pid>/loadavg An asynchronous, 5866 "external" clock may be used to drive the CPU load calculations 5867 for more accurate measurements when needed. 5868 5869 * File Systems: 5870 5871 - As mentioned above, the per-thread CPU load information is now 5872 reported in the procfs under <pid>/loadavg. 5873 - Many file system interfaces have been extended to operate on the 5874 top-level NuttX pseudo filesystem. These include rmdir, mkdir, 5875 rename, and unlink. This capability can be disabled with 5876 CONFIG_DISABLE_PSEUDOFS_OPERATIONS in order to keep the footprint 5877 small. 5878 5879 * Networking: 5880 5881 - Numerous updates and improvements to the CC3000 driver from David 5882 Sidrane. 5883 5884 * Common Drivers: 5885 5886 - Defined a mouse interface that is very similar to a touchscreen 5887 interface, but allows reporting of all mouse buttons. Also, unlike 5888 touchscreen drivers, mouse drivers need to report positional data 5889 with no button is pressed so that the mouse position can drive a 5890 cursor. 5891 - Added support for a USB HID boot mouse device. Cursor support is 5892 not integrated and must be provided by the application based upon 5893 the reported mouse data. 5894 - Support added for the MIO283QT9A LCD from Toby Duckworth. 5895 5896 * Atmel SAMA4E: 5897 5898 - Added complete architecture support for the Atmel AT91 SAM4E 5899 Cortex-M4F parts. 5900 5901 * Atmel SAM4E Board Support: 5902 5903 - Add board support for the SAM4E-EK board. 5904 5905 * Atmel SAM4E Drivers: 5906 5907 - Added logic to manage the Cortex-M Cache Control block. 5908 - Developed and integrated an Ethernet MAC driver for the SAM4E. 5909 - Backported the SAMA5 SPI driver to the SAM3/4 architecture. The 5910 SAMA5 version supports both multiple SPI peripherals as needed by the 5911 SAM3A and SAM3X and also supports DMAC (but not PDC) needed by the 5912 SAM4E. 5913 5914 * Atmel SAM D20: 5915 5916 - Added basic architecture support for the Atmel AT91 SAM D20 5917 Cortex-M0+ parts. 5918 5919 * Atmel SAM D20 Board Support: 5920 5921 - Added basic support for SAM D2 Xplained Pro board. Currently, the 5922 NuttShell (NSH) works reliably over a serial port. An SPI driver 5923 has also been developed. Work with the SAM D20 has been temporarily 5924 stopped, however, in order to focus on the SAM4E-EK. 5925 5926 * TI Tiva TMC4C123G: 5927 5928 - Added architecture support for the TI Tiva TM4C123G parts. This was 5929 merged into the existing support for the LM3S and LM4F families. 5930 All directory, file, and function references changed from lm to tiva. 5931 5932 * TI Tiva TMC4C123G Board Support: 5933 5934 - Added basic board support for the TM4C123G-Launchpad. As of this 5935 release the TM4C123G-Launchpad board support is untested and likely 5936 incomplete. 5937 5938 * STMicro STM32 Boards: 5939 5940 - The Mikroe STM32F4 can now support the newer MIO283QT9A LCD. From 5941 Toby Duckworth. 5942 - Miscellaneous changes to better support FPU on STM32F429 Discovery 5943 from David Alessio. 5944 5945 * NXP LPC2378 Drivers: 5946 5947 - Incorporated I2C and SPI drivers for the LPC23xx from Lizhuoyi. 5948 5949 * QEMU i486 Drivers: 5950 5951 - New QEMU keyboard and VGA drivers from Lizhuoyi. 5952 5953 * Documentation: 5954 5955 - Added a coding standards document. See 5956 https://nuttx.apache.org/docs/latest/contributing/coding_style.html 5957 5958 * Configuration/Build System: 5959 5960 - A configuration option, CONFIG_DEFAULT_SMALL, was added to select 5961 default values for configuration variables based upon whether you 5962 want a smaller footprint or more features. This is not very useful 5963 if you are modifying existing configurations because then the 5964 default values do not apply. 5965 - CONFIG_DEFAULT_SMALL has been defined on all tiny MCU configurations 5966 so that they do not grow so rapidly when new, optional features are 5967 added. 5968 - The legacy, manual configuration is no longer supported by the 5969 NuttX build system. Only the newer configurations generated by 5970 the kconfig-frontends tools will generate viable NuttX 5971 configurations. All board configurations in the NuttX source tree 5972 have been converted to use the newer configuration, but if you have 5973 some older style configurations for you board, you will need to 5974 convert those configurations to use the kconfig-frontends tools. See 5975 https://cwiki.apache.org/confluence/display/NUTTX/Converting+Legacy+Configurations+to+Use+kconfig-mconf 5976 for some guidelines. 5977 5978 * Applications: 5979 5980 - NSH can now use an EMACS-like command line editor. This CLE, is 5981 really more like the traditional readline than is the default, tiny 5982 the NuttX readline . 5983 - The touchscreen example can now be configured to work with either a 5984 touchscreen or a mouse device. 5985 - Several NSH commands can now be used to operate on objects in the 5986 top-level pseudo-filesystem: rmdir, mkdir, mv, and rm. This 5987 capability can be disabled with CONFIG_DISABLE_PSEUDOFS_OPERATIONS 5988 in order to keep the footprint small. 5989 - If both the CPU load feature and the procfs features are enabled, 5990 then the NSH 'ps' command will show the CPU load used by each 5991 thread. 5992 5993Bugfixes (see the ChangeLog for details). Some of these are very important: 5994 5995 * Core OS: 5996 5997 - task_terminate() always returned an error because the return value 5998 was not being set correctly (from Gosha). 5999 - nanosleep() Fix a missing call to re-enable interrupts (from Jason 6000 Jiang). 6001 6002 * File Systems: 6003 6004 - Fixed an error in the FAT logic that can cause file corruption. The 6005 error conditions are rare and only seen with very large files (from 6006 Andrew Tridgell). This replaces a previous, partial fix for the same 6007 problem. 6008 - Fixed memory leaks in the NXFFS open() and stat() implementations 6009 (from Lzyy). 6010 - The interfaces include opendir(), readdir(), et al, were modified so 6011 that errors will not be reported if you attempt to list a empty 6012 pseudo-directory. 6013 6014 * Networking: 6015 6016 - Fix one place where the connection reference count was not being 6017 decremented in the socket close() logic. This is really a cosmetic 6018 change BUT when CONFIG_DEBUG_NET is enabled, it will cause assertions. 6019 - Backed out a small part of the NuttX 6.33 write buffering changed. 6020 David G says that this causes problems in connecting to a server. 6021 - In DHCPD, there was a place where the logic was calling ntohl() 6022 inappropriately; the address was already in the correct order. How 6023 could DHCPD have worked with this bug? 6024 6025 * TI Tiva/Stellaris Drivers: 6026 6027 - Fixed cut'n'paste error that prevented UARTS2-7 from being used with 6028 the LM4F120 Launchpad. 6029 - Fixed several errors there were unmasked with UARTs > UART2 are 6030 enabled (grom Gosha). 6031 6032 * Allwinner A10 Drivers: 6033 6034 - Fixed cut'n'paste error that prevented UARTS2-7 from being used with 6035 the pcDuino. 6036 6037 * NXP LPC17xx Drivers: 6038 6039 - Fix an compilation error that crept into the LPC17xx USB host driver. 6040 6041 * STMicro STM32 Drivers: 6042 6043 - Fix cloned typo in the serial driver: FLOWCONTROL vs FLOWCONROL. 6044 - Disable SPI before changing DPI CR1 register (from David Sidrane). 6045 - stm32 TIM: Set the timer CCMR when selecting timer channel. From 6046 David Sidrane. 6047 - Fix typo in a Makefile: stm32_pwm.c not stm32_psm.c. Noted by Max 6048 Kriegleder. 6049 6050 * Library: 6051 6052 - More sscanf() bug fixes from David Sidrane. 6053 6054 * Header files: 6055 6056 - cstdbool: Ignore _Bool8 if CONFIG_C99_BOOL8=y 6057 6058 * Configuration/Build System: 6059 6060 - Several changes to restore the broken native Windows build 6061 6062 * NuttShell (NSH): 6063 6064 - Use strncpy vs strcpy in the Telnet console logic to avoid 6065 overrunning the username and password buffers (from Bertold Van den 6066 Bergh). 6067 - Add a newline after printing the file in the 'cat' command. This 6068 prevents the NSH prompt from be in the same line as the final line 6069 of the file in the case where there is no newline at the end of the 6070 file. 6071 6072NuttX-7.2 6073--------- 6074 6075The 102nd release of NuttX, Version 7.2, was made on April 29, 2014, 6076and is available for download from the SourceForge website. Note 6077that release consists of two tarballs: nuttx-7.2.tar.gz and 6078apps-7.2.tar.gz. Both may be needed (see the top-level nuttx/README.txt 6079file for build information). 6080 6081Additional new features and extended functionality: 6082 6083 * Core OS: 6084 6085 - Add support for CLOCK_REALTIME. From Macs N. 6086 6087 * Network Utilities: 6088 6089 - Add a very primitive NTP client. 6090 - DNS resolver: Long needed major clean up for coding style and 6091 unification of naming conventions (resolv vs dns). 6092 6093 * Common Drivers: 6094 6095 - Add a new MTD driver that can be used to contain another driver and 6096 force its apparent sector size to be 512 bytes. 6097 - If DCD can support queuing of stall requests, then the USB MSC stall 6098 work around delays are not necessary. 6099 - Redesign threading module used with the USB MSC driver. It was using 6100 pthreads before and these were changed to a kernel thread. The reason 6101 for this has to do with task grouping: A pthread is a memory of the 6102 group of the task that started it. A kernel thread is independent of 6103 the task that started in (other than knowing it as the parent). This 6104 allows me to remove so kludge logic to "deparent" the pthread on 6105 startup. 6106 - Update the MIO183QT-9A LCD driver to support reading from the LCD. 6107 From Toby Duckworth. 6108 - Timer "upper half" driver and l"lower half" interface definition from 6109 Bob Doiron. 6110 6111 * Atmel SAM4E/4S Board Support: 6112 6113 - All SAM4E configurations updated to run with 120MHz CPU speed and 6114 with the CMCC enabled. 6115 - Support for the SAM4S Xplained Pro board from Bob Doiron. 6116 - Add watchdog driver. From Bob Doiron. 6117 6118 * Atmel SAM4E/4S Drivers: 6119 6120 - Add a USB full speed device driver (UDP) for the SAM4E. 6121 - Add support in HSMCI and SPI drivers to invalidate cached memory if 6122 the CMCC is enabled. 6123 - Add logic to handle SPI word widths > 8 6124 - Port RTC driver from SAMA5 to SAM3/4. From Bob Doiron. 6125 - HSMCI: Extensions from Bob Doiron needed to support PDC-based HSMCI 6126 DMA transfers. Verified on the SAM4S Xplained Pro. 6127 6128 * Atmel SAMA5: 6129 6130 - Add support for the SAMA5D36 chip. 6131 - Add functions to calculate PLLACK, PCK, and MCK frequencies given 6132 the main clock frequency. 6133 - Implemented RAM functions. When booting directly into NOR flash, 6134 reconfiguring the PLL while executing out of NOR FLASH causes 6135 crashes. This was fixed by David Sidrane by implementing RAM 6136 functions. The killer code is copied and executed from ISRAM and 6137 the crash is avoided. 6138 6139 * Atmel SAMA5 Drivers: 6140 6141 - Add support for the SAMA5D3 DBGU. 6142 6143 * Atmel SAMA5 Board Support: 6144 6145 - Add a board support configuration for the Atmel SAMA5D3 Xplained 6146 board running out of SDRAM. When booting from SDRAM, start-up logic 6147 needd to query the PMC registers to determine the MCK, PCK, etc. 6148 - For all SAMA5 boards, added support for 528MHz clocking. 6149 6150 * TI Tiva/Stellaris: 6151 6152 - Modify the logic to disables the interrupts and sets the default 6153 interrupt priority so that it uses the ICTR to get the number of 6154 interrupt lines/registers. This is instead of using some fixed 6155 number of initializations based a priori knowledge of the number 6156 of interrupt lines in the MCU. 6157 6158 * STMicro STM32 6159 6160 - Add support for the STM401RE. From Frank Bennett. 6161 6162 * STMicro STM32 Boards: 6163 6164 - STM32F4Discovery: Add support to register keyboard and mouse 6165 classes if so configured. From Leo. 6166 - Add support for the Nucleo-F401RE board. From Frank Bennett. 6167 6168 * STMicro STM32 Drivers: 6169 6170 - Add STM32 Ethernet IGMP hashing support. From Manuel Stühn. 6171 - OTG FS Host: USB host tracing added by Leo. 6172 6173 * Freescale Kinetis 6174 6175 - Modify the logic to disables the interrupts and sets the default 6176 interrupt priority so that it uses the ICTR to get the number of 6177 interrupt lines/registers. This is instead of using some fixed 6178 number of initializations based a priori knowledge of the number 6179 of interrupt lines in the MCU. 6180 6181 * NXP LPC17xx 6182 6183 - Modify the logic to disables the interrupts and sets the default 6184 interrupt priority so that it uses the ICTR to get the number of 6185 interrupt lines/registers. This is instead of using some fixed 6186 number of initializations based a priori knowledge of the number 6187 of interrupt lines in the MCU. 6188 6189 * ZiLOG ZNEO Drivers 6190 6191 - Added ZNEO ESPI driver. 6192 6193 * Library: 6194 6195 - Finish incomplete support for ferror(). From Macs N. 6196 6197 * Documentation: 6198 6199 - UsbTrace.html: Add some discussion of the USB monitor. 6200 6201 * Configuration/Build System: 6202 6203 - compiler.h: Add macro UNUSED() that can be used to eliminate 6204 warnings about variables that are set to values that are not 6205 used. 6206 6207 * Debugging Support: 6208 6209 - Add a configuration option to enable dumping of the USB trace buffer 6210 on assertion. 6211 6212 * Applications: 6213 6214 - IGMP Example: Fill out Kconfig file; update makefile so that the 6215 IGMP example can be used as an NSH built-in application. From Manuel 6216 Stühn. 6217 - lcdrw Example: Fill out empty Kconfig file. 6218 - touchscreen Example: Add a configuration option to indicate if 6219 architecture-specific initialized is required, yes or no. 6220 - System usbmsc: Back out the USBMSC daemon... it is no longer needed 6221 with the recent fix to the USBMSC class driver. 6222 - NSH: malloc/free IOBUFFER for 'cat' and 'hexdump' commands instead of 6223 using the stack. From Bob Doiron. 6224 - cpuhog, serialblaster, and serialrx Examples: Stress test examples 6225 added by Bob Doiron. 6226 6227Bugfixes (see the ChangeLog for details). Some of these are very important: 6228 6229 * Core OS: 6230 6231 - errno_get_errno_ptr() and getpid(): Add some checks. If these 6232 functions are called very early in initialization before the tasking 6233 structures are initialized, they would not behave properly. 6234 6235 * Networking: 6236 6237 - IGMP-related bug fixes from Manuel Stühn. 6238 - In netdev_findbyaddr(), skip network devices that are in the "down" 6239 state. It does not make sense to consider an address match with a 6240 "down" device. From Brennan Ashton. 6241 6242 * Network Utilities: 6243 6244 - DHCPD: The correct value of the PAD option. Should be zero, not 6245 one. From Brennan Ashton. 6246 - Corrections to the NTP client from Manuel Stuehn. 6247 6248 * Common Drivers: 6249 6250 - usbhost.h: Fix some USB HID-related conditional compilation. From Leo. 6251 - USB HID mouse driver: Don't include NAKs from the device in the error 6252 count. From Leo. 6253 6254 * TI Tiva/Stellaris: 6255 6256 - Add corrected control logic for TM4C125GXL based on logic from Daniel 6257 Carvalho with modifications. The LM4F120 also works well with this 6258 change. 6259 6260 * STMicro STM32 Drivers: 6261 6262 - STM32 F2 SPI: Correct a mapping for SPI MOSI pin. From dlsitzer. 6263 - OTG FS Host: Fixes related to low-speed devices and interrupt 6264 endpoints from Leo. Necessary in order to use a USB HID mouse 6265 device. 6266 - STM32 SDIO: The dmaflight method must be conditioned on 6267 CONFIG_SDIO_PREFLIGHT. Noted by Pelle Windestam. 6268 - Sourceforge Ticket #26. up_prioritize_irq should not be called 6269 if CONFIG_ARCH_IRQPRIO is not defined. 6270 6271 * Atmel SAM3/4: 6272 6273 - Fix some backward conditional compilation in the start-up logic. 6274 - Fix initialization of the default interrupt priorities. This is 6275 a critical bug fix! 6276 - SAM4S: Fix error in macros that disable peripheral clocking. From 6277 Bob Doiron. 6278 6279 * Atmel SAMA5: 6280 6281 - Fix double mapping of SDRAM when executing out of SDRAM. In this 6282 case, the SDRAM was already mapping in arm_head.S. 6283 - In clock configuration, the BMS bit handling was fixed to match 6284 what the HW really does. From David Sidrane. 6285 - TLB Bufferable bit did not do what I thought it was going to do. 6286 I though I was selecting a write-through cache, but the result was 6287 that all caching was disabled and NOR FLASH accesses were very slow. 6288 - Move the un-definitions of __ramfuncs__ from the clock configuration 6289 .c file to the .h file. Otherwise, the attribute will be applied 6290 differently for the prototype and the function definition. 6291 Sourceforge patch 38 from Luciano Neri. 6292 6293 * Atmel SAMA5 Drivers: 6294 6295 - Fix a case in the UDPHS driver where received status was not being 6296 cleared, causing OUT SETUP commands to fail. 6297 - TWI data sending fails to increment the number of bytes transferred 6298 on first byte sent. from David Sidrane. 6299 - If running from SDRAM, then BOARD_MCK_FREQUENCY is not a constant 6300 and cannot be used in conditional compilation. All drivers fixed 6301 EXCEPT for the PWM and Timer/Counter drivers which will need some 6302 more extensive redesign. 6303 6304 * Atmel SAMA5 Boards: 6305 6306 - SAMA5D3x-EK: The red LED is controlled by PE24 which is also the 6307 camera/ISI interface reset line. So if the a camera is installed, 6308 then we must avoid controlling the red LED or we inadvertently 6309 also reset the camera module. Noted by David Sidrane. 6310 - Header files reference type xcpt_t in certain configurations and 6311 so must include nuttx/irq.h. This is Sourceforge bug 25 submitted 6312 by Luciano Neri. 6313 6314 * NXP LPC17xx Drivers 6315 6316 - arm/src/lpc17xx/Kconfig and lpc17_ethernet.c: The default interrupt 6317 priority should be default, not the highest priority (2014-4-19). 6318 6319 * ZiLOG ZNEO 6320 6321 - Fix calculation of timer reload and prescaler. The timer frequency 6322 was way too fast. 6323 6324 * Library: 6325 6326 - strncpy(): Change ordering of test and copy. Logic would have 6327 failed if n=0; one byte was always copying before testing 6328 for the end of the copy. 6329 - Fix a counting error in the return value from sscanf(). Noted by 6330 kfrolov. Also, sscanf() should return EOF if no values were 6331 converted. 6332 - Fix a logic error in ftell(). It was simply using the file offset 6333 and did not take into account data buffered in memory. From Macs N. 6334 - sccanf(): Use stroul() vs strol() with %u format otherwise, range 6335 of values is restricted because of sign bit. From kfrolov. 6336 6337 * Configuration/Build System: 6338 6339 - Fix a build error that occurs when only USB device tracing is enabled. 6340 6341 * NuttShell (NSH): 6342 6343 - Fix NuttShell version number display in the NSH welcome message. 6344 version.h was not being included. 6345 6346 * Other Applications: 6347 6348 - sysinfo: CONFIG_VERSION_BUILD is a string an needs to be 6349 printed with %s, not %d. Noted by Librae. 6350 - nxplayer: Compilation failure in one configuration reported by 6351 Manuel Stuhn. 6352 - System sdcard: Remove an STM32 dependency. From Bob Doiron. 6353 - telnetd Example: Naming is confused. In someplaces 'telnetd', 6354 and in others 'shell.' All changes to telnetd. Noted by Pelle 6355 Windestam. 6356 6357NuttX-7.3 6358--------- 6359 6360The 103rd release of NuttX, Version 7.3, was made on June 25, 2014, 6361and is available for download from the SourceForge website. Note 6362that release consists of two tarballs: nuttx-7.3.tar.gz and 6363apps-7.3.tar.gz. Both may be needed (see the top-level nuttx/README.txt 6364file for build information). 6365 6366Additional new features and extended functionality: 6367 6368 * Core OS: 6369 6370 - Dynamic loader: Framework to support Pascal P-Code as a binary 6371 format that can be exec'ed from a file system. 6372 - Dynamic Loader: Extend the binfmt interface to handle error 6373 conditions where format-specific clean-up is needed in the event 6374 of error conditions. This is needed by the P-Code binfmt. 6375 6376 * Networking 6377 6378 - IOB: Add a generic I/O buffer chain logic. This logic uses small, 6379 pre-allocated buffers that can be chained together to support 6380 transfers of any size, using fewer resources and also without 6381 committing in advance to a TCP window size. There is now only 6382 one I/O type used in the networking and it is these I/O buffer 6383 chains. 6384 - TCP Write Buffering: TCP write buffering logic converted to use 6385 I/O buffer chains. 6386 - TCP Read-Ahead Buffering: TCP read-ahead buffering logic converted 6387 to use I/O buffer chains. 6388 - Includes logic to support throttling of read-ahead buffering if 6389 the read-ahead buffering is competing with write buffering for 6390 I/O buffers. 6391 - Raw Sockets: Add support for the AF_PACKET socket family. From 6392 Daniel Lazlo Sitzer. 6393 6394 * Common Drivers: 6395 6396 - W25 Serial FLASH driver extended by Mark Whitehorn to support the 6397 8Mbit W25Q80BV part. 6398 - Add support for Fujitsu MB85RS1MT RAMTRON part. From Charles Ash. 6399 - Enhancements to the generic timer interface to support capture mode 6400 from Bob Doiron. 6401 - Add an rxflowcontrol method to the serial interface to better 6402 support RX flow control. This involves common changes in addition to minor updates to all MCU-specific serial drivers (only fully implemented for the STM32). From Jussi Kivilinna. 6403 6404 * Atmel SAM4C 6405 6406 - Add support for the SAM4CM family. From Max Neklyudov. 6407 6408 * Atmel SAM4E/4S Drivers: 6409 6410 - RTT driver from Bob Doiron. Also added high resolution RTC 6411 emulation using the RTT for the sub-second counter. 6412 6413 * Atmel SAM4E/4S Board Support: 6414 6415 - The SAM4S Xplained Pro now uses the extended timer/counter 6416 features. From Bob Doiron. 6417 - Added a touchscreen and LCD driver for the SAM4E-EK board (the LCD, 6418 however, not yet fully functional). 6419 6420 * Atmel SAMA5: 6421 6422 - Optimized, high performance, assembly language memcpy(). This is 6423 the same optimized memcpy() function that Mike Smith brought in 6424 for the ARMv7-M with minor tweaks by David Sidrane to work with 6425 the ARMv7-A. 6426 - Basic support added for the SAMA5D4 family. 6427 6428 * Atmel SAMA5 Drivers: 6429 6430 - SAMA5D4: New drivers unique to the SAMA5D4: XDMAC, SAIC, and 6431 others. 6432 6433 * Atmel SAMA5 Board Support: 6434 6435 - SAMA5D4-MB: Initial board support for the SAMA5D4-MB/EK boards. 6436 6437 * STMicro STM32 6438 6439 - Add support for the STM32152 and STM32162 Medium+ density parts 6440 (plus miscellaneous other improvements to the original STM32151 6441 logic). From Jussi Kivilinna and Sami Pelkonen. 6442 6443 * STMicro STM32 Boards: 6444 6445 - Support for the Olimex STM32 H405 board contributed by Martin 6446 Lederhilger. 6447 6448 * STMicro STM32 Drivers: 6449 6450 - Implement the rxflowcontrol method to the serial interface to better 6451 support RX flow control. From Jussi Kivilinna. 6452 6453 * NXP LPC17xx Drivers: 6454 6455 - Added support for the RTC, ADC, DAC, Timers, PWM and MCPWM 6456 drivers. From Max (himax). 6457 6458 * NXP LPC17xx Boards: 6459 6460 - Support for the RTC, ADC, DAC, Timers, PWM and MCPWM integrated 6461 in the LPCXpresso LPC1768 board support. From Max (himax). 6462 6463 * Library: 6464 6465 - Add support for seek-able streams. 6466 6467 * Configuration/Build System: 6468 6469 - Restructured network directories, header files, and naming to 6470 better modularize the networking and to better integrate the 6471 networking with the rest of NuttX. 6472 6473 * Applications: 6474 6475 - prun: An NSH built-in application that can be used to run 6476 Pascal P-Code programs either programmatically or from the NSH 6477 command line. 6478 - netpkt: A "raw" socket test from Lazlo Sitzer. 6479 - hex2bin: A library and built-in task to convert from 6480 Intel HEX to binary format. It can write the binary data to a file or it can store the binary data to memory (to support, for example, a loader). 6481 6482Bugfixes. Only the most critical bugfixes are listed here (see the ChangeLog for the complete list of bugfixes and for additional, more detailed bugfix information): 6483 6484 * Core OS: 6485 6486 - Dynamic Loader: Fix an error in a symbol table search function. 6487 Noted by Pelle Windestam. 6488 - Dynamic Loader: Fix a critical error in exec(); argv was not 6489 being passed. 6490 - mq_notify: Test for a valid signal number was inverted; this 6491 function could not have been working correctly before??? From 6492 eero.nurkkala. 6493 - Fix typo in conditional compilation: CONFIG_CLOCK_MONOTONIC vs. 6494 CLOCK_MONOTONIC. From Manuel Stühn. 6495 6496 * Graphics 6497 6498 - Fix typos in several RGB conversion macros. 6499 6500 * Networking: 6501 6502 - Modify TCP timeout handling to provent situations where connections 6503 may not be freed. From Max Holtzberg. 6504 - Improved TCP fallback allocation logic from Max Holtzberg. Also, 6505 fallback mechanism is disabled when SO_LINGER is to prevent 6506 deadlocks. 6507 - Write Buffering: Add checks from buffer allocation failures. From 6508 Max/Himax. 6509 6510 * Network Utilities: 6511 6512 - webserver: httpd_fs_open() should return OK on success and ERROR on 6513 failure, not 1 and 0. 6514 6515 * Common Drivers: 6516 6517 - Make sure that all references to up_prioritize_irq() are 6518 conditioned on CONFIG_ARCH_IRQPRIO. Problem noted by Mike Smith. 6519 - CC3000: Correct SPI mode for CC3000 is CPOL=0 CHPA=1. From Jussi 6520 Kivilinna. 6521 - CC3000: Fix a race condition in thread start-up logic. From Jussi 6522 Kivilinna. 6523 - CC3000: Additional fixes including a compilation failure if POLL is 6524 enabled. From Jussi Kivilinna. 6525 6526 * USB Drivers: 6527 6528 - CDC/ACM and PL2303 device: Reset RX head to avoid resending last 6529 serial data when USB cable disconnected/re-connected. From 6530 Lizhuoyi. 6531 6532 * TI Tiva/Stellaris Boards: 6533 6534 - The Nucleo-F401RE has no on-board crystals and, hence, needs to run 6535 with the PLL input from the on-chip HSI clock. 6536 6537 * STMicro STM32 Drivers: 6538 6539 - Serial: Handle configuration for the case of 8-bit data with 6540 parity. From Freddie Chopin. 6541 6542 * Atmel SAM3/4 Boards: 6543 6544 - There was a cloned error in all SAM3/4 board configurations (and 6545 for a few other architectures as well). Button interrupts not 6546 being disabled after being detached. As a result, unexpected 6547 interrupts could be received after the button interrupt was 6548 detached. 6549 6550 * Atmel SAMA5: 6551 6552 - Fix some critical typos in the SAMA5D3 DMA definitions. 6553 6554 * STMicro STM32 Drivers 6555 6556 - I2C: Add an alternative I2C implementation for the STM32 F103 that 6557 works around errata in that specific part. From Patrizio Simona. 6558 - RTCC: Add retry logic to RTC initialization. It sometimes takes 6559 longer for the RTC to initialize, at least as noted on an F2 part. 6560 From Daniel Lazlo Sitzer. 6561 6562 * NXP LPC17xx Drivers 6563 6564 - GPDMA: Fix an error when DMA is started: The read-modify-write 6565 fails when the DMA is started. This is because the value read is 6566 not the same as the value set (on write it is the number of 6567 transfers to do; on read it is the number of transfers completed). 6568 From Lizhuoyi. 6569 6570 * Library: 6571 6572 - snprintf(): If the size passed to snprintf() is zero, then 6573 snprintf() must write nothing, but instead return the size of the 6574 buffer needed to hold the entire string. From Sami Pelkonen. 6575 6576 * Configuration/Build System: 6577 6578 - The alternate console device CONFIG_NSH_CONDEV must not be defined 6579 unconditionally. This causes errors when using Telnet sessions. 6580 This was solved by adding CONFIG_NSH_ALTCONDEV: CONFIG_NSH_ALTCONDEV enables or disables the feature then, if 6581 enabled, CONFIG_NSH_CONDEV provides the alternative console 6582 device name. 6583 - Many files: Convert all old-style GCC variadic macros to the C99 6584 form. Recent GCC changes tightens up that behavior and can cause 6585 some problems (at least for the IAR compiler for some reason). 6586 Noted by Bob Grimes. 6587 - tools/configure.sh: In-place SED edit messes up permissions on 6588 windows. From Hannes Delago. 6589 6590 * Build Tools: 6591 6592 - tools/mkfsdata.pl: Apparently, the trailing the 0x00 in http 6593 server files is seen as a bug in javascript and images. From 6594 Max/Himax. 6595 6596 * Other Applications: 6597 6598 - I2C Tool: Fix to show the updated register address on each 6599 fetch (vs. showing the same starting address each time). From 6600 Ryan VanSickle. 6601 - CLE was not returning the terminating newline character. But 6602 reported by Max kriegleder. 6603 6604NuttX-7.4 6605--------- 6606 6607The 104th release of NuttX, Version 7.4, was made on August 15, 2014, 6608and is available for download from the SourceForge website. Note 6609that release consists of two tarballs: nuttx-7.4.tar.gz and 6610apps-7.4.tar.gz. Both may be needed (see the top-level nuttx/README.txt 6611file for build information). 6612 6613Additional new features and extended functionality: 6614 6615 * Core OS: 6616 6617 - Beginnings of a crypto/ subsystem from Max Neklyudov 6618 - Tickless operation: NuttX now supports a mode with no periodic 6619 timer interrupts. Rather, timed events are handle via an interval 6620 timer. This (1) lowers the rate of interrupt processing to timer 6621 events, (2) gives much high timing resolution, and (3) allows lower 6622 power modes of operation where the CPU is not constantly being 6623 interrupted by the timer. 6624 - Restructured the OS files under sched/ to better support the already 6625 modular nature of the RTOS. 6626 6627 * Networking 6628 6629 - Substantial directory and header file reorganization and renaming to 6630 make the NuttX networking implementation more modular. 6631 - Add network device ioctl to access PHY registers. From Daniel Lazlo 6632 Sitzer 6633 6634 * Binary Loader: 6635 6636 - Various changes associated with symbol tables from Pelle Windestam. 6637 6638 * Graphics: 6639 6640 - colorcmp(): New utility to compare two colors. 6641 - The initial background color is now configurable. Includes logic to 6642 eliminates multiple background updates to get the right color. 6643 - Minor configuration changes to handle mouse X/Y and touchscreen 6644 X/Y differently. 6645 6646 * File System/Block Drivers: 6647 6648 - SmartFS: Increase some variables from uint16_t to uint32_t to handle 6649 larger device sizes. From Ken Pettit. 6650 - Add configurable AES encryption support to the block-to-character 6651 (BCH) driver. This allows any block device to be accessed as an 6652 encrypted character device. From Max Nekludov 6653 - Add an MTD layer that will add read-ahead or write buffering to any 6654 MTD driver (incomplete). 6655 - Automounter: Add support for an auto-mounter that will automatically 6656 mount and unmount a file system a media is inserted and removed 6657 6658 * Audio/Audio Drivers 6659 6660 - WM8904 audio CODEC driver. 6661 - PCM .WAV file decoder. Fast forward implemented with sub-sampling 6662 (currently no rewind support). 6663 - Add a NULL audio device that can be used to simply unit-level testing 6664 of audio decoders. 6665 - Audio subsystem now supports interfaces for fast-forward and rewind 6666 needed by CMediaPlayer; add hooks for equalizer settings needed by 6667 the WM8904 CODEC. 6668 6669 * Other Common Drivers: 6670 6671 - MTD: Extend erase block size to 18-bits in order (decrease block 6672 size to 14-bits) to handle parts with large erase blocks. From Kosma 6673 Moczek 6674 - maxTouch: Add support for the Atmel maXTouch touchscreen controller. 6675 6676 * Host Simulation: 6677 6678 - Provides the timers needed to support the Tickless mode of operation. 6679 6680 * Atmel SAM4C: 6681 6682 - Add SAM4CM IPC register header file. From Max Neklyudov 6683 - Various fixes PMC and clock configuration for the SAM4CM port from 6684 Max Neklyudov 6685 6686 * Atmel SAM4E/4S Drivers: 6687 6688 - SAM4 AES driver. Contributed by Max Neklyudov 6689 6690 * Atmel SAMA5: 6691 6692 - Add logic to redirect all SAMA5D4 interrupts to the AIC 6693 - Add a configuration option to reserve DRAM for a framebuffer when 6694 executing out of DRAM. This optional was available before when 6695 executing out of NOR, but needs to work a little differently in 6696 this case. 6697 - Add SAMA5 slow (32.768KHz) clock support. 6698 - Add support for the ARM L2CC-PL310 L2 cache. The system runs with 6699 L2CC cache enabled but there is some issues still with the LCD DMA; 6700 I suspect that the memory timing configuration for L2CC needs to 6701 be tuned. 6702 - Provides the timers needed to support the Tickless mode of operation. 6703 6704 * Atmel SAMA5 Drivers: 6705 6706 - XDMAC-based HSCMI driver for the SAMA5D4 6707 - Adapt the SAMA5D3 LCDC driver to work with the SAMA5D4 which has 6708 no hardware cursor. 6709 - PIO: Add a new interface sam_pio_forceclk() that can be used to 6710 force PIO clocking on. I am afraid I was too conservative with 6711 PIO clocking in the initial design; this is the price. 6712 - TWI: Now supports the up_i2creset() method. 6713 - TWI: Use sam_pio_forceclk() so that we can read the current state 6714 of an open-drain output in the TWI reset logic. 6715 - SSC: SCC Frame Synch Delay and Start Delay are now configurable. 6716 - PCK: Add the slow clock and the main clocks as options for the 6717 PCK configuration. 6718 - Timer/Counter: Can now handle non-constant BOARD_MCK_FREQUENCY. Also 6719 now supports methods to attach client interrupt handlers 6720 - One shot and free-running timers. These are wrappers around the low 6721 level timer/counter logic to provide one-shot and free-running 6722 timers. These were developed to support the Tickless operation, but 6723 can be used for any purpose. 6724 6725 * Atmel SAMA5 Board Support: 6726 6727 - Add a boot loader that runs from ISRAM and loads an Intel HEX file 6728 into DRAM. 6729 - Add a configuration that will load a bootloader into AT25 Serial 6730 FLASH 6731 - SAMA5D4-EK NSH configuration supports many more features: RTC, HSCMI 6732 card detection, maXTouch touchscreen, TM7000 LCD, the command line 6733 media player (currently using the NULL audio device), automounter, 6734 and others. 6735 - SAMA5D4-EK: Add an NxWM configuration using the TM7000 LCD with 6736 the maXTouch multi-touch touchscreen. 6737 - SAMA5D4-EK NxWM: Uses new, larger icons in configuration instead of 6738 scaling. 6739 - SAMA5D4-EK NxWM: The NxPlayer and audio system are now enabled in 6740 the default configuration (but currently using the NULL audio 6741 device). The automounter is used to automatically mount media 6742 on an SD card. 6743 - SAMA5D3x-EK: Add a configuration to support the command line 6744 NxPlayer and to verify the WM8904 CODEC driver. 6745 6746 * STMicro STM32: 6747 6748 - Add support for the STM32F103RC and RD. From Kosma Moczek 6749 - Add a procfs entry to show the state of the CCM heap usage. 6750 From Pelle Winderstam 6751 6752 * STMicro STM32 Drivers: 6753 6754 - Unconfigure GPIO pins when closing a serial port to prevent back 6755 effects from back-powering on the TX pin. From Kosma Moczek 6756 6757 * NXP LPC17xx Drivers: 6758 6759 - ADC: Added burstmode ADC conversion mode, with CONFIG_ADC_BURSTMODE 6760 option in Kconfig. From Max 6761 - Ethernet: Added option to use the kernel worker thread to do most of 6762 the workload with CONFIG_NET_WORKER_THREAD option in Kconfig. From Max 6763 - Ethernet: Critical bugfix: From time to time (after some hours) the 6764 Ethernet receiver would lose one receive interrupt and the IP stack 6765 never recover because there is no receive watchdog as the transmit 6766 watchdog. From Max 6767 6768 * NXP LPC17xx Boards: 6769 6770 - mbed: Port ADC, DAC, and PWM logic from the configs/zkit-arm-1769. 6771 From Max 6772 - mbed: Eliminated a problem with PHY DP83848C : it doesn't need a 6773 specific initialization on mbed. From Max 6774 6775 * Library: 6776 6777 - Adds support for localtime. From Max Neklyudov 6778 6779 * Configuration/Build System: 6780 6781 - Make variable definitions 'static const' when possible to save RAM 6782 usage. From Kosma Moczek 6783 6784 * Applications: 6785 6786 - system/mdio: New PHY tool from Daniel Lazlo Sizter. 6787 - NSH: Networking logic modified to handler the case of SLIP 6788 transport. From Max Neklyudov. 6789 - NSH: Add a configuration to use a USB keyboard for the stdin 6790 device. 6791 - NSH: Software assigned MAC address is now configurable. From Lazlo. 6792 - NSH: Also add an option to let platform-specific logic select the 6793 MAC address. 6794 - NSH: There is now a configuration option that will bring up the 6795 network on an separate thread. Since the network bring-up is 6796 asynchronous, there are no serial console start-up delays due 6797 to the network negotiation time. 6798 - NxPlayer: Changes to integrate with Ken's NxWM::CMediaPlayer. 6799 - NxPlayer: Add interfaces for fast-forward and rewind needed by 6800 CMediaPlayer; add interface for equalizer settings needed by the 6801 WM8904. 6802 - NxPlayer: Supports new way of identifying the end of the audio 6803 stream (see the Audio section above). 6804 - Sudoku: Add a sudoku game. 6805 6806Bugfixes. Only the most critical bugfixes are listed here (see the ChangeLog for the complete list of bugfixes and for additional, more detailed bugfix information): 6807 6808 * Graphics: 6809 6810 - NxConsole: Fix scrolling for the case of the framebuffer device. In 6811 this case, the logic for clearing the vacated region at the bottom 6812 was missing so garbage would scroll up from the last, uncleared 6813 line. 6814 6815 * Networking: 6816 6817 - Important fix to the read-ahead buffer queue management: Consumed 6818 bytes were being trimmed from the head of the queue, but the queue 6819 head itself was not being updated. From Rony XLN. 6820 - Fix an error in SLIP escaping. From Max Neklyudov 6821 6822 * Network Utilities: 6823 6824 - Fix an include file ordering problem when CONFIG_NET_STATISTICS=y. 6825 - Move statistics from uip.h to new netstats.h to remove a circular 6826 inclusion problem 6827 - Various fixes for networking and tiny webserver from Max 6828 - webclient: Fix to offset calculation from Rony Xln. Prevents 0x0a 6829 at the beginning of lines. 6830 - webserver: Fix some configuration usage issues. From Max. 6831 - webserver: Missing logic to close sockets on loop termination. 6832 6833 * File System / Block Drivers: 6834 6835 - SmartFS: Fix for a bug that would show up if CONFIG_MTD_BYTE_WRITE 6836 was not selected and the SMART sector size was larger than the MTD 6837 device's block size (like it would be if using SMARTFS on larger 6838 flash devices). From Ken Pettit. 6839 6840 * Audio: 6841 6842 - Change how the end of the audio stream is detected by the leaf audio 6843 component. This used to be done by looking for the first partial 6844 buffer. That does not work with the in-place sub-sampling performed 6845 by the PCM decoder: That always reduces the size of the buffer so 6846 that all buffers only partially filled by the time they get to the 6847 leaf. Now, a flag is set in the audio buffer flags set to indicate 6848 the final buffer in the stream. 6849 6850 * Common Drivers: 6851 6852 - RAMLOG putc() method needs to set the errno and return EOF on a 6853 failure. 6854 - Add missing configuration option to select the MAX11802 touchscreen 6855 controller. From Petteri Aimonen 6856 6857 * Atmel SAMA5D3/4: 6858 6859 - Fix logic in conversion of physical and virtual DRAM addresses when 6860 running out of DRAM. This is an important bug fix for the SAMA5D3 6861 and 4 when running out of DRAM . 6862 - Critical SAMA5D3 and 4 bug fix: PIO clocking must be enabled for 6863 all input pins or else the value that is read never changes. 6864 6865 * Atmel SAMA5D3/4 Drivers: 6866 6867 - OHCI: Fix an error in a DEBUGASSERT statement. Caused an 6868 assertion to fire inappropriately when a low- or full-speed device 6869 was removed and CONFIG_DEBUG=y 6870 - OHCI: Pointers to allocated port values were not being 6871 nullified after being deallocated. This caused some assertions 6872 to fire when debug was enabled 6873 - SSC: Needs to account for data offset in audio buffer 6874 6875 * ARMv7-M: 6876 6877 - Correct the initial value of the BASEPRI register. This was 6878 apparently never being initialized! From Max 6879 6880 * STMicro STM32 Drivers: 6881 6882 - I2C: Fix missing configuration of GPIO pins in I2C driver. Fix 6883 from Alex D. 6884 - STM32 OTGFS device: Various changes to try to reduce that amount of 6885 time in interrupts handles and with interrupts disabled. From 6886 Petteri Aimonen 6887 6888 * Atmel SAM3/4 Drivers: 6889 6890 - Ethernet: Wrong bits being cleared before OR-ing in new settings. 6891 - Ethernet: Fix an error in the function that determines the number 6892 of free TX descriptors. This is an important bugfix on busy 6893 networks. 6894 - I2C: Test for read or write operation was reversed. How could 6895 this have worked before? 6896 6897 * Atmel SAM3/4 Boards: 6898 6899 - SAM4S Xplained-Pro: Correct description of LEDs and usage. From 6900 Kosma Moczek 6901 6902 * Atmel SAMA5: 6903 6904 - PIO: Fix definitions that could disable PIO interrupt support if only 6905 PIOE interrupts were enabled 6906 - PIO: Macro SAM_PION_VBASE is not define-able for the SAMA5D4 and must 6907 be replaced with a table lookup. 6908 - PIO: Fix a typo in Schmitt trigger configuration; Configure pin as a 6909 vanilla input first so that final pin configuration is more read-able 6910 (i.e., easier to debug) 6911 - PIO: Logic for Schmitt trigger selection backward 6912 - SAMA5D4: Correct system timer frequency. Input clock is MCK/2, not MCK. 6913 6914 * Atmel SAMA5 Drivers: 6915 6916 - Ethernet: Wrong bits being cleared before OR-ing in new settings. 6917 - Ethernet: Fix an error in the function that determines the number 6918 of free TX descriptors. This is an important bugfix on busy 6919 networks. 6920 - HSMCI: The 8-byte SCR transfer was failing silently with the DMA 6921 transfer, leaving the SD card in single bit mode. Fixed by adding 6922 a non-DMA read transfer mode. 6923 - HSMCI: Fix a problem on card insertion/removal callback handling. 6924 Interrupts were being disable so that the callbacks occurred with 6925 interrupts disabled. This resulted in loss of some interrupts and 6926 some not-so-good behaviors. The solution is to perform all 6927 callbacks on the work thread unconditionally 6928 6929 * Atmel SAMA5 Boards: 6930 6931 - PIO: Fix some cloned errors in SAM GPIO interrupt setup 6932 6933 * NXP LPC17xx Drivers: 6934 6935 - Ethernet: Comment out an assertion that is reported to fire 6936 inappropriately. From Max 6937 6938 * Library: 6939 6940 - stdint.h: Correct naming of [U]INT_LEASTn_{MAX|MIN} and 6941 [U]INT_FASTn{MAX|MIN}. From Kosma Moczek 6942 - unistd.h: POSIX definitions should be defined to a value. rom Kosma 6943 Moczek 6944 - Fixes associated with rint() and related interfaces in the math 6945 library. 6946 6947 * Configuration/Build System: 6948 6949 - NAME_MAX not available on SunOS; use FILENAME_MAX or MAXNAMELEN. 6950 Noted by Douglas Beattie 6951 6952 * Applications: 6953 6954 - NSH: if # appears on line, need to comment ignore additional 6955 commands on the line 6956 - NxPlayer: Check for file read errors and end-of-file with zero 6957 bytes read. Other error handling corrected as well. 6958 - NxPlayer: NxPlayer needs to set curbyte field to zero before 6959 enqueuing a buffer. Otherwise, it looks like beginning of the 6960 buffer has already been consumed. 6961 6962NuttX-7.5 6963--------- 6964 6965The 105th release of NuttX, Version 7.5, was made on September 28, 2014, 6966and is available for download from the SourceForge website. Note 6967that release consists of two tarballs: nuttx-7.5.tar.gz and 6968apps-7.5.tar.gz. Both may be needed (see the top-level nuttx/README.txt 6969file for build information). 6970 6971Additional new features and extended functionality: 6972 6973 * Core OS: 6974 6975 - Watchdog Timer Allocation: (1) If we run out of pre-allocated 6976 watchdog times, the logic will now allocate additional timers 6977 from the heap. A reserve of pre-allocated watchdog timers is 6978 maintained so that there will always be timers available for 6979 interrupt handlers. (2) Added support for statically allocated 6980 watchdog timer 6981 - Address Environment Support: (2) New OS APIs integrated into all 6982 platform-specific context switching logic (up_block_task(), 6983 up_unblock_task(), _exit(), and others). 6984 - Kernel Build Support: (1) The MPU based "kernel build" renamed to a 6985 protected build (CONFIG_BUILD_PROTECTED); added support for the a 6986 new MMU-based "kernel build" (CONFIG_BUILD_KERNEL), (2) The system 6987 call library can now be built with CONFIG_NUTTX_KERNEL. New 6988 selection: CONFIG_LIB_SYSCALL. 6989 - System Startup: Add configuration options to start the system from 6990 a program on a file system (versus an address in memory). 6991 - Startup Parameter Passing. There used to be two ways to pass 6992 parameters to new tasks, depending upon the configuration: Either 6993 (1) argv[] as created as an array with each string strdup'ed. Or 6994 (2) argv[] array and strings were created on the stack before the 6995 new task was started. Now, there is only one way, way (1). Way 6996 (2) might be slightly more compact, but this is not worth carry the 6997 complexity of two different ways of doing the same thing. 6998 - Board Initialization: Add capability to perform initial board 6999 initialization on a separate worker thread. This is needed because 7000 there are many cases where initialization logic cannot execute on 7001 the start-up/IDLE thread. That is because blocking or waiting is 7002 not permitted on the IDLE thread. 7003 7004 * Memory Management: 7005 7006 - Granule Allocator: (1) Add a new function to reserve un-allocatable 7007 regions in the granule heap. (2) Add interfaces to support 7008 un-initializing a granule allocator. 7009 - Page Allocator: Add a simple physical page allocator based on the 7010 existing NuttX granule allocator. I am not certain if the granule 7011 allocator is sufficiently deterministic for long range use, but it 7012 gets get a page allocator in place for testing very quickly. 7013 - Remove CONFIG_MM_MULTIHEAP. Non-multiheap operation is no longer 7014 supported. 7015 - sbrk(): sbrk() is now supported in the kernel build to permit 7016 dynamically sized, per-process heaps. 7017 - Per-Process Heaps: Space at the beginning of the process data space 7018 is now reserved for user heap management structures. In the kernel 7019 build mode, these heap structures are shared between the kernel and 7020 use code in order to allocate user-specific data. 7021 - User Heap Management: When a privileged thread exits, we have to 7022 use the kernel allocator to free memory; when an unprivileged thread 7023 exits, we don't have to do anything... heap memory will be cleaned 7024 up when the address environment is torn down. 7025 - Inter-Process Shared Memory Support: (1) Add implementation and 7026 documentation for shmget(), shmctl(), shmat(), and shmdt(). (2) 7027 Add system system calls to support the user call gate to the shared 7028 memory interfaces. (3) Add platform-specific interface definitions 7029 needed to support the shared memory feature. 7030 - Virtual Page Allocator: Add support for a per-process virtual page 7031 allocator. This is a new member of the task_group_s structure. The 7032 allocator must be initialized when a new user process is started and 7033 uninitialize when the process group is finally destroyed. It is 7034 used by shmat() and shmdt() to pick the virtual address onto which 7035 to map the shared physical memory. 7036 7037 * File Systems/Block Drivers/MTD: 7038 7039 - SMART FS and SMART FS procfs updates from Ken Pettit. 7040 - The MTD Read-ahead/Write buffer layer appears is now functional. 7041 7042 * Binary Formats: 7043 7044 - Add logic to initialize the per-process user heap when each user 7045 process is started. 7046 7047 * Graphics: 7048 7049 - Change all occurrences of NxConsole to NxTerm. 7050 7051 * Networking: 7052 7053 - PHY Interrupts: (1) Standardize a PHY interrupt attachment 7054 interface. (2) Add support for an ioctl that can be used to notify 7055 an application when there is a change in the network status 7056 signalled by a PHY interrupt. 7057 - Improved Send Logic: In the past, the first packet send to a new 7058 network peer would fail; there would be no entry in the ARP table 7059 for the peer and so an ARP request could replace that first packet. 7060 Now as an option if CONFIG_NET_ARP_SEND=y, all send logic will (1) 7061 check if the peer MAC address is in the ARP table and, if not, (2) 7062 send ARP requests periodically to get the mapping and (3) wait for 7063 the ARP response. Then (4) when the ARP response is received then 7064 the actual send logic will be initiated. Thus there may be a delay 7065 with the first packet sent to a new peer, but the packet should not 7066 be lost 7067 7068 * Host Simulation: 7069 7070 - Emulated SPI FLASH driver for the sim target from Ken Pettit. 7071 7072 * Intel x86: 7073 7074 - The default host is now x86_64 and the -m32 option will be 7075 automatically selected for simulation builds. 7076 7077 * Intel 8051 Family: 7078 7079 - Removed all support for the 8051 family architecture from the NuttX 7080 source tree. The obsoleted code along with the removal patch can 7081 now be found at misc/Obsoleted/. This code was removed because (1) 7082 although some functionality has been demonstrated, I am not aware of 7083 any really successful ports of NuttX to any 8051, and (2) the 8051, 7084 with its hardware stack, forces limitations and complications to the 7085 other architectures and make growth and development of NuttX more 7086 complex. 7087 7088 * ZiLOG ZNeo Boards: 7089 7090 - configs/16z: Support for this board has been removed from the NuttX 7091 source tree (but still can be found in the misc/Obsoleted 7092 directory). This port is not ready for usage but may return to the 7093 NuttX tree at some point in the future. 7094 7095 * Atmel SAM3/4 Boards: 7096 7097 - SAM4E-EK: Add (1) a fully-functional ILI9341-based LCD driver and 7098 (2) a fully-functional NxWM configuration. 7099 7100 * ARMv7-A: 7101 7102 - Address Environments: Add support for application address 7103 environments using the Cortex-A MMU. Implement standardized 7104 platform-specific interfaces of NuttX address environment 7105 support. 7106 - Cache Operations: Implement standardized, platform-specific cache 7107 operations. These are called from the ELF loader in order to flush 7108 D-cache and invalidate I-cache after an ELF module has been loaded 7109 into memory. With this change, ELF modules work correctly on the 7110 SAMA5/Cortex-A platform. 7111 - Kernel Build: (1) Add implementations of system call gate. (2) Add 7112 CRT0 start-up file that can be linked with separately built user 7113 programs. (3) Add support for delivery of use-mode signals in the 7114 kernel build. (4) Add logic to initialize the per-process user heap 7115 when each user process is started. (5) ARMv7-A exception handling 7116 needs to work a little differently if we support user mode 7117 processes. This is because R13 and R14 are paged differently 7118 between user and SVC mode. 7119 - Shared Memory Support: (1) Add logic necessary to handle remapping 7120 of shared memory on context switches. (2) Extend virtual/physical 7121 address conversions to include addresses in shared memory. (3) Add 7122 implementation of platform-specific shared memory support. 7123 7124 * Atmel SAMA5D Drivers: 7125 7126 - Implement all network ioctls, including the new ioctl to setup PHY 7127 event notifications. 7128 - In kernel build with address environment, need logic to map user 7129 virtual addresses to physical addresses, and vice versa. 7130 7131 * Atmel SAMA5D Boards: 7132 7133 - SAMA5D3 Xplained, SAMA5D3-EK, and SAMA5D4-EK: Convert existing 7134 board specific PHY interrupt interfaces to use newly defined 7135 standard interface. 7136 - SAMA5D4-EK: Add a configuration for testing the kernel build 7137 configuration. There are configurations to boot either from an SD 7138 card or from and in-memory ROMFS file system. 7139 - SAMA5D4-EK: Add documentation/support for Rev E. board. 7140 7141 * STMicro STM32 Drivers: 7142 7143 - Ethernet: Modified to support the change to the network ioctl 7144 signature changes. Also add support for new ioctl to setup PHY 7145 event notifications. 7146 7147 * STMicro STM32 Boards: 7148 7149 - STM32F4Discovery with STM32F4DIS-BB: Add a network enabled NSH 7150 configuration for the STM32F4Discovery board with the STM32F4DIS-BB 7151 base board installed. Includes support for the microSD card slot on 7152 the STM32F4DIS-BB base board. 7153 7154 * TI Tiva Drivers: 7155 7156 - Add support for the TI CC3200. From Jim Ewing. 7157 7158 * TI Tiva Boards: 7159 7160 - Add support for the TI CC3200 Launchpad. From Jim Ewing. 7161 7162 * C Library: 7163 7164 - Re-implemented poll() delay using sem_timedwait(). 7165 7166 * Configuration/Build System: 7167 7168 - Export Target: In the kernel or protected builds, (1) only the user 7169 libraries should be exported, (2) do not copy internal header files 7170 or build scripts if this is a kernel or protected build, and (3) 7171 needs to bundle up the user C startup file (crt0), not the kernel 7172 head object for the kernel and protected builds. 7173 - Add logic that will permit us to build user libraries with different 7174 CFLAGS than kernel code. This is needed because we need the 7175 -fno-common option when building ELF code to prevent SHN_COMMON 7176 relocations. 7177 7178 * Applications: 7179 7180 - NSH: Extend the NSH network initialization logic. There is now an 7181 option that will create a network monitor thread that will monitor 7182 the state of the link. When the link goes down, the code will 7183 attempt to gracefully put the Ethernet driver in a down state; When 7184 the link comes back, the code will attempt to bring the network back 7185 up. 7186 - ELF Example: The ELF test/example has been extended so the 7187 individual ELF test programs can link against the SYSCALL library 7188 (if it is available) or against the C library to eliminate or 7189 minimize the need for symbol tables. 7190 - Change all occurrences of NxConsole to NxTerm. 7191 - MTDRWB Example: Add an example to test MTD R/W buffering. 7192 - OS Test Example: Add a trivial test of sem_timedwait. 7193 7194 * Application Configuration/Build System: 7195 7196 - Import Target: (1) Add logic that will allow building applications 7197 against a NuttX export package (vs. the nuttx/ source tree). (2) 7198 Add .config file to export package. (3) Create apps/import. Create 7199 apps/import/Make.defs that does things like define CFLAGS; ELF build 7200 requires -fno-common in CFLAGS. Copy some base logic from 7201 nuttx/tools/Config.mk to apps/import/Make.defs. (4) Add 7202 apps/import/scripts/gnu-elf.ld GCC linker script for ELF import 7203 builds. 7204 - All Makefiles: (1) Add an install target to all makefiles. For 7205 the import build, the top-level Makefile now does two passes: (1) 7206 builds libapp.a, then (2) installs the programs into apps/bin. (2) 7207 Add program installation for CONFIG_BUILD_KERNEL in all Makefiles 7208 that build a main(). (3) For kernel build, the object file 7209 containing main cannot go into library because of name collisions. 7210 The object file must be handled as a special case in every Makefile. 7211 - All Built-In Programs: With kernel build (CONFIG_BUILD_KERNEL), 7212 entry point to all tasks is main(), not some xyz_main(). 7213 - NSH: Several commands must be disabled in the kernel build because 7214 they depend on interfaces that are not available outside of the 7215 kernel: dd, df, losetup, mkfatfs, mkdr, and ps. 7216 - apps/tools/: (1) Add mkimport.sh to expload an NuttX import package 7217 and install in apps/import. (2) Add mkromfsimg.sh script to create 7218 a BOOT ROMFS filesystem image. 7219 - ELF and NxFLAT Examples: Do not build test cases that use 7220 task_create() if there is an address environment. 7221 7222 * Tools: 7223 7224 - refresh.sh: Add a tool to make refreshing configurations easier 7225 when you want to do a lot of them. 7226 - mksyscall.c: Build syscalls that do not need header files. 7227 - mkexport.sh: Add .config file to export package. 7228 - See above for new apps/tools scripts. 7229 7230Efforts In Progress. The following are features that are partially 7231implemented but present in this release. They are not likely to be 7232completed soon. 7233 7234 * Processes. Much of the work in this release is focused on the 7235 realization of Unix-style user processes in NuttX. There is more to 7236 be done, however. The full roadmap and status is available at: 7237 https://cwiki.apache.org/confluence/display/NUTTX/Memory+Configurations 7238 7239 * XMega: There are some fragments in place for an XMega port. That 7240 port has not really started, however. 7241 7242 * Galileo: Similarly, there are fragments in place for an Intel Galileo 7243 port. The port not been started in earnest either. 7244 7245Bugfixes. Only the most critical bugfixes are listed here (see the ChangeLog for the complete list of bugfixes and for additional, more detailed bugfix information): 7246 7247 * Core OS: 7248 7249 - Kernel build fixes: (1) IDLE TCB setup needs to indicate that the 7250 IDLE thread is a privileged, kernel thread. (2) Don't build 7251 task_create() or task_spawn() interfaces if there is an address 7252 environment. (3) posix_spawn() kernel proxy thread should be a 7253 kernel thread, not a user task. 7254 - Several pthread interfaces: Add const storage class to phthread 7255 parameters. From Freddie Chopin. 7256 - sched/clock: Remove vestiges of g_tickbias; need, instead, to apply 7257 time bias to g_basetime in order to provide the correct system time. 7258 - System Calls: (1) Several typos fixed; corrected integration of 7259 exevc(), execvl(), posix_spawn, and posix_spawnp system calls. (2) 7260 If we are configured to use a kernel stack while in SYSCALL handling, 7261 then we need to switch back to the user stack to deliver a signal. 7262 7263 * File Systems/Block Drivers/MTD: 7264 7265 - procfs: Fix some procfs breakage introduced by reorganizing some 7266 non-reorganizable data structures. From Ken Pettit. 7267 - AT45: In at45db_bwrite , the buffer is not increased when writing 7268 more than 1 page. Sourceforge bug #34. 7269 7270 * Binary Formats: 7271 7272 - ELF relocations. Some relocation types do not have a named symbol 7273 associated with them. The design did not account for that case. 7274 - ELF Loader: Critical bugfix.. BSS was not being cleared. 7275 7276 * Memory Management: 7277 7278 - Granule allocator initialization uses wrong allocator to setting 7279 aside kernel memory. 7280 - Add a flag to group structure: If the group is created by a kernel 7281 thread, then all resources in the group must be privileged. 7282 7283 * Cryptogrphic Support: 7284 7285 - crypto/cryptodev.c: Path segments reversed in include file path. Noted by Brennan Ashton. 7286 7287 * Common Drivers: 7288 7289 - Common CAN upper-half: In can_txdone, waiters on the semaphore 7290 should be informed regardless of the return value of can_xmit. First 7291 it returns -EIO if there are no new packets, and second the 7292 information of the waiters is about the last transferred packet. 7293 From Daniel Lazlo Sitzer. 7294 7295 * ARM: 7296 7297 - System Calls: Fix a typo in system call when fetching parameter from 7298 the stack: regs[REG_PC]+4 is the address, not regs[REG_PC+4]. 7299 7300 * STMicro STM32 Drivers: 7301 7302 - STM32 F401 UART: Correct support for USART6 on this chip. From 7303 Freddie Chopin. 7304 - STM32 FLASH fixes: use size_t instead of uint16_t, make interface 7305 more generic. From Freddie Chopin. 7306 - Fix for UART7 and UART8 on STM32 clock enable from Aton. 7307 - CAN: At the end of the interrupt handler, the interrupts were being 7308 disabled, if all packets have been transferred when the interrupt 7309 handler was invoked. This is problematic, because the interrupt 7310 handler calls can_txdone of the upper half which can enqueue new 7311 packets to send. Removed the block altogether, because can_txdone 7312 calls can_xmit which disables interrupts if there are no new packets 7313 to send. From Daniel Lazlo Sitzer. 7314 - Additional STM32 CAN correction suggested by Max Holtzberg. 7315 7316 * STMicro ST32 Boards: 7317 7318 - configs/mikroe-stm32f4: Fix a few compile bugs and minor corrections 7319 to the mikroe-stm32f4 configuration source. From Ken Pettit. 7320 7321 * ARM9/ARMv7-A: 7322 7323 - System Calls: Fix ARM7/9 and Cortex-A SYSCALLs: For threads in SVC 7324 mode, the SVC instructions clobbers R14. This must be taken account 7325 in the inline assembly. 7326 - Task Setup: All tasks, even user mode tasks, must start in 7327 supervisor mode until they get past the start-up trampoline. 7328 - ARMv7-A: Modify up_fullcontextrestore() for CONFIG_BUILD_KERNEL. 7329 It changed CPSR while in kernel. That will crash if the new CPSR is 7330 user mode while executing in kernel space. Fixed by adding a 7331 SYS_context_restore system call. There is an alternative, simpler 7332 modification to up_fullcontextrestore() that could have been done: 7333 It might have been possible to use the SPSR instead of the CPRSR and 7334 then do an exception return from up_fullcontextrestore(). That 7335 would be more efficient, but I never tried it. 7336 7337 * Atmel SAM3/4 Boards: 7338 7339 - SAM3X/Arduino Due: Fix typo in sam3x_periphclks.h; add SCLK 7340 definitions to board.h header file. From Fabien Comte. 7341 - SAM3 RTT: Only SAM4 family has RTTDIS bit in the MR register. 7342 SourceForge bug #33 from Fabien Comte. 7343 7344 * C Library: 7345 7346 - sscanf(): NuttX libc tried to guess how many characters to parse, 7347 extracted them into a buffer, then ran strtol() on that buffer. 7348 That guess was often wrong. A better approach would be to call 7349 strtol() directly on the input data, using the endptr return value 7350 to determine how many characters to skip after parsing. From Kosma 7351 Moczek. 7352 - Corrected atan2 implementations from Denis Arnst. 7353 - Change to lib_dtoa() to fix precision error from trailing zeroes. 7354 From Bob Doiron. 7355 7356 * Applications: 7357 7358 - Fix NSH PS command: If there are no arguments, it could print 7359 garbage for argument list. 7360 7361 * Configuration/Build System: 7362 7363 - Null Example: Need to include config.h it order know if this is or 7364 is not a kernel build. This problem still exists in several other 7365 file that may need to define main(). 7366 7367NuttX-7.6 7368--------- 7369 7370The 106th release of NuttX, Version 7.6, was made on November 26, 2014, 7371and is available for download from the SourceForge website. Note 7372that release consists of two tarballs: nuttx-7.6.tar.gz and 7373apps-7.6.tar.gz. Both may be needed (see the top-level nuttx/README.txt 7374file for build information). 7375 7376Additional new features and extended functionality: 7377 7378 * Core OS: 7379 7380 - Moved name semaphore and message queue support out of the OS and 7381 into the VFS. These improves the architecture by unifying the 7382 management of named resources, removes redundant resource management 7383 logic, and makes named semaphores and message queues visible in the 7384 file system. By default, these are visible at /var/lock and 7385 /var/mqueue. 7386 - Add SIGPOLL for use as part of the AIO implementation. 7387 - Remove CONFIG_MAX_TASK_ARGS configuration. There is now no 7388 predetermined limit on the number of arguments that may be passed 7389 to a new task on start-up. 7390 7391 * Work queues: 7392 7393 - Add support for priority inheritance on the low priority worker 7394 queue. That is, if a higher priority thread has scheduled work, the 7395 priority of the low priority worker thread(s) will be boost to the 7396 priority of the queuing thread. At work is performed at at least 7397 thread priority of the scheduling thread. If there are multiple 7398 worker threads, then all threads get reprioritized. Currently 7399 only implemented for AIO. 7400 - Add support for multiple low-priority work queue threads. This 7401 allows individual worker threads to block indefinitely for I/O as 7402 necessary without halting the entire work queue. 7403 7404 * VFS/General Drivers: 7405 7406 - Implement create() (as a macro). 7407 - Add pread() and pwrite(). Also added pread() and pwrite() 7408 system calls. 7409 - AIO: Add aio_read(), aio_write(), aio_return(), aio_error(), 7410 aio_suspend(), aio_canel(), lio_listio(), and aio_fsync(). This 7411 logic minimizes the creation of new threads by using the new 7412 features also added to the low priority work queue with this 7413 release. It uses the new low priority worker thread interface 7414 to adjust the priority of the worker thread according to the 7415 priority of the AIO client thread 7416 - Implement standard syslogmask() to control logging (also removing 7417 the non-standard syslog_enable()). 7418 7419 * File Systems/Block Drivers/MTD: 7420 7421 - Extend MTD support to the M25P16. From Sébastien Lorquet. 7422 7423 * Drivers: 7424 7425 - BCH (Block-to-Character): Add support for seeking in BCH. From 7426 Sébastien Lorquet. 7427 7428 * Graphics Support/Graphics-Related Drivers: 7429 7430 - Add support for a generic ILI9341 LCD driver. From Marco Krahl. 7431 - Add ANSI/VT100 foreground and background color commands. 7432 - Add driver for ST7565 LCD that works with NHD-C12864KGZ display. From Pierre-noel Bouteville. 7433 7434 * Networking: 7435 7436 - Verify that multiple networks can be supported. 7437 - Add support for the case where there are multiple networks: One 7438 being Ethernet and the other not (SLIP, PPP, ...). The primary 7439 difference from the standpoint of the stack is that (1) ARP may or 7440 may not be necessary, (2) the size of the link layer header will 7441 vary, and (3) different MTUs and TCP receive windows may be used 7442 with each link. Suggested by Brennan Ashton. 7443 - Extensions to UDP and TCP connection structures for the case of 7444 multiple networks. In this case, assigned port numbers only have to 7445 be unique with respect to the IP address. So, for example, you 7446 could have multiple port 80's, one on each network. 7447 7448 * Host Simulation: 7449 7450 - Removed the old, strange up_stdio.c and implemented a simulated UART 7451 driver to provide the console input. The new logic starts a 7452 separate, Linux domain pthread to read the console input in raw mode 7453 and provides the incoming data to NuttX via standard NuttX domain 7454 IPCs. 7455 - Add support for 64-bit longjmp/setjmp in simulator platform. This 7456 will permit operation of the simulation natively on a 64-bit 7457 platform. 7458 7459 * ARMv7-M: 7460 7461 - Add ARMv7-M CMSIS ITM header file and library. From Pierre-noel 7462 Bouteville. 7463 - Add ARMv7-M CMSIS DWT and TPI header files. From Pierre-noel 7464 Bouteville. 7465 - Add ARMv7-M support to use ITM for SYSLOG debug output. Includes 7466 logic from Pierre-noel Bouteville. 7467 7468 * Atmel SAM3/4 Drivers: 7469 7470 - Add support for SAM3/4 basic serial TERMIOS and flow control. 7471 There are issues with IFLOW control: PDC or DMAC support is 7472 required. 7473 7474 * Atmel SAM3/4 Boards: 7475 7476 - SAM4E-EK: Add support for PHY interrupt. 7477 7478 * Atmel SAMA5D Boards: 7479 7480 - SAMA5D3-Xplained: Add a configuration that provides a simple test 7481 for the EMAC and GMAC on the SAMA5D3 working together. 7482 - SAMA5D4-EK: Add a configuration that provides a simple test for the 7483 EMAC0 and EMAC1 on the SAMA5D4 working together. 7484 7485 * Freescale KL: 7486 7487 - Add an I2C header file for the Freescale KL family. From Alan 7488 Carvalho de Assis. 7489 7490 * NXP LPC32xx: 7491 7492 - Add support for tickless operation using the NXP LPC43xx. From 7493 Brandon Warhurst. 7494 7495 * SiLabs EFM32: 7496 7497 - Add a basic port for the SiLabs EFM32 family. Includes many files 7498 contributed by Pierre-noel Bouteville . 7499 7500 * SiLabs EFM32 Boards: 7501 7502 - Add board support for the EFM32 Gecko Starter Kit. 7503 - Add board support for the Olimex EFM32G8809128 STK. NOTE: I am 7504 unable to test this configuration due to tool-related issues. 7505 - Add board support for the SiLbas EFM32GG Giant Gecko Starter kit. 7506 7507 * STMicro STM32: 7508 7509 - Add support for the STM32 F411RE from Serg Podtynnyi. 7510 - Add support for the STM32F103RG. From Murilo Ponte. 7511 7512 * STMicro STM32 Drivers: 7513 7514 - STM32 F4: Add logic that implement true high speed support for the 7515 STM32 OTGHS peripheral and concurrent support for both LS and HS 7516 OTG. New OTGHS drivers provided for both device and host. From 7517 Brennan Ashton. 7518 7519 * STMicro STM32 Boards: 7520 7521 - STM32 Nucleo-F411RE: Extend this board configuration to also support 7522 the Nucleo-F411RE. From Serg Podtynnyi. 7523 - Add support for the STM32F429i Discovery's LCD (SPI based). From 7524 Marco Krahl. 7525 - configs/stm32f100rc_generic: Removed this generic board configuration. 7526 I have decided to stop support of generic board configurations. Generic 7527 board configurations do not provide support for any specific hardware 7528 but can be useful only if there are not other examples for the setup 7529 for a particular architecture. Not the case here. 7530 7531 * C Library: 7532 7533 - Add a mostly bogus wchar.h header file. This file is mostly bogus 7534 because none of the wide character operations are currently 7535 supported in the NuttX C library. The file does provide the wchar_t 7536 types needed by some software, however. 7537 - Add isatty() function. From Alan Carvalho de Assis. 7538 - Add mktemp(), mkstemp(), tmpnam() and tempnam(). 7539 7540 * Configuration/Build System: 7541 7542 - Add a PRELINK macro to Config.mk. From Kriegleder. 7543 - compiler.h: Defines inline functions as not instrumented - this is 7544 relevant for anyone using instrumentation. From Lorenz Meier. 7545 7546 * Applications: 7547 7548 - apps/interpreter/bas: Added in the Michael Haardt's BAS 2.4 adapted 7549 for use by NuttX by Alan Carvalho de Assis. Includes support for 7550 VT100 terminals and color commands. 7551 - Examples: Added bastest/ which holds a special version of Michael 7552 Haardt's BAS 2.4 test files adapted for use by NuttX on a ROMFS file 7553 system. 7554 - Examples: Add a simple UDP relay bridge for testing configurations 7555 with multiple networks. Includes a host-side test driver for 7556 testing the bridge. 7557 - Netutils: Add implementation of timeouts for the netutils webclient. 7558 From Brennan Ashton 7559 - NSH: Add support for a custom NSH ROMFS startup image header file 7560 location. From Martin Lederhilger. 7561 - OS test: Add a simple test of named semaphores. 7562 - OS test: Add AIO test case in OS test. 7563 7564Efforts In Progress. The following are features that are partially 7565implemented but present in this release. They are not likely to be 7566completed soon. 7567 7568 * Processes. Much of the work in this release is focused on the 7569 realization of Unix-style user processes in NuttX. There is more to 7570 be done, however. The full roadmap and status is available at: 7571 https://cwiki.apache.org/confluence/display/NUTTX/Memory+Configurations 7572 7573 * XMega: There are some fragments in place for an XMega port. That 7574 port has not really started, however. 7575 7576 * Galileo: Similarly, there are fragments in place for an Intel Galileo 7577 port. The port not been started in earnest either. 7578 7579Bugfixes. Only the most critical bugfixes are listed here (see the 7580ChangeLog for the complete list of bugfixes and for additional, more 7581detailed bugfix information): 7582 7583I ran cppcheck against the entire code base and correct many latent bugs 7584including things as serious as memory leaks, two locations where interrupts 7585were be disabled but never re-enabled, and errors in the Tickless mode of 7586operation. My thanks to the developers of cppcheck! I am impressed! 7587 7588 * Core OS: 7589 7590 - vfork(): Now that arguments are kept on the stack, the way that 7591 arguments are passed from parent to child in vfork() must change. 7592 This bug has always been present, but was not visible with the 7593 old strdup() way of passing arguments. 7594 - vfork() problem: If we get to vfork() via system call, then we 7595 need to clone some system call information so that the return form 7596 the cloned system call works correctly. 7597 - Fixes to tickless operation code, especially in alarm mode. From 7598 Brandon Warhurst. 7599 - Fix an important bug in the watchdog timer creation logic. 7600 - Calling mq_timedreceived() with immediate timeout was getting stuck 7601 and not timing out. Immediate timeout is achieved by setting absolute 7602 timeout value to past time, for example abstime={ .tv_sec=0, 7603 .tv_nsec=0 }. However absolute time was converted to relative time 7604 using unsigned integer arithmetic and resulted large ticks count by 7605 clock_abstime2ticks, instead of expected negative ticks value. 7606 Change corrects clock_abstime2ticks() to return negative ticks, if 7607 absolute time is in the past. From Jussi Kivilinna. 7608 7609 * Memory Management: 7610 7611 - Fix a place in the memory manager where it explicitly assumed that 7612 the size of a pointer is 4 bytes. That assumption was OK if the 7613 actual size is smaller but made the heap unstable when used with 7614 the x86_64 host simulation. 7615 - Granule Allocator: If the INTR granule allocator mode is enabled, 7616 there is no semaphore to destroy. From Lorenz Meier. 7617 7618 * Networking: 7619 7620 - Network routing: I don't think that the net_route() function has 7621 ever worked correctly. The source IP was updated in the match 7622 struct instead of the route IP. From Brennan Ashton. 7623 - Move and rename IP header flag definitions. The problem fixed here 7624 is that there IP header flag definitions were not available when TCP 7625 was disabled. The IP flags are used in ICMP and IGMP. 7626 - Network routing: Refuse to perform routing table lookups for the 7627 Broadcast IP address. From Brennan Ashton. 7628 - Network routing: Add logic to netdev_findbyaddr() to return the 7629 correct network device for the case where a broadcast 7630 address is used. This change caused trivial ripples through other 7631 files because additional parameters are required for 7632 netdev_findbyaddr() when CONFIG_NET_MULTINIC. 7633 7634 * File Systems/Block Drivers/MTD: 7635 7636 - NXFFS Dump: Fix problems with redefinitions of fdbg macro. With the 7637 fix to the syslog prototype, a LOG priority must now be the first 7638 parameter. Fixed by replacing all occurrences of fdbg with 7639 syslog(LOG_DEBUG, and eliminating the macro redefinitions. Noted 7640 by Sebastien Lorquet. 7641 - poll() was not waking up from signals (for example mq_notify() 7642 events). From Jussi Kivilinna. 7643 - poll(): Add proper handling for sem_timedwait errnos. From Jussi 7644 Kivilinna. 7645 - include/nuttx/fs/fs.h: Fix typo in conditional compilation. From 7646 Alan Carvalho de Assis. 7647 7648 * Graphics/Graphic-Related Drivers: 7649 7650 - Remove warnings when CONFIG_NXTK_BORDERWIDTH is set to zero. From 7651 Pierre-Noel Bouteville. 7652 7653 * Common Drivers: 7654 7655 - Make standard syslog and vsyslog POSIX compliant (also modify 7656 non-standard syslog functions for compatibility). 7657 - R/W buffering: Fix typo that can cause compilation error. 7658 7659 * Atmel SAM3/4: 7660 7661 - SAM4S: Add missing SPI0 clock configuration macro for the SAM4S. From spasbyspas. 7662 7663 * Atmel SAM3/4 Drivers: 7664 7665 - SAM4E-EK: Fix an error in a USART1 pin number. 7666 7667 * Atmel SAMA5D3/4 Drivers: 7668 7669 - SAMA5DF4: Fix several typos that will prevented EMAC1 from 7670 initializing properly. 7671 7672 * NXP LPC43xx: 7673 7674 - Fixes to allow compile of lpc43_gpioint.c. From Brandon Warhurst. 7675 7676 * STMicro STM32: 7677 7678 - Add missing ADC pinmap definitions for the STM32 F103R from Martin 7679 Lederhilger. 7680 7681 * STMicro STM32 Drivers: 7682 7683 - STM32 EXTI: Correct STM32 RTC EXTI bit definition. From Lazlo. 7684 - STM32 IWDG, WWDG, DBGMCU: Fix watchdog stop bit usage. From Lazlo. 7685 - STM32 OTGFS: Correct a typo in the STM32 OTGFS register bit definitions. 7686 7687 * ARM: 7688 7689 - ARM up_internal.h: Add protection from C++ name mangling in the 7690 ARM up_internal.h. From Lorenz Meier. 7691 7692 * MicroChip PIC32MX: 7693 7694 - PIC32MX7: DEVCFG0 bit 2 must be set. Writing bit 2 as zero can 7695 brick the CPU on some versions. From Cris Kvist. 7696 7697 * C Library: 7698 7699 - The implementation of access() as vararg macro has the issue that 7700 any function call with the same name (even in a C++ class) will 7701 match with it and result in a compile error. Replaced with a small 7702 function. This resolves the compile issue, and shouldn't have 7703 negative side effects for users of the function. From Lorenz Meier. 7704 - The definition of strncpy() is that empty space should be zero- 7705 filled, the change adds the zero filling (See the POSIX spec here: 7706 http://pubs.opengroup.org/onlinepubs/7908799/xsh/strncpy.html). From 7707 Lorenz Meier. 7708 - limits.h: Remove the definition of INT_FAST32_MIN which is already 7709 defined in stdint.h (the correct location). From Lorenz Meier. 7710 7711 * Applications: 7712 7713 - apps/: Correct everything under apps to use the corrected syslog 7714 interfaces. Remove any non-portable uses of syslog. 7715 - NSH: Fix ls -l output for regular files. 7716 - NSH: Fix reversed in/out file closing in DD command when an error 7717 occurs. From Ken Pettit. 7718 - NSH: Add logic to restart the console wait if an error occurs 7719 while reading from the console. In USB console startup, the logic 7720 must be able to open the USB serial and receive 3 newlines. 7721 However, it the USB driver is disconnected or otherwise fails before 7722 the 3 newlines are received, the receive loop becomes a killer, 7723 infinite loop, CPU hog. Noted by spasbyspas. 7724 - Netutils: Fix memcpy of host address in netlib_gethostaddr(). From 7725 Brennan Ashton. 7726 - Netutils: If you make a DNS request before the DNS address it would 7727 cause an assertion. The state of the IP setting is not something the 7728 application should be aware of, it should only be concerned with 7729 whether or not the name was resolved. From Brennan Ashton. 7730 - Netutils: Fix md5 hashing when digest[$i] islower that 16. From 7731 Sergey. 7732 - Stack Monitor: Fix compile problems introduced when the syslog() 7733 prototype changed; Also update Makefile for kernel build From 7734 Radoslaw Adamczyk. 7735 - Examples: Update NxTerm makefile for kernel-build issues. From 7736 Radoslaw Adamczyk. 7737 - Examples: Fixes to keypadtest from Pierre-Noel Bouteville. 7738 - Examples: These examples all set the IP address of eth1 but the 7739 netmask and gateway of eth0 if DHCP is enabled: discover, tcpecho, 7740 webserver, xmlrpc. That can't be right. 7741 7742NuttX-7.7 7743--------- 7744 7745The 107th release of NuttX, Version 7.7, was made on January 26, 2015, 7746and is available for download from the SourceForge website. Note 7747that release consists of two tarballs: nuttx-7.7.tar.gz and 7748apps-7.7.tar.gz. Both may be needed (see the top-level nuttx/README.txt 7749file for build information). 7750 7751Additional new features and extended functionality: 7752 7753 * Core OS: 7754 7755 - Task exit handling: Add logic to clean up after task_delete() or 7756 pthread_cancel() if the task happens to be waiting on a semaphore 7757 when was is cancelled. 7758 - Stack coloration: Removed CONFIG_DEBUG_STACK and replaced it with 7759 CONFIG_STACK_COLORATION that does the same thing but without enabling 7760 debug. From David Sidrane. 7761 7762 * Common Drivers: 7763 7764 - Discrete joystick driver: Added an interface definition and upper 7765 half driver for a discrete joystick device (where X/Y changes are 7766 indicated with button presses). 7767 - Analog joystick driver: Added an interface definition and upper 7768 half driver for a analog joystick device (where X/Y positions are 7769 sampled, numeric values). 7770 - Add driver support for the ADXL345 accelerometer. From Alan 7771 Carvalho de Assis 7772 - Generic serial driver: Add watermark levels to the serial RX flow 7773 control logic. Modify the rxflowcontrol method to accept the number 7774 of bytes in the buffer and a boolean indication of which watermark 7775 was crossed. 7776 7777 * File Systems/Block Drivers/MTD: 7778 7779 - Add procfs write support. From Ken Petit. 7780 - Implemented wear-leveling in the SmartFS. From Ken Pettit. 7781 - MMC/SD Interface: MMCSD SDIO: Add support for a new 7782 SDWAIT_WRCOMPLETE condition. The previous logic used a busy-wait 7783 loop to poll the card R1 status to determine when the card was 7784 ready for the next transfer. That busy-wait can be quite long -- 7785 up to hundreds of milliseconds. An alternative is to look the SD D0 7786 pin which will change state when the card is no longer busy. This 7787 change avoids the busy-wait poll by reconfiguring the SD D0 pin as a 7788 GPIO interrupt, then waiting for the card to become ready without 7789 taking up CPU cycles. From David Sidrane. 7790 7791 * Drivers: 7792 7793 - Add support for a generic EEPROM driver that accesses EEPROM as a 7794 character driver (vs. an MTD driver). From Sébastien Lorquet. 7795 7796 * Graphics Support: 7797 7798 - Many new fonts converted for use with NuttX and added by 7799 Pierre-noel Bouteville 7800 7801 * Networking: 7802 7803 - IPv4 support is now conditioned on CONFIG_NET_IPv4. 7804 - Implemented and verified IPv6 support conditioned on 7805 CONFIG_NET_IPv6. Either IPv4 or IPv4 or both may be selected. 7806 Sockets, of course, must be bound to one or the other. Added support 7807 for IPv6 ioctls to manipulate IP addresses. 7808 - Integrated support for ICMPv6 and the ICMPv6 Neighbor Discovery 7809 Protocol and ICMPv6 ECHO request/reply needed to support ping logic. 7810 - All Ethernet drivers: Modified to support. Most, however, are 7811 still missing address filtering logic required for ICMPv6 Neighbor 7812 Discovery Protocol. See 7813 https://cwiki.apache.org/confluence/display/NUTTX/IPv6 7814 - Also added missing raw/packet socket support to all Ethernet drivers. 7815 7816 * Host Simulation: 7817 7818 - Add a configuration build and test the Traveler first person game 7819 using the simulator. 7820 - Add an X11 mouse-based simulation of an analog joystick device 7821 7822 * Atmel SAMA5D Boards: 7823 7824 - Add analog Joystick shield support for the SAMA5D3 Xplained board. 7825 7826 * Freescale KL Drivers: 7827 7828 - Add GPIO interrupt capability for the KL architecture. From Alan 7829 Carvalho de Assis 7830 7831 * Freescale KL Boards: 7832 7833 - Freedom-KL25Z: Add board support for the ADXL345 accelerometer. From 7834 Alan Carvalho de Assis 7835 - Freedom-KL25Z: Update the Freedom KL25Z board CC3000 support to use 7836 the current CC300 interfaces. From Alan Carvalho de Assis 7837 7838 * NXP LPC43xx Boards: 7839 7840 - A port of NuttX to the LPC4357-EVB from Toby Duckworth. This port 7841 is a leverage of the LPC3330-Xplorer port and still have a some 7842 misinformation from that port that needs to be updated for the 7843 LPC4357-EVB. 7844 7845 * SiLabs EFM32 Drivers: 7846 7847 - Serial: Add support for serial termios TCGET and TCSET. For the 7848 moment, only set/get speed is implemented. From Pierre-noel 7849 Bouteville. 7850 - RMU: Add support for the EFM32 reset management unit (RMU). From 7851 Pierre-noel Bouteville. 7852 7853 * SiLabs EFM32 Boards: 7854 7855 - Add support for timer/PWM on the EFM32GG. From Pierre-noel 7856 Bouteville 7857 7858 * STMicro STM32: 7859 7860 - Enable support for the STM32 F102. From the PX4 team. 7861 7862 * STMicro STM32 Drivers: 7863 7864 - STM32 F429 LTDC: Add interface to perform hardware accelerated layer 7865 operation. Provides access to a reference of a specific ltdc layer. 7866 From Marco Krahl 7867 - STM32 F429 LTDC support: Implemented LTDC framebuffer support for the 7868 generic nuttx framebuffer interface. Also implements the interface to 7869 perform hardware accelerated layer operation by the ltdc controller 7870 and dma2d controller later. From Marco Krahl. 7871 - STM32: Add support for the internal low speed clock (LSI) as a 7872 source of the RTC clock. Some boards do not have the external 7873 32kKhz oscillator installed, for those boards we must fallback to 7874 the crummy internal RC clock. From Kevin Hester 7875 - STM32 SDIO: Add support for the new SDWAIT_WRCOMPLETE condition. 7876 From David Sidrane 7877 7878 * STMicro STM32 Boards: 7879 7880 - Add a discrete Joystick support for the STM3210E-EVAL. 7881 - Add analog Joystick shield support for the Nucleo F4x1RE boards. 7882 - STM32 F429i-Disco: Add support for initializing of the ltdc 7883 controller and the lcd device connected on the stm32f429i-disco. 7884 From Marco Krahl. 7885 - Removed the px4-v2_upstream configuration. This was not the 7886 official configuration for the PX4 board and has led to confusion 7887 by NuttX users. The board configuration also requires some ongoing 7888 maintenance and customization to support ongoing PX4 testing and 7889 evaluation. It is best retained the PX4 repositories where it can 7890 be properly maintained and not in the upstream NuttX repository. 7891 7892 * TI Tiva: 7893 7894 - Add support for the TI Tiva TM4C 129X family. Some unverified 7895 support for the TM4C 1294 is also in place. 7896 7897 * TI Tiva Drivers: 7898 7899 - Added support for Tiva I2C driver. Verified on the Tiva TM4C123G 7900 and TM4C129X. 7901 - Added a Tiva TM4C129X Ethernet driver. 7902 - Add a timer library for generic support of Tiva timers 7903 - Add a driver lower half for drivers/timer.c. Only 32-bit periodic 7904 timers are supported. This provides userspace access to timers. 7905 7906 * TI Tiva Boards: 7907 7908 - TM4C123G Launchpad: Add initialization logic for an external AT24 7909 EEPROM. This is intended only to support testing of the Tiva I2C 7910 driver. 7911 - Board support for the Tiva DK-TM4C129x Connected Development Kit. 7912 - DK-TMC129X: Add an IPv6-enabled NSH configuration. 7913 7914 * C Library/Header Files: 7915 7916 - Added support for a variadic ioctl() function. The ioctl() 7917 interface is a non-standard, Unix interface. NuttX has always used 7918 the older, three-parameter version. Most contemporary systems now, 7919 however, use a variadic form of the ioctl() function. Added an 7920 option to insert a shim layer to adapt the three-parameter ioctl() 7921 to use the variadic interface form. Internally, the ioctl handling 7922 is the same three-parameter logic. The only real complexity to the 7923 shim is in how the system calls must be handled. 7924 - Added sys/custom_file.h. Used when CUSTOM_FILE_IO is define and 7925 avoids re-definition errors about the FILE define. From Thomas 7926 Gruber via the PX4 repository 7927 - Add CRC8 support to the C library. From Ken Pettit. 7928 - math.h: Added support for the expm1 functions. From Brennan Ashton 7929 7930 * Applications: 7931 7932 - apps/examples/djoystick: Add a test of the discrete joystick 7933 driver. 7934 - apps/examples/ajoystick: Add a test of the analog joystick 7935 driver. 7936 - apps/examples/ltdc: Add ltdc test example. From Marco Krahl 7937 - apps/system/lm75: Add a tiny application to read the temperature 7938 from an LM-75 (or compatible) temperature sensor 7939 - apps/examples/timer: Add a trivial test of the timer driver 7940 7941 - apps/system/cu: Add a minimalist implementation of the 'cu' 7942 terminal program (part of Taylor UUCP for ages). Using it, you can 7943 simply open a serial port and interact with it. Using '~.' you can 7944 leave the terminal program and drop back to nsh. This might come 7945 in handy for people that have e.g. GSM modems, GPS receivers or 7946 other devices with text based serial communications attached to 7947 their NuttX systems. From Harald Welte 7948 - apps/interpreters/micropython: A port of Micro Python to NuttX. 7949 Contributed by Dave Marples 7950 7951 - apps/netutils/dnsclient: Can select to be either IPv4 or IPv6, but 7952 not both (IPv6 still does not compile) 7953 - apps/netutils/netlib: Add new library functions to manipulate IPv6 7954 addresses. 7955 - apps/examples/nettest: Update test so that it can be used to test 7956 IPv6 TCP sockets 7957 - apps/examples/udp: The UDP test example has been extend to support 7958 IPv6 domain sockets 7959 7960 - apps/nshlib: Add logic to initialize IPv6 addresses 7961 - apps/nshlib: Add the ping6 command to support checking IPv6 networks. 7962 - apps/nshlib: Clean up network status presentation for IPv6 7963 7964Efforts In Progress. The following are features that are partially 7965implemented but present in this release. They are not likely to be 7966completed soon. 7967 7968 * IPv6. While basic IPv6 support was completed in NuttX-7.7, 7969 there are lingering issues with getting IPv6 compatibility 7970 with applications and network utilities. 7971 7972 * Processes. Much of the work in this release is focused on the 7973 realization of Unix-style user processes in NuttX. There is more to 7974 be done, however. The full roadmap and status is available at: 7975 https://cwiki.apache.org/confluence/display/NUTTX/Memory+Configurations 7976 7977 * XMega: There are some fragments in place for an XMega port. That 7978 port has not really started, however. 7979 7980 * Galileo: Similarly, there are fragments in place for an Intel Galileo 7981 port. The port probably will not happen (I gave my Galileo board away!). 7982 7983Bugfixes. Only the most critical bugfixes are listed here (see the 7984ChangeLog for the complete list of bugfixes and for additional, more 7985detailed bugfix information): 7986 7987 * Core OS: 7988 7989 - POSIX message queues: msg type should be char * not void * in 7990 mq_send, mq_timedsend, mq_receive, and mq_timedreceive. Noted by 7991 Pierre-Noel Bouteville 7992 - POSIX message queues: In message queue creation return ENOSPC error 7993 if size exceeds the configured size of pre-allocated messages; Use 7994 ENOSPC vs ENOMEM per OpenGroup.org. From Pierre-Noel Bouteville. 7995 - Task Names: strncpy() will not copy the terminating \0 into the 7996 destination if the source is larger than the size of the 7997 destination. Ensure that the last byte is always zero and let 7998 strncpy() only copy CONFIG_TASK_NAME_SIZE bytes. The issue of 7999 unterminated names can be observed in ps when creating a pthread 8000 while CONFIG_TASK_NAME_SIZE is set to 8. From Daniel Willmann 8001 8002 * Memory Management: 8003 8004 - Granule allocator: Fixes some issues found by the PX4 team using 8005 Coverity. From Pavel Krienko 8006 8007 * Networking: 8008 8009 - Several fixes correcting issues with the CC3000 networking. From 8010 Jussi Kivilinna 8011 - CC3000 Fix: Data can be unaligned. When dereferenced as an input 8012 ntosh(), a bad value is returned. Reported by Alan Carvalho de 8013 Assis 8014 - Correct naming of fields in struct sockaddr_in6: sin6_port and 8015 sin6_family, not sin_port and sin_family. 8016 - accept(): Correct the value returned by accept() in the case where 8017 net_lockingwait() is called. It was returning -1 and losing the 8018 errno value. Noted by Rony Xln 8019 8020 * Common Drivers: 8021 8022 - Loop device should return -EINTR is interrupted by a signal. 8023 - M25P serial flash driver: Add subsector size of the M24P16 part. 8024 From Lazlo 8025 - Common serial driver: In case a thread is doing a blocking operation 8026 (e.g. read()) on a serial device, while it is being terminated by 8027 pthread_cancel(), then uart_close() gets called, but the semaphore 8028 is still blocked. This means that once the serial device is opened 8029 next time, data will arrive on the serial port (and driver 8030 interrupts handled as normal), but the received characters never 8031 arrive in the reader thread. The problem was fixed by re- 8032 initializing the semaphores on the last uart_close() on the device. 8033 From Harald Welte 8034 - Pipes: Fixes some issues found by the PX4 team using Coverity. From 8035 Pavel Krienko 8036 - CDC/ACM driver: Fixes some issues found by the PX4 team using 8037 Coverity. From Pavel Krienko 8038 8039 * NXP LPC43xx Drivers: 8040 8041 - LPC4357: Changes required to get USART 2 & 3 working on the 8042 lpc4357-evb. From Toby Duckworth. 8043 8044 * STMicro STM32: 8045 8046 - Several fixes correcting issues with the STM32 header files from 8047 Jussi Kivilinna 8048 8049 * STMicro STM32 Drivers: 8050 8051 - Ported Tridge's STM32 I2C noise resilience logic from the PX4 8052 repository. 8053 - STM32 F2 and F4: Set the GPIO_SPEED_50MHz on all F2 and F4 SPI pin 8054 configurations. This is based on an F411 SPI1 errata but the fixed 8055 is generalized to all SPI and all F2 and F4. Discovered and fixed 8056 by Sebastien Lorquet. 8057 - Fix for STM32 OTGHS device driver working in FS mode. From Ken 8058 Pettit. 8059 - For STM32 OTG HS DEV (in FS mode): Disable ULPI clock enable in RCC 8060 AHB1 Register. If Both ULPI and the FS clock enable bits are set in 8061 FS mode, then the ARM never awakens from WFI due to a chip issue. 8062 This is only an issue if you are using the internal PHY. From Ken 8063 Pettit. 8064 - STM32 F429 LTDC: Add missing clut register definition. From Marco 8065 Krahl 8066 - STM32 serial: fix declaration and definition of up_receive() and 8067 up_dma_receive() to match fields in the interface definition of 8068 struct uart_ops_s. From Freddie Chopin. 8069 8070 * TI Tiva Drivers: 8071 8072 - Fix Tiva IRQ control logic; was limited to only 64 IRQs. That is a 8073 problem for higher numbered IRQs on many platforms 8074 8075 * C Library/Header Files: 8076 8077 - avsprintf(): Fix a bug in usage of va_list on x86. On x86, 8078 va_list is a pointer to a single copy on the stack. avsprintf() 8079 calls lib_vsprintf() twice and so traverses the va_list twice using 8080 va_start. va_start modifies that single copy on the stack so that 8081 the second call to lib_vsprintf() fails. This appears to be an 8082 issue with x86 only so far. 8083 - stdint.h: Don't use hex values to specify minimum values of fixed 8084 width, signed values. Hex values are inherently unsigned and not 8085 usable for this purpose in all contexts. 8086 - strncpy(): Would trash a lot of memory if n == 0. From Yasuhiro 8087 Osaki. 8088 - sscanf(). Accept %X and %F as well as %x %f as a format specifiers. 8089 From Sébastien Lorquet 8090 8091 * Applications: 8092 8093 - apps/examples/romfs: fix romfs example builtin app registry issue. 8094 From Librae 8095 - apps/system/cdcacm, composite and usbmsc: Fix some strangely placed 8096 conditional compilation. Looks like an automated update went awry 8097 - apps/netutils/telnetd: Add protection when CONFIG_SCHED_HAVE_PARENT 8098 is enabled: Call sigaction with SA_NOCLDWAIT so that exit status is 8099 not retained (no zombies) and block receipt of SIGCHLD so that 8100 accept is not awakened by a signal. If accept() is awakened by a 8101 signal, do not do anything crazy like exit. Most from Rony Xln 8102 - apps/nshlib/: NSH TFTP get command: Wrong file name used for the 8103 destination. From Lazlo 8104 8105NuttX-7.8 8106--------- 8107 8108The 108th release of NuttX, Version 7.8, was made on February 11, 2015, 8109and is available for download from the SourceForge website. Note 8110that release consists of two tarballs: nuttx-7.8.tar.gz and 8111apps-7.8.tar.gz. Both may be needed (see the top-level nuttx/README.txt 8112file for build information). 8113 8114This release is primarily a bugfix release for the NuttX-7.7 version that 8115was release just two weeks prior. That release included substantial 8116modifications in the NuttX networking to accommodate support for IPv6. This 8117release follows close behind NuttX-7.7 in order to correct some the problems 8118discovered in that networking code. This release does, however, include a 8119small number of new features and bug fixes unrelated to NuttX networking. 8120 8121Additional new features and extended functionality: 8122 8123 * Core OS: 8124 8125 - Tickless Mode: added limit of maximum delay that can be request 8126 by the scheduler tickless logic. This is necessary so that the 8127 tickless logic does not request a delay beyond the capability of the 8128 underlying hardware. From Macs Neklyudov. 8129 8130 * Common Drivers: 8131 8132 - VFS Unlink: Add an unlink method to both the character and block 8133 driver interface. This is important because if the driver inode is 8134 unlinked and there are no open references to the driver, then the 8135 driver resources will be stranded. On the unlink call, the driver 8136 has the opportunity (1) check if there an any open references, and 8137 if not, (2) free the driver resources. 8138 - Pipes and FIFOs: Implement the unlink method. If the pipe/FIFO is 8139 unlinked, it will marked the pipe/FIFO as unlinked. If/when all 8140 open references to the driver are closed, all of the driver 8141 resources will be freed. 8142 - Added an option to use the syslog'ing device as the system console. 8143 This option enables a low-level, write-only console device at 8144 /dev/console (similar to the low-level UART console device). From 8145 Pierre-noel Bouteville. 8146 8147 * File Systems/Block Drivers/MTD: 8148 8149 - RAM/ROM disk: Add logic to dispose of the driver and RAM buffer 8150 when the RAM disk has been unlinked and all open references to the 8151 RAM disk have been closed. Add new parameters to romdisk() to 8152 specify what should be done with the RAM/ROM buffer in this case -- 8153 Should it be freed or not? Changed all calls to ramdisk() to use 8154 these new parameters. 8155 8156 * Networking: 8157 8158 - Add support for local, Unix domain sockets. Support included for 8159 both SOCK_STREAM and SOCK_DGRAM style local socket. 8160 - UDP enhancement: Add UDP read-ahead support. In addition to 8161 eliminating the main reason for lost UDP packets, then change 8162 enables support for for poll/select on UDP sockets and also non- 8163 blocking UDP sockets. From Macs Neklyudov. 8164 - SLIP interface improvements. From Macs Neklyudov. 8165 - IPv6 Neighbor Solicitation: Added logic to support verification 8166 that we have the IPv6 address in the Neighbor Table before sending 8167 any packets. If not, then the Neighbor Solicitation message is 8168 sent. This feature is important because otherwise the first packet 8169 sent to a remote peer will fail (it would have been replaced with a 8170 Neighbor Solicitation). 8171 - IPv6 Autonomous Auto-Configuration: Added support for sending 8172 ICMPv6 Router Solicitation and receiving Router advertisement. The 8173 local IPv6 address, mask, and router address are then auto-configured 8174 from the response.. 8175 - IPv6 Router Support: Add logic to behave like a router (if so 8176 configured) only in the sense that NuttX will send the router 8177 advertisement message in response to any received router solicitation 8178 messages. Thus, one NuttX node in a network can configure the IPv6 8179 addresses of all other nodes in the network. 8180 - Optional IPv6 address filtering added to all Ethernet drivers for 8181 the all-routers multicast address. 8182 8183 * Atmel AVR: 8184 8185 - Added architecture support for the Atmel AVR ATMega1284P MCU. From 8186 Jedi Tek'Unum. 8187 8188 * Atmel AVR Boards: 8189 8190 - Added support for the LowPowerLab MoteinoMEGA that is based on the 8191 Atmel AVR ATMega1284P MCU. From Jedi Tek'Unum. 8192 8193 * Atmel SAMA4: 8194 8195 - Add support for Tickless mode of operation for the SAM4CM platform. 8196 From Macs Neklyudov. 8197 8198 * Atmel SAMA4 Drivers: 8199 8200 - Ethernet: The SAM4E Ethernet driver can now be configuration to 8201 perform all network processing on the work queue. This greatly 8202 reduces the amount of interrupt level processing to service Ethernet 8203 packets. 8204 - SAM4E Ethernet: Add support multicast address matching and IPv6. 8205 8206 * Atmel SAMA4 Boards: 8207 8208 - SAM4E-EK: The nsh configuration now configures the Ethernet driver 8209 for execution on the work thread. 8210 8211 * Atmel SAMA5D Drivers: 8212 8213 - SAMA5D4 Ethernet: The SAMA5D4 Ethernet driver can now be configuration 8214 to perform all network processing on the work queue. This greatly 8215 reduces the amount of interrupt level processing to service Ethernet 8216 packets. 8217 - SAMA5D3 and SAMA5D4 Ethernet: Add support multicast address matching 8218 and IPv6. 8219 8220 * Atmel SAMA5D Boards: 8221 8222 - SAMA5D4-EK; Added a configuration to testing IPv6. 8223 - SAMA5D4-EK: Converted the nsh and ipv6 configurations to configure 8224 the Ethernet driver to use the work queue (vs. interrupt level 8225 processing). 8226 8227 * Freescale KL: 8228 8229 - Add architectural support for the K26Z128VLH4 chip. From Derek B. Noonburg. 8230 8231 * Freescale KL Boards: 8232 8233 - Add board support for the Freedom KL26Z board. From Derek B. Noonburg. 8234 8235 * NXP LPC17xx Drivers: 8236 8237 - Ethernet: Add support multicast address matching and IPv6. 8238 8239 * SiLabs EFM32: 8240 8241 - Add configurable option to unconditionally enable LE clocking. Even 8242 you don't use core clock LE as source for LFA or LFB, to read are 8243 write any register not clocked by HFPERCLK or HFCORECLK, HFCORECLKLE 8244 should be enabled. From Pierre-noel Bouteville. 8245 8246 * SiLabs EFM32 Drivers: 8247 8248 - EFM32 RTC: RTC driver using BURTC. From Pierre-Noel Bouteville. 8249 8250 * STMicro STM32 Drivers: 8251 8252 - AES: Add driver for STM32L162XX AES peripheral. From Juha Niskanen. 8253 - Ethernet: The STM32 Ethernet driver can now be configuration to 8254 perform all network processing on the work queue. This greatly 8255 reduces the amount of interrupt level processing to service Ethernet 8256 packets. 8257 - Ethernet: Add support multicast address matching and IPv6. 8258 8259 * STMicro STM32 Boards: 8260 8261 - Added an IPv6 configuration for the STM32F4-Discovery board (with the 8262 STM32-DISCO_BB base board). 8263 - Converted all STM32F4-Discovery configurations (with base board) to 8264 configure the Ethernet driver to use the work queue (vs. interrupt 8265 level processing). 8266 8267 * TI Tiva Drivers: 8268 8269 - Added support for TM4C123G timers. From Calvin Maguranis. 8270 - Added a Tiva ADC driver. From Calvin Maguranis. 8271 8272 * TI Tiva Boards: 8273 8274 - Added TM4C123G timers on the TM4C123G Launchpad. From Calvin Maguranis. 8275 - Added Tiva ADC support to the TM4C123G-Launchpad. From Calvin Maguranis. 8276 8277 * C Library/Header Files: 8278 8279 - Math Library: Added support for inverse hyperbolic functions, 8280 isfinite(), error functions, nan(), copysign(), and trunc() 8281 functions. From Brennan Ashton. 8282 8283 * Applications: 8284 8285 - apps/examples/ustream: Add a simple test of Unix domain stream 8286 sockets. 8287 - apps/examples/udgram: Add a simple test of Unix domain datagram 8288 sockets. 8289 - apps/netutils/netlib: Add utilities to convert to/from prefix 8290 lengths from/to 128-bit network masks. 8291 - apps/nshlib: Modify the NSH IPv6 ifconfig command to show the more 8292 standard post-pended prefix value, rather than the full 128-bit 8293 netmask. 8294 8295Efforts In Progress. The following are features that are partially 8296implemented but present in this release. They are not likely to be 8297completed soon. 8298 8299 * Processes. Much of the work in this release is focused on the 8300 realization of Unix-style user processes in NuttX. There is more to 8301 be done, however. The full roadmap and status is available at: 8302 https://cwiki.apache.org/confluence/display/NUTTX/Memory+Configurations 8303 8304 * XMega: There are some fragments in place for an XMega port. That 8305 port has not really started, however. 8306 8307Bugfixes. Only the most critical bugfixes are listed here (see the 8308ChangeLog for the complete list of bugfixes and for additional, more 8309detailed bugfix information): 8310 8311 * Core OS: 8312 8313 - Work Queues: Fix a backward calculation when determining the time 8314 to the next interesting event. . From Liio Chen via the PX4 8315 repository. 8316 - clock_systimespec(): Fixes for compilation errors in certain 8317 configurations. From Macs Neklyudov. 8318 8319 * Graphics 8320 8321 - Fixed a problem with one of the font files. From Pierre-noel Bouteville. 8322 8323 * Networking: 8324 8325 - IOB Deadlock: There were issues with the TCP write-ahead buffering 8326 if CONFIG_NET_NOINTS was enabled: There is a possibility of 8327 deadlocks in certain timing conditions: The network should never 8328 wait for TCP read-ahead buffering space to be available. It should 8329 drop the packets immediately if no buffering is available. This was 8330 fixed by duplicating most of the IOB interfaces: The versions that 8331 waited are still present (like iob_alloc()), but now there are non- 8332 waiting versions of the same interfaces (like iob_tryalloc()). The 8333 TCP read-ahead logic now uses only these non-waiting interfaces. 8334 - TCP Deadlock: Fix another deadlock when CONFIG_NET_NOINTS is enabled. 8335 tcp_write_buffer_alloc() calls sem_wait() with network locked. That 8336 worked if CONFIG_NET_NOINTS was not defined because interrupts are 8337 automatically restored when the wait happens. But with 8338 CONFIG_NET_NOINTS=y, the wait blocks with the network locked -- bad 8339 style and also can lead to a deadlock condition. 8340 - ARP response waiting: Fixes another CONFIG_NET_NOINTS issue. When 8341 called sem_timedwait() with the network locked, the network stays 8342 locked while we wait which is not what we want (without CONFIG_NET_NOINTS, 8343 interrupts are re-enabled while we wait and all is well). 8344 - TCP accept(): Fix a major TCP bug introduced with the NuttX-7.7 8345 IPv6 changes: Some connection logic was reordered; setting the 8346 socket as 'connected' got moved to BEFORE the point where the check 8347 was made if the socket was already connected. The resulting behavior 8348 was odd: Telnet would connect, but then when you exit and reconnect, 8349 it would fail to connect. But then if try again, it would connect 8350 okay. So the symptom was connect-fail-connect-fail-... 8351 - Lots of build problems introduced into multiple NIC support with the 8352 IPv6 changes of NuttX-7.7. Many places where conditional logic based 8353 on CONFIG_NETDEV_MULTINIC is confused with CONFIG_NET_MULTILINK. 8354 Lots of code changed with IPv6 that was never compiled with MULTINIC 8355 enabled. 8356 8357 * Common Drivers: 8358 8359 - Pipes and FIFOs: Fix a race condition between FIFO buffer operations 8360 and the opening and closing of FIFOs which necessary when the FIFOs 8361 are used to support Unix domain, datagram sockets. The default 8362 policy is the deallocate FIFO buffering when the last client closes 8363 the pipe. When when used for datagram communications, packets left 8364 in the FIFO will be lost. Some like UDP read-ahead is needed: The 8365 buffered data in the FIFO needs to be retained until the reader gets 8366 a chance to re-open the FIFO. Added an ioctl (PIPEIOC_POLICY) to 8367 control the buffer policy. Default (0) is the legacy behavior; Unix 8368 domain datagram logic sets the alternative policy so that the packet 8369 data persists after the FIFO is closed. 8370 - RAMTRON: Table of parts is not terminated properly if 8371 CONFIG_RAMTRON_FRAM_NON_JEDEC is not defined. Noted by David 8372 Sidrane. 8373 8374 * All Architectures: 8375 8376 - Removed all occurrences of up_maskack_irq() that disables interrupts 8377 with up_ack_irq() that only acknowledges the interrupts. This is only 8378 used in interrupt decoding logic. Also remove the logic that 8379 unconditionally re-enables interrupts with the interrupt exits. This 8380 interferes with the drivers ability to control the interrupt state. 8381 This is a necessary, sweeping, global change and unfortunately 8382 impossible to test. 8383 8384 * ARM 8385 8386 - ARMv7-A and ARMv7-M memcpy(): Optimized ARM assembly language 8387 memcpy's were not returning a value in R0 they are required to do. 8388 From David Sidrane. 8389 - ARMv7-A interrupt handler should not automatically re-enable interrupts 8390 on interrupt return. That interferes with the driver's ability to 8391 manage interrupts. Analogous change made to all other architectures 8392 as well (ARM7, ARM9, HC, SH, x86, z16, z80, etc,. See above.). 8393 8394 * STMicro STM32: 8395 8396 - GPIO Interrupts: Disabling any of EXTI 5-9 interrupts was disabling 8397 interrupts for all EXTI 5-9. Same issue with EXTI 10-15. From Jussi 8398 Kivilinna. 8399 8400 * STMicro STM32 Drivers: 8401 8402 - RTCC: Fix for recent changes that caused compilation failrues with 8403 STM32L15XX configurations. From Jussi Kivilinna. 8404 - SPI: The source clock for SPI 4,5, and 6 should be PCLK2, not PCLK1 8405 (for F411, F427, and F429). Per David Sidrane. 8406 8407 * C Library/Header Files: 8408 8409 - execl(): Fix bad logic in counting the number of arguments. 8410 execl() parameter passing could never have worked. Noted by 8411 Pierre-noel Bouteville. 8412 8413 * Applications: 8414 8415 - Fix for building with parallel make. Build-server sometimes failed 8416 'make -j24' with errors in the builtin line or or sometimes silently 8417 succeeds but generated builds that contain a random subset of 8418 configured NuttX applications. There are two root causes for this: 8419 (1) Recipes for building builtin_list.h and builtin_proto.h are 8420 not linearizable, and (2) Nothing ensures that 'make context' is run 8421 first for apps/builtin. This change address both issues. From Juha 8422 Niskanen. 8423 8424NuttX-7.9 8425--------- 8426 8427The 109th release of NuttX, Version 7.9, was made on April 14, 2015, 8428and is available for download from the SourceForge website. Note 8429that release consists of two tarballs: nuttx-7.9.tar.gz and 8430apps-7.9.tar.gz. Both may be needed (see the top-level nuttx/README.txt 8431file for build information). 8432 8433Additional new features and extended functionality: 8434 8435 * Core OS: 8436 8437 - Assertions: Add support for dumping board-specific information on 8438 assertions. From David Sidrane. 8439 - boardctl(): : Add a new non-standard OS interface called boardctl(). 8440 This is similar to a driver IOCTL call. But this is an IOCTL call 8441 directly on the board logic. This function will eventually replace 8442 all of the ad hoc OS interfaces that are current used to perform 8443 application specific initialization and application driver test 8444 configuration. It essentially formalizes and institutionalizes 8445 these rogue interface in to at least a single crazy call. 8446 8447 * Graphics: 8448 8449 - Line Joins: Line drawing graphic functions now take an argument that 8450 will draw a circular "cap" on the ends of lines to support cleaner 8451 joining of lines segments.. 8452 8453 * Common Drivers: 8454 8455 - SPI iInterface: Add an SPIDEV_USER so that there can be board- 8456 specific definitions of SPI devices. 8457 - I2C Interface: Add a user provided void * argument to the I2C 8458 callback method for the I2C slave interface. Suggested by Nate 8459 Weibley. 8460 - AT24 EEPROM Driver: Add support for (1) the byte-oriented read() 8461 method, (2) devices that have extended memory regions, and (3) 8462 devices that use 8-bit addressing. 8463 - Freescale MPL115A barometer: Add driver for the Freescale MPL115A 8464 barometer. From Alan Carvalho de Assis. 8465 - CS2100-CP: Add a driver for the CS2100-CP Fractional-N Multipler 8466 chip. 8467 - RTC IOCTls: Added the definitions of a driver based RTC interfaces 8468 and RTC upper half driver. 8469 8470 * File Systems/Block Drivers/MTD: 8471 8472 - umount2(): Added to support un-mount flags. umount() is now a macro 8473 that just calls umount2() with flags = 0. 8474 - File system interface: Pass the umount2() flags to every unbind() 8475 implementation. That is where the decision to umount or not and how 8476 to umount will be made. 8477 - FAT unbind: Add support for umount2(target, MNT_FORCE) in the FAT 8478 file system. 8479 8480 * Networking: 8481 8482 - netdev_register(): Improve the network device registration logic. 8483 When multiple link types are used, modify how each interface number 8484 is assigned to the device name by incrementing the device number 8485 individually for each interface link type. From Max Neklyudov. 8486 - Add TUN network device. Used to support the Netutils PPPD 8487 implementation. From Max Neklyudov. 8488 8489 * ARMv7-M 8490 8491 - ARM Cortex-M7: Add basic support for the Cortex-M7 architecture. 8492 - ARMv7 Common Lazy Exception handling. Add common support for lazy 8493 FPU state saving. MCU-specific lazy FPU saving was already in place. 8494 This change just makes the code share-able. 8495 8496 * Atmel SAMA5D3/4 Drivers: 8497 8498 - SAMA5 Serial: Backport support for flowcontrol and termios from 8499 SAM3/4. 8500 8501 * Atmel SAMV7: 8502 8503 - Atmel SAMV7: Add architecture support for the Atmel SAMV7 family 8504 (Cortex-M7) 8505 8506 * Atmel SAMV7 Boards: 8507 8508 - Atmel SAMV71 Xplained Ultra: Add board support for this SAMV7 board. 8509 This initialize release includes support for: SDRAM, TWI/I2C, SPI, 8510 Ethernet, HSMCI, DMA, GPIOs, UARTs, AT24 EEPROM and the maXTouch 8511 Xplained Pro LCD. Drivers are available for SSC/I2C, the WM8904, 8512 the maXTouch trouchscreen, and USB device but have not yet been 8513 fully integrated in this release. 8514 8515 * SiLabs EFM32 Drivers: 8516 8517 - EFM32 USB Device is now functional with the efforts of From Pierre- 8518 noel Bouteville. 8519 - EFM32 I2C: Add I2C driver. From Pierre-noel Bouteville. 8520 8521 * STMicro STM32: 8522 8523 - STM32F372/F373: Adds architecture support for this STM32 parts. 8524 Tested on STM32F373CC. Contributed by Marten Svanfeldt. 8525 8526 * STMicro STM32 Drivers: 8527 8528 - STM32 RTCC: Break out a new internal interface, stm32_rtc_setdatetime(). 8529 This eliminates some un-necessary time conversions. From Freddie Chopin. 8530 - STM32 RTCC: Add an implementation of the RTC lower half interface 8531 for the STM32. 8532 - STM32 RTCC: Extend the RTC interface to support reading subseconds. 8533 From Jussi Kivilinna. 8534 - STM32 BBSRAM: Adds the ability to use the STM32F2 and STM32F4 Battery 8535 Backed SRAM in the file system. With an option to Save Panic context 8536 to one of the files. From David Sidrane. 8537 8538 * STMicro STM32 Boards: 8539 8540 - Olimexino-STM32: Board support for the Olimexino STM32 board from David 8541 Sidrane. 8542 - Viewtool-STM32F107: Add support for an optional, add-on Freescale 8543 MPL115A baramoter. From Alan Carvalho de Assis. 8544 8545 * TI Tiva: 8546 8547 - TM4C1294: Add support for the TM4C1294. Contributed by Frank Sautter. 8548 8549 * TI Tiva Drivers: 8550 8551 - Tiva ADC: Updated files to allow for ADC and PWM triggering by a 8552 timer. Refactoring of ADC implementation. From Calvin Maguranis. 8553 - Tiva Timer: Refactoring by Calvin Maguranis 8554 8555 * TI Tiva Boards: 8556 8557 - TM4C123G-launchpad: Add ADC support. From Calvin Maguranis. 8558 - TM4C123G-launchpad: Add board button interrupt support. From Calvin 8559 Maguranis. 8560 - TM4C1294 Launchpad: Add support for the TM4C1294 Launchpad. 8561 Contributed by Frank Sautter. 8562 8563 * Microchip PIC32 8564 8565 - PIC32MZ: Add architectural support for the PIC32MZ (MIPS32 M14k). 8566 Includes contributions from Kristopher Tate. 8567 8568 * Microchip PIC32MZ Boards 8569 8570 - PIC32MZ Starter Kit: Add basic board support for the PIC32MZ. 8571 Includes contributions from David Sidrane. 8572 8573 * C Library/Header Files: 8574 8575 - gettimeofday(): This function is no longer a core OS interface. It 8576 is only a wrapper around clock_settime(). 8577 - settimeofday(): Added. gettimeofday has been deprecated in POSIX 8578 2008. settimeofday() was never part of POSIX, but I decided to add 8579 it to libc as well just for symmetry. 8580 - Day-of-Week: Add CONFIG_TIME_EXTENDED to support the last 3 members 8581 of the tm struct and support for filling them in with the day of the 8582 week. From David Sidrane. 8583 - sighold(), sigrelse(), sigignore(), sigset() and sigpause(): New 8584 signal handling functions. 8585 - sys/select.h: Extend the fd_set type definition so that it can 8586 handle more than 32 descriptors (if so configured). From Max 8587 Neklyudov. 8588 - netdb.h: Add a mostly-commented-out version of the standard netdb.h 8589 header file. 8590 - include/nuttx/board.h: Remove common board function prototypes from 8591 other files and consolidate them in this new header file. 8592 8593 * Applications: 8594 8595 - OS test: Improved error checking for sem_timedwait() from Juha 8596 Niskanen. 8597 - OS test: Add a simple test of sigprocmask, sighold, and sigrelse. 8598 - PPPD test: Add PPPD test case. Split out from the PPPD daemon by 8599 Brennan Ashton. 8600 - Netutils: Add a PPP daemon. From Max Neklyudov. 8601 - NSH: NSH initialization now calls boardctl(BOARDIOC_INIT) instead 8602 of nsh_archinitialize(). Remove support for CONFIG_NSH_ARCHMAC. 8603 It is not used and there are better ways to do that operation. 8604 - NSH: Allow NSH 'date' command with no hardware RTC. This command 8605 is useful without an RTC too. Also, this permits testing on the 8606 simulator which never has an RTC. 8607 - apps/examples/: Several tests changed (touchscreen adc, pwm, 8608 graphics). No longer call directly into the OS, but rather 8609 indirectly via boardctl(). 8610 - Modbus: Includes extensions to support RTU master mode by 8611 Armink(383016632@qq.com): https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32. 8612 Ported to NuttX by Darcy Gong. 8613 - TZ database: All logic to build timezone database needed for 8614 localtime() support. Does not do much else yet. 8615 8616Efforts In Progress. The following are features that are partially 8617implemented but present in this release. They are not likely to be 8618completed soon. 8619 8620 * Processes. Much of the work in this release is focused on the 8621 realization of Unix-style user processes in NuttX. There is more to 8622 be done, however. The full roadmap and status is available at: 8623 https://cwiki.apache.org/confluence/display/NUTTX/Memory+Configurations 8624 8625 * XMega: There are some fragments in place for an XMega port. That 8626 port has not really started, however. 8627 8628Bugfixes. Only the most critical bugfixes are listed here (see the 8629ChangeLog for the complete list of bugfixes and for additional, more 8630detailed bugfix information): 8631 8632 * Core OS: 8633 8634 - atexit(): Fix compile failure due to reference to undefined variable 8635 in certain configurations. From Juha Niskanen. 8636 - syscalls: Last changes to message queue prototypes did not make it 8637 into call gate logic. Some additional errors had crept as well since 8638 the system calls are seldom used. 8639 - waitpid(): Do not use uninitialized boolean in waitpid(). From Juha 8640 Niskanen. 8641 - Timing functions: Fix some nanosecond comparisons. Comparisons should 8642 be greater than OR EQUAL TO 1000000000 for maximum value of nanoseconds 8643 in struct tm. From Juha Niskanen. 8644 - Time initialization: Fix an error in time initialization when there 8645 is no RTC and the time is initialized from a fixed configured value. 8646 The call to clock_calendar2utc() was returning the time in units of 8647 seconds. The initialization logic, however, was expecting to get 8648 time in units of days. This problem has been there forever but 8649 obviously has not significant impact to behavior in systems where 8650 time is not visible. 8651 - mq_timedsend(): Should not check for valid time if there is space 8652 in the message queue. Noted by Freddie Chopin. 8653 - select() and sem_timedwait(): Fix places where the errno value was 8654 being overwritten by subsequent actions so that the returned errno 8655 value was incorrect. From Max Neklyudov. 8656 - clock_systimer64(): Fix a problem in clock_systimer64 that occurs 8657 when (1) the 64-bit system time is enabled, and (2) the value of 8658 CONFIG_USEC_PER_TICK is less than 1 milliseconds (such as when using 8659 the tickless mode of operation). In that case, the conversion of 8660 time to 64-bit millisecond value in clock_systmer64() causes some 8661 bad times to be returned. Time was converted to milliseconds, then 8662 to configured ticks. Precision was lost in the millisecond 8663 conversion. The fix is to first convert time to a 64-bit microsecond 8664 value, then to the configured tick value. Noted by David Sidrane. 8665 - clock_systimespec(): When an RTC is used clock_systimespec() must 8666 subtract the basetime from the returned time. It needs to return 8667 the time since power up, no the current time. Issue noted by Max 8668 Neklyudov. 8669 - AIO: correct some backward tests in aio_read() and aio_write(): 8670 Socket descriptors have higher numbers than file descriptors. In 8671 aio_contain(), Copy u.ptr (void *) when initializing aioc and not 8672 the case specific u.aioc_filep. From Michal Ulianko. 8673 8674 * File Systems/Block Drivers/MTD: 8675 8676 - procfs: Fix potential NULL pointer dereference of 'node'. From 8677 Juha Niskanen. 8678 - FAT: fat_unbind() was accessing 'fs->fs_sem' after freeing the 'fs' 8679 struct. From Juha Niskanen. 8680 - mkfatfs: Use DMA memory for mkfatfs when needed. This makes mkfatfs 8681 use fat_dma_alloc() when CONFIG_FAT_DMAMEMORY is set. This is needed 8682 to ensure mkfatfs operates with boards that use DMA for microSD. 8683 From Andrew Tridgell via the PX4/NuttX repository. 8684 - FAT unmount: Fix a bug in the FAT unbind() logic. There were 8685 problems with the way certain internal list handling was 8686 implemented. The end result is that newly opened or cloned file 8687 structures were never being added to the list of open files. So 8688 when the unmount() happens, it always looked like there were not 8689 open files and a crash could ensue. 8690 - FAT mounting: Fix misthink when CONFIG_ENDIAN_BIG=y. From Lwazi Dube. 8691 8692 * Common Drivers: 8693 8694 - CAN upper half driver: Some lines had to be reordered in the can_open 8695 function otherwise the open count will only be incremented from 0 to 8696 1. This caused problems when trying to open the can bus from two 8697 different tasks. SourceForge Patch #46. 8698 8699 * Crypto: 8700 8701 - crypto: Fix issues when AES support was added for the STM32L1. 8702 From Juha Niskanen. 8703 8704 * Networking: 8705 8706 - Network initialization: Divide net_intiialize() into net_setup() and 8707 net_initialize() to solve a chicken-and-egg problem. net_setup() 8708 must be called before up_initialize() is called so that networking 8709 data structures are ready to register new network devices. 8710 net_initialize() now does only timer related operations and is 8711 called AFTER up_initialize() where the timers are configured. 8712 Problem noted by Max Neklyudov. 8713 - netdev_unregister(): Fix a list handling error. From Max Neklyudov. 8714 - Socket dup: Do not call sockfd_socket() twice. From Juha Niskanen. 8715 8716 * Common Drivers: 8717 8718 - max11802 touchscreen: Fix possible unmatched IRQ restore (not 8719 normally a problem, but could happen in certain configurations). 8720 Noted by Juha Niskanen. 8721 - MMCSD SPI Multi-block transfers: ACMD23 must be preceded with CMD55 8722 command as any other ACMD commands. Also, after the block reading 8723 wait loop must be inserted before writing the next block of data to 8724 the sd card. From Dmitry Nikolaev via Jussi Kivilinna. 8725 - MMCSD SDIO: Fix some bad logic when file system debug is turned on: 8726 Arguments to syslog were missing so that garbage was being printed. 8727 - Common upper-half serial driver: Report correct number of bytes free 8728 in serial buffer with FIONWRITE. From Sami Pelkonen via Jussi Kivilinna. 8729 - Pipes/Fifos: Fix zero-lenth writes to pipes/FIFOs. From Jussi Kivilinna. 8730 - USB device MSC: Add NULL pointer check. From Juha Niskanen. 8731 - BCH driver: Avoid NULL pointer dereference when bch->refs == 255. 8732 From Juha Niskanen. 8733 - Various drivers: The inode unlink method should not be support if 8734 operations on the root pseudo-filesystem are disabled. 8735 8736 * ARMv7-M 8737 8738 - ARMv7M MPU: Bad syntax in ARMv7-M MPU logic would cause failure to 8739 write the correct value to the MPU_RASR register. From Juha Niskanen. 8740 8741 * Atmel SAM3/4 Drivers: 8742 8743 - SAM3/4 Serial TERMIOS: A side-effect of changing serial settings 8744 via TERMIOS (such as tcsetattr) is that serial interrupts were being 8745 left disabled. This is not a problem if the serial configuration is 8746 changed when there are no open references to the serial device. In 8747 that case, serial interrupts are disabled and will not be enabled 8748 enabled until the serial device is first opened. But it is fatal if 8749 the serial device is already opened and if there is a task waiting 8750 to receive data. In that case, the side-effect of disabling 8751 interrupts is fatal: That task is then left hanging with interrupts 8752 disabled. 8753 - SAM3/4 Serial: The IMR register is read-only. This means that 8754 sam_restoreints() did not actually re-enable UART interrupts 8755 (Fortunately, that function was not being used up to this point). 8756 - SAMA5 HSMCI: Fix a bug in SAMA5 HSMCI. The bitfield mask and shift 8757 values were reversed resulting in a trashed value for the number of 8758 blocks in the BLOCKR register. This was sufficient to prevent DMA 8759 writes from working. 8760 8761 * Atmel SAMA5 Drivers: 8762 8763 - SAMA5 Timer/Counter: Fix typos in timer/counter header file. From 8764 Bob Doiron. 8765 8766 * STMicro STM32 Drivers: 8767 8768 - STM32 PWR and RTC: Changes to support fully write protecting the 8769 backup domain. N.B. stm32_pwr_enablebkp did not account for the delay 8770 from enable to the domain being writable. The KISS solution is a 8771 up_udelay. A more complex solution would be a negated write test 8772 with restore. From David Sidrane. 8773 - STM32 SPI: Add missing SPI callback functions to the STM32 SPI 8774 driver. From Freddie Chopin. 8775 - STM32 I2C: Add missing NULL check. From Juha Niskanen. 8776 - STM32 USB device: Fix stale initialization invalidating later NULL 8777 check. From Juha Niskanen. 8778 - STM32 UART: Fix RX DMA setup for UART5. From Jussi Kivilinna. 8779 - STM32 UART: Make input hardware flow-control work with RX DMA. From 8780 Jussi Kivilinna. 8781 - STM32 RTC and clock control: The STM32F4Discovery board doesn't 8782 come with a Low speed external oscillator so the default LSE source 8783 for the RTC doesn't work. In stm32_rtcc.c the up_rtc_initialize() 8784 logic doesn't work with the LSI. The check on RTC_MAGIC on the BK0R 8785 register lead to rtc_setup() call that rightfully enables the LSI 8786 clock; but the next times, when the rtc is already setup, the 8787 rtc_resume() call does NOT start the LSI clock! The right place to 8788 put LSE/LSI initialization is inside stm32_stdclockconfig() in 8789 stm32fxxxxx_rcc.c. Doing this I checked the possible uses of the 8790 LSI and the LSE sources: the LSI can be used for RTC and/or the 8791 IWDG, while the LSE only for the RTC (and to output the MCO1 pin). 8792 This change is not verified for any other platforms. From Leo 8793 Aloe3132 8794 8795 * Tiva Drivers: 8796 8797 - Tiva GPIO driver needed small fixes in the configuration routines and 8798 discovered false-positive bugs in interrupt testing: interrupts are 8799 now verified to actually be working reliably. From Calvin Maguranis . 8800 8801 * MIPS32: 8802 8803 - mips32/Toolchain.mk: Current Pinguino toolchain uses the prefix p32- 8804 instead of mips-. 8805 8806 * C Library/Header Files: 8807 8808 - sigaddset() and sigdelset(): Need to set errno if a bad signal 8809 number is received. 8810 - sfrtime(): Missing implementation of %C in sfrtime() C (was being 8811 treated as %y). From Freddie Chopin. 8812 - pthread.h: Fix PTHREAD_COND_INITIALIZER. 8813 - ungetc.c: Fix NULL pointer dereference in ungetc() if 'stream' was 8814 NULL, 'stream->fs_oflags' was evaluated. From Juha Niskanen. 8815 - Fixes to asinh(), atanh(), and sinh(): The 'basic' expansions all 8816 exhibited bad cancellation errors near zero (<= 1E-10). This can be 8817 easily seen e.g. with x = 1E-30, the results are all zero though they 8818 should be extremely close to x. The cutoff values (1E-5, 1E-9) are 8819 chosen so that the next term in the Taylor series is negligible (for 8820 double). Functions could maybe be optimized to use only first term (x) 8821 and a smaller cutoff, just bigger than where the cancellation occurs 8822 - localtime(): Inconsistent configuration name: CONFIG_LIBC_TZDIR vs 8823 CONFIG_LIBC_TZ_TZDIR. Former wins. 8824 8825 * Applications: 8826 8827 - Modbus: Fix some compile problems when TCP is enabled. 8828 8829NuttX-7.10 8830---------- 8831 8832The 110th release of NuttX, Version 7.10, was made on June 9, 2015, 8833and is available for download from the SourceForge website. Note 8834that release consists of two tarballs: nuttx-7.10.tar.gz and 8835apps-7.10.tar.gz. Both may be needed (see the top-level nuttx/README.txt 8836file for build information). 8837 8838Additional new features and extended functionality: 8839 8840 * Binary Loader: 8841 8842 - ARMv-7M, binfmt/, STM32: Add support uClibc++ exceptions. This 8843 involved additional handling for relative relation types, additional 8844 support for unwinding, as well as additional changes. The 8845 culmination of a big effort from Leo Aloe3132. 8846 8847 * Graphics/Graphic Drivers: 8848 8849 - RA8875 LCD driver contributed by Marten Svanfeldt. 8850 8851 * File Systems/Block Drivers/MTD: 8852 8853 - Union File System: Add support for a union file system that can be 8854 used to overlay and merge the content of two mounted file systems. 8855 8856 * USB Host: 8857 8858 - USB Hub Support: Bring in USB hub-related files from 8859 https://github.com/kaushalparikh/nuttx. This is the work of Kaushal 8860 Parikh. This is quite a bit more hub logic was needed in before the 8861 USB hub support was fully functional. This involved changing many 8862 USB host controller driver interfaces and modifications to many 8863 drivers. 8864 - USB host CDC/ACM class driver: Added initial implementation of a 8865 host-side CDC/ACM driver. Initial version was a great learning 8866 experience, but probably should be partially redesigned (as 8867 discussed in the top-level TODO file). 8868 - IPv6 Routing: Complete implementation of the IPv6 routing logic. 8869 From Max Neklyudov. 8870 8871 * Networking: 8872 8873 - Local Sockets: Add poll support for Unix stream sockets. From Jussi 8874 Kivilinna. 8875 - net/: ARP, ICMP, ICMPv6, PKT, TCP, and UDP now all receive event 8876 notifications from both network device packet processing, but now 8877 also from Device-specific events such as when the network goes down. 8878 The device notification callback structure is now supports dual 8879 linkages so that the client can receive notifications from both 8880 source; The device structure now includes a list of clients that 8881 want to receive device related notifications. This prevents network 8882 actions from hanging when the device goes down and will be an 8883 essential part of future support for removable network devices. 8884 Some of the core logic was contributed by Max Neklyudov. 8885 - TUN: Misc. improvements to the TUN driver, mostly related to poll(). 8886 Also several bugfixes. From Max Neklyudov. 8887 8888 * Simulation Platform: 8889 8890 - Simulator: Add logic to test localtime and TZ database. See 8891 apps/system/README.txt for info. 8892 - Simulation: Add a configuration for testing the Union File System. 8893 8894 * Calypso: 8895 8896 - Calypso Compal-E86: Updates for execution out of FLASH on the C139 8897 phone. From Craig Comstock. 8898 8899 * Atmel SAMD/L: 8900 8901 - SAML21 Support: And chip definitions, configuration framework, 8902 memory map and pin configuration files for SAML21 support. 8903 8904 * Atmel SAMD/L Boards: 8905 8906 - SAML21-Xplained: Add a board support for the SAML21 Xplained Pro. 8907 This is based on the similar SAMD20 Xplained Pro board. 8908 8909 * Freescale/NXP KL: 8910 8911 - KL25Z64: Added support for the KL25Z64. The KL25Z64 is a lower 8912 memory variant of the KL25Z128 and is used on the Teensy LC. From 8913 Michael as SourceForge patch 50. 8914 8915 * Freescale/NXP KL Boards: 8916 8917 - Teensy-LC: Add board support for the Teensy LC board. Support is 8918 based off the Freedom KL25Z board. LED, PWM, and UART0 have been 8919 tested. The SPI pins are mapped correctly but have not yet been 8920 tested. From Michael Hope as SourceForge patch 51. 8921 8922 * NXP LPC111x: 8923 8924 - LPC111x: Support for the LPC11xx family (the LPC1115 MCU in 8925 particular). Contributed by Alan Carvalho de Assis. 8926 8927 * NXP LPC111x Boards: 8928 8929 - LPCXpresso LPC1115: Support for the LPCXpression LPC1115 8930 board. Contributed by Alan Carvalho de Assis. 8931 8932 * NXP LPC17xx Drivers: 8933 8934 - LPC17xx Ethernet: Add support for the Micrel KSZ8041 PHY to the 8935 LPC17xx Ethernet driver. 8936 8937 * NXP LPC17xx Boards: 8938 8939 - Lincoln60: Add a network enabled configuration for the Lincoln60 8940 board. 8941 8942 * Atmel SAM3/4 Drivers: 8943 8944 - SAM4CM: Add support for optical mode for the SAM4CM UART1. From 8945 Max Neklyudov. 8946 8947 * Freescale (NXP) Kinetis: 8948 8949 - Kinetis K20: Basic support for the Kinetis K20 architecture. Taken 8950 from PX4. This is the work of Jakob Odersky. 8951 8952 * Atmel SAMV7 Boards: 8953 8954 - SAMV71-Xplained w/maXTouch Xplained Pro: A TWIHS fix was the last 8955 barrier to getting the touchscreen working in the maXTouch Xplained 8956 Pro LCD. Added the NxWM integrated graphics demonstration 8957 configuration. 8958 8959 * STMicro STM32: 8960 8961 - STM32: Added support for STM32F302K8 and STM32F302K6. From Ben Dyer 8962 via PX4/David Sidrane. 8963 - STM32F205RG: Add basic support for the STM32F205RG. From SourceForge 8964 Ticket 40 (anonymous, 2015-05-31). 8965 - STM32 F3: Add DBGMCU register definitions for the F3 family. From 8966 Greg Meiste. 8967 8968 * STMicro STM32 Drivers: 8969 8970 - STM32 LCDC: Defined a second interface for the dma2d controller. 8971 LTDC only controls the display visibility but the DMA2D controller 8972 changes the content of the frame buffer (buffer of the layer). From 8973 Marco Krahl. 8974 - STM32 PVD: Added support for STM32's Programmable Voltage Detector 8975 (PVD) feature. By Dmitry Nikolaev, submitted by Juha Niskanen. 8976 8977 * STMicro STM32 Boards: 8978 8979 - STM32F429i-Disco: Add support for the new DMA2D features to the LTDC 8980 configuration. From Marco Krahl. 8981 8982 * TI Tiva Boards: 8983 8984 - TM4C1294 Launchpad: Added TM4C1294NCPDT EN0_LED2 (10/100-Base-Tx); 8985 removed all booster pack pin definitions. From Frank Sautter. 8986 8987 * C Library/Header Files: 8988 8989 - libc: Add an option to disable support for long long formats in 8990 lib_vsprintf(). On very tiny platforms, this reduces the footprint 8991 by omitting large libgcc.a libraries to perform the 64-bit 8992 arithmetic operations. From Alan Carvalho de Assis. 8993 8994 * Applications: apps/system: 8995 8996 - nuttx/zoneinfo: Add logic to build a ROMFS file system 8997 containing the timezone data. 8998 8999 * Applications: apps/nshlib: 9000 9001 - Add poll support for Unix stream sockets. From Jussi Kivilinna. 9002 - Enhancements to NSH ifconfig for case of multi-link operation, TUN 9003 device and local connections. From Max Neklyudov. 9004 - Enhanced output to NSH ping command from Max Neklyudov. 9005 - The NSH mount command now recognizes the Union filesystem type when 9006 listing mounted file systems. 9007 9008 * Applications: apps/netutils: 9009 9010 - apps/netutils/thttpd/ and apps/examples/thttpd/: Add support for 9011 using binfs/ with the Union FS instead of NXFLAT. NXFLAT is 9012 probably the better solution but recently compiler changes make it 9013 unusable. binfs or ELF are fallback binary formats. This commit 9014 adds an option to use binfs with the Union FS. 9015 9016 * Applications: apps/examples: 9017 9018 - Modify/simpify apps/examples build files. From Roman Saveljev. 9019 - apps/examples/ltdc: Add testing support for the STM32 LTDC's 2D DMA. 9020 From Marco Krahl. 9021 - apps/examples/ostest: Add a test of nested signals. There are no 9022 failures to handle signals but neither am I getting any nested signal 9023 handling. 9024 - apps/examples/elf: Add configuration options to support building the 9025 hello++4 example that depends upon having uClibc++ available. Also 9026 add hello++5 to the ELF example From Leo aloe3132. 9027 - apps/examples/unionfs: Add a test of the union file system to 9028 apps/examples. 9029 9030Efforts In Progress. The following are features that are partially 9031implemented but present in this release. They are not likely to be 9032completed soon. 9033 9034 * Processes. Much of the work in this release is focused on the 9035 realization of Unix-style user processes in NuttX. There is more to 9036 be done, however. The full roadmap and status is available at: 9037 https://cwiki.apache.org/confluence/display/NUTTX/Memory+Configurations 9038 9039 * XMega: There are some fragments in place for an XMega port. That 9040 port has not really started, however. 9041 9042Bugfixes. Only the most critical bugfixes are listed here (see the 9043ChangeLog for the complete list of bugfixes and for additional, more 9044detailed bugfix information): 9045 9046 * Core OS: 9047 9048 - boardctl(): Add missing case causing that caused failures of PWM 9049 test. 9050 - pthread_kill(): Re-implemented pthread_kill(). It was just a simple 9051 wrapper around kill() but since the correct dispatching of signals 9052 for multi-threaded task groups has been implemented, calling kill() 9053 does not do what pthread_kill() is supposed to do. The corrected 9054 implementation of pthread_kill() will direct the signal specifically 9055 to the specific pthread and no other. 9056 - uint32_t callbacks: Update the type passed to watchdog timer 9057 handlers. Using uint32_t is a problem for 64-bit machines because 9058 it is too small to pass a pointer. uintptr_t is a more appropriate 9059 type. 9060 - mq_timedreceive(): move the location where the errno value is set; 9061 the ETIMEDOUT errno setting was being overwritten by subsequent 9062 actions before returning. Noted by Freddie Chopin. 9063 - POSIX message queues: Move mq_setattr() and mq_getattr() from 9064 nuttx/libc/mqueue to nuttx/sched/mqueue. Also add syscall support 9065 for mq_setattr() and mq_getattr(). This is necessary in protected 9066 and kernel builds because in those cases the message queue 9067 structure is protected and cannot be accessed directly from user 9068 mode code. 9069 9070 * File Systems/Block Drivers/MTD: 9071 9072 - MTD: Increase the size of the fields in the geometry structure 9073 (again) to support larger FLASH sizes. Needed by Sebastien Lorquet. 9074 9075 * Common Drivers: 9076 9077 - poll(): Fix resource leak and memory corruption on poll failure. 9078 From Jussi Kivilinna. 9079 9080 * USB Host: 9081 9082 - LPC31xx and SAMA5Dx EHCI: Fix cache related problem in LPC31 and 9083 SAMA5Dx EHCI drivers. All buffers are now aligned with the cache 9084 line size in both starting address and in length. This cause major 9085 problems in unlucky builds where the USB host buffers where 9086 unaligned and abutting other data. The cache flush and invalidate 9087 operations could be subverted by accesses to adjacent data or could 9088 have unexpected side effects. This bug has been in the ECHI drivers 9089 forever, but was only revealed due to unlucky memory allocations 9090 during the integration of the hub feature. 9091 9092 * USB Device: 9093 9094 - All USB device class drivers: There needs to be a check to make 9095 sure that the size of a returned string does not exceed the size of 9096 the allocated request buffer. Strings such as vendor names or 9097 product names will be truncated to fit in the request buffer. 9098 9099 * Networking: 9100 9101 - TCP: Correct failures in long Telnet sessions by increasing th 9102 size of the number of bytes sent from uint16_t to uint32_t. This 9103 avoids an integer overflow that causes a long Telnet session to be 9104 closed unexpectedly. From Rony XLN. 9105 - Network locks: Correct some network lock logic: Two error 9106 conditions where the network was not being unlocked and one where it 9107 was getting unlocked twice. From Jussi Kivilinna. 9108 - Local Sockets: Local stream sockets had problem of double releasing 9109 pipes (both server and client attempt release), which causes wrong 9110 pipe pair being closed in multi-client case. Solve by adding per 9111 connection instance ID to pipe names. From Jussi Kivilinna. 9112 - TCP: Fix an important TCP networking bug: 16-bit flags was being 9113 converted to 8-bits in a few locations, causing loss of status 9114 indications. 9115 - TCP: net_startmonitor() always returned OK. In the race case 9116 where a socket has already been closed, it correctly handled the 9117 disconnection event but still returned OK. Returning OK caused the 9118 callers of net_startmonitor() to assume that the connection was 9119 okay, undoing the good things that net_startmonitor() did and 9120 causing the socket to be incorrectly marked as connected. This 9121 behavior was noted by Pelle Windestam. 9122 - setsockopt() failed when setting timeouts to values less tha 100 9123 msec. That is because the timeout is limited to stops of 1 9124 decisecond and because the conversion of structure timeval was 9125 truncating the microsecond remainder. The utility 9126 net_timeval2dsec() now accepts and option to determine how it 9127 handles the remainder: truncate, discarding the remainder, use 9128 the remainder to round to the closed decisecond value, or use any 9129 non-zero remainder to the next larger whole decisecond value. Bug 9130 discovered by Librae. 9131 - TCP: In the TCP connection operation, it was trying to setup the 9132 network monitor BEFORE the socket was successfully connected. This, 9133 of course, has ALWAYS failed because the socket is not yet connected 9134 and the TCP state is not yet correct for a connected socket. However, 9135 because of other changes net_startmonitor() now returns a failure 9136 condition that causes worse problems when trying to connect. The fix 9137 is to move the logic that starts the network monitor to AFTER the 9138 socket has been successfully connected. 9139 9140 * Atmel SAM3/4 Drivers: 9141 9142 - SAM4CM and SAMA5D Free-running timer: Logic that samples the free 9143 running counter reads the pending interrupt status register and can 9144 cause interrupts to be lost. So, if when the status register is 9145 read, the logic must also handle the timer overflow event. Found 9146 and fixed by Max Neklyudov. 9147 9148 * Atmel SAMA5 Drivers: 9149 9150 - SAM3/4 Serial: When reconfigured, serial does not receive bytes 9151 from UART. This happens because RX interrupt was disabled in the 9152 setup routine. Fixed this I save interrupt configuration before 9153 UART shutdown and restore it after. From Max Neklyudov. 9154 9155 * NXP LPC17xx Drivers: 9156 9157 - LPC176x GPIO: Reorder steps when an output GPIO is configured in 9158 order to avoid transient bad values from being output. From Hal 9159 Glenn. 9160 - LPC17 USB OHCI: Correct some initialization of data structures. 9161 When hub support is enabled, it would overwrite the end of an array 9162 and clobber some OS data structures. 9163 - LPC17xx Ethernet: Review, update, and modify the Ethernet driver so 9164 that it works better with CONFIG_NET_NOINTS=y. Also, update all 9165 LPC17xx networking configurations so that they have 9166 CONFIG_NET_NOTINTS=y selected. 9167 9168 * SiLabs EMF32 Drivers: 9169 9170 - EFM32 SPI: Add missing SPI GPIO pin initialization. From Pierre-noel 9171 Bouteville. 9172 9173 * STMicro STM32: 9174 9175 - STM32 F3: Added missing EXTI definitions for the STM32 F3; Correct 9176 an error the port D base address in the STM32 F30x and F37x memory 9177 maps. From Greg Meiste. 9178 9179 * STMicro STM32 Drivers: 9180 9181 - STM23 RTC: Fix an error introduced into stm32_pwr_enablebkp(). 9182 That function must preserve the previous state of backup domain 9183 access on return. 9184 - STM32 RTC counter: Now need to enable backup domain write access 9185 when setting the time. From Darcy Gong. 9186 - STM32 OTG FS and HS: Added protection in the event that out-of-bound 9187 endpoint numbers are received. From David Sidrane. 9188 9189 * STMicro STM32 Boards: 9190 9191 - STM32F429i Disco: (1) Fix a bad return value if the LCD driver is 9192 already initialized. (2) The LCD driver initialization is now 9193 performed during the early boot sequence. (3) Increased the size 9194 of the message queue from 32 to 64 in the lcd configuration. From 9195 Marco Krahl. 9196 9197 * TI Tiva 9198 9199 - Fixes for Tiva TM4C1294NCPDT. From Frank Sautter. 9200 9201 * Atmel SAMV71 Drivers: 9202 9203 - SAMV7 TWIHS: Fix SAMV TWIHS logic that performs multi-message 9204 transfers with and without repeated starts. 9205 9206 * Atmel SAMA5D3/4 Dirvers: 9207 9208 - SAMA5 CAN: Fix SAMA5 CAN frame construction. From Max Holtzberg. 9209 9210 * C Library/Header Files: 9211 9212 - stdlib.h: MAX_RAND should be RAND_MAX. 9213 - assert.h: Wrap definitions of assertion macros in do while so that 9214 they are valid C statements. Numerous places throughout the code 9215 where semicolons were missing at the end of an assertion also had to 9216 be fixed. Suggested by orbitalfox. 9217 - inetntoa(): Correct errors in printing IP address when type char is 9218 signed and the value is >= 128. From Max Neklyudov. 9219 9220 * Tools: 9221 9222 - Tools: Fix test for the existence of the apps/ directory in 9223 configure.c. Fix backward interpretation of options, -l was selecting 9224 Windows and -w was selecting Linux. This was SourceForege Ticket #39. 9225 9226 * Applications: apps/nshlib: 9227 9228 - apps/nshlib/nsh_timcmds.c: Check return values from time functions. 9229 - apps/nshlib/: Fix handling of gmtime_r return value in time commands. 9230 gmtime_r returns a pointer, not an int. 9231 9232 * Applications: apps/netutils: 9233 9234 - apps/netutils/ntp: Fix mismatched sched_lock/unlock. Noted by Juha 9235 Niskanen. 9236 9237 * Applications: apps/examples: 9238 9239 - apps/examples/nxlines: Fix missing right bracket that causes 9240 compile error when CONFIG_NX_XYINPUT=y. From Librae. 9241 - apps/examples: When boardctl() fails, need to print errno not the 9242 returned value which will always be -1. 9243 - apps/examples: Correct use of the BOARDIOC_GRAPHICS_SETUP boardctl() 9244 call. 9245 9246NuttX-7.11 Release Notes 9247------------------------ 9248 9249The 111th release of NuttX, Version 7.11, was made on August 13 2015, 9250and is available for download from the Bitbucket.org website. Note 9251that release consists of two tarballs: nuttx-7.11.tar.gz and 9252apps-7.11.tar.gz. These are available from: 9253 9254 https://bitbucket.org/patacongo/nuttx/downloads 9255 https://bitbucket.org/nuttx/apps/downloads 9256 9257Both may be needed (see the top-level nuttx/README.txt file for build 9258information). 9259 9260Additional new features and extended functionality: 9261 9262 * Core OS: 9263 9264 - clock_gettime(): Use up_timer_gettime for CLOCK_MONOTONIC in 9265 tickless mode. From Max Neklyudov. 9266 - waitpid(): Implement WNOHANG for waitpid() only and for the case of 9267 CONFIG_SCHED_HAVE_PARENT not selected. From Max Neklyudov. 9268 - SCHED_SPORADIC: Add a sporadic scheduler to NuttX. 9269 - Extend the processor-specific interface to include information to 9270 support the Sporadic Scheduler. 9271 - sem_tickwait(): Added this function for internal use within the OS. 9272 It is a non-standard but more efficient version of sem_timedwait() 9273 for use in higher performance device drivers. 9274 9275 * Binary Loader: 9276 9277 * Graphics/Graphic Drivers: 9278 9279 - Graphics: Implement anti-aliasing in order to clean the drawing of 9280 all edges. Anti-aliasing is supported in the horizontal, raster 9281 direction only. 9282 - SSD1306 LCD Driver: Modify the SSD1306 LCD driver to support either 9283 the SPI or I2C interface. From Alan Carvalho de Assis. 9284 9285 * File Systems/Block Drivers/MTD: 9286 9287 - mount: Add the ability to mount a file system on top of en existing 9288 node in the pseudo-file system. 9289 - epoll(): Add a very simple epoll layer just around poll calls. To 9290 satisfy build app requirements. From Anton D. Kachalov. 9291 9292 * Common Device Drivers: 9293 9294 - IOCTL: Add relay IOCTL definitions. From Max Neklyudov. 9295 - I/O Expander Framework: Add an I/O expander driver framework. From 9296 Sebastien Lorquet 9297 - NXP PCA9555 I/O Explander. Add PCA9555 driver.From Sebastien 9298 Lorquet 9299 - BMP180 Barameter: Add support to Bosch BMP180 barometer. From 9300 Alan Carvalho de Assis. 9301 - CAN IOCTLs: Add CAN IOCTL command definitions to manage CAN message 9302 filtering 9303 - CAN Driver: Add configuration to support DLC to byte conversions 9304 needed for CAN FD mode. 9305 - SPI Slave Interface: Add a definition of an SPI slave interface. 9306 - LM92 Temperature Sensor: Add a driver for the LM92 temperature 9307 sensor. Contributed by Paul Alexander Patience. 9308 - AS5048B Rotary Magnetic Sensor: Add support for an AS5048B rotary 9309 magnetic sensor. From Paul Alexander Patience. 9310 - Ramtron Driver: Update to include supportf for newer RAMTRON parts. 9311 From David Sidrane. 9312 - MB7040 Sonar Driver: Add support for a MB7040 sonar driver. From 9313 Paul Alexander Patience. 9314 - ms5805 Altimeter Driver: Add support for an MS5805 altimeter. From 9315 Paul Alexander Patience. 9316 9317 * Networking: 9318 9319 - DNS Client: Implement the low-level network DNS packet protocol to 9320 request and receive IPv6 address mappings. 9321 - NetDB: Add support for a DNS host name resolution cache. This can 9322 save a lot of DNS name server lookups (but might also have the 9323 negative consequence of using stale IP address mappings. 9324 - NetDB: Name resolution logic now supports lookups from a file like 9325 /etc/hosts. 9326 - Network Initialization: Add CONFIG_NETDEV_LATEINIT that can be 9327 used to suppress calls to up_netinitialize() from early in 9328 initialization. 9329 - FTMAC100 Ethernet MAC Driver. Add support for Faraday FTMCA100 9330 Ethernet MAC/ From Anton D. Kachalov. 9331 - UDP Networking: Add support for send() for connected UDP sockets. 9332 9333 * Crypto: 9334 9335 - Add CFB and MAC AES modes. From Max Neklyudov. 9336 9337 * Simulation Platform: 9338 9339 - Simulation: Implement board_power_off() for the simulation platform. 9340 This allows for a graceful exit from the simulation. 9341 9342 * MoxaRT: 9343 9344 - MoxaRT SoC: Add support for MoxaRT SoC found in the most Moxa serial 9345 converters such as NP51x0, NP66xx, UC72xx. From Anton D. Kachalov. 9346 9347 * MoxaRT Boards: 9348 9349 - Moxa NP51x0: Moxa NP51x0 series of 2-port advanced RS-232/422/485 9350 serial device servers. From Anton D. Kachalov. 9351 9352 * ARMv6-M: 9353 9354 - ARMv6-M Assertions: Port some per-process stack dumping logic from 9355 ARMv7-M to ARMv6-M. From Alan Carvalho de Assis. 9356 9357 * Atmel SAMD/L Boards: 9358 9359 - SAML21: DMA: Add SAML21 DMA support. 9360 - SAMD21: Add architecture support for the SAMD21 family. 9361 - SAMD21-Xplained: Board configuration for the SAMD21 Xplained board. 9362 9363 * Atmel SAM3/4 Drivers: 9364 9365 - SAM4E: Add default loop optimization if EEFC_FMR is available in the 9366 configuration (i.e., for SAM4S and 4E). From Marco Aurélio da Cruz. 9367 - crypto/ and SAM4CM: Add CFB and MAC AES modes. From Max Neklyudov. 9368 - SAM3/4: Add a TWI driver for the SAM4CM. From Max Neklyudov. 9369 9370 * Freescale (NXP) Kinetis: 9371 9372 - Kinetis: Add support for MK20DN--VLH5 and MK20DX---VLH5. Needed 9373 for backward compatible support for Teensy-3.0. 9374 9375 * Freescale (NXP) Kinetis Boards: 9376 9377 - Teensy 3.x: Add board support for the PJRC Teensy-3.0 and 9378 Teensy-3.1 boards. 9379 9380 * Atmel SAMV7 Drivers: 9381 9382 - SAMV7: Add an MCAN driver for the SAMV7 platform. 9383 - SAMV7 SPI Slave Driver: Add the an SPI slave driver. 9384 9385 * STMicro STM32: 9386 9387 - STMicro STM32 F7: Add architecture support for the STMicro STM32 9388 F7. 9389 - STM32 F446: Add support for the STMicro STM32 F446. From David 9390 Sidrane. 9391 9392 * STMicro STM32 Drivers: 9393 9394 - STM32 F7: Add an STM32 F7 Ethernet driver. 9395 - STM32 F7: Port the STM32 F4 DMA driver. 9396 - STM32 F4 ADC: Add DMA support to the ADC driver for STM32 F4. From 9397 Max Kriegler. 9398 9399 * STMicro STM32 Boards: 9400 9401 - STM32F762G-Disco: Add support for the STMicro STM32 F7 Discovery 9402 board. 9403 - STM32F4-Disco: Add support to BMP180 driver on the STM32F4 Discovery. 9404 From Alan Carvalho de Assis. 9405 9406 * C Library/Header Files: 9407 9408 - Add asctime(), asctime_r(), ctime(), and ctime_r(). 9409 - sethostname(): Add support for sethostname(). 9410 - gethostbyname() and gethostbyaddr(): Add support for 9411 gethostbyname() and gethostbyaddr(). Also support included for the 9412 non-standard gethostbyname_r() and gethostbyaddr_r(). This moves 9413 the DNS client logic from apps/ into the NuttX libc implementation. 9414 9415 * Tools: 9416 9417 - testbuild.sh: Add a script that can be used to perform building 9418 testing for several board configurations. 9419 9420 * Build/Configuration System: 9421 9422 - apps/ Build System: No longer depends on hardcoded lists of 9423 directories. Instead, it does a wildcard search to find all 9424 appropriate directories. This means that to install a new 9425 application, you simply have to copy the directory (or link it) into 9426 the apps/ directory. If the new directory includes a Makefile and 9427 Make.defs file, then it will automatically be included in the build. 9428 - mkkonfig.sh: Add the tool mkkconfig.sh that dynamically builds the 9429 apps/Kconfig file at configuration time. The hardcoded 9430 configuration file has been removed and now the top-level Makefile 9431 executes tools/mkkconfig.sh to auto-generate the top-level Kconfig 9432 file. A new apps/ make target call preconfig: was added to support 9433 this operation. Now you do not have to modify the top-level Kconfig 9434 file to add a new directory into the configuration; the top-level 9435 subdirectory simply needs to include a Kconfig file and it will 9436 automatically be included in the configuration. The native Windows 9437 build is temporarily broken until a new apps/tools/mkconfig.bat 9438 script is generated. 9439 - mkkconfig.bat: Add the Windows script corresponding to 9440 apps/tools/mkkconfig.sh. Needed for a Windows native build. 9441 9442 * Applications: apps/nshlib: 9443 9444 - NSH shutdown command: NSH will now support an (optional) shutdown 9445 command if the board provides the option CONFIG_BOARDCTL_POWEROFF. 9446 The command can also be used to reset the system if 9447 CONFIG_BOARDCTL_RESET=y. 9448 - NSH uname command: Add support for a uname command. 9449 - NSH nslookup command: Add an nslookup command. 9450 9451 * Applications: apps/system: 9452 9453 - NetDB: Add a system command to access the network database. 9454 - readline(): Add support for Unix-style tab complete to readline. 9455 Contributed by Nghia Ho. 9456 - readline(): Extended the tab-completion support to also expand NSH 9457 command names. 9458 - readline(): Add support for an in-memory command line history that 9459 can be retrieved using the up and down arrows. Contributed by Nghia 9460 Ho. 9461 9462 * Applications: apps/netutils: 9463 9464 - DNS client: Moved the DNS client logic into the NuttX C library. 9465 It is a necessary part for the full implementation of the netdb logic 9466 and provides more flexibility in that location. 9467 - Replace calls to the non-standard dns_gethotip() with calls to 9468 standard gethostbyname(). 9469 - NetLib: Create netlib wrapper functions around dns_getserver() and 9470 dns_setserver() to isolate application code from changes to those 9471 interfaces. 9472 9473 * Applications: apps/examples: 9474 9475 - OS test: Extend the OS test to include a test of 9476 pthread_mutex_trylock() for recursive mutexes. From Juha Niskanen. 9477 - OS test: Add a test for the sporadic scheduler. 9478 9479Bugfixes. Only the most critical bugfixes are listed here (see the 9480ChangeLog for the complete list of bugfixes and for additional, more 9481detailed bugfix information): 9482 9483 * Core OS: 9484 9485 - pthreads: Use -1 instead of 0 as PID for unclaimed mutexes. From 9486 Juha Niskanen. 9487 - pthreads: Implement pthread_mutex_trylock() for recursive mutexes. 9488 From Juha Niskanen. 9489 - pthread_create(): Group binding needs to be cleared before 9490 sched_releasetcb(), as otherwise group_leave() will be called and 9491 group->tg_nmembers decremented or group being released. group_leave() 9492 should be called only after group_join() is called, not after 9493 group_bind(). From Jussi Kivilinna. 9494 - Protected Mode User Memory Allocator: Redesigned how the user space 9495 heap is accessed from the kernel code in protected mode. It used to 9496 call memory management functions in user space via function pointers 9497 in the userspace interface. That is inefficient because the first 9498 thing that those memory management functions do is to trap back into 9499 the kernel to get the current PID. Worse, that operation can be 9500 fatal is certain fragile situations such as when a task is exiting. 9501 The solution is to remove all of the memory management function 9502 calls from the interface. Instead, the interface exports the users 9503 pace heap structure and then kernel size implementations of those 9504 memory management functions will operate on the userspace heap 9505 structure. This avoids the unnecessary system calls and, more 9506 importantly, failures do to freeing memory when a test exits. 9507 - pthread_create(): Fix an (unlikely) error in fallback value in the 9508 event of a failure (which should never occur). 9509 9510 * Common Drivers: 9511 9512 - STMPE811 Driver: In stmpe811_instanciate() when 9513 CONFIG_STMPE811_MULTIPLE is enabled, and the call to 9514 stmpe811_checkid() fails, then the linked device list is not 9515 restored to its previous state. From Sebastien Lorquet. 9516 - CAN driver: Fix an issue in the CAN driver where the rx_sem count 9517 can grow beyond bounds. 9518 9519 * File System/Block Drivers: 9520 9521 - NFS client: Fix prototype of unbind method. The function prototype 9522 was not updated for NFS after a recent change to the file system 9523 interface. From Manuel St??. 9524 9525 * Networking/Network Drivers: 9526 9527 - netconfig.h: Fix some backward compilation that was emitting #error 9528 in the wrong condition when SLIP was enabled. 9529 - SLIP Driver: Fix a missed name change when many of network 9530 interface names changed sometime back but were apparently never 9531 updated for SLIP. 9532 - Networking: Allow receipt of empty UDP packets. From Max Neklyudov. 9533 9534 * ARMv6-M: 9535 9536 - ARMv6-M: Fix Cortex-M0 assembly error when the interrupt stack is 9537 enabled. From Alan Carvalho de Assis. 9538 9539 * Atmel SAMD/L Drivers: 9540 9541 - SAMD20, D21, L21: In the SAML21, SERCOM5 uses a different SLOW clock 9542 channel (and, hence, also a different SLOW GCLK generator). This 9543 means that the channel selection cannot be a global definition but 9544 must be a per SERCOM configuration setting. 9545 - SAMD/L: Several fixes to register definitions and types. From 9546 Janne Rosberg. 9547 9548 * Atmel SAM3/4 Drivers: 9549 9550 - SAM3/4 UART: Back out an error introduced with commit 9551 02c33f66c5a8be774034cd40e4125e9323c7b4d8. Causes an infinite loop in 9552 up_lowputc(). From Max Neklyudov. 9553 - SAM4CM: Fix SUPC register definitions. From Max Neklyudov. 9554 - SAM3/4 WDT: Correct some problems with SAM3/4 watchdog driver. 9555 Includes some small improvements. From Max Neklyudov. 9556 9557 * Atmel SAMV7 Drivers: 9558 9559 - SAMV7 UART: Also back the bad cloned change o sam_lowputc.c for 9560 SAMV7 platform. 9561 9562 * NXP LPC43xx Drivers: 9563 9564 - LPC4350: Correct some LPC4350 GPIO pin configurations. From 9565 Alessandro Temil. 9566 9567 * SiLabs EMF32 Drivers: 9568 9569 - EFM32 SPI: Correct write to incorrect register in EFM32 SPI driver. 9570 From Pierre-noel Bouteville. 9571 9572 * STMicro STM32 Drivers: 9573 9574 - STM32 F15x: STM322 F15x stm32_stdclockconfig() was calling 9575 stm32_pw_setvos() which accessed PWR_CR via an inactive APB From 9576 Juha Niskaneni. 9577 - STM32 Ethernet: Extend STM32 Ethernet operating frequency to 180MHz. 9578 From Sebastien Lorquet. 9579 9580 * STMicro STM32 Boards: 9581 9582 - SAMV7 Xplained: In clock configuration, divider was set to 25 to get 9583 25*12MHz=300MHz CPU clock. The correct multiplier is 24 because the 9584 calculation if (24+1)*12MHz. So the board was running at 312MHz. 9585 From Efim Monjak. 9586 9587 * ARMv7-A: 9588 9589 - Cortex-A5 vfork(): Fix a Cortex-A compilation error when system 9590 calls are enabled in modes other than CONFIG_BUILD_KERNEL. 9591 9592 * Atmel SAMA5 Drivers: 9593 9594 - SAMA5Dx EHCI: Fix some bad conditional compilation that left a 9595 function undefined if CONFIG_USBHOST_ASYNCH is not selected. 9596 9597 * C Library/Header Files: 9598 9599 - getopt(): Uninitialized variable can cause hardfault from getopt() 9600 if required argument is missing. From George McWilliams. 9601 9602 * Applications: apps/nshlib: 9603 9604 - NSH/THHPD: Change decoding to handle the increased size of the 9605 scheduling policy field in the TCB. 9606 9607 * Applications: apps/netutils: 9608 9609 - THTTPD: Fix compilation problems when 9610 CONFIG_THTTPD_GENERATE_INDICES is defined. 9611 - THTTPD: Missing gci-src as a dependency path when building with 9612 BINFS enabled. 9613 9614 * Applications: apps/examples: 9615 9616 - poll() example: Fix a few bit-rot compilation errors. 9617 - Nx Lines example: If CONFIG_NX_ANTIALIASING=y, then the nxlines 9618 example now erases a line that is 2 pixels longer and 2 pixels wider 9619 than the line it drew. That eliminates edges effects due to 9620 applying the anti-aliasing algorithm twice. A better solution 9621 would be to make anti-aliasing an option for each graphics call so 9622 you would rend the line with anti-aliasing ON and clear it with 9623 anti-aliasing OFF. but I don't have the wherewithal for that change 9624 today. 9625 - OS test: Improve synchronization in round robin tests. On very fast 9626 processors, there are race conditions that make the test fail. 9627 Need better interlocking to assure that the threads actually do start 9628 at the same time. 9629 9630NuttX-7.12 Release Notes 9631------------------------ 9632 9633The 112th release of NuttX, Version 7.12, was made on October 1, 2015, 9634and is available for download from the Bitbucket.org website. Note 9635that release consists of two tarballs: nuttx-7.12.tar.gz and 9636apps-7.12.tar.gz. These are available from: 9637 9638 https://bitbucket.org/patacongo/nuttx/downloads 9639 https://bitbucket.org/nuttx/apps/downloads 9640 9641Both may be needed (see the top-level nuttx/README.txt file for build 9642information). 9643 9644Additional new features and extended functionality: 9645 9646 * Graphics/Graphic Drivers: 9647 9648 - Added SSD1351 OLED controller support. Contributed by Paul 9649 Alexander Patience. 9650 9651 * Common Device Drivers: 9652 9653 - MS58xx: Generalize the MS5805 altimeter driver to support other 9654 family members. From Paul Alexander Patience. 9655 - CAN driver interface: Add an error indication bit to the CAN 9656 message report. 9657 - Developed a new interface for QSPI. Most QSPI hardware (such as the 9658 SAMV71) used a programmed interface to access the QuadSPI FLASH. 9659 That programmed interface is no compatible with the simpler NuttX 9660 SPI data transfer interface. 9661 - Added a driver for ST25L1*K QuadSPI parts. 9662 - Renamed the battery driver interface to battery_gauge since it 9663 really only implements a battery fuel gauge. From Alan Carvalho de 9664 Assis. 9665 - Added a new framework to support a batter charger interface. From 9666 Alan Carvalho de Assis. 9667 - Added a BQ24250 battery charger driver. From Alan Carvalho de Assis. 9668 9669 * Networking: 9670 9671 - Added support for the local loopback device (dev lo, hostname localhost). 9672 - Added NetDB support for the local loopback device. 9673 - Network initialization: Automatically initialize all the TUN and 9674 loopback devices if they arein the configuration. 9675 9676 * Simulation Platform: 9677 9678 - The simulation now runs under Cygwin64. Modern Cygwin X86_64 9679 machines follow the Microsoft ABI for parameter passing. The Linux 9680 System 5 ABI would not work on X86_64-based Cygwin machines. Newer 9681 Cygwin tool chains do nor pre-pend symbol names with the underscore 9682 character. 9683 9684 * Atmel SAMA5Dx: 9685 9686 - Added architectural support for the Atmel SAMA5D2 parts. Not fully 9687 verified in this NuttX release. 9688 9689 * Atmel SAMA5Dx Boards: 9690 9691 - Added support for the Atmel SAMA45D2 Xplained Ultra board. Not 9692 fully verified in this NuttX release. 9693 9694 * Atmel SAMV7 Drivers: 9695 9696 - SAMV7 USBHS DCD: The device controller driver is (finally) 9697 functional. 9698 9699 * NXP LPC17xx: 9700 9701 - Implement options to use external SDRAM and or SRAM for the heap. 9702 From Pavel Pisa. 9703 9704 * NXP LPC43x: 9705 9706 - Added architectural support for the LPC4370. From Lok Tep. 9707 9708 * NXP LPC43xx Drivers: 9709 9710 - Added Ethernet support. From Ilya Averyanov. 9711 - Added LPC43xx EHCI driver from Ilya Averyanov. 9712 9713 * NXP LPC43xx Drivers: 9714 9715 - Added support for the NXP LPC4370-Link2 development board from Lok 9716 Tep. 9717 9718 * STMicro STM32: 9719 9720 - Added architectural for STM32F303K6, STM32F303K8, STM32F303C6, 9721 STM32F303C8, STM32F303RD, and STM32F303RE devices. From Paul 9722 Alexander Patience. 9723 9724 * STMicro STM32 Drivers: 9725 9726 - Added OTG support for STM32F44x. From David Sidrane. 9727 9728 * STMicro STM32 Boards: 9729 9730 - Added support for the STMicro Nucleo F303ERE board from Paul 9731 Alexander Patience. 9732 9733 * C Library/Header Files: 9734 9735 - stdlib: Add support for div() to the C library. From OrbitalFox. 9736 Also added ldiv() and lldiv() which are equivalent to div() with 9737 long and long long types, respectively, instead of int. 9738 - Added an implementation of the standard shutdown function. 9739 9740 * Tools: 9741 9742 - tools/mksymtab: declare g_symtab array as const to occupy RO section 9743 (Flash). From Pavel Pisa. 9744 9745 * Build/Configuration System: 9746 9747 - Simplify configs/ Makefiles by combining common logic into a new 9748 Board.mk Makefile fragment. From Paul Alexander Patience. 9749 9750 * Applications: apps/system: 9751 9752 - apps/system/symtab: Optional canned symtab inclusion to the build. 9753 When option CONFIG_SYSTEM_SYMTAB is selected and symbol table file 9754 libc/symtab/canned_symtab.inc is prepared then application can use 9755 system provided complete symbol table. The option has substantial 9756 effect on system image size. Mainly code/text. If loading of 9757 applications at runtime is not planned do not select this. From 9758 Pavel Pisa. 9759 9760 * Applications: apps/canutils: 9761 9762 - apps/canutils/uavcan: Add support for libuavcan. From Paul Alexander Patience. 9763 9764 * Applications: apps/examples: 9765 9766 - apps/examples/can: Extend the CAN loopback test by adding more 9767 command line options. 9768 - apps/examples/usbserial: Can now be run as an NSH builtin-function. 9769 Now uses a configurable IO buffer size. 9770 - apps/examples/nettest: Add option to suppress network initialization. 9771 This is necessary if the nettest is run from NSH which has already 9772 initialized the network. 9773 - apps/examples/nettest: Extend test so that can be performed using 9774 the local loopback device. 9775 - apps/examples/netloop: Add a test of the local loopback device. 9776 - apps/examples/udpblaster: Add a test to stress the network by 9777 sending UDP packets at a very high rate. . 9778 - apps/examples/uavcan: libuavcan example from Paul Alexander Patience. 9779 9780Bugfixes. Only the most critical bugfixes are listed here (see the 9781ChangeLog for the complete list of bugfixes and for additional, more 9782detailed bugfix information): 9783 9784 * Core OS: 9785 9786 - wd_create(): Correct a counting error in the number of available 9787 watchdog timers. When the number of free timers is low, the counter 9788 could be incremented below zero. 9789 - mq_open(): When message queue is opened, inode_reserve() leaves the 9790 reference count at zero. mq_open() logic must assure that the 9791 reference count of the newly created inode is one. 9792 - work_queue(): Logic that sets the queued indication and the logic 9793 that does the actual queuing must be atomic. 9794 9795 * Binary Loader: 9796 9797 - Fix a memory leak in the built-in application logic: File was not 9798 being closed. From Bruno Herrera. 9799 9800 * File System/Block Drivers: 9801 9802 - poll(): If we fail to setup the poll for any file descriptor, for 9803 any reason, set the POLLERR bit. 9804 - rwbuffer: Fix some logic errors. From Dmitry Nikolaev via Juha 9805 Niskanen. 9806 - ROMFS: One allocation was not being freed if there was a subsequent 9807 failure to allocation I/O buffers resulting in a memory leak on 9808 certain error conditions. From Bruno Herrera. 9809 9810 * Networking/Network Drivers: 9811 9812 - Fix a bug in tun interface driver. From Max Neklyudov. 9813 - recvfrom(): Correct wait for new data when NET_UDP_READAHEAD is 9814 enabled. Fix size accounting when recvfrom_udpreadahead() sets 9815 state.rf_recvlen == -1. I have not checked if data are accumulated 9816 to the right position in the buffer however. From Pavel Pisa. 9817 - networking: Correct return value from psock_tcp_accept(). From 9818 SaeHie Park. 9819 - TCP: Fix a problem in when there are multiple network devices. 9820 Polls were being sent to all TCP sockets before. This is not good 9821 because it means that packets may sometimes be sent out on the wrong 9822 device. That is inefficient because it will cause retransmissions 9823 and bad performance. But, worse, when one of the devices is not 9824 Ethernet, it will have a different MSS and, as a result, incorrect 9825 data transfers can cause crashes. The fix is to lock into a single 9826 device once the MSS is locked locked down. 9827 - net/tcp: The logic that binds a specific network device to a 9828 connection was faulty for the case of multiple network devices. On 9829 bind(), the local address should be used to associate a device with 9830 the connection (if the local address is not INADDR_ANY); On connect(), 9831 the remote address should be used (in case the local address is 9832 INADDR_ANY). On accept(), it does not matter but the remote address 9833 is the one guaranteed to be available. 9834 - net/tcp: Fix unbuffered send compilation error when Ethernet is not 9835 enabled. From Alan Cavalho de Assis. 9836 9837 * ARMv7-M: 9838 9839 - All ARMV7-M IRQ setup: Always set the NVIC vector table address 9840 unconditionally. This is needed in cases where the code is running 9841 with a bootload and when the code is running from RAM. It is also 9842 needed by the logic of up_ramvec_initialize() which gets the vector 9843 base address from the NVIC. Suggested by Pavel Pisa. 9844 - Fix some H/W floating point logic: In the original implementation, 9845 !defined(CONFIG_ARMV7M_CMNVECTOR) was a sufficient test to determine 9846 if lazy floating point register saving was being used. But recents 9847 changes added common lazy register as well so now that test must be 9848 (!defined(CONFIG_ARMV7M_CMNVECTOR) || defined(CONFIG_ARMV7M_LAZYFPU)). 9849 - ARMv7-M, all "lazy" interrupt stack logic. Assembly instruction 9850 that fetches the saved value is incorrect; replace with more 9851 traditional push and pop. This is an important fix. Noted by 9852 Stefan Kolb. 9853 - All ARMV7-M: Force 8-byte stack alignment when calling from assembly 9854 to C to interrupt handling. 9855 - up_schedulesigaction(): Fix logic that determines if there is a 9856 pending signal action before scheduling the next signal action. 9857 Both the test and the scheduling action need to be atomic. This 9858 problem was fixed on the ARMv7-M but also ported to other 9859 architectures that had the same issue. 9860 9861 * NXP LPC43xx: 9862 9863 - LPC43xx: Fix NVIC_SYSH_PRIORITY_STEP define. From Ilya Averyanov. 9864 - LPC43xx: Fix missing #define in eeprom. From Ilya Averyanov. 9865 9866 * NXP LPC43xx Drivers: 9867 9868 - Fixed the SPI driver. From Ilya Averyanov. 9869 9870 * Atmel SAMA5 Drivers: 9871 9872 - LPC31 and SAMA5D EHCI: Fix qh_ioccheck to move bp to next QH. From 9873 Ilya Averyanov. 9874 - LPC31 and SAMA5D EHCI: Performance improvement: Do not disable the 9875 asynchronous queue when adding a new QH structure. From Ilya 9876 Averyanov. 9877 9878 * C Library/Header Files: 9879 9880 - gethostbyname(): correct returned address format when DNS is used. 9881 The hostent.h_addr_list should point to raw in_addr or in6_addr 9882 as defined in the standard. Original implementation used that for 9883 numeric addresses but for DNS lookup returned pointer to whole 9884 sockaddr_in or sockaddr_in6. From Pavel Pisa . 9885 - asin(): The function did not convert for some input values. asing() 9886 did not convert for values which do not belong to the domain of the 9887 function. But aside of that the function also did not converge for 9888 allowed values. I achieved a conversion of the function by 9889 reducing the DBL_EPSION and by checking if the input value is in 9890 the domain of the function. This is a fix for the problem but the 9891 function should always terminate after a given number of iterations. 9892 From Stefan Kolb. 9893 - Change all references from avsprintf to vasprintf. From Sebastien 9894 Lorquet. 9895 9896 * Applications: apps/nshlib: 9897 9898 - Fix error handling in 'cat' command. On a failure to allocate 9899 memory, a file was not being closed. From Bruno Herrera. 9900 - Fix error handling in 'mv' command. On a failure to expand the 9901 second path, the memory allocated for the expansion of the first 9902 path was not being freed. From Bruno Herrera. 9903 9904 * Applications: apps/system: 9905 9906 - apps/system/netdb: Failed to build if CONFIG_NET_HOSTFILE was not 9907 defined because gethostbyaddr() was not available. Noted by 9908 OrbitalFox. 9909 9910 * Applications: apps/netutils: 9911 9912 - Various Kconfig files in netutils: Fix some changes from from 9913 NETUTILS_DNSCLIENT to NETDB_DNSCLIENT. From Pavel Pisa. 9914 9915 * Applications: apps/modbus: 9916 9917 - Macros PR_BEGIN_EXTERN_C and PR_END_EXTERN_C were not defined in 9918 all contexts. Replace with explicit expansion in all cases. From Stefan Kolb. 9919 9920NuttX-7.13 Release Notes 9921------------------------ 9922 9923The 113th release of NuttX, Version 7.13, was made on December 5, 2015, 9924and is available for download from the Bitbucket.org website. Note 9925that release consists of two tarballs: nuttx-7.13.tar.gz and 9926apps-7.13.tar.gz. These are available from: 9927 9928 https://bitbucket.org/patacongo/nuttx/downloads 9929 https://bitbucket.org/nuttx/apps/downloads 9930 9931Both may be needed (see the top-level nuttx/README.txt file for build 9932information). 9933 9934Additional new features and extended functionality: 9935 9936 * Core OS: 9937 9938 - External RTC: Added OS support for external RTC chips. 9939 - boardctl(): Add a command to the boardctl() interface to obtain a 9940 board unique ID. 9941 9942 * File Systems: 9943 9944 - TMPFS: Add support for a new TMPFS, RAM file system. The TMPFS 9945 file system does not require any significant amount of memory 9946 itself. It will grow dynamically as files are added and shrink back 9947 when files are deleted. A very low overhead way to retain temporary 9948 files. 9949 - VFS: The VFS was extended to support standard file operations on 9950 block drivers (open, close, read, write, etc.). The open() interface 9951 accomplishes this by creating a temporary character driver to mediate 9952 the character oriented accesses to the block driver. 9953 - HOSTFS: Added a HOSTFS file system for use with the simulator. The 9954 HOSTFS file system mounts in the simulated NuttX context by provides 9955 proxied access to the file system on the host PC. This is useful for 9956 providing file system content and nonvolatile storage of files in the 9957 simulation environment. From Ken Pettit. 9958 - MTD/PROCFS: Add an interface to un-register an MTD procfs entry. 9959 From Ken Pettit. 9960 - filemtd: A new MTD conversion layer that will convert a regular file 9961 (or driver file) to an MTD device. This is useful for testing on the 9962 simulation using the HOSTFS. From Ken Pettit. 9963 - PROCFS: Extended to include networking entries in the procfs. Device 9964 status, device statistics, and network statistics are now available 9965 from the PROCFS. 9966 - PROCFS: The PROCFS file system can now be configured so that it 9967 supports runtime registration of PROCFS entries with 9968 CONFIG_FS_PROCFS_REGISTER=y. 9969 9970 * Graphics/Graphic Drivers: 9971 9972 - ST7565 Driver: Extend to include support for the ERC12864-3. From 9973 Pierre-noel Bouteville. 9974 9975 * Common Device Drivers: 9976 9977 - User buttons: Added a character driver to support application access 9978 to board buttons. Supports notification of button activity via 9979 signals. 9980 - User LEDs: Added a character driver to support application access 9981 to on-board LEDs. 9982 - Zero Cross: Added a Zero Cross device driver support. From Alan 9983 Carvalho de Assis. 9984 - MAX6675: Added support to Thermocouple-to-Digital converter MAX6675. 9985 From Alan Carvalho de Assis. 9986 - BCH: Block-to-character (BCH) driver should forward ioctl() calls 9987 to the contained block driver. 9988 - S25FL1xx: Added a S25FL1xx QuadSPI FLASH driver. 9989 - On-Chip FLASH: Added an upper half MTD device that can use the 9990 interfaces defined in included/nuttx/progmem.h to provide a 9991 standard MTD driver. 9992 - Serial: Implemented high level DMA infrastructure for serial 9993 devices. From Max Neklyudov. 9994 - AT24XX: Add support for multiple AT24xx EEPROM parts, each with 9995 unique I2C addresses, but otherwise identical. 9996 - External RTC: Added drivers for external I2C RTC chips: DS3102, 9997 DS1307, DS3231, DS3232, and NXP PCF85263. 9998 - W25: Added support for byte write mode to the W25 FLASH driver. From 9999 Ken Pettit. 10000 - dev/loop: Added a loop character device. losetup() and loteardown() 10001 should not be called directory from applications. Rather, these 10002 functions are now available as IOCTL commands to the loop driver. 10003 - dev/smart: Added support for a /dev/smart loop device. From Ken 10004 Pettit. 10005 10006 * Networking: 10007 10008 - Driver Statistics: Most network drivers do not support statistics. 10009 Those that do only supported them when DEBUG is enabled. Each 10010 driver collected an architecture specific set of statistics and 10011 there was no common mechanism to view those statistics. Thus, 10012 the driver feature was mostly useless. This release standardizes 10013 the driver statistics and puts the definition in the common network 10014 device structure defined in netdev.h where they can be accessed by 10015 network applications. All Ethernet drivers that collect statistics 10016 have been adapted to use these common statistics. 10017 10018 * Simulation Platform: 10019 10020 - W25 FLASH: Added support for W25 FLASH simulation. From Ken Pettit. 10021 - HOSTFS: Added support for the HOSTFS file system (see "File Systems", 10022 above). 10023 10024 * Atmel SAMV7: 10025 10026 - SAME70: Added support for the SAME70 family of chips. 10027 - Tickless: SAMV7 now supports the tickless mode of operation. 10028 10029 * Atmel SAMV7 Drivers: 10030 10031 - MPU: Added MPU and protected build support. 10032 - QSPI: Added a QuadSPI FLASH driver. This driver operates in the 10033 memory-mapped, Serial Memory Mode (SMM). 10034 - FLASH: Added support to write on-chip FLASH. 10035 - Timer/Counter: TC driver ported to SAMV7 from the SAMA5. Free-running 10036 and one-short timer logic also ported. 10037 - PCK: Brought programmable clock (PCK) logic from SAMA5 into SAMV7. 10038 - Timer/Counter: Support PCK6 as an optional source for the timer/ 10039 counter clock. 10040 10041 * Atmel SAMV7 Boards: 10042 10043 - SAME70-Xplained: Add NSH and networking configurations for the 10044 SAME70 Xplained board. Includes verified support for serial console, 10045 LEDs, buttons, SDRAM, HSMCI SD card, and networking. 10046 - SAMV7-XULT and SAME70-Xplained: If Tickless mode is selected then 10047 enable PCK6 as a timer/counter clock source 10048 10049 * STMicro STM32: 10050 10051 - CCM PROCFS: Is no longer a part of the 'base' procfs entries and can 10052 now only be supported via run time registration with 10053 CONFIG_FS_PROCFS_REGISTER=y. 10054 10055 * STMicro STM32 Drivers: 10056 10057 - Timers: Add a compatible lower-half timer driver for use with the 10058 common timer upper-half driver. From Wail Khemir. 10059 10060 * STMicro STM32 Boards: 10061 10062 - STM32F4-Discovery: Add low level support for the Zero Cross driver 10063 for the STM32F4-Discovery. From Alan Carvalho de Assis. 10064 - STM32F4-Discovery: Add board config to support for the MAX6675. From 10065 Alan Carvalho de Assis. 10066 10067 * C Library/Header Files: 10068 10069 - bsearch(): Added the bsearch() function from NetBSD. 10070 - freopen(): Added support for freopen(). 10071 - strftime(): Added day-of-week support (when available). 10072 10073 * Tools: 10074 10075 - nxstyle: Add crappy style checking tool nxstyle.c. See thee tools/ 10076 README file for more info. 10077 10078 * Applications: NSH 10079 10080 - mksmartfs command: Add configuration option to supported multiple 10081 rootdirectories. From Ken Pettit. 10082 - Add support for 'basename' and 'dirname' commands. 10083 - set command: Like bash, NSH set command now strips off any leading 10084 or trailing whitespace. 10085 - mount command: The mount commands now accepts mount options 10086 (currently needed only for the hostfs file system). From Ken 10087 Pettit. 10088 - losetup command: NSH no longer calls losetup() and loteardown 10089 directly. Now it opens /dev/loop and accomplishes these things 10090 using ioctl() calls. 10091 - ifconfig command: If CONFIG_NETDEV_STATISTICS=y, then print the 10092 network driver statistics in the ifconfig. 10093 - ifconfig, ifup, and ifdown: These commands now uses /proc/net/<dev> 10094 to view network device configuration and status and /proc/net/stat 10095 to show network statistics. A consequence of this is that you 10096 cannot view this network information if the procfs is not enabled 10097 and mounted at /proc. 10098 - losmart command: Added a new NSH losmart command. losmart setups 10099 up a loop device for the smart MTD driver similar to losetup but 10100 with different syntax. From Ken Pettit. 10101 - ps command: The 'ps' command now uses /proc/<pid>/ to obtain task 10102 status information. A consequence of this is that you cannot use 10103 the 'ps' command if the procfs is not enabled and mounted at /proc. 10104 10105 * Applications: apps/system: 10106 10107 - apps/system/hexed: Port the hexed command line hexadeciamal editor 10108 to NuttX. See http://apps.venomdev.net/hexed/. 10109 10110 * Applications: apps/fsutils: 10111 10112 - apps/fsutils/smartfs: Move into apps/fsutils from kernel, now uses 10113 only open and ioctl. From Ken Pettit. 10114 10115 * Applications: apps/examples: 10116 10117 - apps/examples/fstest: Add a generic file system test. This is 10118 essentially the same as examples/smart, but has all of the SmartFS 10119 specific logic ripped out. This was created for testing the new 10120 TMPFS. 10121 - apps/examples/zerocross: Add a Zero Cross application example. From 10122 Alan Carvalho de Assis. 10123 - apps/examples/media: Add a simple test for access of media via a 10124 block driver or MTD driver. 10125 10126Bugfixes. Only the most critical bugfixes are listed here (see the 10127ChangeLog for the complete list of bugfixes and for additional, more 10128detailed bugfix information): 10129 10130 * Core OS: 10131 10132 - Fixed an error in clock_timespec_subtract(). Found by Lok. 10133 - pthreads: CRITICAL BUGFIX: Logic was wiping out the indication that 10134 of the type of a pthread. Hence, it could be confused as a task. 10135 Found because this was causing a crash when /proc/nnn/cmdline was 10136 printed. 10137 10138 * File System/Block Drivers: 10139 10140 - SMART MTD: Fix some Smart wear-leveling bugs. Fixed SmartFS wear 10141 level error that occurs when the logical sector size is too small to 10142 save all wear level status bytes in a single sector. Logical 10143 sectors 1 and 2 were simply not being allocated and then the 10144 read_sector and write_sector routines were failing. From Ken 10145 Pettit. 10146 10147 * Graphics/Graphic Drivers: 10148 10149 - ILI9432: Fixed errors in orientation. Portrait, RPortrait, and 10150 Landscript should work correly now. They were displayed mirrored. 10151 From Marco Krahl. 10152 10153 * Common Drivers: 10154 10155 - CAN: Fix a problem in the CAN upper-half driver that occurs only 10156 for CAN hardware that support a H/W FIFO of outgoing CAN messages. 10157 In this case, there can be a hang condition if both the H/W and 10158 S/W FIFOs are both full. In that case, there may be no event to 10159 awaken the upper half driver. Add a new (conditional) CAN upper 10160 half interface called can_txready() that can be used by the lower 10161 half driver to avoid this hang condition. 10162 - MS58xx: Fix some issues with initialization and with CRC 10163 calculation. From Karim Keddam. 10164 - W25: Fixed W25 FLASH driver page read/write logic. From Ken Pettit. 10165 10166 * Atmel SAMV7 Drivers: 10167 10168 - USART1 pin configuration: Reconfigure System I/O when using USART1. 10169 From Frank Benkert. 10170 - MCAN: Added a call to can_txready() to the MCAN driver. 10171 10172 * STMicro STM32 Drivers: 10173 10174 - stm32 F4: Fix some TIM12 pin mappings. From Max Kriegleder. 10175 10176 * STMicro STM32 Boards: 10177 10178 - STM32F429i-Disco: Calculated partition boundaries based on page 10179 block sizes but mtd_partition() is expecting calculations based on 10180 erase block size. From Alan Carvalho de Assis. 10181 10182 * C Library/Header Files: 10183 10184 - sys/types.h: When building on a 64-bit machine, the size of size_t 10185 should be 64-bits. In general, I believe that sizeof(size_t) should 10186 be the same as sizeof(uinptr_t). mmsize_t should always be 32-bits 10187 in any event. The last change to stddef has been backed out. With 10188 these changes, the simulator builds without errors or warnings an a 10189 64-bit machine. 10190 10191 * Applications: apps/nshlib: 10192 10193 - The I/O buffer, g_iobuffer, should not be a global buffer. That 10194 will not work in an environment where there are multiple NSH 10195 sessions. The I/O buffer must, instead, be a part part of the 10196 session-specific data defined in nsh_console.h. 10197 10198NuttX-7.14 Release Notes 10199------------------------ 10200 10201The 114th release of NuttX, Version 7.14, was made on January 28, 2016, 10202and is available for download from the Bitbucket.org website. Note 10203that release consists of two tarballs: nuttx-7.14.tar.gz and 10204apps-7.14.tar.gz. These are available from: 10205 10206 https://bitbucket.org/patacongo/nuttx/downloads 10207 https://bitbucket.org/nuttx/apps/downloads 10208 10209Both may be needed (see the top-level nuttx/README.txt file for build 10210information). 10211 10212Additional new features and extended functionality: 10213 10214 * Core OS: 10215 10216 - modules: Add support for kernel modules: insmod, rmmod, support 10217 functions. procfs support for user lsmod functioniality. 10218 - SIGEV_THREAD: Add support for the SIGEV_THREAD notification method 10219 in struct sigevent. This initial implementation will only work in 10220 the FLAT build since it utilizes the work queue for signal 10221 callbacks. See the top-level TODO file for additional details. 10222 - 64-Bit Timer: If the 64-bit timer is selected, then use it whenever 10223 clock_systimer() is called rather then chopping the 64-bit timer 10224 down to 32-bits. Add a new type, systime_t to represent the 32- or 10225 64-bit system timer. This eliminates clock_systimer32() and 10226 clock_systime64(); there is now only clock_systimer(). 10227 10228 * Common Device Drivers: 10229 10230 - Telnet Driver: Move the Telnet driver from apps/ to 10231 nuttx/drivers/net. It is a driver a belongs in the OS. Now works 10232 like the loop device: A new interface called telnet_initialize() 10233 registers a telnet session "factory" device at /dev/telnet. Via 10234 ioctl, the factory device can create instances of the telnet 10235 character devices at /dev/telnetN to support Telnet sessions. 10236 - PCA9635PW: Add a driver for the PCA9635PW I2C LED driver IC which 10237 can be used to control the intensity of up to 16 LEDs. From 10238 Alexander Entinger. 10239 - MCP9844: Driver for the MCP9844 I2C digital temperature sensor with 10240 a selectable resolution. From Alexander Entinger. 10241 - PN532: Add driver for the NXP PN532 NFC-chip. From Janne Rosberg 10242 and others at Offcode Ltd. 10243 - LSM9DS1: Add driver for the STMicro LSM9DS1 chip. The LSM9DS1 is a 10244 system-in-package featuring a 3D digital linear acceleration sensor, 10245 a 3D digital angular rate sensor, and a 3D digital magnetic sensor. 10246 From Paul Alexander Patience. 10247 - CAN Interface: Add more extensive error reporting capaibility to 10248 the CAN interface definitions. From Frank Benkert. 10249 - SPI Interface: Add an optional hwfeatures() method to the SPI 10250 interface. 10251 10252 * Simulation Platform: 10253 10254 - NSH configuration uses the custom start up scriptwith a read-only 10255 passwd file. Includes hooks for an MOTD message. 10256 10257 * ARMv7-R 10258 10259 - ARMv7-R: Add basic architecture support for the ARMv7-R processor 10260 family. 10261 10262 * Atmel AVR: 10263 10264 - Atmega2560: Add support for the Atmega2560. From Dimitry Kloper. 10265 - debug.h: Add an AVR-specific header file used when the AVR MEMX 10266 pointer is used. From Dimitri Kloper. 10267 10268 * Atmel AVR Boards: 10269 10270 - Arduino-Mega2560: Add support for the Arduino-Mega2560. From 10271 Dimitry Koper. 10272 10273 * Atmel SAMV7 Drivers: 10274 10275 - Port the TRNG driver from the SAMA5D3/4 to the SAMV7. 10276 - Port the WDT driver from the SAMA5D3/4 to the SAMV7. 10277 - Add an RSWDT driver. 10278 10279 * Atmel SAMV7 Boards: 10280 10281 - SAMV71-XULT: Add configuration for testing OS modules. 10282 10283 * Freescale Kinetis: 10284 10285 - MK60N512VLL100: Add support for the MK60N512VLL100 Kinetis part. 10286 From Andrew Webster. 10287 10288 * Freescale Kinetis Boards: 10289 10290 - ENET: Numerous updates to the Kinetis ENET driver. That driver is 10291 now functional. From Andrew Webster. 10292 10293 * NXP LPC43xx Boards: 10294 10295 - WaveShare LPC4337-WS: Support for the WaveShare LPC4337-WS board. 10296 From Lok Tep. 10297 10298 * STMicro STM32 Drivers: 10299 10300 - Timer Capture: Add timer input capture driver. From Pierre-Noel 10301 Bouteville. 10302 10303 * STMicro STM32 Boards: 10304 10305 - Olimex STM32 H407: Added a port to the Olimex STM32 H407 board. 10306 This board features the STMicro STM32F407ZGT6 (144 pins). 10307 Contributed by Neil Hancock. 10308 10309 * TI TMS550 Boards: 10310 10311 - TI LaunchXL-TMS57004: Add basic board support for TI LaunchXL- 10312 TMS57004. Still a work in progress. 10313 10314 * C Library/Header Files: 10315 10316 - sys/time.h: Add timeradd(), timersub(), timerclear(), timerisset(), 10317 and timercmp() as macros. These are non-POSIX interfaces, but 10318 included in most BSD deriviatives, including Linux. From Manuel St??. 10319 - AVR support: Introduce support for Atmel toolchain in-flash strings. 10320 Atmel toolchain AVR compiler provides a transparent in-flash object 10321 support using __flash and __memx symbols. The former indicates to 10322 compiler that this is a flash-based object. The later used with 10323 pointer indicates that the referenced object may reside either in 10324 flash or in RAM. The compiler automatically makes 32-bit pointer 10325 with flag indicating whether referenced object is in flash or RAM 10326 and generates code to access either in run-time. Thus, any function 10327 hat accepts __memx object can transparently work with RAM and flash 10328 objects. 10329 For platforms with a Harvard architecture and a very small RAM like 10330 AVR this allows to move all constant strings used in trace messages 10331 to flash in the instruction address space, releasing resources for 10332 other things. This change introduces IOBJ and IPTR type qualifiers. 10333 The 'I' indicates that the object may lie in instruction space on a 10334 Harvard architecture machine. For platforms that do not have __flash 10335 and __memx or similar symbols IOBJ and IPTR are empty, making the 10336 types equivalent to, for example, 'const char' and 'const char*'. 10337 For Atmel compiler these will become 'const __flash char' and 10338 'const __memx char*'. All printf() functions and syslog() functions 10339 are changed so that the qualifier is used with the format parameter. 10340 From Dimitry Kloper. 10341 - debug.h: Add configuration to support an architecture-specific 10342 debug.h header file. From Dimitri Kloper. 10343 - netdb: Add support for the use of a DNS resolver file like 10344 /etc/resolv.conf. 10345 - TEA: Add an implementation of the Tiny Encryption Algorithm. 10346 - math32.h: Add some utilities to support 64-bit arithmetic 10347 operations for platforms that do not support long long types. 10348 10349 * Tools: 10350 10351 - tools/cnvwindeps.c: Add a tool that will convert paths in 10352 dependencies generated by a Windows compiler so that they can be 10353 used with the Cygwin make. 10354 - tools/mkwindeps.sh: A script that coordinates use of cnvwindeps.exe. 10355 Dependencies now work on the Cygwin platform when using a Windows 10356 ative toolchain. 10357 10358 * Applications: NSH 10359 10360 - Module Commands: Add module commands: insmod, rmmod, and lsmod. 10361 - Time Command: Add a 'time' command that may be used to time the 10362 execution of other commands. 10363 - Password Commands: Add useradd, userdel, and passwd commands. 10364 - MOTD: Now supports a Message of the Day (MOTD) that will be 10365 presented after the NSH greeting. 10366 - Session Logins: All sessions may be protected with logins using the 10367 encrypted password in /etc/passwd. 10368 - Extended Logins. Added optional platform-specific function to 10369 perform password verification and optional delay after each failed 10370 login attempt. 10371 10372 * Applications: apps/fsutils: 10373 10374 - apps/fsutils/passwd: Utility library for accessing a password file 10375 like /etc/passwd. 10376 10377 * Applications: apps/netutils: 10378 10379 - apps/netutils/telnetd: Now creates Telnet sessions by opening a new 10380 factory device at /dev/telnet and then using ioctl calls to create 10381 the session character drivers at /dev/telnetN. 10382 - apps/netutils/netlib: Add netlib_get_dripv4addr() and 10383 netlib_get_ipv4netmask(). From Pelle Windestam. 10384 10385 * Applications: apps/examples: 10386 10387 - apps/examples/module: Add a test harness for verifying NuttX kernel 10388 modules. 10389 - apps/examples/pca9635: Add a simple test of PCA9635PW PWM LED driver. 10390 From Alan Carvalho de Assis. 10391 - apps/examples/ostest: Add a test of POSIX timers using SIGEV_THREAD. 10392 10393Bugfixes. Only the most critical bugfixes are listed here (see the 10394ChangeLog for the complete list of bugfixes and for additional, more 10395detailed bugfix information): 10396 10397 * Core OS: 10398 10399 - pthreads: CRITICAL BUGFIX: Logic was wiping out the indication that 10400 of the type of a pthread. Hence, it could be confused as a task. 10401 - waitpid: CRITICAL BUGFIX. Add a reference count to prevent waitpid 10402 from using stale memory released by the waited-for task group. 10403 - clock_systimespec(): Fix an error in a time conversion. 10404 10405 * File System/Block Drivers: 10406 10407 - poll(): Fix handling of sem_tickwait() return value sem_tickwait() 10408 does not return an -1+errno, it returns a negated errno value. 10409 Noted by Freddie Chopin. 10410 10411 * Common Drivers: 10412 10413 - TUN Driver: Fix a compile time error in the TUN driver. From 10414 Vladimir Komendantskiy. 10415 - USB Host HID Parser: Wrong size used in memcpy(). From Hang Xu. 10416 - PCA9555: Fixed a bug in the function pca9555_setbit which occurs if 10417 someone tries to set one of the pins 8-15. The problem is that 10418 after the check if the pin is greater than 7 the variable addr is 10419 incremented and used in the Call I2C_WRITEREAD. But later in the 10420 call to the I2C_WRITE buf[0] is used as address but this address is 10421 not incremented as it should be. Note address does mean the address 10422 to the register in the ioexpander and not the I2C address. From 10423 Stefan Kolb. 10424 10425 * Networking: 10426 10427 - TCP/IOB: Numerous fixes, mostly relate to TCP and IOB buffering 10428 and race conditions. These were necessary for for the NuttX 10429 networking later to be stable in some stress testing. From Andrew 10430 Webster. 10431 10432 * Atmel SAMV7 Drivers: 10433 10434 - USBHS Device: In USBHS device driver, fix check if zero length 10435 packet is needed. 10436 10437 * STMicro STM32 Drivers: 10438 10439 - OTG FS Host: Fix some backward arguments to stm32_putreg(). Note 10440 by Hang Xu. 10441 10442 * Tools: 10443 10444 - tools/mkdeps.c: Extended/fixed support for --winpath option. 10445 Dependencies now work under Cygwin with a native Windows toolchain. 10446 10447 * Build System: 10448 10449 - apps/platform/Makefile: Use a relative path to the board directory 10450 link rather than the absolute path. For Cygwin, the absolute would 10451 would need converted with cygpath. But just using the relative path 10452 is a simpler solution. 10453 10454NuttX-7.15 Release Notes 10455------------------------ 10456 10457The 115th release of NuttX, Version 7.15, was made on March 27, 2016, 10458and is available for download from the Bitbucket.org website. Note 10459that release consists of two tarballs: nuttx-7.15.tar.gz and 10460apps-7.15.tar.gz. These are available from: 10461 10462 https://bitbucket.org/patacongo/nuttx/downloads 10463 https://bitbucket.org/nuttx/apps/downloads 10464 10465Both may be needed (see the top-level nuttx/README.txt file for build 10466information). 10467 10468Additional new features and extended functionality: 10469 10470 * Core OS: 10471 10472 - Add a state variable that provides the current level of OS 10473 initialization. This is needed by some logic that may attempt to 10474 run early in the start-up sequence but cannot run if a sufficient 10475 level of initialization has not yet occurred. 10476 - Spinlocks: Add interface definitions for to support spinlocks as 10477 needed for multi-CPU configurations. 10478 - SMP support. Support for Symmetric Multi-Processing (SMP) added. 10479 This affects many internal data structures, spinlock extensions 10480 and renaming of interrupt enable/disable interfaces, new platform 10481 interfaces to support CPU initialization and inter-actions, and 10482 new application interfaces to manage CPU affinity. The changes 10483 are too extensive to summarize here; see the SMP Wiki page at 10484 https://cwiki.apache.org/confluence/display/NUTTX/SMP. The 10485 new platform interfaces are also described in the NuttX porting 10486 guide: https://nuttx.apache.org/docs/latest/quickstart/organization.html. 10487 Only partially verified; awaiting hardware for the complete 10488 verification. 10489 - TLS: Basic definitions needed to support thread local storage 10490 (TLS). TLS is not used anywhere yet (and may not be used in the 10491 near future either). 10492 - Performance Monitoring: Add a configuration option to buffer 10493 RTOS instrumentation data in an in-memory buffer. 10494 - boardctl(): Add boardctl() support that will permit applications 10495 to control USB devices. 10496 10497 * File Systems/Block Drivers: 10498 10499 - procfs: Add /proc/kmm entry that shows that state of the kernel 10500 heap. Only useful in PROTECTED and KERNEL build modes where there 10501 is a kernel heap. 10502 - procfs: Add support for showing CPU in the taste status if SMP is 10503 enabled. 10504 10505 * Networking: 10506 10507 - ARP: Add support for IOCTL commands to manage the ARP table. 10508 - IEEE 802.15.4 and 6LowPAN: There are some radio drivers and a 10509 directory structure is in place. However, most of this 10510 development is occurring on a fork and is not yet available in the 10511 NuttX repositories. Hopefully in NuttX-7.16. 10512 10513 * Common Device Drivers: 10514 10515 - ADS1242: Driver for the 24-Bit Differential Input ADC ADS1242 that 10516 communicates via SPI with a MCU. Reading the ADC conversion result 10517 as well as configuring the ADC, setting the input channel, etc. is 10518 implemented via ioctl calls. However, it does not yet implement 10519 the standard ADC interface. From Alexander Entinger. 10520 - U-Blox Modem: Add an upper half driver for the U-Blox Modem. From 10521 Vladimir Komendantskiy. 10522 - I2C: Add an I2C, "upper half", character drivers to support raw I2C 10523 data transfers for test applications. 10524 - RGB LED: Add a driver to manage a RGB LED via PWM. From Alan 10525 Carvalho de Assis. 10526 - Performance Monitoring: Add a character driver that will allow an 10527 application to read buffered scheduler instrumentation data. 10528 10529 * Simulation Platform: 10530 10531 - SMP: Add multi-CPU support to the simulation to support SMP 10532 investigation. There are issues with the simulation and it is less 10533 than perfect but sufficient for some very preliminary testing of 10534 the core SMP feature. 10535 10536 * ARMv7-A, ARMv7-R, and ARMv7-M: 10537 10538 - ARMv7-A, ARMv7-R, and ARMv7-M: Add test-and-set logic and 10539 definitions needed to supports spinlocks. 10540 - ARMv7-A: Added MPCOre Generic Interrupt Controller (GICv2) and 10541 Global Timer support 10542 - ARMv7-A: Now includes in MCU-specific hooks needed for SMP support. 10543 10544 * Atmel SAMV7 Drivers: 10545 10546 - HSMSI: HSMCI driver can now be configured to handle unaligned data 10547 buffers. 10548 10549 * NXP Freescale LPC11xx/17xx/43xx and LPC2378 Drivers: 10550 10551 - I2C: Backported the LPC43XX I2C driver, replacing the LPC11XX, 10552 LPC17XX, and LPC2378 I2C drivers. This gives us the I2C_TRANSFER 10553 method in all I2C drivers. 10554 10555 * NXP Freescale LPC17xx Boards: 10556 10557 - Support for the u-blox GSM and GPS module evaluation board with 10558 NXP LPCExpresso LPC1768. The GSM module is one of LISA-C200, 10559 LISA-U200 or SARA-G350. The GPS module is one of MAX-M7 or 10560 MAX-M8. From Vladimir Komendantskiy. 10561 10562 * NXP Freescale i.MX6: 10563 10564 - Basic support is in place for the i.MX6 Quad/Dual MCUs. 10565 Verification is, however, waiting for the receipt of hardware. 10566 10567 * NXP Freescale i.MX6 Boards: 10568 10569 - Sabre-6Quad: Basic support for the NXP/Freescale Sabre 6Quad 10570 board is in place but waiting for hardware for verification. 10571 10572 * STMicro STM32: 10573 10574 - STM32F46xx: Support for STM32F46xx from Paul Alexander Patience 10575 - STM32L4: Add support for the STM32L4 family. From Sebastien 10576 Lorquet. 10577 10578 * STMicro STM32 Boards: 10579 10580 - STM32F4 Discovery: Add PWM support for the onboard RGB LED. From 10581 Alan Carvalho de Assis. 10582 - Nucleo-L476: Add support for the Nucleo-L476 board. From Sebastien 10583 Lorquet. 10584 - STM32L476VG Discovery: Add support for the STM32L476VG Discovery 10585 board. From Dave. 10586 10587 * Tools: 10588 10589 - tools/refresh.sh now has a --silent option so that it can be used in 10590 batch modes without human input. 10591 10592 * Build System: 10593 10594 - Added a 'make olddefconfig' target that will refresh a .config file 10595 without interaction. 10596 10597 * Applications: NSH 10598 10599 - 'arp': Add an 'arp' command that will support access to the OS ARP 10600 table. 10601 - 'ps': The 'ps' command will show CPU if SMP is enabled. 10602 10603 * Applications: apps/netutils: 10604 10605 - apps/netutils/chat: Chat logic contributed by Vladimir 10606 Komendantskiy. 10607 - apps/netutils/netlib: Add utility functions to support accesses to 10608 the ARP table. 10609 10610 * Applications: apps/examples: 10611 10612 - apps/examples/chat: Chat example contributed by Vladimir 10613 Komendantskiy. 10614 - apps/system/ubloxmodem: Example to control the power 10615 state of the modem in nsh. From Vladimir Komendantskiy. 10616 - apps/examples/leds: An example to demonstrate use of LED driver. 10617 - apps/examples/smp: Add a test to verify SMP configurations. 10618 - apps/examples/rgbled: Example using the RGB LED driver to drive an 10619 RGB LED via PWM. From Alan Carvalho de Assis. 10620 - apps/examples/ostest: Add a test of TLS. 10621 - apps/examples/sched_note: Add a simple example to exercise the 10622 scheduler instrumentation logic. 10623 10624Bugfixes. Only the most critical bugfixes are listed here (see the 10625ChangeLog for the complete list of bugfixes and for additional, more 10626detailed bugfix information): 10627 10628 * Core OS: 10629 10630 - Signals: Move the list of signal actions from the TCB to the group 10631 structure. Signal handlers are not per thread but, rather, per task 10632 group. I know, I preferred it the other way too, but this is more 10633 compliant with POSIX. 10634 - Semaphores: Add an internal, non-standard interface to reset a 10635 semaphore count. This is sometimes needed by drivers in order to 10636 recover from error conditions. Were previously using sem_init() 10637 which is both inappropriate and incorrect if the semaphore count is 10638 negative. 10639 - Low-Priority Work Queue: Fix logic to find an IDLE worker thread; 10640 the test for busy was backward. From Linfei Chen. 10641 10642 * File System/Block Drivers: 10643 10644 - FAT: Add an option to force all transfers to be performed 10645 indirectly using the FAT file system's internal sector buffers. 10646 This is a fix for the case where the user provided buffers are not 10647 properly aligned for DMA (as with THTTPD). 10648 - MTD: Increase block size in mtd_geometry_s to 32-bits. 10649 10650 * Common Drivers: 10651 10652 - I2C: Restructured the I2C interface as necessary to eliminate some 10653 thread-safety issues inherent in the legacy I2C interface design. 10654 This effects the interface definition, all I2C clients, and all low- 10655 level I2C drivers. I have used caution, but I still expect a change 10656 of this magnitude to introduce some errors. Any bug reports of bug 10657 fixes will be much appreciated. 10658 - I2C_RESET: Eliminate up_i2creset(). It should not be a global 10659 function; Now it is an I2C interface method. 10660 - PCA555: Add logic to make the PCA555 driver thread safe. 10661 - syslog: If syslog timestamping is enabled, don't try to get the time 10662 if the timer hardware has not yet been initialized. 10663 - AT24xx driver: Correct missing address calculation logic. From Frank 10664 Benkert. 10665 10666 * Networking: 10667 10668 - Networking drivers that support CONFIG_NET_NOINTS: Fix a race 10669 condition that can cause the TX poll timer to stop running. From 10670 Manuel Stuhn. 10671 - Timer Poll: Fix some logic when there are multiple network 10672 interfaces. In this case, TCP timeout events can really only being 10673 processed when the poll from the correct device is received. 10674 10675 * Atmel SAMV7 Drivers: 10676 10677 - SAMV7 USB HS device: The USB driver has had some issue that would 10678 occasionally cause loss of packets. Back last December, a fix was 10679 put in for this but the fix apparently worsens the problem; now 10680 causing hangs. The basic problem is that the number of busy banks 10681 (NBUSYBKS) status is not real time but is delayed. This was fixed; 10682 now when the DMA completes and NBUSYBKS > 0, the NBUSYBK is 10683 interrupt is enabled and the operations are deferred until NBUSYBKS 10684 is truly zero. 10685 10686 * Tools: 10687 10688 - tools/testbuild.sh: .config files were not being updated because 10689 (a) kconfig-conf was being called in the wrong directory and (b) 10690 apps/Kconfig had not yet been created. Now uses 'make 10691 olddefconfig'. 10692 10693 * Applications: apps/system: 10694 10695 - apps/system/i2c: The I2C tool now obeys it OS interfacing: it now 10696 uses an I2C character driver to access the I2C bus. 10697 - apps/system/cdcacm, usbmsc, and composite: Use new boardctl() 10698 instead of calling directly in the OS when possible. 10699 10700 * Applications: apps/netutils: 10701 10702 - apps/netutils/dhcpd: DHCPD no longer calls directly into the OS but 10703 uses the new network IOCTL commands to modify the ARP table. 10704 10705 * Applications: apps/modbus: 10706 10707 - apps/modbus/nuttx/portserial.c: Was not returning an error on 10708 failure to open the device driver. From Olololshka kokoko. 10709 10710 * Applications: apps/examples: 10711 10712 - apps/examples/usbserial, composite, usbterm: Use new boardctl() 10713 instead of calling directly in the OS when possible. There are 10714 still a few bad OS calls for USB device interfaces that do not yet 10715 have boardctl() commands. 10716 10717 * Applications: apps/platform: 10718 10719 - Moved C++ initialization logic out of the RTOS and into the 10720 application space, specifically to apps/platform/board, where it 10721 belongs. 10722 10723NuttX-7.16 Release Notes 10724------------------------ 10725 10726The 116th release of NuttX, Version 7.16, was made on June 1, 2016, 10727and is available for download from the Bitbucket.org website. Note 10728that release consists of two tarballs: nuttx-7.16.tar.gz and 10729apps-7.16.tar.gz. These are available from: 10730 10731 https://bitbucket.org/nuttx/nuttx/downloads 10732 https://bitbucket.org/nuttx/apps/downloads 10733 10734Both may be needed (see the top-level nuttx/README.txt file for build 10735information). 10736 10737Additional new features and extended functionality: 10738 10739 * Core OS: 10740 10741 - Power Management: Add activity domain to all PM interfaces and 10742 driver callbacks. If CONFIG_PM_NDOMAINS == 1, then the legacy 10743 behavior is preserved. If CONFIG_PM_NDOMAINS > 1, then multiple 10744 PM domains are supported. This will allow separate control for 10745 certain power management groups. For example, a network can be 10746 shut down without affect an ongoing UI (and vice versa). 10747 - board_app_initialize(): board_app_initialize() now accepts an 10748 argument that may be used to support initialization in different 10749 configurations. 10750 10751 * File System and Block and MTD Drivers: 10752 10753 - N25Qxxx: Add MTD support for Micron N25Qxxx family of QSPI flash. 10754 From Dave (ziggurat29). 10755 - SST26F: Add an MTD driver for SST26F spi/qspi flash devices (SPI 10756 mode only). From Sebastien Lorquet. 10757 - File Descriptor Detach: Add logic to detach a file structure from a 10758 file descriptor. This is for use only within the OS. It permits an 10759 open file or driver to be used across multiple threads. 10760 10761 * Networking and Network Drivers: 10762 10763 - listen()/accept(): Separate out psock_listen() and psock_accepti() 10764 for internal, thread independent OS usage (i.e., without a socket 10765 descriptor). 10766 - VNC Server: Add support for a VNC server. This logic is code 10767 complete and functional, but not well tested. 10768 10769 * Graphics and Graphic Drivers: 10770 10771 - Framebuffer driver: Add a display number to each interface in order 10772 to support multiple display devices. 10773 - VNC Server: Add support for a VNC server. This logic is code 10774 complete and functional, but not well tested. 10775 - LCD Backpack: Add support for PCF8574 LCD Backpack driver. This 10776 driver supports an interface board that is based on the PCF8574 I/O 10777 expander and supports the HD44780-based (or compatible) LCD modules. 10778 There are a myriad of different vendors of such, but they are 10779 principally the same, save wiring and minor features like jumpers 10780 for I2C addresses. This driver supports known and unknown variants. 10781 From Dave (ziggurat29). 10782 10783 * Common Device Drivers: 10784 10785 - RTC: Simplify the RTC interface. The old interface was way too 10786 complex and was not fully implemented anywhere. 10787 - BH1750FVI: Add a character driver for Rohm Ambient Light Sensor 10788 BH1750FVI. From Alan Carvalho de Assis. 10789 - CAN: Improve CAN error reporting. From Frank Benkert. 10790 - aes.h: Modifications to the crypto API needed for LPC43xx. From 10791 Alexander Vasiljev. 10792 - ADC: Interface no longer uses global adc_receive() call. Added a 10793 new bind() method to the ADC interface. Now the ADC upper half 10794 driver will register its receipt-of-data callback. This change 10795 allows the ADC lower half driver to be used with a differ ADC upper 10796 half. 10797 10798 * Simulation Platform: 10799 10800 - Linux Host Networking: Enhance networking support for the 10801 simulation under Linux. Includes updated support for Linux TUN/TAP, 10802 and the addition of support for Linux bridge devices. From Steve. 10803 10804 * ARMv7-A, ARMv7-R, and ARMv7-M: 10805 10806 - ARMv7-M: Convert more assembly language files for use with the IAR 10807 toolchain. From Kha Vo. 10808 - ARMv7-A: Complete re-design of SMP-related logic to initialize each 10809 CPUn, n > 0, when CONFIG_SMP=y. 10810 10811 * Atmel SAMV7: 10812 10813 - Add a JTAG config and ERASE config to Kconfig to set the 10814 CCFG_SYSIO SYSIO Pins. From David Sidrane. 10815 - System Reset: Add the up_systemreset interface to the samv7 arch. The 10816 approach is slightly different in that: 1) It enables ARCH_HAVE_RESET 10817 and allows the user to set if, and for how long, to drive External 10818 nRST signal. It also does not contain a default board_reset, as that 10819 really should be done in the config's src if CONFIG_BOARDCTL_RESET 10820 is defined. From David Sidrane. 10821 10822 * Atmel SAMV7 Boards: 10823 10824 - SAMV71-XULT: Add configuration(s) that were be used to verify VNC 10825 graphics output as well as mouse and keyboard input. 10826 10827 * NXP Freescale i.MX6 Boards: 10828 10829 - Sabre-6Quad: The basic i.MX6 port is complete. This is a minimal 10830 port at present and probably still has some as-of-yet-undiscovered 10831 issues. 10832 - Sabre-6Quad: Basic SMP NSH configuration is now working. But this 10833 is probably only because the SMP test case does not stress the 10834 logic. There are know outstanding SMP issues as noted in the 10835 Sabre-6Quad README.txt file. 10836 10837 * NXP Freescale LPC43xx: 10838 10839 - LPC4337jet100: Add definitions for the LPC4337jet100 chip. From 10840 Alexander Vasiljev. 10841 10842 * NXP Freescale LPC43xx Drivers: 10843 10844 - AES: Add AES support. From Alexander Vasiljev. 10845 10846 * STMicro STM32: 10847 10848 - STM32 L4: Add configuration options to allow SRAM2 to be used for 10849 heap, or not at all, and to zero-initialize it on OS start, or not 10850 at all. From Dave dev@ziggurat29.com. 10851 - STM32 L4: Add support for HSE and MSI clocks, and auto trim of MSI 10852 to LSE (needed for USB). From Dave (ziggurat29) 10853 - STM32 L4: Add support for unique id function to arch; modified board 10854 to support unique id boardctl. From Dave (ziggurat29) 10855 10856 * STMicro STM32 Drivers: 10857 10858 - STM32 F4 RTC: Add a custom RTC driver with support for alarms. From 10859 Neil Hancock. 10860 - STM32 L4 QSPI: Add a QSPI driver with DMA support and (optional 10861 memory mapped mode support. From Dave ziggurat29). 10862 - STM32, STM32 L4, and STM32 F7 Serial: Add support for compliant 10863 SD-style breaks. From David Sidrane. 10864 - STM32 L4 CAN: Add CAN support for STM32L4. From Sebastien Lorquet. 10865 - STM32 1-Wire: Add support for a custom 1-wire driver. The serial 10866 driver already supports a 1-wire interface, but this driver uses the 10867 same serial logic to implement a lower half driver much like the 10868 I2C lower half driver. From Aleksandr Vyhovanec. 10869 - STM32 L4 SPI: Add support for SPI 4 and 5 on stm32f411 chips. From 10870 Konstantin Berezenko. 10871 - STM32 ADC: Allow omitting use of channels in a lower part of PWM. 10872 From Pierre-noel Bouteville. 10873 - STM32 L4 I2C: Get I2C working for STM32L4. From Dave (ziggurat29). 10874 10875 * STMicro STM32 Boards: 10876 10877 - STM3220G-EVAL: Add support for both the IAR and uVision GCC IDEs. 10878 From Kha Vo. 10879 - STM32F429I Discovery: Add support for the uVision GCC IDE. From 10880 Kha Vo. 10881 - STM32F4 Discovery: Integrate BH1750FVI driver in the STM32F4 Discovery 10882 board. From Alan Carvalho de Assis. 10883 - STM32L476VG Discovery: Add support for QSPI based N25Qxxx flash. 10884 From Dave (ziggurat29) 10885 - STM32L476VG Discovery: Add board ioctls for allowing user application 10886 to cause QSPI memory mapped mode to be engaged and disengaged. Also 10887 partitioned QSPI flash for file system and other (eventually xip). 10888 From Dave (ziggurat29) 10889 - Nucleo-144: Basic port for the Nucleo-144 board with the STM32F746ZG 10890 MCU. From Kconstantin Berezenko. 10891 - STM32F103 Minimum: Add support for this minimual STM32F103CBT6 "blue" 10892 board. From Alan Carvalho de Assis. 10893 - STM32F411E Discovery: Add basic configuration for stm32f411e-disco 10894 board with STM32F411VE chip. From Konstantin Berezenko. 10895 10896 * Build/Configuration System: 10897 10898 - Moved NuttX repository to https://bitbucket.org/nuttx/nuttx. 10899 Eliminated use of sub-modules. 10900 - Add support for the IAR toolchain for the limited case of the ARMv7-M 10901 architecture and the STM32 chip. From Aleksandr Vyhovanec. 10902 - make export: Pass top-level make to the script to allow -j greater 10903 than 1. From David Sidrane. 10904 - fs/Kconfig: Allow CONFIG_FS_WRITABLE to be manually selectable. This 10905 is needed when there are no writable file systems, but write support 10906 is still needed in BCH or FTL. 10907 - arch/*/Makefile: Add definitions that can be overrided to use GCC 10908 instead of LD in the final link. From Paul Alexander Patience . 10909 10910 * Applications: apps/netutils: 10911 10912 - apps/netutils/esp8266: ESP8266 driver application. From Pierre-noel 10913 Bouteville. 10914 10915 * Applications: apps/examples: 10916 10917 - apps/examples/alarm: Add a simple test of the ALARM iotcl calls of 10918 the RTC driver. 10919 - apps/examples/nximage: Add a configuration option to select 10920 greyscale. 10921 10922 * Platforms: apps/platform: 10923 10924 - apps/platform/nucleo-144: Add platform files for NUCLEO-144 10925 (NUCLEO-F746ZG). From Mark Olsson. 10926 - apps/examples/media: You can now override the default device driver 10927 path by providing an alternal path on the command line. From 10928 Sébastien Lorquet. 10929 10930Works-In-Progress: 10931 10932 * IEEE802.14.5/6LowPAN. Hooks and framework for this effort were 10933 introduced in NuttX-7.15. Work has continued on this effort on 10934 forks from the main repositories, albeit with many interruptions. 10935 The completion of this wireless feature will postponed until at 10936 least NuttX-7.17. 10937 10938 * i.MX6 SMP. Partially functional, but there is more that still 10939 needs to be done. 10940 10941Bugfixes. Only the most critical bugfixes are listed here (see the 10942ChangeLog for the complete list of bugfixes and for additional, more 10943detailed bugfix information): 10944 10945 * Core OS: 10946 10947 - Various places: Search for places where a stray semicolon following 10948 an if condition cause the if body to be executed unconditionally. 10949 Fixes in all SAM DMA logic, unionfs, OS signalling logic, and others. 10950 - enter/leave_critical_section() may attempt to access task lists 10951 before they have been initialized in the SMP configuration. 10952 10953 * File System/Block Drivers: 10954 10955 - SMART MTD: Return code of smart_scan not checked, can cause success 10956 result in failure case, leading to 'dev' pointer being invalid. From 10957 Dave (ziggurat29) 10958 - mount: Fix a backward debug assertion. Noted by David Sidrane. 10959 10960 * Common Drivers: 10961 10962 - NRF24L01: Fix backward calculation of relative frequency. Noted by 10963 Henry Zhang. 10964 - PCA9555 I/O expander: Fix an error in the PCA9555 driver: Under 10965 certain error conditions, interrupts were not being re-enabled. 10966 Sebastien Lorquet. 10967 - ADS1255: Must not do SPI access from interrupt handler. Use the 10968 worker thread instead. Must also lock the SPI bus before using it. 10969 - Several SPI-based drivers modified. All drivers that use SPI must 10970 call SPI_LOCK and SPI_UNLOCK. This is not optional. 10971 - MS583730: Fix a bug in crc computation for ms583730. Implement 10972 POSIX read. 10973 10974 * Atmel SAMV7: 10975 10976 - Fix typo in MATRIX register definitions. From Stefan Kolb. 10977 - SAMV7 Tickless Mode: This is a fix to a problem in the handling of 10978 the oneshot timer. Due to a wrong assumption concerning the behavior 10979 directly after the start of the timer/counter the function 10980 sam_oneshot_cancel calculates the wrong remaining time. The code 10981 assumes that the counter register is zero directly after the start 10982 of the timer, but this is not true. To start the time/counter a 10983 software trigger is invoked, this trigger starts the timer/count and 10984 sets the counter register to zero, but the reset of the counter 10985 register is not performed instantly. According to the datasheet: 10986 "The counter can be reset by a trigger. In this case, the counter 10987 value passes to zero on the next valid edge of the selected clock." 10988 Thus the counter is set to zero between 0 and USEC_PER_TICK 10989 microseconds after the clock was started. 10990 In my fix I use the freerun count value to determine if at least one 10991 tick passed since the start of the timer and thus if the value of 10992 the oneshot counter is correct. I also tried to use the function 10993 up_timer_gettime to achieve this but, at least if compiled with 10994 no optimization the problem vanishes without using the value of the 10995 function, the function call takes too long. 10996 Another problem treated in the fix is that if the oneshot timer/counter 10997 is canceled, we only know the remaining time with a precision of 10998 USEC_PER_TICK microseconds. This means the calculated remaining time 10999 is between 0 and USEC_PER_TICK microseconds too long. To fix this I 11000 subtract one tick if the calculated remaining time is greater than 11001 one tick and otherwise set the remaining time to zero. By doing so 11002 the measured times are much more precise as without it. From Stefan 11003 Kolb. 11004 11005 * Atmel SAMA5: 11006 11007 - SAMA5: Stefan Kolb's change to the SAMV7 Oneshot Timer should also 11008 be applied to the SAMA5 oneshot time since the drivers are identical. 11009 11010 * Atmel SAM3/4: 11011 11012 - SAM3/4: Stefan Kolb's change to the SAMV7 Oneshot Timer should also 11013 be applied to the SAM3/4 oneshot time since the drivers are identical. 11014 11015 * Atmel SAMV7 Drivers: 11016 11017 - SAMV7 TWIHS (as well as SAM3/4 and SAMA5: Ensure that the TWIHS 11018 (i2c) hw gets its clock set when the sequence of 11019 sam_i2cbus_initialize(), sam_i2cbus_uninitialize(), then 11020 sam_i2cbus_initialize() or twi_reset() is called. I found this a 11021 while back in the stm32 family, so there may be more arch-es with 11022 this sort of bug. I suppose any driver that has the notion of "do 11023 not set the freq if it is already set" could be suspect. From David 11024 Sidrane. 11025 - USBHS Device: Remove disabling of whole USB on suspend of USBHS. 11026 This fix removes the disabling of the whole USB peripheral on 11027 suspend interrupt. Its enough to freeze the clock instead. When 11028 disabling the whole peripheral, the next wakeup-interrupt comes up 11029 with an disabled clocking. The unfreeze clock has no effect, because 11030 the master clock is disabled. This makes all registers, including 11031 the IDR unwriteable and the IRQ falls in an endless loop blocking 11032 the whole system. Furthermore the disabling of the peripheral clock 11033 prevents hotplugging or reconnecting the USB. From Frank Benkert. 11034 - MCAN: Fix missing unlock of device in MCAN mcan_txempty(). From 11035 Frank Benkert. 11036 11037 * STMicro STM32: 11038 11039 - STM32 L4 Clocking: Problem with resetting backup domain clears 11040 clocking options set up before in *rcc.c use INITS flag to avoid 11041 magic reg value to detect power up reset state of RTC correct a 11042 problem clearing interrupt flags (they weren't) which prevented an 11043 alarm from ever being used more than once per reset cycle. From 11044 Dave (ziggurat29) 11045 11046 * STMicro STM32 Drivers: 11047 11048 - STM32L4 SPI: That STM32Lr SPI driver is quite different. They now 11049 handle frames of arbitrary size between 4 and 16 bits. It was broken 11050 before a new bit has to be set (RX fifo threshold) to handle <= 8-bit 11051 transactions. If not set, the default is 16-bit packed >=8-bit 11052 frames and the RXNE bit is never set (it is set when 16-bits are 11053 received). weird things as always. This also add 8-bit access 11054 routines to the data register, because a 16-bit access to the data 11055 register when the frame size is below 9 bits is interpreted as a 11056 packed dual frame exchange. Sebastien Lorquet. 11057 - STM32: Correct some bad commits that broke the LTDC display example. 11058 From Marco Krahl. 11059 - STM32 F4 RTC: Fix logic in F4 RTCC driver that prevent ALARM 11060 interrupt. From Neil Hancock. 11061 - STM32 F1 ADC: Fix STM32 ValueLine ADC IRQ number selection. From 11062 David Sidrane. 11063 11064 * STMicro STM32 Boards: 11065 11066 - STM32F429I Discovery: Correct some bad commits that broke the LTDC 11067 display example. From Marco Krahl. 11068 11069 * TI Tiva: 11070 11071 - GPIO Interrupts: Fix a bug of GPIO falling-edge interrupt for tiva. 11072 From Young. 11073 11074 * C Library: 11075 11076 - math: Add a NAN test on 'x' in asin function of lib_asin.c. Suggested 11077 by Pierre-noel Bouteville. 11078 11079 * Build/Configuration System: 11080 11081 - Several Makefiles: Add .PHONY definitions to prevent 'clean up to date' 11082 message weirdness when 'make clean' is done with no .config or 11083 Make.defs file. 11084 11085NuttX-7.17 Release Notes 11086------------------------ 11087 11088The 117th release of NuttX, Version 7.17, was made on July 25, 2016, 11089and is available for download from the Bitbucket.org website. Note 11090that release consists of two tarballs: nuttx-7.17.tar.gz and 11091apps-7.17.tar.gz. These are available from: 11092 11093 https://bitbucket.org/nuttx/nuttx/downloads 11094 https://bitbucket.org/nuttx/apps/downloads 11095 11096Both may be needed (see the top-level nuttx/README.txt file for build 11097information). 11098 11099Additional new features and extended functionality: 11100 11101 * File System and Block and MTD Drivers: 11102 11103 - drivers/mtd: Add a driver of IS25xP SPI flash devices. Based on 11104 sst25xx driver. From Marten Svanfeldt. 11105 11106 * Networking and Network Drivers: 11107 11108 - Break out internal interface psock_ioctl(). 11109 11110 * Common Device Drivers: 11111 11112 - PTYs: Added support for pseduo-terminals: Device drivers that can be 11113 used for communications between tasks (usually with re-directed I/O). 11114 Based on existing pipe logic. 11115 - Button upper half driver: Added support for poll(). 11116 - CAN: Add support for poll. From Paul Alexander Patience. 11117 - GPIO: Add support for a simple GPIO driver. It supports only pre- 11118 configured input, output, and interrupting pins with basic input and 11119 output operations. Interrupt events can lead to notification via a 11120 signal. 11121 - I/O Expander: Shadow-Mode: The output- and configuration registers of 11122 the IO-Expander are held in the microcontrollers memory and only 11123 written to the IO-Expander. This reduces bus traffic and is more 11124 error-proof than the normal read-modify-write operation. Retry Mode: 11125 If enabled and an error occurs while writing to the IO-Expander the 11126 current transmission is automatically repeated once. From Michael 11127 Spahlinger. 11128 - Pipes/FIFOs: Add support to allocating different sizes for pipe and 11129 fifo buffers. Adds mkfifo2() and pipe2() which are just like mkfifo() 11130 and pipe(), but allow control of the size of the underlying, in-memory 11131 circular buffer. Move pipe() and mkpipe() to the C library, they are 11132 no longer core OS interfaces. Capability currently used only by PTY 11133 logic to support, configurable, smaller buffers for PTYs. 11134 11135 * SYSLOG/Debug Output: 11136 11137 - SYSLOG: Consolidated all SYSLOG logic in drivers/syslog. Added an 11138 abstraction layer that supports: (1) redirection of SYSLOG outpout. 11139 This is usually so that you can boot with one SYSLOG output but 11140 transition to another SYSLOG output when the OS has initialialized, 11141 (2) adds common serialization of interrupt output as a configuration 11142 option. Without this configuration setting, interrupt level output 11143 will be asynchronous. And (3) vsyslog is now a system call and is 11144 usable with other-than-FLAT builds. 11145 - SYSLOG: syslog() will now automatically redirect output to 11146 lowsyslog() if called from an interrupt handler. 11147 - Extended SYSLOG logic so that we can send SYSLOG output to a file. 11148 - SYSLOG character device channel will now expand LF to CR-LF. 11149 Controllable with a configuration option. 11150 - Add a SYSLOG character device that can be used to re-direct output 11151 to the SYSLOG channel (Not be be confused the SYSLGO output to a 11152 character device). 11153 - Debug features are now enabled separately from debug output. 11154 (1) CONFIG_DEBUG is gone. It is replaced with CONFIG_DEBUG_FEATURES. 11155 (2) The macros dbg() and vdbg() have renamed as _err() and _info(), 11156 respectively. This also applies to all of the variants as well, 11157 XXdbg() and XXvdbg(). (3) Add a new debug level, _warn() (and 11158 all variants XXwarn(), XXvwarn(), etc.). (4) Debug assertions can 11159 now be enabled separately from debug output. (5) You can now enable 11160 subsystem/device driver debug output at different output levels. For 11161 example, CONFIG_DEBUG_FS no longer enables file system debug output 11162 It enables general file system debug logic and enables selection of 11163 CONFIG_DEBUG_FS_ERROR, CONFIG_DEBUG_FS_WARN, and CONFIG_DEBUG_FS_INFO. 11164 - Since the SYSLOG layer now automatically handles low-level vs. 11165 high-level output, the low-level (ll) variants of the debug macros 11166 were eliminated. 11167 - Reviewed all uses of *err(). These macro family should indicate 11168 only error conditions. Convert *err() to either *info() or add 11169 ERROR:, depending on if an error is reported. 11170 - _alert(): New debug macro: _alert(). This is high priority, 11171 unconditional output and is used to simplify and standardize crash 11172 error reporting. 11173 - Many CONFIG_DEBUG_* options did not have matching macros defined in 11174 include/debug.h. Rather, there were various definitions scattered 11175 throughout the sourse tree. These were collected together and 11176 centralized with single macro definitions in include/debug.h 11177 11178 * Simulation Platform: 11179 11180 - Added the simulated QSPI (N25Q) flash to the simulation and extended 11181 flash simulation capabilities to run with MTD drivers based on config 11182 options (currently m25p, sst26 and w25). From Ken Pettit. 11183 11184 * Atmel SAMV7 Drivers: 11185 11186 - SPI: SPI-Freq. 40MHz; VARSELECT; hw-features This change adds the 11187 following improvements: 11188 11189 o Increase the allowed SPI-Frequency from 20 to 40 MHz. 11190 o Correct and rename the "VARSELECT" option This option was 11191 included in the code as "CONFIG_SPI_VARSELECT" but nowhere 11192 defined in a Kconfig file. The change renames it to 11193 "CONFIG_SAMV7_SPI_VARSELECT" and corrects the implementation 11194 according the datasheet of Atmel. In short, this option 11195 switches the processor from "fixed peripheral selection" 11196 (single device) to "variable peripheral selection" (multiple 11197 devices on the bus). 11198 o Add a new Function to the interface to control the timing and 11199 delays of the chip according the ChipSelect lines. This function 11200 can control the delay between the assertion of the ChipSelect and 11201 the first bit, between the last bit and the de-assertion of the 11202 ChipSelect and between two ChipSelects. This is needed to tune 11203 the transfer according the specification of the connected devices. 11204 o Add three "hw-features" for the SAMV7, which controls the behavior 11205 of the ChipSelect: 11206 - force CS inactive after transfer: this forces a (short) de- 11207 assertion of the CS after a transfer, even if more data is 11208 available in time 11209 - force CS active after transfer: this forces the CS to stay 11210 active after a transfer, even if the chip runs out of data. 11211 Btw.: this is a prerequisite to make the LASTXFER bit working 11212 at all. 11213 - escape LASTXFER: this suppresses the LASTXFER bit at the end 11214 of the next transfer. The "escape"-Flag is reset automatically. 11215 11216 From Frank Benkert 11217 - TWISHS: Driver improvements from Michael Spahlinger. 11218 - GPIO-Driver fixed for Open-Drain Pins: 11219 11220 o sam_gpioread: Now the actual line level from the pin is read 11221 back. This is extremely important for Open-Drain Pins, which 11222 can be used bidirectionally 11223 o Re-Implemented twi_reset-function and enhanced it so it can be 11224 called from inside the driver (see next point) 11225 o Glitch-Filter: Added a configuration option to enable the twi- 11226 built-in glitch filter 11227 o Added a "Single Master Mode": In EMC Testing the TWI-Bus got 11228 stuck because the TWI-Master detected a Multi-Master access (but 11229 there is no second master). With the option "Single Master" we 11230 detect these events and automatically trigger a twi_reset. We 11231 also do an automatic recovery if a slave got stuck (SDA stays 11232 low). 11233 11234 With the above changes I2C-Bus reliability in harsh environments (eg. 11235 EMC) is greatly improved. The small change in the GPIO-Driver was 11236 necessary because otherwise you cannot read back the correct line 11237 status of Open-Drain Outputs and this is needed by the twi_reset 11238 function. From Michael Spahlinger 11239 11240 * NXP Freescale LPC43xx Drivers: 11241 11242 - EMC: Extend LPC43xx EMC code to support SDRAM on a dynamic memory 11243 interface. From Vytautas Lukenskas. 11244 11245 * NXP Freescale Kinetis: 11246 11247 - Kinetis K64: Add basic support for the K64 family. I leveraged the 11248 changes from https://github.com/jmacintyre/nuttx-k64f and merged 11249 into the existing kinetis code with a lot of changes and additions 11250 (like pin multiplexing definitions). 11251 11252 * NXP Freescale Kinetis Drivers: 11253 11254 - Add a KinetisUSB device controller driver. Derived from the pic32mx 11255 usb driver, which uses the same usb controller. From kfazz. 11256 - Kinetis pwm support, based on the KL pwm driver. From kfazz. 11257 - Kinetis Ethernet: Add support for the KSZ8081 PHY. 11258 - Kinetis Ethernet: Modified Ethernet driver to try all PHY addresses 11259 and then only fail if the driver cannot find a usable PHY address. 11260 This means that you no longer have to specific the PHY address in 11261 advance. 11262 - Kinetis Ethernet: Add support for CONFIG_NET_NOINTS. The driver no 11263 longer runs the networking at interrupt level but can defer interrupt 11264 work to the high-priority work queue. 11265 11266 * NXP Freescale Kinetis Boards: 11267 11268 - Teensy-3.x: Add USB support and a usbnsh configuration. 11269 From kfazz (2016-06). 11270 - Freedom-K64F: Add support for the NXP Freedom-K64F board at 120MHz. 11271 This is primarily the work of Jordan Macintyre. I leveraged this 11272 code from https://github.com/jmacintyre/nuttx-k64f which was, itself, 11273 a leverage from the old K60 TWR configuration. This includes 11274 significant corrections (LEDs, buttons, README, etc) and extensions 11275 and updates to match more recent BSPs. 11276 - Freedom-K64F: Added a configuration that supports networking. 11277 11278 * STMicro STM32: 11279 11280 - STM32 F1-4: Added support for the STM32F105R. From Konstantin 11281 Berezenko. 11282 - STM32 F4: Added support for the STM32FF76xxx and STM32FF7xx 11283 families. From David Sidrane. 11284 - STM32 F1-4: Add support for Tickless mode (two timer 11285 implementation). From Max Neklyudov. 11286 - STM32 L4: Add support for tickless OS, and incidentally timers, 11287 PWM, oneshot, free-running.... From ziggurat29. 11288 11289 * STMicro STM32 Drivers: 11290 11291 - STM32 F1-4: Add the up_getc() function to STM32 in order to support 11292 the minnsh configuration. From Alan Carvalho de Assis. 11293 - STM32 F7: Add SPI driver. From David Sidrane. 11294 - STM32 F7: Add SPI, I2C, and ADC drivers. From Lok Tep. 11295 - STM32 L4: Add ioctls to set/get CAN bit timing in stm32l4. Add 11296 ioctl hooks to allow future management of can id filters. From 11297 Sebastien Lorquet. 11298 - STM32 L4: Add some CAN mode IOCTL calls. These will be useful for 11299 device autotest when the application boots. They are redundant 11300 with the CONFIG_CAN_LOOPBACK option, which can now just be 11301 interpreted as a default setting. From Sebastien Lorquet. 11302 - STM32 F1-4: Port STM32L4 CAN IOCTLs to STM32. From Sebastien Lorquet. 11303 - STM32 L4: Implementation of loopback IOCTLs. From Sebastien 11304 Lorquet. 11305 - STM32 F7: Added SDMMC1 support for stm32F7 74-75. From Lok Tep. 11306 - STM32 F7: Add USB support. From Lok Tep. 11307 - STM32 F7: Added PWR, RTC, and BBSRAM support for stm32f7. From David 11308 Sidrane. 11309 - STM32 F7: Added STMF7xxx RTC. From David Sidrane. 11310 - STM32 F7: Added STM32F7 DBGMCU. From David Sidrane. 11311 - STM32 L4: Port support for both RX FIFOs from STM32 CAN. From Paul 11312 Alexander Patience. 11313 11314 * STMicro STM32 Boards: 11315 11316 - Added a minnsh configuration for the STM32F103-Minimum board. From 11317 Alan Carvalho de Assis . 11318 - Added support for the Nucleo-F767ZI board. From David Sidrane. 11319 - Nucleo-144/Nucleo-F767ZI: Add test for STM32 F7 SPI. From David 11320 Sidrane. 11321 - Nucleo-144: Added SDMMC support to Nucleo-144. From David Sidrane. 11322 - Olimex STM32-E4077: Add support for Olimex STM32 E407 board. From 11323 Mateusz Szafoni. 11324 - Nucleo-144: Added USB OTG device to Nucleo-144. From David Sidrane. 11325 - Nucleo-144: Added bbsram test to Nucleo-144. From David Sidrane. 11326 - STM32F4 Discovery: Add CAN support for STM32F4 Discovery. From 11327 Matthias Renner. 11328 - STM32F4 Discovery: added a canard configuration files. From 11329 Matthias Renner. 11330 - STM32F4 Discovery: Add FPU support for ostest for the STM32F4 11331 Discovery platform. From David Alessio. 11332 - STM32L476 Discovery: Update stm32l476 disco to include init code for 11333 smartfs and nxffs for cases where those fs are included in build. 11334 From ziggurat29. 11335 11336 * C Library/Header Files: 11337 11338 - include/assert.h: Check if NDEBUG is defined. From Paul Alexander 11339 Patience. 11340 - assert.h: Define static assert for C++ usage. From Paul Alexander 11341 Patience. 11342 - Add crc64 support. From Paul Alexander Patience. 11343 - hex2bin: Move the portable library portion of apps/system/hex2bin 11344 the C library with the OS internals. It is used in certain internal 11345 boot-loader builds. 11346 - Add raise(). 11347 - libm: This change should significantly improve the performance of 11348 single precision floating point math library functions. The vast 11349 majority of changes have to do with preventing the compiler from 11350 needlessly promoting floats to doubles, performing the calculation 11351 with doubles, only to demote the result to float. These changes only 11352 affect the math lib functions that return float. From David Alessio. 11353 - printf(): If there are no streams, let printf() fall back to use 11354 syslog() for output. 11355 - Move pipe() and mkpipe() to nuttx/libc, they are no 11356 longer core OS interfaces. Capability currently used only by PTY logi 11357 to support, configurable, smaller buffers for PTYs. 11358 - Move driver-related files from include/nuttx to include/nuttx/drivers. 11359 Move driver related prototypes out of include/nuttx/fs/fs.h and into 11360 new include/drivers/drivers.h. 11361 - include /nuttx/lib: Move library-related files from include/nuttx to 11362 include/nuttx/lib. 11363 11364 * Build/Configuration System: 11365 11366 - Custom Board Configuration: Add logic to support custom board 11367 directories that include a Kconfig file. During the context phase 11368 of the build, any Kconfig file in the custom board directory is 11369 copied into configs/dummy, replacing the existing Kconfig file with 11370 the target Kconfig file. 11371 - Remove the includes/apps link to apps/include. It is no longer 11372 used. From Sebastien Lorquet. 11373 11374 * Tools: 11375 11376 - tools/tesbuild.sh will now build NxWM configurations. 11377 11378 * Application Build/Configuration System: 11379 11380 - Change to the way that apps/ Kconfig files are generated in 11381 order to better support reuse of the apps/ directory in NuttX 11382 products. Changes include: Make the full tree use wildcards 11383 make.defs, Add empty preconfig rules to 'leaf' makefiles, Use 11384 directory.mk for recursive dir makefiles, Individual app kconfig 11385 fixes, Recursive Kconfig autogeneration, Add kconfig files for 11386 pcode and tiff, and fix a gitignore rule, From Sébastien Lorquet. 11387 - apps/include directory structure reorganized. There are no longer 11388 any header files in the apps/include/. directory. Rather, sub- 11389 directories were added to match the partitioning of apps/ sub- 11390 directories and the header files were moved into the appropriate 11391 sub-directory. This change is intended to help with some changes 11392 being considered by Sébastien Lorquet. 11393 - Call all includes from <apps/bla/bla.h> to "bla/bla.h". From Sebastien 11394 Lorquet. 11395 - Add apps/include to include path in top-level Make.defs file. 11396 11397 * Applications: apps/nshlib: 11398 11399 - Make NSH net-initialization be a configuration option. From Marten 11400 Svanfeld. 11401 - Add NTP client initialization in NSH network startup logic. From 11402 David S. Alessio . 11403 - 'ps' command now prints out the stack usage if stack coloration is 11404 enabled. From Frank Benkert. 11405 - Allow stack usage to be disabled on constrained systems. From David 11406 Sidrane. 11407 11408 * Applications: apps/netutils: 11409 11410 - NTP Client: Add retries. From David S. Alessio. 11411 - NTP Client: The NTP client will now optionally use pool.ntp.org as 11412 the NTP server; and reset the retry count upon success -- more robust. 11413 From David Alessio. 11414 - ESP8266: Add logic to set the BAUD rate. From Pierre-noel Bouteville. 11415 - ESP8266: In Kconfig, select ARCH_HAVE_NET when NETUTILS_ESP8266 is 11416 selected. This allows, among other things, support for network debug 11417 output. From Pierre-noel Bouteville. 11418 11419 * Applications: apps/fsutils: 11420 11421 - flash_eraseall: IOCTL wrapper for MDCIO_BULKERASE command. Was in 11422 nuttx/drivers/mtd. Moved to apps/fsutils because the call directly into 11423 the OS was incorrect. 11424 11425 * Applications: apps/canutils: 11426 11427 - canlib: Basic CAN utility library. From Sebastien Lorquet. 11428 11429 * Platforms: apps/system: 11430 11431 - flash_eraseall: Now uses the IOCTL wrapper at apps/fsutils/flash_eraseall. 11432 11433 * Platforms: apps/platform: 11434 11435 - Add platform files for Olimex STM32 E407. From Mateusz Szafoni. 11436 11437 * Applications: apps/examples: 11438 11439 - apps/examples/canard: Add canard example application. From 11440 Matthias Renner. 11441 - apps/examples/pty_test: PTY test program. From Alan Carvalho de 11442 Assis. 11443 11444Works-In-Progress: 11445 11446 * IEEE802.14.5/6LowPAN. Hooks and framework for this effort were 11447 introduced in NuttX-7.15. Work has continued on this effort on 11448 forks from the main repositories, albeit with many interruptions. 11449 The completion of this wireless feature will postponed until at 11450 least NuttX-7.18. 11451 11452 * i.MX6 SMP. Partially functional, but there is more that still 11453 needs to be done. 11454 11455Bugfixes. Only the most critical bugfixes are listed here (see the 11456ChangeLog for the complete list of bugfixes and for additional, more 11457detailed bugfix information): 11458 11459 * Core OS: 11460 11461 - semaphores: Need to set errno to EINVAL on errors in sem_post() 11462 and sem_wait(). From Paul Alexander Patience. 11463 11464 * File System/Block Drivers/MTD Drivers: 11465 11466 - Several MTD FLASH drivers nullify the freed 'priv' structure and 11467 failed to return NULL as stated in the comments. Result, will 11468 operate on a NULL pointer later. Noted by David Sidrane. 11469 - VFS ioctl(). Per comments from David Sidrane, file_ioctl() should 11470 not return succeed if the ioctl method is not supported. It 11471 probably should return ENOTTY in that case. 11472 - SST26 Driver: Before accessing the sst26 flash, the "Global Unlock" 11473 command must me executed, which I do in the sst26 driver. BUT re- 11474 reading the datasheet, the WREN instruction is required to enable 11475 the execution of this command. This was not done. I have no idea how 11476 the driver currently works except by chance. The writes should never 11477 happen at all, the flash is half-enabled! From Sebastien Lorquet. 11478 - N25Qxx Driver: Alter the notion of 'blocksize' to be equivalent to 11479 'flash write page size' in order to align with assumptions in the 11480 smartfs driver (at least, maybe other things do as well). Correct a 11481 bug that was previously masked by having blocksize=eraseblocksize 11482 which would cause buffer overflows and delicious hardfaults. 11483 Trivial spelling changes in comments, etc. From ziggurat29. 11484 - SmartFS: Fix a 32-byte memory leak. From Ken Pettit. 11485 - SMART MTD layer: Fixes freesector logic error when sectorsPerBlk=256, 11486 adds DEBUGASSERT for invalid geometry and additional memory debug 11487 logic. Also fixes the dangling pointer on error bug. From Ken 11488 Pettit. 11489 11490 * Common Drivers: 11491 11492 - USB CDC/ACM Device Class: cdcacm_unbind leaks write request objects. 11493 This arises due to freeing the bulk IN endpoint before the loop 11494 that frees the requests via cdcasm_freereq. That function checks 11495 the parameters and skips the freeing if either is NULL. Freeing 11496 the bulk IN endpoint will cause the first param to be NULL, thereby 11497 bypassing the free operation. To fix, I moved the release of the 11498 bulk IN endpoint until after to loop (much as was the case for the 11499 OUT and read requests, which did not exhibit the problem). From 11500 ziggurat29. 11501 - Pipes and FIFOs: Add missing configuration for pipe ring buffer 11502 size. From Frank Benkert. 11503 - UART 16550: Handle when CONFIG_SERIAL_UART_ARCH_IOCTL is not 11504 enabled. From Heath Petersen. 11505 - Common Serial Upper Half: Fix a race condition noted by Stefan 11506 Kolb. Between the test if the TX buffer is full and entering a 11507 critical section, bytes may be removed from the TX buffer making 11508 the wait unnecessary. The unnecessary wait is an inefficiency, 11509 but not really a problem. But with USB CDC/ACM it can be a problem 11510 because the entire TX buffer may be emptied when we lose the race. 11511 If that happens that uart_putxmitchar() can hang waiting for data 11512 to be removed from an empty TX buffer. 11513 - USB MSC Device Class: Add locks when removing request from queue. 11514 From Wolfgang Reissnegger. 11515 - USB MSC Device Class: Fix reversed logic on waiting for SCSI thread 11516 start. The scsi thread was waiting for the wrong condition. 11517 However, this was masked by the fact that the code creating the 11518 scsi thread was also holding usbmsc_scsi_lock(priv) while 11519 initializing data, hence this lock synchronized the scsi thread 11520 start with init completion. From Wolfgang Reissnegger. 11521 11522 * Graphics and Graphic Drivers: 11523 11524 - Correct conditional compilation in ST7565 LCD driver. From Pierre- 11525 noel Bouteville 11526 11527 * Networking: 11528 11529 - In both IPv6 and IPv4 incoming logic: (1) Should check if the 11530 packet size is large enough before trying to access the packet 11531 length in the IP header. (2) In the comparison between the IP 11532 length and the full packet length, need to subtract the size of 11533 he link layer header before making the comparison or we will get 11534 false positives (i.e., the packet is really too small) 11535 - TCP Networking: While working with version 7.10 I discovered a 11536 problem in TCP stack that could be observed on high network load. 11537 Generally speaking, the problem is that RST flag is set in 11538 unnecessary case, in which between loss of some TCP packet and its 11539 proper retransmission, another packets had been successfully sent. 11540 The scenario is as follows: NuttX did not receive ACK for some sent 11541 packet, so it has been probably lost somewhere. But before its 11542 retransmission starts, NuttX is correctly issuing next TCP packets, 11543 with sequence numbers increasing properly. When the retransmission 11544 of previously lost packet finally succeeds, tcp_input receives the 11545 accumulated ACK value, which acknowledges also the packets sent in 11546 the meantime (i.e. between unsuccessful sending of lost packet and 11547 its proper retransmission). However, variable unackseq is still set 11548 to conn->isn + conn->sent, which is truth only if no further 11549 packets transmission occurred in the meantime. Because of incorrect 11550 (in such specific case) unackseq value, few lines further condition 11551 if (ackseq <= unackseq)is not met, and, as a result, we are going to 11552 reset label. From Jakub Lagwa. 11553 11554 * ARMv7-M: 11555 11556 - ARM stack check: Fix double fault on IDLE task with stack size = 0. 11557 From David Sidrane. 11558 11559 * Atmel SAMV7 Drivers: 11560 11561 - CAN: CAN Message Filtering fixed: (1) stdfilters didn't work because 11562 the filter was never enabled (wrong number of bits to shift), and 11563 (2) Filters were never used because the configuration register 11564 cannot be written without using the initialization mode. Both bugs 11565 are fixed by this change. Filtering has been tested with both 11566 standard and extended identifiers and is now working properly. From 11567 Michael Spahlinger. 11568 11569 * Atmel SAMA5: 11570 11571 11572 * Atmel SAM3/4 Drivers: 11573 11574 - Fix some errors in AFEC header file. From OrbitalFox. 11575 - DAC: DACC_WPMR_WPKEY_MASK -> DACC_WPMR_WPKEY. From Wolfgang 11576 Reissnegge. 11577 - Timer: Fix ops check in TCIOC_STOP. From Wolfgang Reissnegge. 11578 - I2C: Fix reversed logic in twi_startmessage(). From Wolfgang 11579 Reissnegger. 11580 - SAM3/4 UDP: Fix handling of endpoint RX FIFO banks. This fixes 11581 a race condition where the HW fills a FIFO bank while the SW is 11582 busy, resulting in out of sequence USB packets. 11583 11584 * Atmel SAMV7 Drivers: 11585 11586 - USBHS Device: This change solves a problem which causes data loss 11587 while sending data via USB. This problem is caused by an incorrect 11588 handling of the endpoint state in the USB driver sam_usbdevhs. This 11589 leads under some circumstances to situations in which an DMA 11590 transfer is setup while a previous DMA transfer is currently active. 11591 Amongst other things I introduced the new endpoint state 11592 USBHS_EPSTATE_SENDING_DMA for the fix. To reproduce the problem, I 11593 used a program which send as many data as possible via a CDC/ACM 11594 device and verified the received data on the PC. From Stefan Kolb. 11595 11596 * NXP Freescale Kinetis Drivers: 11597 11598 - Timers: Support up to 8 channels per timer. From kfazz. 11599 11600 * NXP Freescale Kinetis Boards: 11601 11602 - Teensy 3.x clock fixes: The High Gain bit in MCG_C1 was preventing 11603 teensy from booting except after a programming session. The second 11604 change doesn't appear to change any functionality, but complies with 11605 restrictions in the k20 family reference manual on FEI -> FBE clock 11606 transiions. From kfazz. 11607 11608 * NXP Freescale LPC17xx Drivers: 11609 11610 - LPC17 Ethernet: Needs to correctly ignore PHYID2 revision number 11611 when comparing PHY IDs. 11612 11613 * NXP Freescale LPC43xx Drivers: 11614 11615 - Fix errors in GPIO interrupt logic. From v01d (phreakuencies) 11616 - Ethernet: Correct auto-negotiation mode in the LPC43xx Ethernet. 11617 From Alexander Vasiljev 11618 - Writing zero to NVIC_IRQ_ENABLE has no effect. Disable interrupts 11619 with NVIC_IRQ_CLEAR. From Paul Alexander Patience. 11620 - SPIFI: If CONFIG_SPIFI_SECTOR512 undefined, lpc43_bwrite doesn't do 11621 actual write (probably copy/paste errors). Still not sure about 11622 current state of lpc43_spifi implementation, but for me NXFFS works 11623 with this change. From Vytautas Lukenskas. 11624 11625 * Qemu-i486: 11626 11627 - Fix qemu-i486/ostest/Make.defs test for M32. From Heath Petersen. 11628 11629 * SiLabs EFM32 Drivers: 11630 11631 - Fix EFM32 FLASH conditional compilation. From Pierre-noel 11632 Bouteville 11633 - Writing zero to NVIC_IRQ_ENABLE has no effect. Disable interrupts 11634 with NVIC_IRQ_CLEAR. From Paul Alexander Patience. 11635 11636 * STMicro STM32: 11637 11638 - STM32 F1-F4: In PWM driver, just update duty if frequency is not 11639 changed and PSM started. This removeis glitch or blinking when 11640 only duty is frequently changed. From Pierre-noel Bouteville. 11641 11642 * STMicro STM32 Drivers: 11643 11644 - STM32 F7: Fixed STM32F7 DMA stm32_dmacapable. DMA working on SDMMC. 11645 From David Sidrane. 11646 - STM32 F1-F4 Timer Driver: Change calculation of per- timer pre-scaler 11647 value. Add support for all timers 11648 - STM32 F1-F4: Correct conditional compilation in STM32 timer capture 11649 logic. From Pierre-noel Bouteville 11650 - STM32 F1-F4: Fix STM32 DMA code and configuration for STM32F37X chips. 11651 From Marten Svanfeldt. 11652 - STM32 F1-F4: Fix compilation errors in debug mode of stm32_pwm.c. 11653 From Konstantin Berezenko. 11654 - STM32 F1-F4: Correct the CAN2 RX IRQ number for stm32f10xx chips. 11655 From Konstantin Berezenko. 11656 - STM32 F1-F4: Move backup domain reset to earlier in the 11657 initialization sequence (stm32_rcc.c() in order to avoid disabling 11658 LSE during RTC initialization. From Alan Carvalho de Assis. 11659 - STM32 F1-F4: When configuring a GPIO via stm32_configgpio() the 11660 function will first set the mode to output and then set the initial 11661 state of the gpio later on. If you have an application with an 11662 externaly pulled-up pin, this would lead to a glitch on the line 11663 that may be dangerous in some applications (e.G. Reset Line for 11664 other chips, etc). This changes sets the output state before 11665 configuring the pin as an output. From Pascal Speck . 11666 - STM32 F7: Apply Pascal Speck's GPIO STM32 change to STM32 L4. 11667 - STM32 L4: Apply Pascal Speck's GPIO STM32 change to STM32 L4. 11668 From Sebastien Lorquet. 11669 - STM32 F7: BUGFIX: PLLs IS2 and SAI P Calculation. From David 11670 Sidrane. 11671 - STM32 L4: STM32 CAN fixes need to be backported to STM32L4 as well. 11672 - STM32 F1-F4 and L4: Writing zero to NVIC_IRQ_ENABLE has no effect. 11673 Disable interrupts with NVIC_IRQ_CLEAR. From Paul Alexander 11674 Patience. 11675 - STM32 F7: STMF7xxx RTC: (1) Remove proxy #defines, (2) Ensure the 11676 LSE(ON) etal are set and remembered in a) A cold start (RTC_MAGIC 11677 invalid) of the RTC, and b) A warm start (RTC_MAGIC valid) of the 11678 RTC but a clock change. The change was needed because in bench 11679 testing a merge of the latest's STM32 53ec3ca (and friends) it 11680 became apparent that the sequence of operation is wrong in the 11681 reset of the Backup Domain in the RCC code. PWR is required before 11682 the Backup Domain can be futzed with. !!!This Code should be tested 11683 on STM32 and if needed rippled to the STM32 families. From David 11684 Sidrane. 11685 - STM32 F1-F4: STM32 BBSRAM fixed (and formatted) flags. From David 11686 Sidrane. 11687 - STM32 F7: STM32F7 BBSRAM fixed (and formatted) flags. From David 11688 Sidrane. 11689 - STM32 L4: Fix incorrect clock setup for LPTIM1. From ziggurat29. 11690 - STM32 F4/L4 RTC ALARM: were enabling interrupts too early in the 11691 power-up sequence, BEFORE the interrupt system was being 11692 initialized. 11693 11694 * STMicro STM32 Boards: 11695 11696 - STM32 board.h: Fix STM32 timer input clock definitions. From David 11697 Sidrane. 11698 11699 * TI Tiva Drivers: 11700 11701 - Bug Fix in tiva_serial.c - UART5, UART6 and UART7 were not being 11702 configured as TTYS0 for printing over serial console. From Shirshak 11703 Sengupta. 11704 11705 * C Library/Header Files: 11706 11707 - include/signal.h: Change type of SIG_ERR, SIG_IGN, ... to 11708 _sa_handler_t. The type void does not work with the IAR toolchain. 11709 From Aleksandr Vyhovanec. 11710 - crc16: fix error. From Paul Alexander Patience. 11711 - strtoul() and strtoull(): Fix errno settings required by function 11712 definition. Resolved Bitbucket Issue #1. From Sebastien Lorquet. 11713 11714 * Build/Configuration System: 11715 11716 - Build system: This change fixes a build problem that only occurs 11717 when reconfiguring from Linux to Windows or vice-versa. It is a 11718 problem that was present but not usually experienced until two 11719 things happened: (1) The pre_config target was added to run before 11720 the menconfig operation and (2) the context target was added before 11721 the pre_config target in order to set up the correct symbolic links 11722 (in the apps/platform directory) needed by the pre_config target. 11723 But then now if you start with a Linux system and run 'make 11724 menuconfig' to switch to Linux, the context target will execute 11725 first and set up POSIX style symbolic links before doing the 11726 menuconfig. Then after the menuconfig, the make will fail on 11727 Windows if you are using a Windows native toolchain because that 11728 native toolchain cannot follow the Cygwin- style symbolic links. 11729 The fix here is to also execute the clean_context AFTER executing 11730 menuconfig. A lot more happens now: It used to be that doing 11731 'make menuconfig' only did the menuconfig operation. Now it does 11732 context, pre_config, menuconfig, clean_context. Not nearly as 11733 snappy as it used to be. 11734 - Need to build the drivers/ directory even it file descriptors are 11735 not supported. There are things in the drivers/ directory that are 11736 still needed (like SYSLOG logic). 11737 - Remove all inclusion of header files from the apps/include 11738 directory from NuttX core logic. There should be no dependency on 11739 logic within NuttX on logic within apps/. This caused a lot of 11740 reshuffling of logic: binfmt pcode support, usbmonitor is now a 11741 kernel thread, TZ/Olson database moved to libc/zoneinfo. 11742 11743 * Application Build/Configuration System: 11744 11745 - Make sure that APPNAME is defined in all Makefiles that generate 11746 applications. From Sebastien Lorquet. 11747 11748 * apps/builtins: 11749 11750 - apps/builtins: exec_builtin was not using the provided open flags. 11751 As a result >> redirection was not working; it was treated the same 11752 as >. 11753 11754 * apps/nshlib: 11755 11756 - apps/nshilib: PS Command: When Priority Inheritance is enabled, the 11757 format of /proc/<PID>/status changes to show both the current 11758 priority and the thread's base priority. This messes up the format 11759 of cmd_ps. From David Alessio. 11760 11761 * apps/netutils: 11762 11763 - apps/netutils, uIP webserver: Fix a data declaration in a header 11764 file. 11765 11766 * apps/canutils: 11767 11768 - apps/canutils/libuavcan: Fix for recent change to STM32 timer 11769 frequency definiitions. 11770 11771 * apps/examples: 11772 11773 - apps/examples/alarm: ioctl call was clobbering file descriptor. 11774 - apps/examples/can: Some variables were not declared in all required 11775 cases. From Sebastien Lorquet. 11776 - apps/examples/media: media example was intended to take either a 11777 command line argument, or a compiled-in default value from config. 11778 However, the default was ignored, leading to confusing error 11779 messages. From ziggurat29. 11780 11781NuttX-7.18 Release Notes 11782------------------------ 11783 11784The 118th release of NuttX, Version 7.18, was made on October 8, 2016, 11785and is available for download from the Bitbucket.org website. Note 11786that release consists of two tarballs: nuttx-7.18.tar.gz and 11787apps-7.18.tar.gz. These are available from: 11788 11789 https://bitbucket.org/nuttx/nuttx/downloads 11790 https://bitbucket.org/nuttx/apps/downloads 11791 11792Both may be needed (see the top-level nuttx/README.txt file for build 11793information). 11794 11795Additional new features and extended functionality: 11796 11797 * Core OS: 11798 11799 - Add standard adjtime() interface and basic timekeeping support. 11800 Normally used with an NTP client to keep system time in 11801 synchronization. From Max Neklyudov. 11802 - Use the oneshot timer with optional entropy to measure CPU load if 11803 so configured. 11804 11805 * File System and Block and MTD Drivers: 11806 11807 - Add Fujistu MB85RS256B ramtron support. From Beat Küng. 11808 - SPI-based MTD driver for Macronix MX25L3233F or MX25L6433F. From 11809 Aleksandr Vyhovanec. 11810 11811 * Graphics/Display Drivers: 11812 11813 - SH1106 0.96 OLED module support (SSD1306 compatible) + I2C fixes. 11814 From v01d (phreakuencies). 11815 11816 * Sensor Drivers: 11817 11818 - Add KXTJ9 Accelerometer driver from the Motorola Moto Z MDK. 11819 - Add MFRC522 RFID ISO14443 and Mifare transceiver driver. From Alan 11820 Carvalho de Assis. 11821 - Add driver for the LIS3MDL 3 axis magnetometer. From Alexander 11822 Entinger. 11823 - Add driver for the MLX90393 3 axis magnetometer. From Alexander 11824 Entinger. 11825 - Add driver for the LIS3DSH 3 axis accelerometer. From Alexander 11826 Entinger. 11827 - Add driver for the Bosch BMG160 3 axis gyroscope. From Alexander 11828 Entinger. 11829 - Add support for the Sensixs XEN1210 3D-board. This sensor is used 11830 on NANOSATC-BR2 a Brazilian CUBESAT project. From Alan Carvalho 11831 de Assis. 11832 - Add a new ioctl command (set MAXPOS) for Tiva QEI. From Young. 11833 11834 * Other Common Device Drivers: 11835 11836 - I/O Expander: Remove hard-coded PCA9555 fields from ioexpander.h 11837 definitions. Add support for an attach() method that may be used 11838 when any subset of pin interrupts occur. 11839 - I/O Expander Interface: Encode and extend I/O expander options to 11840 include interrupt configuration. 11841 - PCA9555 Driver: Replace the signalling logic with a simple callback 11842 using the new definitions of ioexpander.h. This repartitioning of 11843 functionality is necessary because (1) the I/O expander driver is 11844 the lower-lower part of any driver that uses GPIOs (include the GPIO 11845 driver itself) and should not be interacting directly with the much 11846 higher level application layer. And (2) in order to be compatible 11847 with the GPIO driver (and any arbitrary upper half driver), the 11848 PCA9555 should not directly signal, but should call back into the 11849 upper half. The upper half driver that interacts directly with the 11850 application is the appropriate place to be generating signal. 11851 - Add a skeleton I/O Expander driver (based on the PCA9555 driver). 11852 - Add PCF8574 I/O Expander driver. 11853 - GPIO driver: Add IOCTLs to get the pin type and to unregister a 11854 signal handler. 11855 - Add a GPIO lower-half driver that can be used to register a GPIO 11856 character driver for accessing pins on an I/O expander. 11857 - Add an SPI helper function that encapsulates and manages a sequence 11858 of SPI transfers. 11859 - Add an SPI character driver that will permit access to the SPI bus 11860 for testing purposes. 11861 - Add oneshot timer lower half interface definition. 11862 - Add an upper-half, oneshot timer character driver. 11863 - Add Audio Tone Generator for NuttX. From Alan Carvalho de Assis. 11864 - Add USB host support for composite devices. This feature is not 11865 well tested. 11866 - drivers/ioexpander: Add an (untested) TCA64XX I/O Expander driver 11867 leveraged from Project Ara. 11868 11869 * Simulation Platform: 11870 11871 - Add a simulated I/O Expander driver. 11872 - Add simulator-based test support for apps/examples/gpio. 11873 - Add a configuration useful for testing Mini Basic. 11874 - Add a simulated oneshot lowerhalf driver. 11875 11876 * Atmel SAM3/4 Drivers: 11877 11878 - SAM4CM: Add option to support oneshot timer without free-running 11879 timer. Add oneshot lower half driver. 11880 11881 * Atmel SAMA5 Drivers: 11882 11883 - SAMA5D: Add option to support oneshot timer without free-running 11884 timer. Add oneshot lower half driver. 11885 11886 * Atmel SAMV7 Drivers: 11887 11888 - SAMV71/SAME70: Add option to support oneshot timer without 11889 free-running timer. Add oneshot lower half driver. 11890 - Add support for SAMV7 DACC module. From Piotr Mienkowski. 11891 11892 * NXP Freescale Kinetis Drivers: 11893 11894 - Add support for I2C and RTC. From v01d (phreakuencies). 11895 11896 * NXP Freescale Kinetis Boards: 11897 11898 - Add teensy 3.x I2C support. From v01d (phreakuencies). 11899 11900 * STMicro STM32: 11901 11902 - Add IAR-style STM32F1xx vectors. Tested on STM32F103RB and 11903 STM32F107RC. From Aleksandr Vyhovanec. 11904 11905 * STMicro STM32 Drivers: 11906 11907 - Add timekeeping support for the STM32 tickless mode. From Max 11908 Neklyudov. 11909 - Add a oneshot, lower-half driver for STM32. 11910 - STM32 L4: Add oneshot lower half driver for STM32 L4. 11911 - STM32 L4: Add support for quadrature encoders on STM32L4. Sebastien 11912 Lorquet. 11913 11914 * STMicro STM32 Boards: 11915 11916 - stm32f103-minimum: Add board support to MFRC522 driver. From Alan 11917 Carvalho de Assis. 11918 - Add oneshot board initialization to stm32f103-minimum. From Alan 11919 Carvalho de Assis. 11920 - stm32f103-minimum: Add board configuration to initialize Audio Tone 11921 Generator. From Alan Carvalho de Assis. 11922 - stm32bufferfly2: Add support for the Kamami stm32butterfly2 11923 development board with optional ETH phy. From Michal Lyszczek. 11924 - stm32f103-minimum: Add board config support to SPI LCD module 11925 JLX12864G-086. From Alan Carvalho de Assis. 11926 - stm32l476-mdk: Support basic booting and nsh on Motorola MDK. The 11927 Motorola MDK is based off of an earlier version of NuttX. 11928 This only provides a basic NSH shell. From Jim Wylder. 11929 - STM32 F4 Discovery: Add support for XEN1210 3D-board. From Alan 11930 Carvalho de Assis. 11931 - stm32f103-minimum: Add stm32_bringup support and userled example to 11932 STM32F103 Minimum board. From Alan Carvalho de Assis. 11933 - Add support for qencoders on various nucleo boards. From Sebastien 11934 Lorquet. 11935 - olimex-stm32-e407: Add some networking configurations. From Mateusz 11936 Szafoni. 11937 11938 * TI Tiva Drivers: 11939 11940 - Add tiva PWM lower-half driver implementation. From Young. 11941 - Tiva QEI: Add QEI lower-half driver for Tiva series chip. From 11942 Young. 11943 11944 * C Library/Header Files: 11945 11946 - Separate XorShift128 PRNG from /dev/urandom and make it generally 11947 available. 11948 - Add POSIX type sig_atomic_t. From Sebastien Lorquet. 11949 - Add the difftime() function. The function depends on the toolchain- 11950 dependent CONFIG_HAVE_DOUBLE so is not available on tiny platforms. 11951 From Sebastien Lorquet. 11952 - Add support for remove(). From Sebastien Lorquet. 11953 - Add system() to stdlib.h. Actual implementation is in 11954 apps/system/system. 11955 11956 * Build/Configuration System: 11957 11958 - Rename arch/sh to arch/renesas. 11959 - Remove contactless drivers from drivers/wireless to drivers 11960 contactless. From Sebastien Lorquet. 11961 - Move all modem-related IOCTL commands to a common file to assure 11962 that they will be unique. 11963 11964 * Tools: 11965 11966 - Add sethost.sh. This is a script that you can use to quickly 11967 change the host platform from Linux to Windows/Cygwin. Might save 11968 you a lot of headaches. 11969 11970 * Applications: apps/nshlib: 11971 11972 - Add logic to support an NSH-specific system command. 11973 - Add printf command to NSH, e.g., controlling /dev/userleds from 11974 command line: nsh> printf \x01 > /dev/userleds. From Alan Carvalho 11975 de Assis. 11976 11977 * Platforms: apps/system: 11978 11979 - Port tee command from NetBSD. 11980 - Add a generic system command. Current implementation cannot use 11981 /bin/sh and spawns the custom NSH system command directly. 11982 11983 * Platforms: apps/platform: 11984 11985 - Add C++ support for STM32L476-MDK. 11986 11987 * Platforms: apps/interpreters: 11988 11989 - Add a port of Mini Basic, version 1.0, written by Malcom McLean and 11990 released under the Creative Commons Attribution license. 11991 11992 * Applications: apps/examples: 11993 11994 - Add a simple test of the GPIO driver. 11995 - Add RFID_READUID sample application. From Alan Carvalho de Assis. 11996 - Add Oneshot timer example. 11997 - Add a simple test of the system command. 11998 11999Works-In-Progress: 12000 12001 * IEEE802.14.5/6LowPAN. Hooks and framework for this effort were 12002 introduced in NuttX-7.15. Work has continued on this effort on 12003 forks from the main repositories, albeit with many interruptions. 12004 The completion of this wireless feature will postponed until at 12005 least NuttX-7.19. 12006 12007Bugfixes. Only the most critical bugfixes are listed here (see the 12008ChangeLog for the complete list of bugfixes and for additional, more 12009detailed bugfix information): 12010 12011 * Core OS: 12012 12013 - Explicitly initialize the group tg_exitsem with sem_init(). The 12014 existing logic worked because the correct initialization value is 12015 all zero, but it is better to initialize the semaphore explicitly. 12016 - The TCB nchildren field should not be incremented when pthreads are 12017 created. 12018 - Move fields related to parent/child task relationship out of TCB 12019 into group structure where they belong. Child is a group, not a 12020 thread. 12021 - mq_send() was not setting the errno value on certain failures to 12022 allocate a message. 12023 - Define 'group' even if HAVE_GROUPID is not set. From Mateusz 12024 Szafoni. 12025 - Vector table should have dimension NR_IRQS, not NR_IRQS+1. From 12026 Sagitta Li. 12027 - pthreads: When a pthread is started, there is a small bit 12028 of logic that will run on the thread of execution of the new 12029 pthread. In the case where the new pthread has a lower 12030 priority than the parent thread, then this could cause both the 12031 parent thread and the new pthread to be blocked at the priority of 12032 the lower priority pthread (assuming that CONFIG_PRIORITY_INHERITANCE 12033 is not selected). This change temporarily boosts the priority of the 12034 new pthread to at least the priority of the new pthread to at least 12035 the priority of the parent thread. When that bit of logic has 12036 executed on the thread of execution of the new pthread, it will then 12037 drop to the correct priority (if necessary) before calling into the 12038 new pthread's entry point. 12039 12040 * File System/Block Drivers/MTD Drivers: 12041 12042 - FAT performance improvement. In large files, seeking to a 12043 position from the beginning of the file can be very time consuming. 12044 ftell does lssek(fd, 0, SET_CURR). In that case, that is wasted 12045 time since we are going to seek to the same position. This fix 12046 short-circuits fat_seek() in all cases where we attempt to seek to 12047 current position. Suggested by Nate Weibley. 12048 - MTD: Fixed cloned typos in several FLASH drivers. From Aleksandr 12049 Vyhovanec. 12050 - mount: Corrects a bad assertion noted by Pierre-noel Bouteville. 12051 Also fixes a reference counting problem in an error condition: 12052 When the mountpoint inode is found but is not an appropriate 12053 mountpoint, the reference count on the inode was not being 12054 decremented. 12055 12056 * Common Drivers: 12057 12058 - Various serial drivers: Fix FIONWRITE and add FIONSPACE. All 12059 implementations of FIONWRITE were wrong. FIONWRITE should return 12060 the number of bytes waiting in the outgoing send queue, not the free 12061 space. Rather, FIONSPACE should return the free space in the send 12062 queue. 12063 - Add missing prototype for btn_lower_initialize(). 12064 - Make DAC sample structure packed. From Marc Rechté. 12065 12066 * Networking: 12067 12068 - TCP: tcp_ipvX_bind() not actually using the port selected with 12069 port==0. Also removes duplicate call to pkt_input(). Issues noted 12070 by Pascal Speck. 12071 - drivers/net: NET_TUN=y => NET_MULTIBUFFER=y. From Vladimir 12072 Komendantskiy. 12073 - slip driver: Fix calculations using MSEC_PER_TICK. If 12074 USEC_PER_TICK is less than 1000, then MSEC_PER_TICK will be 12075 zero. It will be inaccurate in any case. 12076 12077 * Atmel SAM3/4 Drivers: 12078 12079 - SAM3/4 GPIO: Enable peripheral clock for GPIO port when GPIO is 12080 configured as input. The value of a GPIO input is only sampled when 12081 the peripheral clock for the port controller the GPIO resides in is 12082 enabled. Therefore we need to enable the clock even when polling a 12083 GPIO. From Wolfgang Reissnegger. 12084 - All SAM Ethernet Drivers: Add support so that the drivers can be 12085 built with CONFIG_NET_MULTIBUFFER=y. 12086 - SAM3/4: Fix GPIO pull-up/down code. Enabling the pull-down resistor 12087 while the pull-up resistor is still enabled is not possible. In this 12088 case, the write of PIO_PPDER for the relevant I/O line is discarded. 12089 Likewise, enabling the pull-up resistor while the pull-down resistor 12090 is still enabled is not possible. In this case, the write of 12091 PIO_PUER for the relevant I/O line is discarded. From Wolfgang 12092 Reißnegger. 12093 12094 * Atmel SAMV7 Drivers: 12095 12096 - All SAM Ethernet Drivers: Add support so that the drivers can be 12097 built with CONFIG_NET_MULTIBUFFER=y. 12098 - SAM GPIO: Apply Wolfgang's change for SAM3/4 to SAMA5 and SAMV7. 12099 12100 * Atmel SAMA5: 12101 12102 - Add missing oneshot max_delay method. 12103 - All SAM Ethernet Drivers: Add support so that the drivers can be 12104 built with CONFIG_NET_MULTIBUFFER=y. 12105 - SAM GPIO: Apply Wolfgang's change for SAM3/4 to SAMA5 and SAMV7. 12106 12107 * NXP Freescale LPC43xx Drivers: 12108 12109 - LPC43xx serial: Fix typos in LPC43 serial driver. Found by Vytautas 12110 Lukenskas. 12111 - LPC43xx Serial: There are some small problems in LPC43xx RS485 mode 12112 configuration. In particular: (1) UART0,2,3 do not have DTR pins 12113 (different from UART1), so, Kconfig needs to be adjusted. (2) 12114 lpc43_uart.c in RS485 mode only configures DIR pin, but doesn't 12115 enable pin output for UART0,2,3. (3) should be option to reverse DIR 12116 control pin output polarity. (4) lpc43xx/chip/lpc43_uart.h doesn't 12117 have USART3 definitions. NOTE: I didn't modified and didn't tested 12118 USART1, as it has different hardware. From Vytautas Lukenskas. 12119 From Vytautas Lukenskas. 12120 12121 * SiLabs EFM32 Drivers: 12122 12123 - EFM32 SPI drivers adopted incompatible conventions (See STM32 for 12124 details of the issue). 12125 12126 * STMicro STM32 Drivers: 12127 12128 - STM32, STM32 L4, and EFM32 SPI drivers adopted incompatible 12129 conventions somewhere along the line. They set the number of bits 12130 to negative when calling SPI_SETBITS which had the magical side- 12131 effect of setting LSB first order of bit transmission. This is not 12132 only a hokey way to pass control information but is supported by no 12133 other SPI drivers. This change three things: (1) It adds 12134 HWFEAT_LSBFIRST as a new H/W feature. (2) It changes the 12135 implementations of SPI_SETBITS in the STM32 and EFM32 drivers so 12136 that negated bit numbers are simply errors and it adds the 12137 SPI_HWFEATURES method that can set the LSB bit order, and 12138 (3) It changes all calls with negative number of bits from all 12139 drivers: The number of bits is now always positive and 12140 SPI_HWFEATURES is called with HWFEAT_LSBFIRST to set the bit order. 12141 - Add missing SPI2 and SPI3 support for STM32F3F3. Add STM32F37XX DMA 12142 channel configuration. For STM32F37XX, SYSCFG_EXTICR_PORTE defined 12143 twice. From Alan Carvalho de Assis. 12144 - STM32: Make stm32_pwr_enablebkp thread safe. From Max Neklyudov. 12145 - Fix bad pllmul values for STM32F1XX connectivity line. STM32F1XX 12146 connectivity line supports only x4, x5, x6, x7, x8, x9 and x6.5 12147 values. From Michal Lyszczek. 12148 - STM32F3 SPI: Fix the number of bit setting for the F3. That and 12149 data packing work differently on the STM32F3 than for other STM32 12150 parts. 12151 - STM32 and STM32 L4: Enabling SPI DMA loses other bits in CR2. 12152 - STM32F3 SPI: Cannot write always 16-bit value to DR register 12153 because of how the F3 implements data packing. 12154 - STM32F411 and STM32F446 map i2c2_sda_4 to different alternate 12155 function numbers. From Konstantin Berezenko. 12156 - STM32 DMA Fix: Change stm32 adc dma callback to send channel 12157 number instead of index. From Konstantin Berezenko. 12158 - STM32 OTGFS device: Fix for lost first word from FIFO 12159 12160 1) Do not overwrite Reserved Bits in GINTSTS (per ref manual)* 12161 2) Acknowledge all pending int on entry to ISR that are Only rc_w1* 12162 3) Do not disable RXFVL* 12163 4) Loop until RXFVL is cleared* 12164 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) 12165 12166 Changed marked *are just driver clean up and ensure ints are not lost. The bug fix is #5 12167 12168 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 12169 12170 Set Line Coding DATA1: 4B | 00 c2 01 00 00 00 08 | c8 1B 12171 Get Line Coding DATA1: 4B | .. .. .. .. 00 00 08 c8 .. 00 00 07 | 7a 72 12172 12173 From David Sidrane. 12174 - STM32 L4 OTGFS device: Apply stm32 fix to stm32l4. From Sebastien 12175 Lorquet. 12176 - STM32 F7: Remove duplicate call to pkt_input from Ethernet driver. 12177 Issues noted by Pascal Speck. 12178 - STM32 L4: Add support for USART3-USART5. For STM32L4 parts, the 12179 higher number USART ports supported varies. Add the HAVE_USARTx 12180 definitions to the configuration to allow enabling the higher 12181 numbered USART ports. From Jim Wylder. 12182 - STM32 USB: Set USB address to avoid a failed assertion. From 12183 Pierre-noel Bouteville. 12184 - STM32 L4 and L7 USB: Pierre's assertion-avoidance change should 12185 also be applied to STM32 F7 and L4. 12186 - STM32, L4, and F7: Remove GPIO_ETH_RMII_TX_CLK. TX_CLK is not 12187 present in RMII. Mateusz Szafoni. 12188 - STM32 Ethernet: Correct typo in conditional logic. From Neil 12189 Hancock. 12190 - STM32 L4 USB Device: Fixed L4 USB Driver by avoiding SETUPDONE and 12191 EPOUT_SETUP. From David Sidrane. 12192 - STM32 SPI: stm32_modifycr2 should be available on all platforms if 12193 DMA is enabled. 12194 - STM32 DMA2D: fix an error in up_dma2dcreatelayer where an invalid 12195 pointer was returned when a certain underlying function failed. 12196 From Jens Gräf. 12197 12198 * TI Tiva Drivers: 12199 12200 - Fix two bugs of tiva pwm lower-half driver implementation. From 12201 Young. 12202 - Tiva Ethernet: Needs support for CONFIG_NET_MULTIBUFFER=y. 12203 12204 * C Library/Header Files: 12205 12206 - lib_dumpbuffer() now prints a large on-stack buffer first to avoid 12207 problems when the syslog output is prefixed with time. From 12208 Pierre-noel Bouteville. 12209 - libc/math: This fixes the following libc/math issues: (1) asin[f l]() 12210 use Newton's method to converge on a solution. But Newton's method 12211 converges very slowly (> 500,000 iterations) for values of x close to 12212 1.0; and, in the case of asinl(), sometimes fails to converge (loops 12213 forever). The attached patch uses an trig identity for values of 12214 x > sqrt(2). The resultant functions converge in no more than 5 12215 iterations, 6 for asinl(). (2) The NuttX erf[f l]() functions are 12216 based on Chebyshev fitting to a good guess. The problem there's a 12217 bug in the implementation that causes the functions to blow up with 12218 x near -3.0. This patch fixes that problem. It should be noted that 12219 this method returns the error function erf(x) with fractional error 12220 less than 1.2E-07 and that's fine for the float version erff(), but 12221 the same method is used for double and long double version which 12222 will yield only slightly better precision. This patch doesn't 12223 address the issue of lower precision for erf() and erfl(). (3) a 12224 faster version of copysignf() for floats is included. From David S. 12225 Alessio. 12226 - strtod() was not returning endptr on error conditions. 12227 - libc/math: floor(), floorf(), and floorl(): Fix logic error. Was 12228 not correctly handling negative integral value. 12229 - isatty() should be prototyped in unstid.h, not termios.h. From 12230 Sebastien Lorquet. 12231 - nxglib: Fix handling of near-horizontal lines of width 1 in 12232 nxgl_splitline(). Missing handling for degenerate condition caused 12233 width 1 lines such as (0, 0) - (100, 10) to have gaps in the 12234 drawing. From Petteri Aimonen. 12235 12236 * Build/Configuration System: 12237 12238 - Top-Level Makefiles: Fix a chicken-and-egg problem. In the menuconfig 12239 target, the context dependency was executed before kconfig-mconf. That 12240 was necessary because the link at apps/platform/board needed to be set 12241 up before creating the apps/Kconfig file. Otherwise, the platform 12242 Kconfig files would not be included. But this introduces the chicken- 12243 and-egg problem in some configurations. In particular: (1) An NX 12244 graphics configuration is used that requires auto-generation of 12245 source files using cpp, (2) the configuration is set for Linux, but 12246 (3) we are running under Cygwin with (4) a Windows native toolchain. 12247 In this case, POSIX-style symbolic links are set up but the Windows 12248 native toolchain cannot follow them. The reason we are running 12249 'make menuconfig' is to change from Linux to Cygwin, but the target 12250 fails. During the context phase, NX runs CPP to generate source files 12251 but that fails because the Windows native toolchain cannot follow 12252 the links. Checkmate. This was fixed by changing all of the make 12253 menuconfig (and related) targets. They no longer depend on context 12254 being run. Instead, they depend only on the dirlinks target. The 12255 dirlinks target only sets up the directory links but does not try 12256 to run all of the context setup; the compiler is never invoked; no 12257 code is autogenerated and things work. 12258 - CXXFLAGS: Add -fcheck-new whenever -fno-exceptions is used. From 12259 Beat Küng. 12260 12261 * Tools 12262 12263 - tools/refresh.sh: Recent complexities added to apps/ means that 12264 configuration needs the correct Make.defs file in place in order to 12265 configure properly. 12266 - tools/kconfig2html.c: Update to handle absolute paths when sourcing 12267 Kconfig files. 12268 - tools/mkfsdata.pl was still generating the old-style apps/include 12269 inclusion paths. 12270 12271 * Application Build/Configuration System: 12272 12273 - Add DIRLINK and DIRUNLINK tool definitions to apps/Make.defs. 12274 12275 * apps/nshlib: 12276 12277 - Fix FIFO_SIZE vs PIPE_SIZE. 12278 - Fix hex representation of IP address in Kconfig. Noted by Michal 12279 Lyszczek. 12280 - nsh_syscmds.c: missing semicolon. From Mateusz Szafoni. 12281 - In system command, don't try to flush output streams if stdio 12282 buffered I/O is not supported. 12283 12284 * apps/canutils: 12285 12286 - libuavcan: Under certain circumstances, DELIM is not be defined in 12287 Makefile. 12288 - Add definition for APPNAME in apps/canutils/canlib. From Sebastien 12289 Lorquet. 12290 12291 * apps/gpsutils: 12292 12293 - Fix an error minmea. From Aleksandr Vyhovanec. 12294 12295 * apps/examples: 12296 12297 - apps/examples/oneshot: If the requested delay is > max_delay, then 12298 break the delay up into several pieces. 12299 12300NuttX-7.19 Release Notes 12301------------------------ 12302 12303The 119th release of NuttX, Version 7.19, was made on December 26, 2016, 12304and is available for download from the Bitbucket.org website. Note 12305that release consists of two tarballs: nuttx-7.19.tar.gz and 12306apps-7.19.tar.gz. These are available from: 12307 12308 https://bitbucket.org/nuttx/nuttx/downloads 12309 https://bitbucket.org/nuttx/apps/downloads 12310 12311Both may be needed (see the top-level nuttx/README.txt file for build 12312information). 12313 12314Additional new features and extended functionality: 12315 12316 * Core OS: 12317 12318 - sched/semaphore, sched/phread/, libc/semaphore, libc/pthread: Add 12319 pthread_mutexattr_get/set_protocol and non-standard 12320 sem_get/set_protocol. These may use to enable or disable priority 12321 inheritance on a single semaphore. 12322 - Spinlocks: Added capability to provide architecture-specific memory 12323 barriers. 12324 - SMP: Add spin_trylock(). Use this in conditions where other CPUs need 12325 to stopped but we cannot call enter_critical_section(). 12326 - sched note: Extend OS instrumentation to include some SMP events. 12327 Also add spinlock instrumentation; In SMP configurations, add a 12328 filter mask to log only notes from certain CPUs. 12329 - sched note: Permit spinlock and critical section notes in in-memory 12330 buffer iff sched_not_get() interfaces is disabled. 12331 - sched note: Add additional note to see if/when CPU is started in SMP 12332 mode. 12333 - sched note: Record ID enumeration now results on constant values; ID 12334 values do not change with configuration. This makes writing post-processing software much easier. 12335 - boardctl: Add new boardctl() command, BOARDIOC_NX_START, to start the 12336 NX server as a kernel thread. 12337 - pthreads: Add pthread_cleanup_push() and pthread_cleanup_pop(). 12338 - pthreads: Added pthread_setcanceltype() and pthread_testcancel(). 12339 - pthreads: Add support for cancellation points. 12340 - task_delete() now obeys all cancellation point semantics. 12341 - Add task_setcancelstate(), task_setcanceltype(), and 12342 task_testcancel(). These are non-standard interfaces analogous to the 12343 corresponding pthread_ interfaces that provide cancellation controls 12344 for tasks. 12345 12346 * Graphics/Display Drivers: 12347 12348 - boardctl: Add new boardctl() command, BOARDIOC_NX_START, to start the 12349 NX server as a kernel thread. 12350 12351 * Networking/Network Drivers: 12352 12353 - Network drivers: Add option to use low-priority work queue to all 12354 Ethernet and MAC level drivers. 12355 - Network Drivers: Adapt all Ethernet (and other MAC) drivers to work 12356 as though CONFIG_NET_MULTIBUFFER were set. Remove all references to 12357 CONFIG_NET_MULTIBUFFER. 12358 - Eliminate CONFIG_NO_NOINTS. There is no longer any support for 12359 interrupt level processing of the network stack. Lots of files changed. 12360 12361 * Other Common Device Drivers: 12362 12363 - Vishay VEML6070: Add Vishay VEML6070 driver. From Alan Carvalho de 12364 Assis. 12365 12366 * ARMv7-A 12367 12368 - ARMv7-A/i.MX6: Add SCU register definitions. Add some controls to 12369 enable SMP cache coherency in SMP mode. Makes no difference, however 12370 -- cache still incoherent on i.MX6. 12371 - ARMv7 GIC: SGIs are non-maskable but go through the same path as 12372 other, maskable interrupts. Added logic to serialize SGI processing 12373 when necessary. 12374 12375 * Atmel SAM3/4: 12376 12377 - SAM3/4: Add SMP support for the dual-core SAM4CM. From Masayuki 12378 Ishikawa. 12379 12380 * Atmel SAM3/4 Drivers: 12381 12382 - Add support for the SAM5CMP-DB board. From Masayuki Ishikawa. 12383 12384 * Atmel SAM3/4 Boards: 12385 12386 - SAM4CMP-DB: Add support for the Atmel SAM4CMP-DB board running in an 12387 SMP configuration. From Masayuki Ishikawa. 12388 - SAM4CMP-DB: Add hooks to auto-mount the procfs file system on startup 12389 in board bring-up logic. 12390 12391 * Atmel SAMV7 Drivers: 12392 12393 - SAMv7: Register the watchdog device at the configured device path 12394 CONFIG_WATCHDOG_DEVPATH vs. hard-coded /dev/wdt. From Frank Benkert. 12395 12396 * Calypso 12397 12398 - Calyps: Remove all Calypso board configurations. Remove Calypso 12399 architecture support and support for Calypso SERCOMM driver. 12400 12401 * Misoc LM32: 12402 12403 - Misoc LM32: Adds basic support for the Misoc procoessors and the LM32 12404 in particular. From Ramtin Amin. 12405 - Misoc LM32: Add signal handling logic. From Ramtin Amin. 12406 - Misoc LM32: Add logic to flush/invalidate caches. From Ramtin Amin. 12407 12408 * Misoc LM32 Drivers: 12409 12410 - Misoc LM32 Serial: Add interrupting Misoc serial driver. From Ramtin 12411 Amin. 12412 - Misoc LM32 Timer: Add timer driver. From Ramtin Amin. 12413 - Misoc LM32: Add Misoc Ethernet driver From Ramtin Amin. 12414 12415 * Misoc LM32 Boards: 12416 12417 - Misoc LM32 Qemu: Board support for testing Misoc LM32 with Qemu. From 12418 Ramtin Amin. 12419 - Misoc LM32 Qemu: Integrate network support into configs/misoc/hello. 12420 From Ramtin Amin. 12421 - Misoc LM32 Qemu: Remove configs/misoc/include/generated directory. I 12422 suppose the intent now is that this is a symbolic link? DANGER! 12423 This means that you cannot compile this code with first generating 12424 these files a providing a symbolic link to this location! There is a 12425 sample directory containing generated sources. This is really only 12426 useful for performing test builds. You really must generate the Misoc 12427 architecture for a real-life build. From Ramtin Amin. 12428 12429 * NXP Freescale i.MX6 Drivers: 12430 12431 - i.MX6: Add an untested SPI driver taken directly from the i.MX1 port. 12432 12433 * NXP Freescale Kinetis: 12434 12435 - Kinetis: Added missing headers. Kinetis broke out SPI to 12436 kinetis/kinetis_spi.h. Broke out DMA to use the modern NuttX chip 12437 inclusion - still STUBS. Add Kinetis support for ARMV7-M Common 12438 Vector and FPU. Allow CONFIG_ARMV7M_CMNVECTOR, 12439 CONFIG_STACK_COLORATION, CONFIG_ARCH_FPU. Fix i2c driver offset 12440 swapped for value in kinetis_i2c_putreg. From David Sidrane. 12441 12442 * NXP Freescale Kinetis Drivers: 12443 12444 - Kinetis: Add UID Unique ID. From Neil Hancock. 12445 12446 * NXP Freescale Kinetis Boards: 12447 12448 - Freedom-K64F board: Add support for UID Unique ID. From Neil Hancock. 12449 12450 * NXP Freescale LPC17xx Boards: 12451 12452 - Olimex-LPC1766-STK: Enable procfs in NSH configuration. Automount 12453 /proc on startup. 12454 12455 * NXP Freescale LPC43xx Drivers: 12456 12457 - LPC43xx: Add timer driver: From Alan Carvalho de Assis. 12458 - LPC43xx GPDMA driver: The GPDMA block is basically the same as the 12459 LPC17xx. Only the clock configuration is different and LPC43xx has 12460 four different DMA request sources, where LPC17xx has only two. From 12461 Alan Carvalho de Assis. 12462 12463 * NXP Freescale LPC43xx Boards: 12464 12465 - Bambino 200E: Add basic support to Micromint Bambino 200E board. 12466 This includes contributions from Jim Wolfman. From Alan Carvalho de 12467 Assis. 12468 - Bambino 200E: Add support for timer driver. From Alan Carvalho de 12469 Assis. 12470 12471 * RGMP: 12472 12473 - Remove RGMP and RGMP drivers. 12474 12475 * RISC-V: 12476 12477 - RISC-V: Add support for the RISC-V architecture and 12478 configs/nr5m100-nexys4 board. The board support on this is pretty 12479 thin, but it seems like maybe a good idea to get the base RISC-V stuff 12480 in since there are people interested in it. From Ken Pettit. 12481 12482 * STMicro STM32 Drivers: 12483 12484 - STM32 F3: Implementation of the STM32 F37xx SDADC module. There are 12485 also changes to ADC, DAC modules. SDADC has only been tested in DMA 12486 mode and does not support external TIMER triggers. This is a work in 12487 progress. From Marc Rechté. 12488 - STM32 F3: Add PWM driver support for STMF37xx. The changes have been 12489 tested successfully for TIM4 and TIM17 (different IPs). From Marc 12490 Rechté. 12491 - STM32 F4: Support oversampling by 8 for the STM32 F4. From David 12492 Sidrane. 12493 - STM32 F4: Added Timers 2-5 and control of SAI and I2S PLLs. Added 12494 support for stmf469 SAI and I2S PLL configuration and STM446 fixes. 12495 From David Sidrane. 12496 - STM32 F4: Expanded OTGFS support to stm32F469 and stm32f446. Added 12497 missing bit definitions, Used stm32F469 and stm32f446 bit 12498 definitions, Removed unused header file. From David Sidrane. 12499 - STM32 F4: Allow dma in 1 bit mode in STM32F4xxx. From David Sidrane. 12500 - STM32 F7: Allow the config to override the clock edge setting. From 12501 David Sidrane. 12502 - STM32 L4: Support Complementary PWM outputs on STM32L4. From 12503 Sebastien Lorquet. 12504 - STM32 L4: Add implementation of dumpgpio for stm32l4, was required 12505 for pwm debug. From Sebastien Lorquet. 12506 12507 * STMicro STM32 Boards: 12508 12509 - STM32F103 Minimum: Add button support. From Alan Carvalho de Assis. 12510 - STM32F103 Minimum: Add support to PWM on STM32F103-Minimum board. 12511 From Alan Carvalho de Assis. 12512 - STM32F103 Minimum: Add RGB LED support on STM32F103 Minimum board. 12513 From Alan Carvalho de Assis. 12514 - STM32F103 Minimum: Add Vishay VEML6070 driver support to the 12515 STM32F103-Minimum board. From Alan Carvalho de Assis. 12516 - Nucleo-F303RE: Add STM32 F303RE hello configuration. From Marc 12517 Rechté. 12518 - Nucleo-L476: Support PWM testing on board Nucleo L476. From 12519 Sebastien Lorquet. 12520 - Nucleo L476: Add support for timers to Nucleo L476. From Sebastien 12521 Lorquet. 12522 - Hymini STM32v: Enable CONFIG_RTC in the hymini-stm32v/nsh2 12523 (kitchensink) config. From Maciej Wójcik. 12524 - Olimex STM32-p407: Add support for the Olimex STM32 P407 board. 12525 12526 * TI Tiva Drivers: 12527 12528 - Tiva PWM: Support PWM_PULSECOUNT feature for TI tiva. From Young.Mu. 12529 12530 * Xtensa/ESP32 12531 12532 - Xtensa ESP32: Basic architectural support for Xtensa processors and 12533 the Espressif. ESP32 added. 12534 - Xtensa ESP32: Add EXPERIMENTAL hooks to support lazy Xtensa 12535 co-processor state restore in the future. 12536 - Xtensa ESP32: Basic port is function in both single CPU and dual CPU 12537 SMP configurations. There is an NSH configuration for each CPU 12538 configuration. Outstanding issues include missing clock configuration 12539 logic, missing partition tables to support correct configuration from 12540 FLASH, and some serial driver pin configuration issues. 12541 - Xtensa ESP32: Add stack checking logic. 12542 12543 * Xtensa/ESP32 Boards: 12544 12545 - ESP32 Core v2: Basic support for Espressif ESP32 Core v2 board 12546 added. The initial release includes an NSH and an SMP test 12547 configuration. 12548 - ESP32 Core v2: Add configuration to support linking NuttX for 12549 execution out of IRAM. 12550 - ESP32 Core v2: Automatically mount /proc at start-up. 12551 - ESP32 Core v2: Add an OS test to verify the port. 12552 12553 * C Library/Header Files: 12554 12555 - libc/locale: Add a dummy setlocale() function to avoid drawing the 12556 function from newlib. Add clocale header file. 12557 - include/locale.h: Modify locale.h to add localeconv() and lconv 12558 structure. From Alan Carvalho de Assis. 12559 - libc/locale: Allows c++ code to compile with or without 12560 CONFIG_LIBC_LOCALE and will generate a link error if 12561 CONFIG_LIBC_LOCALE is not defined and setlocale is referenced. With 12562 CONFIG_LIBC_LOCALE defined setlocale will act as if MB string is not 12563 supported and return "C" for POSIX. C and "". From David Sidrane. 12564 - libc/wchar: Add wcslen, wmemchr, wmemcmp, wmemcpy wmemset, btowc, 12565 mbrtowc, mbtowc, wcscmp, wcscoll, and wmemmove to NuttX. From Alan 12566 Carvalho de Assis. 12567 - libc/wctype: Add functions wcrtomb, wcslcpy, wcsxfrm, wctob, wctomb, 12568 wctype, localeconv, strcoll, strxfrm, swctype, towlower, towupper and 12569 wcsftime. Add wctype.h; Move lib_wctype.c to libc/wctype. From Alan 12570 Carvalho de Assis. 12571 - include/ctype.h : Add isblank() macro to ctype.h. From Alan Carvalho 12572 de Assis. 12573 - lic/stdlib: Add strtof() and strtold() as simply a copy of strtod 12574 with types and limits changed. 12575 - sscanf(): Use strtof() instead of strtod() if a short floating point 12576 value was requested. The should help performance with MCUs with 12577 32-bit FPU support with some additional code size. 12578 - sscanf(): Add scansets to the scanf function. Enabled 12579 CONFIG_LIBC_SCANSET option. From Aleksandr Vyhovanec. 12580 - include/inttypes.h: Add architecture-specific inttypes.h. From Paul 12581 A. Patience. 12582 - C Library: Allow option to enable IP address conversions even when 12583 the IP address family is not supported. 12584 12585 * Build/Configuration System: 12586 12587 - The Smoothie project needs to compile C++ inside config/boardname/src/ 12588 to use with High Priority Interruption, then I modified the board 12589 configs Makefile to support it. It works fine for the first time 12590 compilation, but if we execute "touch config/boardname/src/Pin.cxx" 12591 and execute "make" it will not detect that Pin.cxx was modified. I 12592 think there is some other place I should modify, but I didn't find 12593 it. From Alan Carvalho de Assis. 12594 12595 * Tools: 12596 12597 - tools/: Add tools/showsize.sh. 12598 12599 * NSH: apps/nshlib: 12600 12601 - NSH: dd command will show statistics. From Masayuki Ishikawa. 12602 12603 * Applications: apps/system: 12604 12605 - apps/system/sched_note: Extend to include additions to instumentation 12606 for SMP. 12607 - apps/system/sched_note: Add support for spinlock notes. 12608 - apps/system/sched_note: Add support for new scheduler instrumentation. 12609 12610 * Platforms: apps/platform: 12611 12612 - ESP32 Core v2: Add platform support for the ESP32 core v2 board. 12613 - Olimex STM32-p407: Add platform support for the Olimex STM32 P407. 12614 12615 * Graphics: apps/graphics 12616 12617 - graphics/traveler/tcledit and libwld: Add an X11 Tcl/Tk tool that can 12618 be used to edit Traveler world files. 12619 - Graphics: Remove all NX server taks. Instead, call boardctl() to the 12620 NX server kernel thread. 12621 12622 * Applications: apps/examples: 12623 12624 - examples/buttons: Add a new buttons example that uses the button 12625 character driver instead of the architecture buttons directly. From 12626 Alan Carvalho de Assis. 12627 - examples/cctype: Add an example to verify cctype functions. 12628 - Remove RGMP example. 12629 - examples/ostest: Extend the pthread cancellation test to exercise 12630 pthread_cleanup_push() (and pthread_cleanup_pop() indirectly via 12631 pthread_cancel() and pthread_exit(). 12632 - examples/ostest: enhance pthread cancellation test some. 12633 12634Works-In-Progress: 12635 12636 * IEEE802.14.5/6LowPAN. Hooks and framework for this effort were 12637 introduced in NuttX-7.15. Work has continued on this effort on 12638 forks from the main repositories, albeit with many interruptions. 12639 The completion of this wireless feature will postponed until at 12640 least NuttX-7.20. 12641 12642Bugfixes. Only the most critical bugfixes are listed here (see the 12643ChangeLog for the complete list of bugfixes and for additional, more 12644detailed bugfix information): 12645 12646 * Core OS: 12647 12648 - sched/semaphore: Within the OS, when a thread obtains a semaphore 12649 count it must call sem_addholder() if CONFIG_PRIORITY_INHERITANCE is 12650 enabled. If a count is available, then sem_wait() calls 12651 sem_addholder(), otherwise it waited for the semaphore and called 12652 sem_addholder() when it eventually received the count. This caused a 12653 problem when the thread calling sem_wait() was very low priority. 12654 When it received the count, there may be higher priority threads 12655 "hogging" the CPU that prevent the lower priority task from running 12656 and, as a result, the sem_addholder() may be delayed indefinitely. 12657 The fix was to have sem_post() call sem_addholder() just before 12658 restarting the thread waiting for the semaphore count. This problem 12659 was noted by Benix Vincent who also suggested the solution. 12660 - Many files: Make sure that priority inheritance is not enabled for 12661 semaphores whose primary use is signaling (vs locking of resources) by 12662 calling sem_setprotocol(). 12663 - sched/semaphore: sem_trywait() no longer modifies the errno value 12664 UNLESS an error occurs. This allows these functions to be used 12665 internally without clobbering the errno value. From Freddie Chopin. 12666 - sched/clock: Correct clock initialization. The correct range for the 12667 month is 0-11 but is entered as 1-12 in the .config file. Add ranges 12668 to START_YEAR, MONTH, and DAY in sched/Kconfig. 12669 - sched/clock: Correct calculation for the case of Tickless mode with a 12670 32-bit timer. In that case, the calculation was returning millisecond 12671 accuracy. That is not good when the timer accuracy is < 1 msec. From 12672 Rajan Gill. 12673 - Work Queue: When queuing new LP work, don't signal any threads if 12674 they are all busy. From Heesub Shin. 12675 - Work Queue: Signal sent from work_signal() may interrupt the low 12676 priority worker thread that is already running. For example, the 12677 worker thread that is waiting for a semaphore could be woken up by the 12678 signal and break any synchronization assumption as a result. It also 12679 does not make any sense to send signal if it is already running and 12680 busy. This change fixes it. From Heesub Shin. 12681 - Fix DEBUGASSERT() in group_signal.c. From Masayuki Ishikawa. 12682 - Eliminate bad boardctl() commands: Remove all references to 12683 BOARDIOC_PWMSETUP and board_pwm_setup(). Remove all references to 12684 BOARDIOC_ADCSETUP and board_adc_setup(). Remove 12685 BOARDIOC_CAN_INITIALIZE. CAN initialization is now done in the board 12686 initialization logic just like every other device driver. 12687 - pthreads: Fix an error in pthread_mutex_destroy(). An error could 12688 occur while destroying a mutex after a pthread has been canceled while 12689 holding the mutex. 12690 - task_restart: Make sure new task starts with pre-emption disabled and 12691 not in a critical section. 12692 - Enter/leave Critical Sections. Major redeign to 12693 enter/leave_critical_section logic to deal with the case where 12694 interrupts are disabled only on the local CPU. In this case, some 12695 rather complex spinlocks must be used to maintain the critical section 12696 across all CPUs. 12697 - SMP Critical Sections: Fixes for the SMP case: (1) Change order for 12698 SMP case in enter_critical_section: (1) Disable local interrupts 12699 BEFORE taking spinlock and (2) If SMP is enabled, if any interrupt 12700 handler calls enter_critical_section(), it should take the spinlock. 12701 - SMP wdogs: Wdog timers use a tasking interface that to manipulate 12702 wdogs, and a different interface in the timer interrupt handling logic 12703 to manage wdog expirations. In the single CPU case, this is fine. 12704 Since the tasking level code calls enter_critical_section, interrupts 12705 are disabled and no conflicts can occur. But that may not be the case 12706 in the SMP case. Most architectures do not permit disabling 12707 interrupts on other CPUs so enter_critical_section must work 12708 differently: Locks are required to protect code. this change adds 12709 locking (via enter_critical section) to wdog expiration logic for the 12710 the case if the SMP configuration. 12711 - SMP vfork(): Fix a race condition in the SMP case. Existing logic 12712 depended on the fact that the child would not run until waitpid was 12713 called because the child had the same priority as the parent. BUT in 12714 the SMP case that is not true... the child may run immediately on a 12715 different CPU. 12716 - SMP: This change adds a new internal interfaces and fixes a problem 12717 with three APIs in the SMP configuration. The new internal interface 12718 is sched_cpu_pause(tcb). This function will pause a CPU if the task 12719 associated with 'tcb' is running on that CPU. This allows a different 12720 CPU to modify that OS data structures associated with the CPU. When 12721 the other CPU is resumed, those modifications can safely take place. 12722 The three fixes are to handle cases in the SMP configuration where one 12723 CPU does need to make modifications to TCB and data structures on a 12724 task that could be running running on another CPU. Those three cases 12725 are task_delete(), task_restart(), and execution of signal handlers. 12726 In all three cases the solutions is basically the same: (1) Call 12727 sched_cpu_pause(tcb) to pause the CPU on which the task is running, 12728 (2) perform the necessary operations, then (3) call up_cpu_resume() to 12729 restart the paused CPU. 12730 - SMP: Add logic to avoid a deadlock condition when CPU1 is hung waiting 12731 for g_cpu_irqlock with interrupts interrupts and CPU0 is waiting for 12732 g_cpu_paused. 12733 - SMP: Enforce this rule: Tasks which are normally restored when 12734 sched_unlock() is called must remain pending (1) if we are in a 12735 critical section, i.e., g_cpu_irqlock is locked , or (2) other CPUs 12736 still have pre-emption disabled, i.e., g_cpu_schedlock is locked. In 12737 those cases, the release of the pending tasks must be deferred until 12738 those conditions are met. 12739 12740 * File System/Block Drivers/MTD Drivers: 12741 12742 - AT24XX EEPROM MTD driver: Added EEPROM timeout. Fromo Aleksandr 12743 Vyhovanec. 12744 - fs/procfs: Fix procfs status for SMP case. 12745 12746 * Graphics/Graphic Drivers: 12747 12748 - Fonts: Correct some default font IDs. From Pierre-Noel Bouteville. 12749 12750 * Common Drivers: 12751 12752 - usbhost/enumerate: Fix possible buffer overwrite. From Janne Rosberg. 12753 - usbhost/composite: Fix compile; missing semicolons. From Jann Rosberg. 12754 - syslog: Fixes required for file syslog output. From Max Kriegleder. 12755 - SPI configuration: Fix Kconfig warning. This change moves the 12756 ARCH_HAVE_SPI options outside the check for SPI. Those options don't 12757 depend on SPI, and Kconfig files in arch/ enable them even if SPI 12758 isn't enabled. Source the driver's Kconfig in drivers/Kconfig only 12759 if support for the driver is enabled prevents us from defining these 12760 ARCH_HAVE options in the driver's Kconfig. We should probably remove 12761 the other checks in drivers/Kconfig and check if the drivers are 12762 enabled only in their Kconfig. From Paul A. Patience. 12763 - drivers/timer: Remove the timer driver TIOC_SETHANDLER IOCTL call. 12764 This calls directly from the timer driver into application code. That 12765 is non-standard, non-portable, and cannot be supported. Instead, add 12766 timer driver hooks to support signal notification of timer 12767 expiration. Signal notification logic added by Sebastien Lorquet. 12768 - All timer lower half drivers. Port Sebastien's changes to all other 12769 implementations of the timer lower half. 12770 - USB MSC Device: Fix length of mode6 sense reply packet. From 12771 Wolfgang Reißnegger. 12772 - USB Composite Host: Fix end offset in usbhost_copyinterface(). From 12773 Janne Rosberg. 12774 - USB CDC/ACM Host: Add CDC_SUBCLASS_ACM and CDC_PROTO_ATM to 12775 supported class and proto. From Janne Rosberg. 12776 - SSD1306: Fix errors in SPI mode configuration. From Gong Darcy. 12777 - CDC/ACM Device Class: uart_ops_s portion of cdcacm will not be 12778 initialized with correct functions if CONFIG_SERIAL_DMA is selected. 12779 12780 * Networking/Network Drivers: 12781 12782 - drivers/net/tun.c: Fix bug in TUN interface driver. From Max Nekludov. 12783 12784 * ARMv7-A: 12785 12786 - ARMv7-A SMP: Add SMP logic to signal handling. 12787 12788 * ARMv7-M: 12789 12790 - ARMv7-M: Fix double allocation of MPU region in mmu.h. 12791 12792 * ARMv7-R: 12793 12794 - ARMv7-R: Fix compilation error. This change fixes compilation errors 12795 on MPU support for ARMv7-R. From Heesub Shin. 12796 - ARMv7-R: fix invalid drbar handling. In ARMv7-R, [31:5] bits of DRBAR 12797 is physical base address and other bits are reserved and SBZ. Thus, 12798 there is no point in passing other than the base address. From Heesub 12799 Shin. 12800 - ARMv7-R: Remove the redundant update on SCTLR. mpu_control() is 12801 invoking cp15_wrsctlr() around SCTLR update redundantly. From Heesub 12802 Shin. 12803 - ARMv7-R: Add new Kconfig entries for D/I-cache. Unlike in ARMv7-A/M, 12804 Kconfig entries for data and instruction caches are currently missing 12805 in ARMv7-R. This change adds those missing Kconfig entries. Actual 12806 implementation for those functions will be added in the subsequent 12807 patches. From Heesub Shin. 12808 - ARMv7-R: Add cache handling functions. This change adds functions for 12809 enabling and disabling d/i-caches which were missing for ARMv7-R. 12810 From Heesub Shin. 12811 - ARMv7-R: Fix typo in mpu support. s/ARMV7M/ARMV7R/g. From Heesub Shin. 12812 - ARMv7-R: Fix CPSR corruption after exception handling. A sporadic 12813 hang with consequent crash was observed when booting. It seemed to be 12814 caused by the corrupted or wrong CPSR restored on return from 12815 exception. NuttX restores the context using code like this: msr spsr, 12816 r1. GCC translates this to: msr spsr_fc, r1. As a result, not all 12817 SPSR fields are updated on exception return. This should be: msr 12818 spsr_fsxc, r1. On some evaluation boards, spsr_svc may have totally 12819 invalid value at power-on-reset. As it is not initialized at boot, the 12820 code above may result in the corruption of cpsr and thus unexpected 12821 behavior. From Heesub Shin. 12822 - ARMv7-R: Fix to restore the Thumb flag in CPSR. Thumb flag in CPSR is 12823 not restored back when the context switch occurs while executing thumb 12824 instruction. From Heesub Shin. 12825 12826 * Atmel SAM3/4 Drivers: 12827 12828 - SAM3/4 UDP: Add delay between setting and clearing the endpoint RESET 12829 bit in sam_ep_resume(). We need to add a delay between setting and 12830 clearing the endpoint reset bit in SAM_UDP_RSTEP. Without the delay 12831 the USB controller will (may?) not reset the endpoint. If the 12832 endpoint is not being reset, the Data Toggle (DTGLE) bit will not to 12833 be cleared which will cause the next transaction to fail if DTGLE is 12834 1. If that happens the host will time-out and reset the bus. Adding 12835 this delay may also fix the USBMSC_STALL_RACEWAR in usbmsc_scsi.c, 12836 however this has not been verified yet. From Wolfgang Reißnegger. 12837 - SAM3/4: Remove unused 'halted' flag from UDP driver. From Wolfgang 12838 Reißnegger. 12839 - SAM3/4: Remove 'stalled' flag from the UDP driver. This flag is not 12840 necessary because the state of the endpoint can be determined using 12841 'epstate' instead. From Wolfgang Reißnegger. 12842 12843 * Atmel SAM3/4 Boards: 12844 12845 - SAM4S Xplained Pro: Configuration uses old, improper timer interface. 12846 CONFIG_TIMER disabled in configuration. Remove obsolete timer 12847 initialization logic. 12848 12849 * Atmel SAMV7 Drivers: 12850 12851 - SAMv7 USBDEVHS: A problem occurred with the SAMV7 USBDEVHS driver if 12852 the USB cable is unplugged while a large amount of data is send over 12853 an IN endpoint using DMA. If the USB cable is plugged in again after a 12854 few seconds it is not possible to send data over this IN endpoint 12855 again, all other endpoints work as expected. The problem occurs 12856 because if the USB cable is unplugged while an DMA transfer is in 12857 flight the transfer is canceled but the register SAM_USBHS_DEVDMACTRL 12858 is left in an undefined state. The problem was fixed the problem by 12859 resetting the register SAM_USBHS_DEVDMACTRL to a known state. 12860 Additionally all pending interrupts are cleared. From Stefan Kolb. 12861 - SAMV7 MCAN: Prevent Interrupt-Flooding of ACKE when not connected to 12862 CAN-BUS. An Acknowledge-Error will occur every time no other CAN Node 12863 acknowledges the message sent. This will also occur if the device is 12864 not connected to the can-bus. The CAN-Standard declares, that the Chip 12865 has to retry a given message as long as it is not sent successfully 12866 (or it is not cancelled by the application). Every time the chip tries 12867 to resend the message an Acknowledge-Error-Interrupt is generated. At 12868 high baud rates this can lead in extremely high CPU load just for 12869 handling the interrupts (and possibly the error handling in the 12870 application). To prevent this Interrupt-Flooding we disable the ACKE 12871 once it is seen as long we didn't transfer at least one message 12872 successfully. From Frank Benkert. 12873 - SAMV7 MCAN: Make delete_filter functions more robust. From Frank 12874 Benkert. 12875 12876 * Atmel SAMA5 Drivers: 12877 12878 - SAMA5 PWM: Driver does not build when executing from SDRAM before 12879 board frequencies are not constant. Rather, the bootloader configures 12880 the clocking and we must derive the clocking from the MCK left by the 12881 bootloader. This means lots more computations. This is untested on 12882 initial change because I don't have a good PWM test setup right now. 12883 12884 * Misoc LM32: 12885 12886 - Misoc LM32: Corrects a bug that never occurred in qemu on simulation or 12887 real fpga. The error was that the r1 register was being modified out 12888 of context switching and not restoring it. From Ramtin Amin 12889 12890 * NXP Freescale i.MX6: 12891 12892 - i.MX6 interrupt handling: Additional logic needed to handle nested 12893 interrupts when an interrupt stack is used. Nesting can occur because 12894 SGI interrupts are non-maskable. 12895 12896 * NXP Freescale LPC43xx Drivers: 12897 12898 - LPC43xx serial: Fix a typo in ioctl TIOCSRS485 ioctl. From Vytautas 12899 Lukenskas. 12900 - LPC43xx serial: Restore RS485 mode on serial port open (if RS485 is 12901 enabled via menuconfig). From Vytautas Lukenskas. 12902 - LPC43xx SD/MMC: Correct some definitions on SMMC control register in 12903 lpc43_sdmmc.h. From Alan Carvalho de Assis. 12904 - LPC43xx SD card: Correct pin configuration options needed for SD card 12905 pins. From Alan Carvalho de Assis. 12906 12907 * SiLabs EFM32: 12908 12909 - EFM32: Fix a compilation error. From Pierre-noel Bouteville. 12910 12911 * STMicro STM32 Drivers: 12912 12913 - STM32 CHxN channels are always outputs. From Sebastien Lorquet. 12914 - STM32 DAC: Fix shift value whenever there are is a DAC2 and, hence, 12915 up to three interfaces. From Marc Rechté. 12916 - STM32 F1: Add TIM8 to STM32F103V pinmap. From Maciej Wójcik. 12917 - STM32 F1: Fix for F1 RTC Clock, tested on F103. From Maciej Wójcik. 12918 - STM32 F3: STM32F303xB and STM32F303xC chips have 4 ADCs. From Paul 12919 A. Patience. 12920 - STM32 F4: A new implementation of the STM32 F4 I2C bottom half. The 12921 common I2C as this did not handled correctly in the current 12922 implementation (see also https://github.com/PX4/NuttX/issues/54). The 12923 changes almost exclusively affect the ISR. From Max Kriegleder. 12924 - STM32 F4 OTGHS Host: If STM32F446 increase number of channels to 12925 16. From Janne Rosberg. 12926 - STM32 F4: I think, that Size is (highest address+1 - Base address). 12927 Base address has been removed and if address+count >= size we are 12928 outside of the Flash. From David Sidrane. 12929 - STM32 F4: Fix ADC compilation error when DMA isn't enabled. From Paul 12930 A. Patience. 12931 - STM32 F4: STM32F427 was rebooting. Over reached family. From David 12932 Sidrane. 12933 - STM32 F4: Added STM32F469 RAM size and deliberated STM32F446 size. 12934 From David Sidrane. 12935 - STM32 F4: Typo in stm32f76xxxx_pinmap.h edited online with 12936 Bitbucket. From David Sidrane. 12937 - STM32 F7: stm32_i2c.c Dejavu. Fixes a bug previously found in the 12938 F4. From David Sidrane. 12939 - STM32 F7: OTGDEV fixed typo. From David Sidrane. 12940 - STM32 F7: Fix to SPI-Master driver. Without this the chip select 12941 decoding feature will not work properly. From Michael Spahlinger. 12942 - STM32 F7: STM32F7 SD/MMC driver depends on CONFIG_SDIO_DMA which is 12943 only defined in stm32/Kconfig. Changed to CONFIG_STM32F7_SDMMC_DMA 12944 and defined in stm32f7/Kconfig. 12945 - STM32 F7: Fix some STM32F7 copy paste errors. From David Sidrane. 12946 - STM32 L4: Complementary PWM outputs on STM32L4" (1) too many 12947 parentheses when calculating max chan count and (2) channel 4 does not 12948 have a complementary output. From Sebastien Lorquet. 12949 - STM32 L4: Fix I2C devices RCC registers. From Sebastien Lorquet. 12950 - STM32 L4: Enable and renaming for 32l4 UARTs 4 and 5. From Sebastien 12951 Lorquet. 12952 - STM32 L4: Change the way to configure quadrature encoder prescalers. 12953 From Sebastien Lorquet. 12954 - STM32 L4: Correct USART1/2 definitions. Use default mbed UART4 12955 settings. From Sebastien Lorquet. 12956 12957 * STMicro STM32 Boards: 12958 12959 - STM32F103 Minimum: Fix Timers 2 to 7 clock frequencies. From Alan 12960 Carvalho de Assis. 12961 - Nucleo-F303RE: Remove duplicate setting from board.h. From Marc 12962 Rechté. 12963 - Nucleo F303RE: Various fixes to get the ADC configuration building 12964 again after PR. Refresh all configurations. 12965 - Nucleo L476RG: Add better selection of timer. 12966 12967 * TI Tiva Boards: 12968 12969 - DK-TM4C129x: Typo fix. From Wolfgang Reißnegger. 12970 12971 * Xtensa ESP32: 12972 12973 - ESP32 core v2: Flush the UART TX buffer in the esp32 serial shutdown 12974 routine. The ROM bootloader does not flush the FIFO before handing 12975 over to user code, so some of this output is not currently seen when 12976 the UART is reconfigured in early stages of startup. From Angus 12977 Gratton. 12978 - Xtensa ESP32: Corrects a problem with dispatching to signal 12979 handlers: Cannot vector directly to the signal handling function as 12980 in other ABIs under the Xtensa Window ABI. In that case, we need to 12981 go through a tiny hook when performs the correct window call (call4) 12982 otherwise registers will be scrambled in the signal handler. 12983 12984 * Xtensa ESP32 Boards: 12985 12986 - ESP32 core v2: Changes the openocd config file's default flash 12987 voltage from 1.8V to 3.3V. This is not necessary right now, but may 12988 save some hard-to-debug moments down the track (3.3V-only flash 12989 running at 1.8V often half-works and does weird things...). From 12990 Angus Gratton. 12991 12992 * C Library/Header Files: 12993 12994 - libc/stdio: Fixes sscanf() %sn where strlen(data) < n. From David 12995 Sidrane. 12996 - libc/stdio: Include wchar.h in lib_libvsprintf.c to fix compilation 12997 error. From Alan Carvalho de Assis. 12998 - include/sys/time.h: timersub macro modified per recommendations of 12999 phreakuencies. 13000 - include/ctype.h and cxx/cctype: Implement ctype.h functions as inline 13001 if possible. cctype can then properly select namespace. 13002 - include/: Fix a number of header files with mismatched 'extern C {' 13003 and '}'. 13004 - libc/unisted: Change brings strtol() and related functions more 13005 conformant with POSIX. Corner cases like strtol(-2147483648, NULL, 13006 10) now pass clang -fsanitize=integer without warnings. From Juha 13007 Niskanen. 13008 - libc/unistd: sleep() was returning remaining nanoseconds (kind of), 13009 instead the remaining seconds. From Eunbong Song. 13010 - termios.h: Fix CRTSCTS define to include input and output flow. From 13011 Lorenz Meier. 13012 13013 * Build/Configuration System: 13014 13015 - configs/*/defconfig: The buttons example was changed to archbuttons. 13016 As a result all of the button configurations are broken and need some 13017 renaming in the defconfig files. Noted by Frank Berkert. 13018 - config/*/defconfgs: More fallout from name change of 13019 apps/examples/buttons to archbuttons. 13020 - configs: All QE encoder files. Last change made timer hard-coded to 13021 3. Make configurable. 13022 - configs: Remove all traces of the no-longer existent ARCHBUTTONS 13023 example. Remove all button configurations that depended on the 13024 obsoleted ARCHBUTTON example. 13025 - minnsh Configurations: Remove minnsh configurations and support 13026 logic: up_getc() and lowinstream. This was an interesting exercise 13027 to see just how small you could get NuttX, but otherwise it was not 13028 useful: (1) the NSH code violated the OS interface layer by callup 13029 up_getc() and up_putc() directly, and (2) while waiting for character 13030 input, NSH would call up_getc() which would hog all of the CPU. Not a 13031 reasonable solution other than as a proof of concept. 13032 13033 * Application Build/Configuration System: 13034 13035 - Make.defs: Using wrong link script if native window tool used with 13036 Cygwin. 13037 13038 * apps/platform: 13039 13040 - ESP32 Core v2 Platform: Fix some naming that prevented building the 13041 C++ support. 13042 13043 * apps/nshlib: 13044 13045 - NSH Library: nsh_getdirpath(), use snprint instead of sprintf to 13046 avoid possibility of buffer overrun. Noted by Chung Hwan Kim. 13047 13048 * apps/system: 13049 13050 - Remove std_readline(). This called up_getc() and up_putc() directly, 13051 violating the POSIX OS interface. 13052 13053 * apps/netutils: 13054 13055 - FTPD: Fixed bug that didn't free ftpd resources on exit. From Pascal 13056 Speck. 13057 - NTP client: Fix missing left parenthesis. From Pierre-Noel Bouteville. 13058 - cJSON: Import patch to fix:cJSON_PrintUnformatted() behaves unexpected 13059 if an empty array shall be printed to text. from Jerome Lang 13060 2012-04-19. From Pierre-Noel Bouteville. 13061 - esp8266 update cosmetic and many bug fix. From Pierre-Noel Bouteville. 13062 - FTPD: Fix bug un ftpd file or socket may be not closed. From 13063 Pierre-Noel Bouteville. 13064 13065 * apps/modbus: 13066 13067 - Modbus Master is missing many files and doesn't compile at all. More 13068 details in 13069 https://groups.yahoo.com/neo/groups/nuttx/conversations/topics/13734. 13070 From Vytautas Lukenskas. 13071 13072 * apps/examples: 13073 13074 - The examples/qencoder app was trying to init the encoder by a direct 13075 call into the board, cheating in a local header to declare the 13076 normally unavailable function prototype. From Sebastien Lorquet. 13077 - apps/examples/timer: Should detach signal handler before exiting. 13078 - examples/qencode: The examples/qencoder app was trying to init the 13079 encoder by a direct call into the board, cheating in a local header to 13080 declare the normally unavailable function prototype. From Sebastien 13081 Lorquet. 13082 - apps/examples/archbuttons: Removed because it violates OS interface 13083 principles. 13084 - examples/adc, pwm, can: Remove all usage of BOARDIOC_ADCTEST_SETUP, 13085 BIOARDIOC_PWMSETUP. Remove BOARDIOC_CAN_INITIALIZE. CAN 13086 initialization is now done in the board initialization logic just like 13087 every other device driver. 13088 - examples/ostest: Add some delays to the pthread cancellation test. 13089 With deferred cancellation enabled, things happen more asynchronously. 13090 13091NuttX-7.20 Release Notes 13092------------------------ 13093 13094The 120th release of NuttX, Version 7.20, was made on March 8, 2017, 13095and is available for download from the Bitbucket.org website. Note 13096that release consists of two tarballs: nuttx-7.20.tar.gz and 13097apps-7.20.tar.gz. These are available from: 13098 13099 https://bitbucket.org/nuttx/nuttx/downloads 13100 https://bitbucket.org/nuttx/apps/downloads 13101 13102Both may be needed (see the top-level nuttx/README.txt file for build 13103information). 13104 13105Additional new features and extended functionality: 13106 13107 * Core OS: 13108 13109 - Kernel Modules: Module initializer may now return a symbol table. 13110 - Modules: Extend the module interface so that we can access symbols 13111 exported by the module. 13112 - Shared Libraries: In the FLAT build mode, kernel modules may be 13113 used to provide minimal shared library functionality. 13114 - Modules/Shared Libraries: Add support for dependencies between 13115 modules. 13116 - Module Library: Add build a configuration logic for a shared module 13117 library. 13118 - Shared Libraries: Implement module based shared libraries for the 13119 PROTECTED mode build. 13120 - Interrupt handling: irq_attach() now includes an argument of type 13121 xcpt_t that retained with the handler address. That argument is 13122 then provided to the interrupt handler when the interrupt occurs. 13123 The common parameter passing replaces the ad hoc parmater passing 13124 implemented in current drivers. From Mark Schulte. 13125 - Adapt many drivers to utilize the IRQ argument feature. 13126 - All functions that used to return an xcpt_t old handler value, now 13127 return an int error code. The oldhandler value is no longer useful 13128 with the recent changes to the interrupt argument passing. Some of 13129 the functions effected include board_button_irq(), arch_phy_irq(), 13130 STM32 EXTI functions (Alarm, COMP, PVD), GPIO interrupt logic like 13131 kinetis_pinirq(), stm32_gpiosetevent(), and others. 13132 - IRQ subsystem: Add support for smaller interrupt tables as 13133 described at 13134 https://cwiki.apache.org/confluence/display/NUTTX/Smaller+Vector+Tables. 13135 This is partially the work of Mark Schulte. 13136 13137 * File Systems/Block and MTD Drivers 13138 13139 - Pseudo File System: Add support for soft links in the top-level 13140 pseudo file system. 13141 - Soft links: Add an implementation of readlink(). 13142 - Add fstat() support. Implement fstat() method in binfs, romfs, 13143 unionfs, tmpfs, nxffs, nfx, hostfs, procfs, and smartfs. 13144 - fstat: Add fstat() support to FAT. From Alan Carvalho de Assis. 13145 13146 * Graphics/Display Drivers: 13147 13148 - Fonts: Add support for Tom Thumb small mono-space font. From Alan 13149 Carvalho de Assis. 13150 - Graphics: Separated of font cache from graphics/nxterm. Now in 13151 libnx/nxfronts where it can be shared with other graphics 13152 applications. 13153 13154 * Networking/Network Drivers: 13155 13156 - Ethernet drivers: Add framework for serialization in the case where 13157 multiple low-priority work queues are used. 13158 13159 * Other Common Device Drivers: 13160 13161 - Add capabilities() method to SDIO interface. Remove 13162 CONFIG_SDIO_WIDTH_D1_ONLY. That should not be a global propertie, 13163 but rather a capability/limitation of single slot when there may be 13164 multiple slots. 13165 - Removed dmasupported() method from the SDIO interface. That is now 13166 a bit in the capability set. 13167 - drivers/sensors: Add driver for the ST L3GD20 3 axis gyro. From 13168 raiden00. 13169 13170 * Atmel SAM3/4: 13171 13172 - SAM3/4: Add support for ATSAM4S4C. From Wolfgang Reißnegger. 13173 13174 * NXP Freescale i.MX6 Boards: 13175 13176 - Sabre 6quad: Enable examples/smp test in i.MX6 SMP/NSH 13177 configurations. 13178 13179 * NXP Freescale Kinetis: 13180 13181 - Kinetis: Added support for CHIP_MK60FN1M0VLQ12 chip. From Maciej 13182 Skrzypek. 13183 - Kinetis: Add support for K64/K66 RTC lower half driver. From Neil 13184 Hancock. 13185 - Kinetis: Extensive modification of MCG support based feature 13186 configuration. From David Sidrane. 13187 - Kinetis: Add support for K66 family. From David Sidrane. 13188 - Kinetis: Created a kinetis SIM versioning scheme pulled in by 13189 Kinetis chip.h. From David Sidrane. 13190 - Created a kinetis PMC versioning scheme pulled in by Kinetis 13191 chip.h. From David Sidrane. 13192 - Kinetis: Extend clock configuration logic. Refactor 13193 implementation. From David Sidrane. 13194 13195 * NXP Freescale Kinetis Drivers: 13196 13197 - Kinetis Ethernet: Kinetis Support RMII clock source select. This 13198 defined the RMII clock source select bits and allows the selection 13199 to be made via Kconfig. From David Sidrane. Freedom-K66F uses 13200 ENET_1588_CLKIN as RMII clock 13201 - Kinetis Serial: Added configurable 1|2 stop bits. 13202 HAVE_SERIAL_CONSOLE -> HAVE_UART_CONSOLE to be consistent with 13203 HAVE_LPUART_CONSOLE naming. From David Sidrane. 13204 - Kinetis LPserial: Add LPUART serial driver and Clock 13205 configuartaion to freedom-k66f board. From David Sidrane. 13206 - Kinetis USB device: Refactor clocking in kinetis_usbdev. From 13207 David Sidrane. 13208 13209 * NXP Freescale Kinetis Boards: 13210 13211 - Add support for NXP Freedom-k66f development board. From David 13212 Sidrane. 13213 - Kinetis Freedom K66F: Add Ethernet support. From David Sidrane. 13214 - Add twr-k64f120m config. From Marc Rechté. 13215 13216 * NXP Freescale LPC43xx Boards: 13217 13218 - Bamboo-200E: Add netnsh configuration. From Alan Carvalho de Assis. 13219 - Add usbnsh config to Bambino 200E board. From Alan Carvalho de 13220 Assis. 13221 13222 * STMicro STM32: 13223 13224 - STM32 F7: Allow board to configure HSE clock in bypass-mode. This 13225 is needed to enable HSE with Nucleo-F746ZG board. From Jussi 13226 Kivilinna. 13227 - STM32 F7: stm32_allocateheap: allow use DTCM memory for heap. 13228 STM32F7 has up to 128KiB of DTCM memory that is currently left 13229 unused. This change adds DTCM to main heap if 13230 CONFIG_STM32F7_DTCMEXCLUDE is not enabled. From Jussi Kivilinna. 13231 - Add basic support for the STM32F334. From Mateusz Szafoni. 13232 - STM32F33XX DAC, OPAMP, COMP, ADC, HRTIM headers. From Mateusz 13233 Szafoni. 13234 13235 * STMicro STM32 Drivers: 13236 13237 - STM32 F7 SDMMC: Add support for single bit operation on SDMMC2. 13238 - STM32 L4: Port STM32L4 SAI driver from MDK. 13239 - STM32 L4: Bring power management logic from Motrola MDK into NuttX. 13240 - STM32 L4: Bring LPTIM driver in from the Motorola MDK. 13241 - STM32 L4 COMP: Port from Motorola MDK. 13242 13243 * STMicro STM32 Boards: 13244 13245 - STM32F429i Discovery: Add support for NxWM on STM32F429i-Disco 13246 board. From Alan Carvalho de Assis. 13247 - STM32F103 Minimum: Add support for nRF24 on STM32F103-Minimum 13248 board. From Alan Carvalho de Assis. 13249 - Olimex STM32 P407: Add a NSH protected build configuration; Enable 13250 procfs/ in all configurations. 13251 - Olimex STM32 P407: Add support for on-board microSD slot. 13252 - STM32F429i Discovery: Add support for the L3GD20 driver. From 13253 raiden00. 13254 - STM32F103 Minimum: Add support to QEncoder on STM32F103 Minimum 13255 board. From Alan Carvalho de Assis. 13256 - Olimex STM32 P407: Add external SRAM support. 13257 - Add basic support for the Nucleo F334R8 board. From Mateusz 13258 Szafoni. 13259 - STM32F103 Minimum: Add SDCard support over SPI on STM32F103-Minimum 13260 board. From Alan Carvalho de Assis. 13261 - STM32F103 Minimum: Add support to USB Device on STM32F103-Minimum 13262 board. From Alan Carvalho de Assis. 13263 13264 * C Library/Header Files: 13265 13266 - compiler.h: packed_struct replaced by begin_packed_struct and 13267 end_packed_struct. Now support IAR style packed structures. From 13268 Aleksandr Vyhovanec. 13269 - Math library: Leverage optimized ARMv8-M functions from BSD license 13270 ARM file. 13271 - Shared libraries: Add a non-standard dllfnc.h function to set the 13272 symbol table. 13273 - C Library: Add a support for setvbuf(). This is a collaborative 13274 effort. Alan Carvalho de Assis did the initial prototype. 13275 - C Library: Add setbuf() which is a trivial wrapper around setvbuf(). 13276 - C library: Add swab(). 13277 - C library: Add strtoimax and strtoumax. 13278 - C library: Add ffs(), rindex(), an index(). Add strings.h. Move 13279 strcasecmp, strncasecmp, bzero, bcmp, and bcopy to where they 13280 belong in strings.h.h, not string.h. bzero, bcmp, and bcopy are 13281 legacy functions; the contemporary counterparts should be used 13282 instead. 13283 - C library: Add fstatfs(). 13284 - Update cwchar. Add cwctype. 13285 13286 * Build/Configuration System: 13287 13288 - Add configuration support for builds with Ubuntu under Windows 10. 13289 13290 * Tools: 13291 13292 - tools/noteinfo.c: A hack tool that I use to analyze some sched_note 13293 output. Needs a home and may be useful to others. 13294 - tools/mkconfig.c: Add logic to keep all of the buffering options in 13295 sync. 13296 13297 * NSH: apps/nshlib: 13298 13299 - NSH: Add support for the 'ln' command. 13300 - NSH ls command: if node is a symobolic link, use readlink() to get 13301 and the display the target of the symbolic link. 13302 - NSH: Add readlink command. 13303 13304 * Applications: apps/examples: 13305 13306 - apps/examples/nxtext: Make line spacing configurable. 13307 - apps/system/zmodem/host/nuttx/compiler.h synchronized with 13308 nuttx/nuttx/include/nuttx/compiler.h. From Aleksandr Vyhovanec. 13309 - apps/examples/sotest: Add a test for shared libraries. 13310 - apps/examples/ostest: Add a test of setvbuf(). 13311 - apps/examples/stat: Add a simple test for stat(), fstat(), 13312 statfs(), and fstatfs(). 13313 13314Works-In-Progress: 13315 13316 * IEEE802.14.5/6LowPAN. Hooks and framework for this effort were 13317 introduced in NuttX-7.15. Work has continued on this effort on 13318 forks from the main repositories, albeit with many interruptions. 13319 The completion of this wireless feature will postponed until at 13320 least NuttX-7.21. 13321 13322Bugfixes. Only the most critical bugfixes are listed here (see the 13323ChangeLog for the complete list of bugfixes and for additional, more 13324detailed bugfix information): 13325 13326 * Core OS: 13327 13328 - SMP: There were certain conditions that we must avoid by preventing 13329 the release of the pending tasks while withn a critical section. 13330 But this logic was incomplete; there was no logic to prevent other 13331 CPUs from adding new, running tasks while on CPU is in a critical 13332 section. This commit corrects this. This is matching logic in 13333 sched_addreadytorun to avoid starting new tasks within the critical 13334 section (unless the CPU is the holder of the lock). The holder of 13335 the IRQ lock must be permitted to do whatever it needs to do. 13336 - SMP: Make checks for CPU lock set more robust. There are certain 13337 conditions early in initialization on during interrupt handling 13338 where things need to be done a little differently. 13339 - sched_cpulocked: Avoid use of spinlock. That has been reported to 13340 cause a deadlock (2016-12-28). 13341 - SMP: Fix a gap where we may try to make modifications to the task 13342 lists without being in a critical sections. That permits 13343 concurrent access to the tasks lists and many subtle problems. 13344 This fix just remains in the critical section throughout the 13345 operation (and possible until the task is restore in the event of a 13346 context switch). Makes a big difference in stability. 13347 - SMP: Fix an error in critical section logic when performing a 13348 context switch from an interrupt handler. The g_cpu_irqset bit was 13349 not being set for the CPU so other CPUs did not know about the 13350 critical section. 13351 - SMP Signals: Fix some SMP signal delivery logic. Was not handling 13352 some critical sections correctly and was missing logic to signal 13353 tasks running on other CPUs. 13354 - SMP: Fix timer related issues: Round robin and sporadic 13355 scheduling were only being performed for tasks running on the CPU 13356 that processes the system timer interrupt. Similarly, CPU load 13357 measurements were only be processed for running on the CPU that 13358 receives the sampling interrupt. 13359 - sched_note: Fix spinlock instrumentation. From Masayuki Ishikawa. 13360 - In all implementations of _exit(), use enter_critical_section() vs. 13361 disabling local interrupts. 13362 - sigtimedwait: When timer expires, up_unblock_task() is called. 13363 This is okay in the single CPU case because interrupts are disable 13364 in the timer interrupt handler. But it is insufficient in the SMP 13365 case. enter_ and leave_critical_section() must be called in order 13366 to manage spinlocks correctly. 13367 - Fix a compile error: in sched_cpuload.c:Line136, the variables ts 13368 and secs are not defined if CONFIG_CPULOAD_ONESHOT_ENTROPY = 0. 13369 However, these variables are used regardless of 13370 CONFIG_CPULOAD_ONESHOT_ENTROPY at lines~180:onwards. From Rajan Gill. 13371 - CPU load: Correct computation of the nominal period to use when the 13372 source is a oneshot timer. 13373 - Cancellation points: Fix some backward logic in conditional 13374 compilation. 13375 - Remove an unused variable when calling sigwaitinfo() and 13376 sigtimedwait(). From Masayuki Ishikawa. 13377 13378 * File System/Block and MTD Drivers: 13379 13380 - procfs: Correct to snprintf-related errors in fs_procfsproc.c. 13381 Resolves issue #24. 13382 - Add logic to VFS rename: If target of rename exists and is a 13383 directory, then the source file should be moved 'under' the target 13384 directory. POSIX also requires that if the target is a file, then 13385 that old file must be deleted. 13386 - Fix open() a block device with 13387 CONFIG_DISABLE_PSEUDOFS_OPERATIONS=y. From Masayuki Ishikawa. 13388 - File System: Don't build block driver proxy if PSEUDOFS_OPERATIONS 13389 are disabled. 13390 - sendfile(): Fix error introduced with commit 13391 ff73be870e38959b0aaee5961dc47b4b58dc2d86. Noted by Maciej Wójcik. 13392 13393 * Graphics/Graphic Drivers: 13394 13395 - NxWM configurations. If using a 7-bit character set, then the 13396 cursor character cannot be 137 (graphic block). Use 95 13397 (underscore) instead. 13398 - NX server: Correct message queue names. Should not be at /dev, 13399 but rather relative to /var/mqueue. 13400 13401 * Common Drivers: 13402 13403 - MMCSD_SDIO: Only wait for card ejected if card detection is 13404 supported. From Alan Carvalho de Assis. 13405 - Typos withim mtd/ with Macronix MX25L. In 13406 NuttX/drivers/mtd/Make.defs letters X between M and 25 are 13407 missing. Noted by Oleg Evseev. 13408 - USBMSC: Always set LUN readonly flag. From Wolfgang Reißnegger. 13409 - drivers/lcd: ssd1306_configspi() must have global scope. 13410 - MMC/SD SDIO: Some drivers need to start DMA before sending CMD24 13411 and some AFTER. From Alan Carvalho de Assis. 13412 - drivers/tone.c: Handle configuration with multiple PWM channels. 13413 This resolves issue #30: Audio Tone Generator and PWM Multiple 13414 Output Channel options. 13415 - drivers/tone.c: 50% duty needs to be expressed a a fixed precision 13416 number. 13417 - drivers/spi/Kconfig: There is too much SPI in the configuration 13418 menu; SPI Driver Support menu is empty. From Maciej Wójcik. 13419 - option to enable Memory Card debug output was hidden with SD cards 13420 connected through SPI. From Maciej Wójcik. 13421 - usbhost_cdcacm: fix tx outbuffer overflow and remove now invalid 13422 assert. From Janne Rosberg. 13423 13424 * Networking/Network Drivers: 13425 13426 - Networking: Fixed some issues that prevented IPv6 from working with 13427 IPv4 enabled. From Pascal Speck. 13428 - Networking: fixed a nullptr-dereference on iob_clone. From Pascal 13429 Speck. 13430 - Ethernet: Need two work structures (minimum) in all Ethernet 13431 drivers so that pending poll work is not lost when an interrupt 13432 occurs. 13433 13434 * ARMv7-R: 13435 13436 - I found an issue inside the cp15_coherent_dcache function: The 13437 "mcr CP15_BPIALLIS(r0)" should only be used with SMP 13438 configurationa. In non-SMP configuration this instruction could 13439 become undefined. From Manohara HK. 13440 13441 * Atmel SAM3/4 Drivers: 13442 13443 - SAM3/4: GPIO bit numbering typo fixes. From Wolfgang Reißnegger. 13444 13445 * Atmel SAM3/4 Boards: 13446 13447 - Add missing sched_note_*() calls in sam4cm SMP functions. 13448 13449 * NXP/Freescale Kinetis: 13450 13451 - Kinetis: Fixed wrong MCG VDIV calculation on new NXP K60. From 13452 Maciej Skrzypek. 13453 - Kinetis: Need to set HAVE_UART_DEVICE when UART4 is selected. From 13454 Maciej Skrzypek. 13455 - Kinetis MCG: Wrong FRDIV set in MCG_C1. From Maciej Skrzypek. 13456 13457 * NXP/Freescale Kinetis Drivers: 13458 13459 - Kinetis Serial: Fixed compile error when UART5 is selected. From 13460 Maciej Skrzypek. 13461 - Kinetis SDHC - Enable clock after selected. From David Sidrane. 13462 - Kinetis: Correct some SPI and I2C configuration issues. From 13463 David Sidrane. 13464 - Kinetis Ethernet: Add #define for number of loops for auto 13465 negotiation to complete. From Marc Rechté. 13466 - Kinetis Werial: Fixed up_rxint - did not disable the RX 13467 interuppts. There was an OR where and AND NOT was needed. From 13468 David Sidrane. 13469 13470 * NXP/Freescale LPC43xx: 13471 13472 - LPC43 pinset definitions: Add more 1 bit to pinset to reach 13473 SFSCLK0-SFSCLK3. Remove PINCONFIG_DIGITAL. From Alan Carvalho de 13474 Assis. 13475 13476 * NXP/Freescale LPC43xx Drivers: 13477 13478 - LPC43 serial: Correct conditional logic that selects /dev/ttySN. 13479 Problem noted by Alan Carvalho de Assis. 13480 13481 * NXP/Freescale i.MX6: 13482 13483 - i.MX6: Fix clearing GPT status register. From Masayuki Ishikawa. 13484 13485 * STMicro STM32: 13486 13487 - STM32, STM32L4 Oneshot: Fix logic so that it can support multiple 13488 oneshot timers. 13489 - STM32 F7: Added missing ARCH_HAVE_RESET for F7. From David Sidrane. 13490 - STM32: Add missing STM32_BKP_BASE. From David Sidrane. 13491 - STM32 and STM32F7: Fixes the BKP reference counter issue. From 13492 David Sidrane. 13493 13494 * STMicro STM32 Drivers: 13495 13496 - Fix for SAMv7 SPI: DLYBS value was calculated, but never written to 13497 any registers. This led to incorrect timings on the bus. From 13498 Michael Spahlinger. 13499 - STM32 QEncoder: Fix QEncoder driver, based on STM32L4 driver. From 13500 Alan Carvalho de Assis. 13501 - STM32 QEncoder: Enable clocking to the timer on QE setup; disable 13502 clock on QE teardown. 13503 - STM32 Ethernet: Need two work structures so that pending poll work 13504 is not lost when an interrupt occurs. This change has also been 13505 ported to all all other effected Ethernet drivers. 13506 - STM32 OTGHS host: stm32_in_transfer() fails and returns NAK if a 13507 short transfer is received. This causes problems from class 13508 drivers like CDC/ACM where short packets are expected. In those 13509 protocols, any transfer may be terminated by sending short or NUL 13510 packet. From Janne Rosberg. Adapted Janne Rosberg's patch to 13511 STM32 OTGHS host to OTGFS host, and to similar USB host 13512 implementations for STM32 L4 and F7. 13513 13514 * STMicro STM32 Boards: 13515 13516 - STM32F4 Discovery: Fix issues with QEncoder support. From Alan 13517 Carvalho de Assis. 13518 13519 * C Library/Header Files: 13520 13521 - Add debug assertion in libdtoa to catch attempts to use floating 13522 point output formats from within an interrupt handler. That will 13523 cause assertions or crashes downstream because __dtoa will attempt 13524 to allocate memory. From Pierre-noel Bouteville. 13525 - libc: Fix ARMv7-A/R memcpy assembly. 13526 - Fix return value if x is NaN. From Aleksandr Vyhovanec. 13527 13528 * apps/nshlib: 13529 13530 - NSH: Eliminate a warning when all memory inspection commands are disabled. 13531 13532 * apps/graphics: 13533 13534 - apps/graphics/traveler/tools: Fix linkage issue. The -lm should 13535 come after -o binname. From Alan Carvalho de Assis. 13536 13537 * apps/netutils: 13538 13539 - The CONFIG_NETUTILS_HTTPD_PATH constant is used by httpd_mmap.c and 13540 httpd_sendfile.c but It was not present in Kconfig menu. From 13541 Maciej Wójcik. 13542 13543 * apps/examples: 13544 13545 - Configurations that enable OSTEST must not disable signals. 13546 - apps/examples/ostest: Was ignoring 13547 CONFIG_EXAMPLES_OSTEST_FPUTESTDISABLE. 13548 - In apps/examples/mtdpart/mtdpart_main.c where 13549 CONFIG_EXAMPLES_MTDPART_NPARTITIONS defining is checked should be 13550 #ifndef instead of #ifdef. Noted by Oleg Evseev. 13551 13552NuttX-7.21 Release Notes 13553------------------------ 13554 13555The 121st release of NuttX, Version 7.21, was made on June 6, 2017, 13556and is available for download from the Bitbucket.org website. Note 13557that release consists of two tarballs: nuttx-7.21.tar.gz and 13558apps-7.21.tar.gz. These are available from: 13559 13560 https://bitbucket.org/nuttx/nuttx/downloads 13561 https://bitbucket.org/nuttx/apps/downloads 13562 13563Both may be needed (see the top-level nuttx/README.txt file for build 13564information). 13565 13566Additional new features and extended functionality: 13567 13568 * Core OS: 13569 13570 - pthread rwlocks: Add an implementation for read/write locks 13571 (rwlocks) into the pthread library. These locks are writer 13572 priority, such that if any writers come in they are given priority 13573 for writing. From Mark Schulte. 13574 - pthread robust mutexes: Implement robust mutex support: 13575 pthread_mutex_lock() and trylock() will return EOWNERDEAD if the 13576 mutex is locked by a thread that no longer exists. Add 13577 pthread_mutex_consistent() to recover from this situation. Keep 13578 list of all mutexes held by a thread in a list in the pthread's TCB. 13579 When pthread exits or is cancelled, mutexes held by thread are 13580 marked inconsistent and the highest priority thread waiting for the 13581 mutex is awakened. There is a configuration option to (a) support 13582 only robust mutexes, (b) support only traditional unsafe mutexes, 13583 or (c) Support both unsafe and robust mutexes via 13584 pthread_mutexattr_get/setrobust(). 13585 - pthread cancellation points: Add logic to disable cancellation 13586 points within the OS. This is useful when an internal OS function 13587 that is NOT a cancellation point calls an OS function which is a 13588 cancellation point. In that case, irrecoverable states may occur if 13589 the cancellation is within the OS. From Juha Niskanen. 13590 - clock: Add clock_resynchronize and use subseconds RTC. Add 13591 clock_resynchronize for better synchronization of CLOCK_REALTIME and 13592 CLOCK_MONOTONIC to match RTC after resume from low-power state. Add 13593 up_rtc_getdatetime_with_subseconds under 13594 CONFIG_ARCH_HAVE_RTC_SUBSECONDS to allow initializing (and 13595 resynchronizing) system clock with subseconds accuracy RTC. From 13596 Jussi Kivilinna. 13597 - clock: Add new type ssystime_t for relative 64-bit ticks, change 13598 ticks<->time conversion functions to use ssystime_t. From Jussi 13599 Kivilinna. 13600 - clock: Add testing for 32-bit overflow of 64-bit system timer. From 13601 Jussi Kivilinna. 13602 13603 * File Systems/Block and MTD Drivers 13604 13605 - drivers/mtd/w25.c: Erase sector only if it is not in erased state. 13606 From Jussi Kivilinna. 13607 13608 * Graphics/Display Drivers: 13609 13610 - drivers/lcd: Extend st7565 driver to include support for the 13611 AQM_1248A. From Masayuki Ishikawa. 13612 - drivers/lcd: Add driver for Nokia 5110 (Philips PCD8544). From Alan 13613 Carvalho de Assis. 13614 13615 * Networking/Network Drivers: 13616 13617 - Extensive modifications to support wireless network (see below). 13618 - TUN driver: Implement TAP (OSI layer 2) mode. Enable by setting the 13619 IFF_TAP flag instead of the IFF_TUN flag in ifr_flags. From Thomas 13620 Keh. 13621 - Add user-space networking stack API (usrsock). User-space 13622 networking stack API allows user-space daemon to provide TCP/IP 13623 stack implementation for NuttX network. Main use for this is to 13624 allow use and seamless integration of HW-provided TCP/IP stacks to 13625 NuttX. For example, user-space daemon can translate /dev/usrsock 13626 API requests to HW TCP/IP API requests while rest of the user-space 13627 can access standard socket API, with socket descriptors that can be 13628 used with NuttX system calls. From Jussi Kivilinna. 13629 - net/: Network driver now retains Ethernet MAC address in a union so 13630 that other link layer addresses may be used in a MULTILINK 13631 environment. 13632 13633 * Wireless Networking/Wireless Drivers: 13634 13635 - BCM43362: Support for Broadcom's BCM43362 WiFi chip was contributed 13636 by Simon Piriou as part of the port of the Particle Photon board. 13637 Only station functionality is available at present. This work 13638 includes not on the WiFi driver, but the support Particle Photon 13639 board, the infrasture for IEEE 802.11 FullMAC networking including 13640 the network device interface, WiFi configuration, AP scanning and 13641 authentication and association with an AP. 13642 - IEEE 802.11 networking tools and support. 13643 - IEEE 802.15.4 MAC support. This is an effort that was started some 13644 time back by Sebastien Lorquet (with some help from Matte Poppe). 13645 Recently, Anthony Merlino has taken on this effort and has made 13646 some significant progress. Using the Microchip MRF24J40 module with 13647 the Mikroe Clicker2-STM32 board along with a PC-based IEEE 802.15.4 13648 sniffer, Anthonly has verified correct transmission and receipt of 13649 basic frames. 13650 - Microchip MRF24J40: As mentioned above, this IEEE 802.15.4 radio 13651 driver is now basically functional. 13652 - IEEE 802.15.4 Network Driver: A driver that interfaces the NuttX 13653 network with the IEEE 802.15.4 MAC has been developed but is still 13654 incomplete and has not been verified. 13655 - IEEE 802.15.4 Network Loopback Driver: A simple IEEE 802.15.4 MAC 13656 loopback driver was developed. This driver allowed for parallel 13657 development of the IEEE 802.15.4 MAC and 6LoWPAN. 13658 - 6LoWPAN: The Contiki 6LoWPAN stack has been ported so that works 13659 within the NuttX networking framework and interfaces with the new 13660 IEEE 802.15.4 MAC via the network driver. Live testing with 13661 IEEE 802.15.4 radios has not yet been done; all testing has used 13662 the loopback driver. There are no known problems and the stack 13663 is ready for additional testing. 13664 - Add option to enable wireless debug output. 13665 13666 * Other Common Device Drivers: 13667 13668 - Add entropy pool and strong random number generator. Entropy pool 13669 gathers environmental noise from device drivers, user-space, etc., 13670 and returns good random numbers, suitable for cryptographic use. 13671 Based on entropy pool design from *BSDs and uses BLAKE2Xs algorithm 13672 for CSPRNG output. Patch also adds /dev/urandom support for using 13673 entropy pool RNG and new 'getrandom' system call for getting 13674 randomness without file-descriptor usage (thus avoiding file- 13675 descriptor exhaustion attacks). The 'getrandom' interface is similar 13676 as 'getentropy' and 'getrandom' available on OpenBSD and Linux 13677 respectively. From Jussi Kivilinna. 13678 - XBox One controller: Adds USB host driver support for the XBox One 13679 controller. Currently only the latest version (XBox One X) 13680 controller works. The older XBox One controllers do not enumerate 13681 correctly. From Brian Webb. 13682 - drivers/analog: Add basic COMP driver. From Mateusz Szafoni. 13683 - drivers/analog: Add driver for the LTC1767L ADC. From Martin 13684 Lederhilger. 13685 - drivers/analog: Add basic OPAMP driver. From Mateusz Szafoni. 13686 - drivers/sensors: Add driver for ST HTS221 humidity sensor. From 13687 Juha Niskanen. 13688 - drivers/sensors: Add driver for ST LPS25H pressure sensor. From 13689 Juha Niskanen. 13690 - drivers/sensors: Add driver for ST LIS2DH accelerometer. From Timo 13691 Voutilainen. 13692 - drivers/usbmisc: Add driver for Fairchild FUSB301 USB type-C 13693 controller. From Harri Luhtala. 13694 - RTC: Add interface for check if RTC time has been set. New 13695 interface allows checking if RTC time has been set. This allows to 13696 application to detect if RTC has valid time (after reset) or should 13697 application attempt to get real time by other means (for example, by 13698 launching ntpclient or GPS). From Jussi Kivilinna. 13699 - Buttons: Change return value of board_buttons() and the type of 13700 btn_buttonset_t to uint32_t so that more than 8 buttons can be 13701 supported. 13702 - drivers/syslog: Use monotonic clock for timestamp when available. 13703 From Jussi Kivilinna. 13704 - SPI: Add an instance argument to the SPIDEV definitions. Thus, 13705 instead of specifying a FLASH device, for example, as SPI_FLASH, you 13706 would now use SPI_FLASH(0) where the "instance" argument now 13707 distinguishes multiple FLASH devices on the same SPI bus. From 13708 Sebastien Lorquet. 13709 - IOBs: Move from net/iob to a better location in mm/iob where they 13710 can be shared outside of the networking logic. Current also used 13711 by IEEE 802.15.4 MAC and by syslog (when buffering enabled). 13712 - syslog: Add option to buffer SYSLOG output to avoid interleaving. 13713 Uses new shareable IOBs. Additional logic to assure that the the 13714 write from the buffer is a single atomic write in normal debug 13715 output. 13716 - drivers/can: Move CAN subsystem to its own directory and put device 13717 drivers there. From Alan Carvalho de Assis. 13718 - drivers/can: Add Microchip MCP2515 CAN Bus controller driver. From 13719 Alan Carvalho de Assis. 13720 - drivers/audio: Add cs43l22 audio driver. From Taras Drozdovsky. 13721 - drivers/input: Add Cypress MBR3108 CapSense touch button driver. 13722 From Juha Niskanen. 13723 13724 * Simulation 13725 13726 - configs/sim/sixlowpan: Configuration for testing the 6LoWPAN with 13727 the IEEE 802.15.4 loopback network driver. 13728 13729 * Infineon XMC4xxx: 13730 13731 - arch/arm/src/xmc4: Initial, partial support for Infineon XMC4xxx. 13732 13733 * Infineon XMC4xxx Boards: 13734 13735 - XMC4500 Relax: Add basic board support infrastructure of Infineon 13736 XMC4500 Relax Lite v1. Basic serial, LED, and button button support 13737 for a simple NSH configuration. There are still stome remaining 13738 issues with serial communications. 13739 13740 * MicroChip PIC32MX Boards: 13741 13742 - pic32mx7mmb: Add support for the Pinquino toolchain. 13743 - pic32mx7mmb: Add support for PROCFS file system. 13744 13745 * NXP Freescale Kinetis: 13746 13747 - Kinetis: Allow board to add pullups on SDHC lines. From David 13748 Sidrane. 13749 - Kinetis: Use optional BOARD_OSC_CR and BOARD_OSC_DIV in clock 13750 configuration. From David Sidrane. 13751 13752 * NXP Freescale Kinetis Drivers: 13753 13754 - Kinetis: Add Timer PWM Module (TPM) to K66 chip. From David 13755 Sidrane. 13756 - Kinetis: Added HW flow control and termios. From David Sidrane. 13757 - Kinetis: Add ARCH_HAVE_I2CRESET. From David Sidrane. 13758 13759 * NXP Freescale LPC43xx: 13760 13761 - Add support for LPC4337FET256. From Andreas Bihlmaier. 13762 13763 * STMicro STM32: 13764 13765 - Change STM32 tickless to use only one timer. From Konstantin 13766 Berezenko. 13767 - STM32 F7: Add support for LSE RTC and enable RTC subseconds. From 13768 Jussi Kivilinna. 13769 - STM32 L1: stm32l15xx_rcc: Add support for using MSI as system 13770 clock. From Juha Niskanen. 13771 - STM32 L1: stm32l15xxx_rcc: configure medium performance voltage 13772 range and zero wait-state when allowed by SYSCLK setting. Zero 13773 wait-state for flash can be configured when: (1) Range 1 and 13774 SYSCLK <= 16 MHz, (2) Range 2 and SYSCLK <= 8 MHz, or (3) Range 3 13775 and SYSCLK <= 4.2 MHz. Medium performance voltage range (1.5V) 13776 can be configured when SYSCLK is up to 16 MHz and PLLVCO up to 13777 48 MHz. From Juha Niskanen. 13778 - STM32 F0: Add basic support for STM32F0. From Alan Carvalho de 13779 Assis. 13780 - STM32 F0: Add basic support for STM32F07x family. 13781 - STM32 L1: stm32l15xx_rcc: Allow board to configure HSE clock in 13782 bypass-mode. Allows using MCO output from ST-link chip (on Nucleo 13783 and Discovery boards) as HSE input. From Juha Niskanen. 13784 - STM32 L1: Add support for STM32L152CC, STM32L152RC and STM32L152VC. 13785 From Juha Niskanen. 13786 - STM32 F0: Add support for HSI48. 13787 - STM32 L4: Add support for the STM32L496XX family. From Juha 13788 Niskanen. 13789 - STM32 L4: modularize Kconfig to support different product 13790 lines/families. This is modeled after STM32F7. Idea is to declare 13791 each chip in Kconfig but allow for flash size override. Commit adds 13792 many STM32L4_HAVE_XXX feature test macros. From Juha Niskanen. 13793 - STM32 L4: Separate SYSCFG into product line specific files for 13794 clarity. From Juha Niskanen. 13795 - STM32 L4: Add support for many new MCUs from the STM32L4X3XX 13796 product line. From Juha Niskanen. 13797 - STM32 L4: Add dbgmcu header files. From Juha Niskanen. 13798 - STM32 F410: Add support for STM32F410. STM32F410 is a version of 13799 STM32F4 with 32 KB of RAM and 62 or 128 KB of flash. From Gwenhael 13800 Goavec-Merou. 13801 13802 * STMicro STM32 Drivers: 13803 13804 - SDIO: Extensions to support the SDIO interface to the BCM43362 from 13805 Simon Piriou. 13806 - STM32 F2: Add USB OTG HS support for stm32f20xxx cores. From Simon 13807 Piriou. 13808 - STM32 F2, F4, and F7: Add BOARD_DISABLE_USBOTG_HSULPI flag. From 13809 Simon Piriou. 13810 - STM32 F33: Move DMA logic to a separate files + add ADC support. 13811 From Mateusz Szafoni. 13812 - STM32 F3: Add COMP support. From Mateusz Szafoni. 13813 - STM32 F33: Support for COMP character driver. From Mateusz Szafoni. 13814 - STM32 F4: Implement DMA support for the STM32F4 I2C. From Rajan Gill. 13815 - STM32 F7: Add stm32 RNG support. This is copied from stm32l4. 13816 Tested on STM32F746ZG board. From Juha Niskanen. 13817 - STM32 L1: Add STM32L162VE to chip.h. From Juha Niskanen. 13818 - STM32 F4: Add I2C3 SDA pin mapping for STM32F411. From no1wudi. 13819 - STM32 L1: stm32_flash: Add EEPROM writing for STM32L15XX. From 13820 Juha Niskanen. 13821 - STM32 F7: Serial: Add interface to get uart_dev_t by USART number, 13822 stm32_serial_get_uart. From Jussi Kivilinna. 13823 - STM32 F4: Provide TIM5 definition for STM32F429. From Matias v01d. 13824 - STM32 F0: Add an untested port of the F1 USB device to the STM32F0. 13825 - STM32 F0: Add support for the STM32F09X family. From Juha 13826 Niskanen. 13827 - STM32 F0: Initial cut at I2C driver. Still a work in progress. 13828 From Alan Carvalho de Assis. 13829 - STM32 F33: Add OPAMP support. From Mateusz Szafoni. 13830 - STM32 L4: stm32l4_i2c: Add I2C4 code. From Juha Niskanen. 13831 - STM32 L4: Add GPIO_PORTI definition. From Juha Niskanen. 13832 - STM32 F7 Serial: Allow configuring Rx DMA buffer size. From Jussi 13833 Kivilinna. 13834 - STM32 L4: Firewall for stm32l4x3xx. Not tested for any product 13835 family, but now it at least compiles. L496 devices can have one bit 13836 wider Volatile Data Segment. From Juha Niskanen. 13837 - STM32 TIM: Add method to get timer width. Freerun timer: Use timer 13838 width to get the correct clock rollover point. 13839 - STM32 L4: Add internal flash write support. From Juha Niskanen. 13840 - STM32 L4: Port stm32l4_serial_get_uart function from STM32F7. From 13841 Juha Niskanen. 13842 - STM32 Ethernet: Add support for KSZ8081 PHY interrupts. From 13843 Sebastien Lorquet. 13844 - STM32 F4: Add I2S driver. From Taras Drozdovsky. 13845 - STM32 L4: Add IWDG peripheral. This is the same as for STM32 13846 except that prescale and reload can be changed after watchdog has 13847 been started, as this seems to work on L4. From Juha Niskanen. 13848 - STM32 F7: Add SPI DMA support. From Jussi Kivilinna. 13849 13850 * STMicro STM32 Boards: 13851 13852 - Support for the Particle Photon board was contributed by Simon 13853 Piriou. The Photon board is based on a STM32F205G MCU with and on- 13854 board BCM43362 WiFi chip that interfaces via the STM32's SDIO 13855 interface. Board configuration support includes, in addition, 13856 buttons, LEDS, IWDG, USB OTG HS, and procfs support. Configurations 13857 available for nsh, usbnsh, and wlan configurations. 13858 - Clicker2-STM32: Support for the Mikroelektronika Clicker 2 for 13859 STM32 was added by Anthony Merlino. This board, along with the 13860 MRF24J40 Click board is the platform used to deveop the IEEE 13861 802.15.4 support. The boad configuration includes the MRF24J40 13862 initialization logic and SPI support. Configurations exist for nsh, 13863 knsh, usbnsh, and mrf24j40-radio. 13864 - Nucleo_F334R8: Add ADC example. From Mateusz Szafoni. 13865 - Nucleo-F334R8: Add COMP support. From Mateusz Szafoni. 13866 - Nucleo-F334R8: Use new COMP driver. From Mateusz Szafoni. 13867 - Adds USB host support to stm32f411-disco board. From Brian Webb. 13868 - Add stm32f0discovery board support. From Alan Carvalho de Assis. 13869 - Nucleo-F072RB: Add board configuration. 13870 - Nucleo-F334R8: Add OPAMP support. From Mateusz Szafoni. 13871 - Nucleo-F072RB: Add support for the I2C driver used by I2C tools. 13872 - Nucleo-L496ZG: Add nucleo-l496zg board files. From Juha Niskanen. 13873 - Nucleo-F091RC: Add nucleo-f091rc board files. From Juha Niskanen. 13874 - Nucleo-L432KC: Add nucleo-l432kc board files. From Sebastien 13875 Lorquet. 13876 - Nucleo-L452RE: Add nucleo-l452re board files. From Juha Niskanen. 13877 - stm32f103-miniumum: Add board support to use the Nokia 5110 13878 LCD display driver. From Alan Carvalho de Assis. 13879 13880 * C Library/Header Files: 13881 13882 - C library: Add strerror_r(). 13883 - C Library: Add wcstoull(), swprintf(), wcstod(), wcstof(), wcstol(), 13884 wcstold(), wcstoul(), wcstoll() functions. Add mbsnrtowcs() and 13885 wcsnrtombs() (just returning success). Add mbtowc() and wctomb() to 13886 C++ std namespace. From Alan Carvalho de Assis. 13887 - C Library: Add ffsl(), ffsll(), fls(), flsl(), flsll() and use 13888 GCC's __builtin_ctz/__builtin_clz for faster implementation of these. 13889 From Jussi Kivilinna. 13890 - fixedmath: Add square root and b32_t conversion operators. From 13891 Jussi Kivilinna. 13892 - locale.h: Add a bogus definition of locale_t. 13893 - C library: Versions mbrlen and mbsrtowcs taken and adapted from 13894 FreeBSD code (at https://github.com/freebsd/freebsd/). From Matias 13895 v01d. 13896 13897 * Build/Configuration System: 13898 13899 - Include C++ library in 'make export'. From Alan Carvalho de Assis. 13900 - configs: Remove all setenv.sh and setenv.bat files. Remove all 13901 references to setenv.sh and setenv.bat from all config README files. 13902 - Kconfig/deconfigs: Add CONFIG_ARCH_TOOLCHAIN_GNU to indicate that 13903 the toolchain is based on GNU gcc/as/ld. This is in addition to the 13904 CPU-specific versions of the same definition. 13905 - Move prototype for up_cxxinitialize() from nuttx/include/nuttx/arch.h 13906 to apps/include/platform/cxxinitialize.h. 13907 13908 * Tools: 13909 13910 - Add initialconfig.c so that perhaps in the future we will be able to 13911 use this to generate a new configuration from scratch (rather than 13912 having to derive new configurations from existing configurations). 13913 NOTE: Not yet intregated into the build system. 13914 13915 * NSH: apps/nshlib: 13916 13917 - Added support for set [{+|-}{e|x|xe|ex}] [<name> <value>]. Set the 13918 'exit on error control' and/or 'print a trace' of commands when 13919 parsing scripts in NSH. The settings are in effect from the point 13920 of execution, until they are changed again, or in the case of the init 13921 script, the settings are returned to the default settings when it 13922 exits. Included child scripts will run with the parents settings and 13923 changes made in the child script will effect the parent on return. 13924 Use 'set -e' to enable and 'set +e' to disable (ignore) the exit 13925 condition on commands. The default is -e. Errors cause script to 13926 exit. Use 'set -x' to enable and 'set +x' to disable (silence) 13927 printing a trace of the script commands as they are ececuted. The 13928 default is +x. No printing of a trace of script commands as they are 13929 executed. From David Sidrane. 13930 - Print expanded variables if -x. From David Sidrane. 13931 - ifconfig command: Extend ifconfig to support 6LoWPAN. Adapt to 13932 some changes in configuration variable usage. 13933 - Network initialization: If IEEE802.11 selected use wlan0 instead of 13934 eth0 for network device name. 13935 - Network initialization: NSH now has configuration options to select 13936 the wireless properties. It builds the configuration structure and 13937 passes this to wpa_driver_wext_associate() so that it will set the 13938 network as configured. 13939 - Network initialization: Add a new option CONFIG_NSH_NETLOCAL that 13940 will suppress some built in operations and will support manual 13941 configuration of a wireless network through command line tools. 13942 13943 * Examples/Tests: apps/examples: 13944 13945 - examples/xbc_text: Adds a test program for the XBox One controller 13946 driver. From Brian Webb. 13947 - examples/ostest: Add a test of robust mutexes. 13948 - examples/ostest: Add tests for pthread_rwlock. Adding tests to be 13949 used to verify the pthread_rwlock lock works. From Mark Schulte. 13950 - examples/ostest: Additional test for rwlock and one for cancel 13951 cleanup handlers. From Juha Niskanen. 13952 - examples/usrsocktest: Add application for USRSOCK testing. From 13953 Jussi Kivilinna. 13954 - examples/nettest: Adapt for use in testing 6LoWPAN. 13955 - examples/nettest: If doing loopback, but not using the official 13956 loopback device, then use the server should use the configured client 13957 IP address. 13958 - examples/udpblaster: Several fixes to work with 6LoWPAN. 13959 - examples/udpblaster: Add logic to bind the local UDP socket to a 13960 well-known address. 13961 - examples/configdata: Add stacksize and priority. From Juha Niskanen. 13962 13963 * Network Utilities: apps/netutils: 13964 13965 - netutils/netlib: Add IEEE 802.11 wireless IOCTL wrappers. 13966 - netutils/netlib: Add a helper function to convert a string to a 13967 6LoWPAN node address. 13968 - netlib and NSH: Add logic to get/set the IEEE802.15.4 PAN ID. 13969 - netutils/dhcpc: Make the network device name a configuration 13970 option. Was hardcoded to eth0 but may, instead, need to be wlan0. 13971 - netutils/dhcpc: Remove hard-coded interface device. Now passed as 13972 a parameter to dhcpc_open(). From Sebastien Lorquet. 13973 13974 * Wireless Utilities: apps/wireless: 13975 13976 - wireless/wapi: Port of Wapi wireless services. The original 13977 depended on features not supported by NuttX: Removed logic that 13978 depends on Linux netlink. Removed functionality that depended on 13979 the Linux procfs: This includes only 1) listing of available 13980 interfaces and 2) listing of all routes. 13981 - wireless/wapi: Create command line Wapi application based on 13982 Wapi sample code. 13983 - wireless/wapi: wpa_driver_wext_associate() now accepts a 13984 configuration parameter that can be used to specify the wireless 13985 properties. 13986 - wireless/wapi: Add basic wapi_event_stream_extract implementation. 13987 From Simon Piriou. 13988 - wireless/ieee802154: Add iwpan and i8sak tools. iwpan is similar 13989 in concept to wapi. From Anthony Merlino (i8sak was originally 13990 by Sebastien Lorquet). 13991 - wireless/ieee802154/libmac: IEEE 802.15.4 MAC library. 13992 - wireless/wext: Add drivers_wext from the WPA supplicant; Integrate 13993 into NSH. From Simon Piriou. 13994 13995 * System Utilities (apps/system) 13996 13997 - apps/system/dhcpc: Add a command to renew or establish a lease on an 13998 IPv4 address. 13999 - apps/system/ntpc: Add a command to start or stop the NTPC daemon. 14000 - apps/system/ramtest: Make stacksize and priority conigurable. 14001 14002 * Platform-Specific Support (apps/platform) 14003 14004 - apps/platform: Create gnu/ subdirectory that contains the one and 14005 only GNU C++ initialization function. Remove all other C++ 14006 initialization functions. 14007 14008Bugfixes. Only the most critical bugfixes are listed here (see the 14009ChangeLog for the complete list of bugfixes and for additional, more 14010detailed bugfix information): 14011 14012 * Core OS: 14013 14014 - Priority inheritance: When CONFIG_SEM_PREALLOCHOLDERS==0, there is 14015 only a single, hard-allocated holder structure. This is problem 14016 because in sem_wait() the holder is released, but needs to remain in 14017 the holder container until sem_restorebaseprio() is called. The call 14018 to sem_restorebaseprio() must be one of the last things the 14019 sem_wait() does because it can cause the task to be suspended. If in 14020 sem_wait(), a new task gets the semaphore count then it will fail to 14021 allocate the holder and will not participate in priority 14022 inheritance. This fix is to add two hard-allocated holders in the 14023 sem_t structure: One of the old holder and one for the new holder. 14024 - Priority inheritance: sem_holder sem_findholder missing 14025 inintalization of pholder. sem_findholder would fail and code 14026 optimization covered this up. From David Sidrane. 14027 - Partial Fix priority inheritance CONFIG_SEM_PREALLOCHOLDERS=0. From 14028 David Sidrane. 14029 - Priority inheritance: sem_boostholderprio prevent overrun of 14030 pend_reprios. The second case rtcb->sched_priority <= 14031 htcb->sched_priority did not check if there is sufficient space in 14032 the pend_reprios array. From David Sidrane. 14033 - lp_worker: Guard from pend_reprios overflow. From David Sidrane. 14034 - Priority inheritance: Fixes improper restoration of base_priority in 14035 the case of CONFIG_SEM_PREALLOCHOLDERS=0. The call to 14036 sem_restorebaseprio_task context switches in the 14037 sem_foreachholder(sem, sem_restoreholderprioB, stcb); call prior to 14038 releasing the holder. So the running task is left as a holder as is 14039 the started task. Leaving both slots filled thus failing to perform 14040 the boost/or restoration on the correct tcb. This PR fixes this by 14041 releasing the running task slot prior to reprioritization that can 14042 lead to the context switch. To faclitate this, the interface to 14043 sem_restorebaseprio needed to take the tcb from the holder prior to 14044 the holder being freed. In the failure case where sched_verifytcb 14045 fails it added the overhead of looking up the holder. There is also 14046 the additional thunking on the foreach to get from holer to 14047 holder->tcb. An alternate approach could be to leve the interface 14048 the same and allocate a holder on the stack of sem_restoreholderprioB 14049 copy the sem's holder to it, free it as is done in this pr and 14050 then pass that address sem_restoreholderprio as the holder. It could 14051 then get the holder's tcb but we would keep the same sem_findholder 14052 in sched_verifytcb. From David Sidrane. 14053 - Priority inheritance: Fixes improper restoration of base_priority. 14054 From David Sidrane. 14055 - sem_holder: Indexing error. From David Sidrane. 14056 14057 if (sem->holder[0].htcb != NULL || sem->holder[**1**].htcb != NULL) 14058 - realloc(): When realloc() has to fall back to calling malloc(), size 14059 including overhead was being provided to malloc(), causing a slightly 14060 larger allocation than needed. Noted by initialkjc@yahoo.com. 14061 - scheduler: Fix tg_flags check with GROUP_FLAG_NOCLDWAIT. From Masayuki 14062 Ishikawa. 14063 - scheduler: Fix CHILD_FLAG_EXITED in include/nuttx/sched.h. From 14064 Masayuki Ishikawa. 14065 - binfmt/elf: Fix offset value when calling elf_read() in 14066 elf_symname(). From Masayuki Ishikawa. 14067 - binfmt/elf: Fix offset value when calling elf_read() in 14068 elf_sectname(). From Masayuki Ishikawa. 14069 - There can be a failure in IOB allocation to some asynchronous 14070 behavior caused by the use of sem_post(). Consider this scenario: 14071 (1) Task A holds an IOB. There are no further IOBs. The value of 14072 semcount is zero. Task B calls iob_alloc(). Since there are not 14073 IOBs, it calls sem_wait(). The value of semcount is now -1. (2) 14074 Task A frees the IOB. iob_free() adds the IOB to the free list and 14075 calls sem_post() this makes Task B ready to run and sets semcount to 14076 zero NOT 1. There is one IOB in the free list and semcount is zero. 14077 When Task B wakes up it would increment the sem_count back to the 14078 correct value. (3) But an interrupt or another task runs occurs 14079 before Task B executes. The interrupt or other tak takes the IOB off 14080 of the free list and decrements the semcount. But since semcount is 14081 then < 0, this causes the assertion because that is an invalid state 14082 in the interrupt handler. So I think that the root cause is that 14083 there the asynchrony between incrementing the semcount. This change 14084 separates the list of IOBs: Currently there is only a free list of 14085 IOBs. The problem, I believe, is because of asynchronies due 14086 sem_post() post cause the semcount and the list content to become out 14087 of sync. This change adds a new 'committed' list: When there is a 14088 task waiting for an IOB, it will go into the committed list rather 14089 than the free list before the semaphore is posted. On the waiting 14090 side, when awakened from the semaphore wait, it will expect to find 14091 its IOB in the committed list, rather than free list. In this way, 14092 the content of the free list and the value of the semaphore count 14093 always remain in sync. 14094 - binfmt: Fix .dtor memory allocation. From Masayuki Ishikawa. 14095 14096 * File System/Block and MTD Drivers: 14097 14098 - SmartFS: If whence is SEEK_END, the file offset shall be set to the 14099 size of the file plus offset. Noted by eunb.song@samsung.com. 14100 - mtd/progmem: Fix incorrect target address calculation. 14101 progmem_read/write() is incorrectly calculating the target address, 14102 expecting the offset argument is given in a block number. This is 14103 completely wrong and as a result invalid flash region is accessed. 14104 Byte-oriented read/write interfaces of mtd device accept the target 14105 address in a byte offset, not a block number. From Heesub Shin. 14106 - procfs: Fix wrong member IDs are displayed when 'cat 14107 /proc/<pid>/group/status'. From Nobutaka Toyoshima. 14108 - procfs: Fix incorrect uptime with CONFIG_SYSTEM_TIME64. From 14109 Masayuki Ishikawa. 14110 - vfs/poll: round timeout up to next full tick. Calling poll() with 14111 timeout less than half tick (thus MSEC2TICK(timeout) => 0) caused 14112 returning error with EAGAIN. Instead of rounding timeout down, value 14113 should be rounded up. Open Group spec for poll says: 14114 "Implementations may place limitations on the granularity of timeout 14115 intervals. If the requested timeout interval requires a finer 14116 granularity than the implementation supports, the actual timeout 14117 interval will be rounded up to the next supported value." From Jussi 14118 Kivilinna. 14119 - mtd/config: erase block between block read and write. From Juha 14120 Niskanen. 14121 - mtd: Build RAMTRON and AT45DB drivers only if selected. From Juha 14122 Niskanen. 14123 - mtd/config: Fix byte read interface test. From Juha Niskanen. 14124 - mtd: Fix some unallocated and NULL pointer issues. rwb->wrflush and 14125 rwb->wrmaxblocks in rwbuffer could get unallocated values from 14126 ftl_initialize() in some configurations. Also fixes related assert: 14127 14128 up_assert: Assertion failed at file:rwbuffer.c line: 643 14129 14130 that can happen with the following configuration: 14131 14132 CONFIG_FTL_WRITEBUFFER=y 14133 CONFIG_DRVR_WRITEBUFFER=y 14134 # CONFIG_FS_WRITABLE is not set 14135 14136 These problems are caused by CONFIG variable differences between the 14137 buffer layers. TODO: This is not a perfect solution. readahead 14138 support has similar issues. From Juha Niskanen. 14139 - net procfs: Fix buffer corruption and refactor netdev_statistics.c. 14140 From Masayuki Ishikawa. 14141 - FAT: Fix 'Missing unlock' in fs_fat32.c. From Masayuki Ishikawa. 14142 - VFS fdopen: Add missing file stream flags clearing. Clear file 14143 stream structure regardless of config options. Structure clearing is 14144 needed as previous use of stream list entry might leave fs_flags 14145 set. From Harri Luhtala. 14146 - mtd/smart: Fix use of uninitialized variable. From Jussi Kivilinna. 14147 - mtd/w25.c: Enable short delay after sector/chip erase. From Jussi 14148 Kivilinna. 14149 - mtd/config: Add some error checks for I/O errors. From Juha 14150 Niskanen. 14151 14152 * Graphics/Graphic Drivers: 14153 14154 - net procfs: Some long lines were being generated that cause buffer- 14155 related problems and corrupted output. 14156 14157 * Networking/Network Drivers: 14158 14159 - Fixed wrong assert on udp dgram send. From Pascal Speck. 14160 - TCP/IPv6: Fix a compile issue when IPv6, but not IPv4 is enabled. 14161 - net/socket/accept: Fix building with CONFIG_NET_LOCAL_STREAM. From 14162 Jussi Kivilinna. 14163 - Argument of network device IOCTL should be unsigned long, just as 14164 will all other IOCTL methods. 14165 - net/socket: Fix cloning of local and raw sockets. From Jussi 14166 Kivilinna. 14167 - TCP: Wait for 3-Way Handshare before accept() returns. From Simon 14168 Piriou. 14169 - TCP: Send RST if application 'unlistens()' before we complete the 14170 connection sequence. 14171 - TCP: An RST received during the 3-way handshake requires a little 14172 more clean-up. 14173 - IPv6: Fix net_ipv6_pref2mask(). From Masayuki Ishikawa. 14174 - network IOCTL commands: The only place in net/netdev/netdev_ioctl.c 14175 where the interface state should change is for SIOCSIFFLAGS. The 14176 other ones .. SIOCSIFADDR, SIOSLIFADDR, SIODIFADDR .. should not 14177 change the link state. From Sebastien Lorquet. 14178 - TCP: Fix tcp_findlistner() in dual stack mode. From Masayuki 14179 Ishikawa. 14180 14181 * Common Drivers: 14182 14183 - Fix as5048b by adding missing frequency parameter. From Andreas 14184 Bihlmaier. 14185 - multiple fixes in nrf24l01 driver: (1) signal POLLIN if there is 14186 already data in the FIFO, (2) send ETIMEDOUT to userspace after 2 14187 seconds if TX IRQ was not received, (3) handle FIFO overflow, (4) 14188 handle invalid pipes/empty FIFO, and (5) multiple cosmetics (missing 14189 static, duplicate define, missing \n). From Leif Jakob. 14190 - input/mxt: Prevent overriding i2c transfer return value. 14191 put_reg/get_reg function was overriding i2c transfer error code with 14192 i2creset return value, that lead to OK status although actual 14193 transfer failed. From Juha Niskanen. 14194 - drivers/audio/wm8904: WM8904 has same problem as that fixed by Juha 14195 Niskanen in the MaxTouch driver. 14196 - UART 16550: Missing left parenthesis in function prototype. This is 14197 Bitbucket Issue #41. 14198 - USBMSC: Fix a wrong lun number issue. From Masayuki Ishikawa. 14199 - drivers/i2c: Fix compile issues if CONFIG_DISABLE_PSEUDOFS_OPERATIONS 14200 is enabled. 14201 - drivers/serial: I discovered a problem in the file 14202 drivers/serial/serial.c concerning the function uart_close. In the 14203 case that a serial device is opened with the flag O_NONBLOCK the 14204 function uart_close blocks until all data in the buffer is 14205 transmitted. The function close called on an handle opened with 14206 O_NONBLOCK should not block. The problem occurred with a CDC/ACM 14207 device. From Stefan Kolb. 14208 - drivers: Fix some bad NULL checks. From Juha Niskanen. 14209 - drivers: Rename newly introduced up_i2creset to I2C_RESET. From 14210 Juha Niskanen. 14211 - drivers/bch: BCH character driver bch_ioctl() always returns -ENOTTY 14212 for DIOC_GETPRIV command. It should returns OK if DIOC_GETPRIV 14213 command succeeds. From EunBong Song. 14214 - Replace sprintf() with snprintf() in pipe.c. From Nobutaka Toyoshima. 14215 - drivers/bch: Fix 'Missing Unlock' in bchdev_driver.c. From Masayuki 14216 Ishikawa. 14217 - button_upper: Fix interrupt enabling for poll-events. From Jussi 14218 Kivilinna. 14219 - drivers/{sensors,usbmisc}: Fix uninitialized I2C frequency. From 14220 Juha Niskanen. 14221 14222 * ARM: 14223 14224 - Set EABI stack alignment for all ARM architectures (remove OABI 14225 code). From David Cabecinhas. 14226 - Remove redundant interrupt stack coloring and OABI code. From David 14227 Cabecinhas. 14228 - Fix off-by-one interrupt stack allocation in 8-byte aligned 14229 architectures. From David Cabecinhas. 14230 14231 * ARMv6-M: 14232 14233 - CONFIG_DEBUG_HARDFAULT should be available for Cortex-M0 too. 14234 14235 * Microchip/Atmel SAM3/4 Drivers: 14236 14237 - SAM3/4: Fixed configurations for TWI master. Obviously an 14238 incomplete port from SAMA5. 14239 14240 * Microchip/Atmel SAMv7 Drivers: 14241 14242 - SAMV7: Watchdog: Fix Forbidden Window Value. According the Datasheet 14243 the WDD Value is the lower bound of a so called Forbidden Window and 14244 to disable this we have to set the WDD Value greater than or equal to 14245 the WDV Value. This seems to be a bug in the datasheet. It looks 14246 like we have to set it to a greater value than the WDV to really 14247 disable this Thing. When triggering the Watchdog faster than the 14248 (very slow) clock source of the Watchdog fires, this Forbidden Window 14249 Feature resets the System if WDD equals to WDV. This Changeset 14250 disables the Forbidden Window by setting the WDD Value to the Maximum 14251 (0xfff) Value possible. From Frank Benkert. 14252 - SAMV7 EMAC: Add conditional logic to account the fact that the 14253 SAMV71 has 6 rather than 3 queues after version 1. From Ian McAfee. 14254 14255 * NXP/Freescale Kinetis Drivers: 14256 14257 - Kinetis: Fixed GPIO _PIN_OUTPUT_LOWDRIVE swapped with 14258 _PIN_OUTPUT_OPENDRAIN. From David Sidrane. 14259 - Ensure interrupts are back on BEFORE running code dependent on 14260 clock_systimer. From David Sidrane. 14261 - Kinetis k66, k64, k60, k40, k20: Pin mux configure all I2C signals as 14262 Open Drain. The output structure of the GPIO for I2C needs to be 14263 open drain. When left at the default, one can observe on a scope the 14264 slave contending with the push-pull during the ACK. From David 14265 Sidrane. 14266 - Kinetis K66: Fixed TMP2_CH1 definition. From David Sidrane. 14267 - Kinetis K66: Define ALT1 to match ref manual. From David Sidrane. 14268 - Kinetis K66: GPIO and pin mux cleanup. From David Sidrane. 14269 - Kinetis ADC: Various corrections and updates. From David Sidrane. 14270 14271 * NXP/Freescale LPC43xx: 14272 14273 - Add missing PINCONF_INBUFFER in several places of 14274 lpc4310203050_pinconfig.h. From Andreas Bihlmaier. 14275 - Fix logic in preprocessor checks and correct arguments to 14276 lpc43_pin_config initialization. From Andreas Bihlmaier. 14277 14278 * NXP/Freescale LPC43xx Drivers: 14279 14280 - Fix logic error in lpc43_adc. From Andreas Bihlmaier. 14281 - Use correct macro for irqid (fortunately both point to 14282 LPC43_IRQ_EXTINT+18). From Andreas Bihlmaier. 14283 - Actually write modified value to register. From Andreas Bihlmaier. 14284 - Increase number of supported PWM channels from 4 to 6. From Andreas 14285 Bihlmaier. 14286 14287 * Silicon Labs EFM32 Drivers: 14288 14289 - EFM32 I2C: Fix timeout calculation. From Masayuki Ishikawa. 14290 14291 * STMicro STM32: 14292 14293 - As discovered by dcabecinhas. This fix assume the 8 byte alignment 14294 options for size stack size or this will overwrite the first word 14295 after TOS. See 14296 https://github.com/PX4/Firmware/issues/6613#issuecomment-285869778. 14297 From David Sidrane. 14298 - STM32 F7: In stm32_allocateheap.c There are 5 not 4 configurations. 14299 From David Sidrane. 14300 14301 * STMicro STM32 Drivers: 14302 14303 - STM32, STM32 F7, STM32 L4: OTG host drivers: Do not do data toggle 14304 if interrupt transfer is NAKed. Suggested by webbbn@gmail.com. 14305 - Save elapsed time before handling I2C in stm32_i2c_sem_waitstop(). 14306 This change follows the same logic as in previous fix to 14307 stm32_i2c_sem_waitdone(). It is possible that a context switch 14308 occurs after I2C registers are read but before elapsed time is saved 14309 in stm32_i2c_sem_waitstop(). It is then possible that the registers 14310 were read only once with "elapsed time" equal 0. When scheduler 14311 resumes this thread it is quite possible that now "elapsed time" will 14312 be well above timeout threshold. In that case the function returns 14313 and reports a timeout, even though the registers were not read 14314 "recently". Fix this by inverting the order of operations in the loop 14315 - save elapsed time before reading registers. This way a context 14316 switch anywhere in the loop will not cause an erroneous "timeout" 14317 error. From Freddie Chopin. 14318 - STM32, STM32 F7, and STM32 L4: Clone Freddie Chopin's I2C change to 14319 similar STM32 I2C drivers. From David Sidrane. 14320 - STM32: OTG host implementations of stm32_in_transfer() must obey the 14321 polling interval for the case of isochronous and interrupt endpoints. 14322 - STM32: Fix erase sector number for microcontrolers with more than 11 14323 sectors. Erase a sector from the second bank cause the bit 4 of SNB 14324 being set but never unused, so trying to erase a sector from the first 14325 bank was actually eraseing a sector from the second bank. From José 14326 Roberto de Souza. 14327 - STM32: Make up_progmem thread safe. Writing to a flash sector while 14328 starting the erase of other sector have a undefined behavior so lets 14329 add a semaphore and synchronize access to Flash registers. But for 14330 the semaphore to work it needs to be initialized so each board needs 14331 call stm32_flash_initialize() on initialization, so to avoid runtime 14332 problems it is only using semaphore and making it thread safe if 14333 initialized, after all boards starts to call stm32_flash_initialize() 14334 we can remove the boolean and the check. From José Roberto de Souza. 14335 - STM32: Add workaround for flash data cache corruption on 14336 read-while-write. This is a known hardware issue on some STM32 see 14337 the errata of your model and if you make use of both memory banks you 14338 should enable it. From José Roberto de Souza. 14339 - STM32 Flash fixes. From José Roberto de Souza. 14340 - STM32 Flash: Missing unlock on F1 HSI off path. From David Sidrane. 14341 - STM32 F4 I2C: I needed to use DS3231, I remember that in past it 14342 worked ok, but now for stm32f4xx is used another driver (chip 14343 specific, stm32f40xxx_i2c.c) and DS3231 driver doesn't work. After 14344 investigating a problem I found that I2C driver (isr routine) has a 14345 few places there it sends stop bit even if not all messages are 14346 managed. So, e.g., removing stm32_i2c_sendstop (#1744) and adding 14347 stm32_i2c_sendstart after data reading helps to make DS3231 working. 14348 From Alexander Oryshchenko; verified by David Sidrane. 14349 - STM32 F7 Serial: Serial fix for dropped data: (1) Revert the 14350 inherited dma bug from the stm32. see 14351 https://bitbucket.org/nuttx/nuttx/commits/df9ae3c13fc2fff2c21ebdb098c520b11f43280d 14352 for details. And (2) Most all CR1-CR3 settings can not be configured 14353 while UE is true. Threfore we make all operation atomic and disable 14354 UE and restore it's originalstate on exit. From David Sidrane. 14355 - STM32 L1: Fix IWDG and WWDG debug mode stop for STM32L15XX. From 14356 Juha Niskanen. 14357 - STM32 F7: Fix UART7 and UART8 IFLOWCONTROL options. From Jussi 14358 Kivilinna. 14359 - STM32 F7: Add warning for RXDMA + IFLOWCONTROL combination. 14360 Combination of RXDMA + IFLOWCONTROL does not work as one might 14361 expect. Since RXDMA uses circular DMA-buffer, DMA will always keep 14362 reading new data from USART peripheral even if DMA buffer underruns. 14363 Thus this combination only does following: RTS is asserted on USART 14364 setup and deasserted on shutdown and does not perform actual RTS 14365 flow-control. Data loss can be demonstrated by doing long up_mdelay 14366 inside IRQ critical section and feeding data to RXDMA+IFLOWCONTROL 14367 UART. From Jussi Kivilinna. 14368 - STM32 F7 Serial: Do not stop processing input in SW flow-control 14369 mode. From Jussi Kivilinna. 14370 - STM32 L4 DMA: Correct bad channel definition. From Sebastien Lorquet. 14371 - STM32 F7: Warn if no DMA2 configured when using ADC with DMA. Also 14372 correct ADC channel numbers that DMA callback passes to upper half 14373 driver. From Juha Niskanen. 14374 - STM32 F7 ADC: Do not override ADCPRE_DIV when measuring 14375 internal voltage. From Juha Niskanen. 14376 - STM32 L4: Don't think these chips have DPFPU, DTCM or ITCM. From 14377 Juha Niskanen. 14378 - STM32 F7 Flash: macro naming errors, there is no FLASH_CONFIG_F for 14379 F7. From Juha Niskanen. 14380 - STM32 L4: stm32l4x6xx_pinmap: Update I2C4 and DCMI pins. From Juha 14381 Niskanen. 14382 - STM32 L4: stm32l4_i2c: change wrong macro to CONFIG_I2C_POLLED. From 14383 Juha Niskanen. 14384 - Fix STM32F7 I2C interrupt handler. From Jussi Kivilinna. 14385 - STM32: Serial Allow configuring Rx DMA buffer size. From David 14386 Sidrane. 14387 - STM32 CAN: I had the problem that the transmit FIFO size (= actual 14388 elements in FIFO) was slowly increasing over time, and was full after 14389 a few hours. The reason was that the code hit the line 14390 "canerr("ERROR: No available mailbox\n");" in stm32_cansend, so 14391 can_xmit thinks it has sent the packet to the hardware, but actually 14392 has not. Therefore the transmit interrupt never happens which would 14393 call can_txdone, and so the size of the FIFO size does not decrease. 14394 The reason why the code actually hit the mentioned line above, is 14395 because stm32can_txready uses a different (incomplete) condition than 14396 stm32can_send to determine if the mailbox can be used for sending, 14397 and thus can_xmit forwards the packet to stm32can_send. 14398 stm32can_txready considered mailboxes OK for sending if the mailbox 14399 was empty, but did not consider that mailboxes may not yet be used if 14400 the request completed bit is set - stm32can_txinterrupt has to 14401 process these mailboxes first. Note that I have also modified 14402 stm32can_txinterrupt - I removed the if condition, because the CAN 14403 controller retries to send the packet until it succeeds. Also if the 14404 condition would not evaluate to true, can_txdone would not be called 14405 and the FIFO size would not decrease also. From Lederhilger Martin. 14406 - STM32 Serial: Fix freezing serial port. Serial interrupt 14407 enable/disable functions do not disable interrupts and can freeze 14408 device when serial interrupt is received while execution is at those 14409 functions. Trivially triggered with two or more threads write to 14410 regular syslog stream and to emergency stream. In this case, freeze 14411 happens because of mismatch of priv->ie (TXEIE == 0) and actually 14412 enabled interrupts in USART registers (TXEIE == 1), which leads to 14413 unhandled TXE interrupt and causes interrupt storm for USART. From 14414 Jussi Kivilinna. 14415 - STM32 I2C: Make private symbols static. From Juha Niskanen. 14416 - STM32 L4 GPIO: Put back EXTI line source selection. From Juha 14417 Niskanen. 14418 - STM32 L4 RTC: Store RTC MAGIC to backup reg, not to address zero. 14419 From Juha Niskanen. 14420 14421 * STMicro STM32 Boards: 14422 14423 - Disable serial console on stm32f103-minimum usbnsh example project 14424 config. Devices enumerate after this change. From Bob Ryan. 14425 - Nucleo-144: Default for choice in Kconfig was not one of the 14426 possible choices. 14427 - Nucleo-F4X1RE User LEDS: Issue #51 reports compilation problems with 14428 stm32_userled.c. Reported by Gappi92. 14429 14430 * TI Tiva Drivers: 14431 14432 - Tiva I2C: Correct an error in conditional compilation. 14433 - Tiva SSI: Resolves issue 52 'Copy-Paste error in 14434 tiva_ssibus_initialize()' submitted by Aleksandr Kazantsev. 14435 14436 * C Library/Header Files: 14437 14438 - C Library vsnprintf(): Fix precision for string formatting. Fixes 14439 use of format precision to truncate input string. From Jussi 14440 Kivilinna. 14441 - C Library vsnprintf(): If size is zero, then vsnprintf() should 14442 return the size of the required buffer without writing anything. 14443 From Jussi Kivilinna. 14444 - C Library netdb: in dns_query_callback, ret != -EADDRNOTAVAIL 14445 condition consumes error returns including EAGAIN in this case, 14446 dns query retransmission doesn't work. From Ritajina. 14447 - C Library netdb: Fix time info in lib_dnscache.c. From Masayuki 14448 Ishikawa. 14449 - C Library netdb: Fix bugs in lib_gethostbynamer.c. This fix sets 14450 h_name in struct hostent returned by gethostbyname(). From Masayuki 14451 Ishikawa. 14452 - C Library Defect Workaround: replace '%6.6u' format with an 14453 equivalent '%06u'. From Tomasz Wozniak. 14454 14455 * Tools 14456 14457 - Fix mksyscall host binary name. From Alan Carvalho de Assis. 14458 14459 * Applications (apps/) 14460 14461 - Fix some calls to task_create(): argv[0] is the first parameter, not 14462 the name of the task. 14463 - Bitbucket Issue 5: I found an unexpected behavior in apps/ 14464 configuration generation. Adding external symbolic link in apps/ 14465 directory and using Make.defs for Kconfig generation, Kconfig file 14466 has a wrong path in the source argument. It contains original dir 14467 path outside of the source tree instead path to sub-directory in 14468 apps/. The problem is connected with make/system symbolic link path 14469 resolution. Corrected by a patch submitted by Artur Madrzak with 14470 Issue 5. 14471 - apps/: Make more globals static to avoid name clashes. From Juha 14472 Niskanen. 14473 14474 * NSH: apps/nshlib: 14475 14476 - NSH library: In nsh_argexand(), if CONFIG_NSH_ARGCAT is defined but 14477 CONFIG_NSH_CMDPARMS defined and/or CONFIG_DISABLE_ENVIRON not 14478 defined, then there is a situation that causes an infinite loop in 14479 the parser. Noted by Freddie Chopin. 14480 - NSH library: Fix building when CONFIG_NET_USRSOCK enabled with other 14481 link-layers. From Jussi Kivilinna. 14482 - NSH library: Fix some warnings about integer/pointer casts of 14483 different sizes (probably only effects 64-bit simulation). 14484 - NSH library: Fix open flags in nsh_codeccmd.c. From Masayuki 14485 Ishikawa. 14486 - I need to look at the registers that are at or around 0xe000ef90. 14487 Using mw and xd, I see that nsh does not support pointers greater 14488 than 0x7fffffff. A quick look at the source shows that the pointers 14489 for those two commands are set with calls to strtol() rather than 14490 strtoul(). Changing the two pointer-setting instances to strtoul() 14491 fixes the problem, at least for my architecture/config. From Ian 14492 McAfee. 14493 - NSH library: Fix a resource leak in cmd_hexdump(). From Nobutaka 14494 Toyoshima. 14495 14496 * Examples/Tests: apps/examples: 14497 14498 - apps/examples/hidkbd: Remove call to arch_usbhost_initialize(). 14499 That is violation of the OS interfacing rules and will no longer be 14500 supported. USB host should be initialized as part of the normal 14501 board bring-up logic as with any other devices and should not involve 14502 illegal calls from applications into the OS. 14503 - apps/examples/usbterm: Removed because it is not very useful and 14504 because it can be configured to use an illegal call into the OS. 14505 - examples/mm: Fix Makefile. Built-in was not being registered. 14506 - examples/hidkbd: Add some missing configuration settings. 14507 - examples/random: Avoid stack overflows. From Juha Niskanen. 14508 - examples/nettest: Fix an error in pre-processor expression. 14509 - examples/mtdpart: Prevent part array overflow. mtdpart examples 14510 create partitions and allocate from 1 index not a 0 index to part[] 14511 array. This cause buffer overflow for part array. This change fixes 14512 this problem. From EunBong Song. 14513 - examples/can: Fix can example app to print data when 14514 CONFIG_EXAMPLES_CAN_READ is defined. From Alan Carvalho de Assis. 14515 14516 * Network Utilities: apps/netutils: 14517 14518 - Not a clean fix, but at least makes DHCP working with 14519 CONFIG_NETDEV_MULTINIC. From Andreas Bihlmaier. 14520 - Ensure netlib will not be broken when setip will not bring the 14521 network up anymore. From Sebastien Lorquet. 14522 14523 * CAN Utilities: apps/canutils: 14524 14525 - Fix libcanard github download link to get it compiling correctly. 14526 From Alan Carvalho de Assis. 14527 - Fix to use the new canardInit() function. From Alan Carvalho de 14528 Assis. 14529 14530 * System Utilities (apps/system) 14531 14532 - system/dhcpc: Add missing argument of fprintf. 14533 14534 * Tools (apps/tools): 14535 14536 - The dedicated windows tool at tools/mkkconfig.bat uses $APPSDIR, 14537 which is not a windows shell variable, and is left uninitialized, but 14538 in fact should be the current directory. From Sebastien Lorquet. 14539 14540NuttX-7.22 Release Notes 14541------------------------ 14542 14543The 122nd release of NuttX, Version 7.22, was made on September 9, 2017, 14544and is available for download from the Bitbucket.org website. Note 14545that release consists of two tarballs: nuttx-7.22.tar.gz and 14546apps-7.22.tar.gz. These are available from: 14547 14548 https://bitbucket.org/nuttx/nuttx/downloads 14549 https://bitbucket.org/nuttx/apps/downloads 14550 14551Both may be needed (see the top-level nuttx/README.txt file for build 14552information). 14553 14554Additional new features and extended functionality: 14555 14556 * Core OS: 14557 14558 - pthreads: Move functions from sched/pthreads to libc/pthreads. These 14559 functions just coordinate other OS interface calls but are not a 14560 fundamental OS interfaces and, hence, do not belong within the OS: 14561 pthread_yield(), pthread_once(), pthread_cond_init(), 14562 pthread_cond_destroy(), pthread_barrier_init(), 14563 pthread_barrier_destroy(), and pthread_barrier_wait(). 14564 - Add power-related debug output. 14565 14566 * File Systems/Block and MTD Drivers 14567 14568 - RAMTRON: Add support for splitting block writes in chunks. Some 14569 Re-RAMs like MB85AS4MT have a write buffer size limitation. From 14570 Boris Astardzhiev. 14571 - MTD: Add driver for Macronix QuadSPI flash memory. From Simon Piriou. 14572 14573 * Graphics/Display Drivers: 14574 14575 - SSD1306 LCD Driver: (1) Separate lcd_dev_s setup to separate object. 14576 g_oleddev takes 1 KiB because framebuffer and was allocated to .data 14577 section because of lcd_dev_s function pointer setup. Move lcd_dev_s 14578 setup out, so that g_oleddev goes to .bss and avoid wasting ROM. (2) 14579 Fix memory corruption caused by ssd1306_getrun(). ssd1306_getrun was 14580 writing one extra byte (with value 0) past target buffer when pixlen 14581 is multiple of 8. When pixlen was not multiple of 8, last byte of 14582 buffer was fully cleared, instead of modifying only the (pixlen % 8) 14583 bits of last byte. (3) Add support for board power control. 14584 ThingseeOne has regulator for controlling display power on/off. Patch 14585 adds support for board based power control to SSD1306 driver. (4) Add 14586 DD-12864WO-4A/SSD1309 support to SSD1306 driver. From Jussi Kivilinna. 14587 14588 * Networking/Network Drivers: 14589 14590 - Sockets: Support listening sockets in the getsockname() function. 14591 From Roland Takacs. 14592 - IP Forwarding: At the IP level, network may be configured to forward 14593 IP packets that are not destined for the target through a different 14594 network device, decrementing the packet TTL. 14595 - IP forwarding: Add optional support to forward broadcast and 14596 multicast packets. Add missing ICMP support. 14597 - ICMPv6: Add 6LoWPAN and IP forwarding support. 14598 - ICMPv6: Support source link-layer address option in RA. From 14599 Masayuki Ishikawa. 14600 - TUN Driver: Add definitions that will permit TUN-only networking. 14601 - Socket I/F: Created a socket interface used to provide socket support. 14602 Each address family has an interface that describes how to perform 14603 socket operations on that address family. Currently only a couple of 14604 methods are defined in the socket interface call table 14605 - Remove CONFIG_NET_MULTILINK. This increases code size by a little, 14606 but greatly reduces the complexity of the network code. 14607 - Network procfs: Add support for routing tables at proc/net/route. 14608 - Network procfs: Add support for network procfs statistics for the 14609 PF_IEEE802154 address family. 14610 - Network Driver Backlog: Remove driver based backlog support. This 14611 affects the entire network, but is used by only one driver. The only 14612 supported RX backlog is now via common read-ahead buffering. 14613 14614 * Wireless Networking/Wireless Drivers: 14615 14616 - IEEE 802.15.4 MAC / MRF24J60 Driver: Extensive updates for 14617 association/beacon-enabled networks. From Anthony Merlino. 14618 - IEEE 802.15.4 MAC / MRF24J60 Driver: Hook in setdevmode from newly 14619 added radio attribute setting. From Anthony Merlino. 14620 - IEEE 802.15.4 MAC: Supports get request for coordinator address. From 14621 Anthony Merlino. 14622 - IEEE 802.15.4 MAC: Notify radio layer of changes in devmode. From 14623 Anthony Merlino. 14624 - IEEE 802.15.4: Add special attribute that can be used to perform a 14625 regdump of the radio. From Anthony Merlino. 14626 - IEEE 802.15.4 loopback driver: Better simulation addressing: short 14627 and extended addresses, panid, and IP address conversion. 14628 - IEEE 802.15.4 Network Driver: Add logic to setup the network mask, 14629 update the MAC-based IPv6 addressing when the network is brought up. 14630 The idea is that addressing changes are supposed to occur only while 14631 the network is down but won't take effect until the network is up 14632 again. 14633 - PktRadio: Add an infrastructure to support networking on generic 14634 (non-IEEE 802.15.4) packet radios. 14635 - PktRadio Loopback Driver: Add a PktRadio loopback network driver to 14636 testing testing with 6LoWPAN and PktRadios on the simulator. 14637 - Spirit Network Driver: The Spirit1 radio (SPSGRF-915) is the first 14638 generic PktRadio Network driver. Based on STMicros STack packets 14639 with 8-bit addressing. We need to use the STack packets in order to 14640 provide the source address and automatic ACKing. 14641 - Network procfs: Fix so that PktRadio address are shown correctly. 14642 - Networking: Add support for some packet radio IOCTL commands. 14643 - 6LoWPAN: Added handling for TCP and ICMPv6 packets. 14644 - 6LoWPAN: Add configurable support for 6LoWPAN star topology. With 14645 this change, the endpoints which are the 'points' of the star will 14646 forward all traffic to the coordinator. The coordinator is assumed to 14647 be the 'hub' of the star. This function also used IPv6 forwarding. 14648 - 6LoWPAN: The original, Contiki-based design used only a single buffer 14649 for reassemblying larger packets. This could be a problem issue for 14650 hub configurations which really need the capability concurrently 14651 reassemble multiple incoming streams concurrently. These was also a 14652 design issue in that the reassembly buffer could be corrupted by 14653 outgoing packets. The design was extended to support multiple 14654 reassembly buffers, each associated with the reassembly tag and source 14655 address. This assures that there can be be no corruption of the 14656 reassembly once it has started. 14657 - 6LoWPAN PktRadio: Now radio agnostic. All IEEE 802.15.4 dependencies 14658 have been removed or isolated so that 6LoWPAN can be used with any 14659 kind of packet radio. This involved things like: (1) generalizing 14660 the representation of radio MAC meta-data, (2) changes to handle 14661 variable-length radio addresses, (3) removal of all explicit IEEE 14662 802.15.4 types, references, and interfaces, (4) a new radio driver 14663 interface to return 'capabilities' of the driver. 14664 - ICMPv6: Update so that ICMPv6 can be used with 6LoWPAN. 14665 - IPv6 Neighbor: Update table format to support IEEE 802.15.4 MAC 14666 addresses. 14667 - PF_IEEE802154 Address Family: Add support for the PF_IEEE802154 14668 address family socket type. This socket is similar to the PF_PACKET, 14669 "raw" packet address family except that: (1) it supports only 14670 SOCK_DRAM, not SOCK_RAW, and (2) works only with IEEE 802.15.4 14671 MAC-based radios. This address family permits simple access to IEEE 14672 802.15.4 IOCTLs and frame-level network transfers. 14673 14674 * Other Common Device Drivers: 14675 14676 - Dynamically configurable USB composite devices: We developed a huge 14677 Changeset over a year ago to make USB Composite configuration 14678 dynamical and be able to instantiate the CDC/ACM multiple times inside 14679 this device. We use this feature to switch between one in typical USB MSC + CDC/ACM configuration and up to three CDCACMs dynamically. 14680 I've changed the interface for some USB-Functions to receive also the 14681 dynamic configuration. From Frank Benkert. 14682 - Franks' change remained on a branch until all issues were resolved. 14683 the current version in Master is complete and ready for use. 14684 - power: battery_charger: Add ioctl for charging input current. From 14685 Juha Niskanen. 14686 - SMPS driver: Add generic upper-half driver for SMPS. From Mateusz 14687 Szafoni. 14688 - LED Driver: Add support for inverted LEDS. From Jeff. 14689 - LED Driver: Add lightness correction for RGB LED driver. From Jeff. 14690 - LTC4151 Driver: Add driver for LTC4151 current and voltage monitor. 14691 From Giorgio Groß. 14692 - Serial TERMIOS: tcdrain() implementation based on a new term ioctl. 14693 From Sebastien Lorquet. 14694 - Serial TERMIOS: Add support for TCFLUSH. From Sebastien Lorquet. 14695 - syslog: Add option to use the CLOCK_MONOTONIC for time stamping. From 14696 Jussi Kivilinna. 14697 - HC-SR04 Driver: Add support to HC-SR04 distance sensor. From Alan 14698 Carvalho de Assis. 14699 - COMP Driver: Add poll support. From Pekka Ervasti. 14700 - BQ2429X Driver: Add driver for TI BQ2429X battery charger. From Juha 14701 Niskanen. 14702 - ADC Driver: Add poll support. From Juha Niskanen. 14703 - BCH Driver: Add poll support. From Jussi Kivilinna. 14704 - RTC Driver: Extend the RTC framework with an alarm read ioctl 14705 (RTC_RD_ALARM). Through it consumer could get configuration settings 14706 about previously scheduled hardware alarms (active status, hours, 14707 minutes, seconds). From Boris Astardzhiev. 14708 14709 * Simulation 14710 14711 - sim/ipforward: Add an IP forwarding configuration using TUN devices 14712 and apps/examples/tun. 14713 - Console: Add non blocking read to devconsole driver. From Simon 14714 Piriou. 14715 - Networking: Poll for TX frames to speed up driver. From Simon Piriou. 14716 - pf_ieee802154: Add configuration for testing PF_IEEE802154 address 14717 family sockets. 14718 - ARM Simulator: Adds necessary functionality to build Simulator under 14719 ARM Linux. Tested only on Raspberry3. Currently setjmp/longjmp do not 14720 save/restore floating point registers. From Nickolay Semyonov. 14721 14722 * MicroChip/Atmel SAML21 Drivers: 14723 14724 - SAML21 I2C driver. Developed for and contributed with permissin from 14725 Filament company. From Alan Carvalho de Assis. 14726 - SAMD/L21 USB Driver: Add a USB driver. Developed for Filament Inc. 14727 by Offcode, LTD. From Janne Rosberg. 14728 14729 * MicroChip/Atmel SAMv7 Boards: 14730 14731 - SAMV71-XULT: Add support for the MRF24J40 radio and create a 14732 mrf24j40-starhub configuration. 14733 - SAME70-Xplained: Add MRF24J40 support. 14734 14735 * NXP Freescale Kinetis Drivers: 14736 14737 - Kinetis USB Improvements: usbdev clean up ensuring proper use of HW. 14738 Rework suspend and resume logic so they perform properly. Made attach 14739 and detach functions optional. As they do not make sense for a bus 14740 powered device. From David Sidrane. 14741 - Kinetis SPI driver: From David Sidrane. 14742 - Kinetis: I2C driver added I2C3, reference counting and reset. 14743 Refactored the driver to support reference counting and reset added 14744 I2C3. From David Sidrane. 14745 - Kinetis RTC: Implementation of the alarm read function. 14746 14747 * NXP Freescale Kinetis Boards: 14748 14749 - configs/teensy-3.x USB: Define USBOTG-FS Read from FLASH access in 14750 board config. Allow the board config to define the USBOTG-FS to have 14751 Read access to FLASH. From David Sidrane. 14752 - configs/teensy-3.x: Removed call to khci_usbattach. The call is not 14753 need by the driver if CONFIG_USBDEV_BUSPOWERED=y. On a USB powered device if we are running we are attached. From David Sidrane. 14754 - freedom-k66f: Use SPI driver. Initialize SPI1 on connector J6. No 14755 real use, as of yet. From David Sidrane. 14756 14757 * NXP Freescale LPC43xx: 14758 14759 - LPC43xx: Modify up_allocate_(k)heap() to support PROTECTED mode. From 14760 Alan Carvalho de Assis. 14761 14762 * NXP Freescale LPC4xx Boards: 14763 14764 - configs/Bambino: Add protected mode configuration to Bambino board. 14765 From Alan Carvalho de Assis. 14766 14767 * On Semiconductor LC823450 14768 14769 - LC823450: Initial support for ON Semiconductor LC823450. From Masayuki 14770 Ishikawa. 14771 - LC823450: eMMC/SD and USB support for LC823450. From Masayuki Ishikawa. 14772 14773 * On Semiconductor LC823450 Boards 14774 14775 - LC823450-XGEVK: LC823450-XGEVK board support. From Masayuki 14776 Ishikawa. 14777 - LC823450-XGEVK: Add eMMC/SD and USB support. From Masayuki Ishikawa. 14778 14779 * STMicro STM32: 14780 14781 - STM32 L4: Add support for the STM32L475 family. 14782 - STM32 L4 RCC: Enable ADC clock source. From Juha Niskanen. 14783 - STM32: Allow clock frequencies > 168 MHz on stm32f427/429. We need 14784 to enable the power overdrive for this case. This change allows the 14785 required bits to be set in proper sequence. It also modifies the 14786 local register access operations to allow more than 16-bit registers. 14787 From Sebastien Lorquet . 14788 - STM32 F4: Add support for STM32F433RC. From Alan Carvalho de Assis. 14789 - STM32 F7: Add new configuration option for enabling flash ART 14790 Accelerator and flash prefetcher. From Jussi Kivilinna. 14791 14792 * STMicro STM32 Drivers: 14793 14794 - STM32 TIM: Add the set counter function for stm32 timers. From 14795 Sergey Ustinov. 14796 - STM32 HRTIM: Update HRTIM definitions. Add HRTIM driver. From 14797 Mateusz Szafoni. 14798 - STM32 HRTIM: Add HRTIM character driver. From Mateusz Szafoni. 14799 - STM32 HRTIM: Fix DAC triggers configuration, Add missing master timer 14800 logic, enable DAC triggering. From Mateusz Szafoni. 14801 - STM32 HRTIM: Add DMA configuration. From Mateusz Szafoni. 14802 - STM32 HRTIM: Add burst mode configuration. From Mateusz Szafoni. 14803 - STM32 RTC: Port Boris Astardzhiev's RTC change for STM32L4 to STM32. 14804 - STM32 DAC: Add support for HRTIM triggering. Separate dma buffer 14805 configuration for channels. From Mateusz Szafoni. 14806 - STM32 DAC: Conditional logic for timer triggering, fix TSEL 14807 configuration when HRTIM, DMA request remapping, Add DMA buffers 14808 initialization logic. From Mateusz Szafoni. 14809 - STM32 DAC: Support external triggering for DMA transfer. From Mateusz 14810 Szafoni. 14811 - STM32 L1 TIM: Add base address for TIM11. From Juha Niskanen. 14812 - STM32 F4 FLASH: Enable/disable the flash write protection on any 14813 sector. I have verified it to work on the STM32 F427. From Sebastien 14814 Lorquet. 14815 - STM32 F4 Clocking: To use an external oscillator module (not just a 14816 crystal) with the STM32F4, one needs to enable the HSEBYP bit in the 14817 RCC_CR register. This change allows an integrator to define 14818 STM32_RCC_CR_HSEBYP in their board.h file if they want this 14819 configuration. From Jeff. 14820 - STM32 F4 USB: I'm working on bringing up USB full-speed support on 14821 STM32F405. My board does not include a USB power switch, VBus 14822 sensing, over current detection, or ID pin. This commit add a 14823 config STM32_OTGFS_VBUS_ CONTROL which lets us selectively disable 14824 VBus sensing and control. I also sneaked in a change to disable the 14825 configgpio call for the ID pin, which is only used in OTG mode which 14826 isn't supported yet. The only pins that need to be initialized should 14827 be OTGFS_DP and OTGFS_DM. From Jeff. 14828 - STM32 FLASH: Add CONFIG_STM32_STM32F469 support. From David Sidrane. 14829 - STM32 COMP: Add default INM configuration and some missing COMP 14830 1,3,5,7 code. From Mateusz Szafoni. 14831 - STM32 F33: Add missing SYSCFG CFGR3 definitions. From Mateusz Szafoni. 14832 - STM32 L4 Serial: Allow configuring Rx DMA buffer size. From Juha 14833 Niskanen. 14834 - STM32 L4 COMP: Input minus pin extended selection. From Juha Niskanen. 14835 - STM32 L4 COMP: Bind to upper half comp driver. From Pekka Ervasti. 14836 - STM32 L4 DAC: Port from STM32. Add ADC register definitions. From 14837 Juha Niskanen. 14838 - STM32 L4 DAC: Add option for routing DAC output to ADC. Actually 14839 write something to the DAC DMA buffer. From Juha Niskanen. 14840 - STM32 L4 DAC: Separate DMA buffer configuration for channels. From 14841 Juha Niskanen. 14842 - STM32 L4 ADC: Implement peripheral. From Juha Niskanen. 14843 - STM32 F7: Definitions for I2C4, SDMMC2. Adapted RAM start / size to 14844 internal SRAM. From Titus von Boxberg. 14845 - STM32 F7 I2C4: I2C4_SDA can also be on GPIO PB7. From Titus von 14846 Boxberg. 14847 - STM32 F7 LTDC: Option for DSI output, inconsistency: the stm32f746 14848 does not feature a DSI interface. compilable with LTDC_INTERFACE and 14849 LTDC_USE_DSI. From Titus von Boxberg. 14850 - STM32 F7 Clocking: Added functions for DSI clock source selection. 14851 From Titus von Boxberg. 14852 - STM32 F7 Clocking: Enable APB2 DSI clock. From Titus von Boxberg. 14853 - STM32 F7 LTDC: No board specific dithering values used; corrected 14854 dithering init. Corrected LIPOS/LIPCR calculation. Change only 14855 polarity bits in LTDC_GCR. From Titus von Boxberg. 14856 - STM32 F7 Reset: Added function for reset. From Titus von Boxberg. 14857 - STM32 F7 DMA: DMA add dcache alignment check in stm32_dmacapable. In 14858 the case dcache write-buffed mode is used (not write-through) buffer 14859 alignment is required for DMA transfers because a) 14860 arch_invalidate_dcache could lose buffered writes data and b) 14861 arch_flush_dcache could corrupt adjacent memory if the maddr and the 14862 mend+1, the next next address are not on ARMV7M_DCACHE_LINESIZE 14863 boundaries. From David Sidrane. 14864 - STM32 F7 SDMMC: SDMMC remove widebus limitation on DMA. There is no 14865 documentation for the STM32F7 that limits DMA on 1 bit vrs 4 bit 14866 mode. From David Sidrane. 14867 - STM32 F7 SDMMC: SDMMC add dcache alignment check in 14868 dma{recv|send}setup. In the case where CONFIG_SDIO_PREFLIGHT is not 14869 used. 14870 - STM32 F7 RTC: Port Boris Astardzhiev's RTC change for STM32L4 to 14871 STM32F7. 14872 14873 * STMicro STM32 Boards: 14874 14875 - STM32F103-Minimum: Add GPIO device driver example. From Alan 14876 Carvalho de Assis. 14877 - STM32F103-Minimum: Add small hello example for STM32F103-Minimum 14878 board. From Alan Carvalho de Assis. 14879 - STM32F103-Minimum: Add support for SmartFS on Winbond W25 SPI NOR 14880 Flash. From Alan Carvalho de Assis. 14881 - STM32F103-Minimum: (1) Enable CONFIG_MTD_PARTITION in Kconfig if flash 14882 partition is enabled and (2) Update the README.txt file with info 14883 needed to get SmartFS working. From Alan Carvalho de Assis. 14884 - Nucleo-F334R8: Add HRTIM initialization. From Mateusz Szafoni. 14885 - Nucleo-F334R8: UART2 is default serial port (STLINK Virtual Port). 14886 From Mateusz Szafoni. 14887 - Clicker2-STM32: Add a configuration that was used with the MRF24J60 14888 for 6loWPAN testing. 14889 - Clicker2-STM32: Allow both IEEE 802.15.4 MAC character and network 14890 devices to be registered. 14891 - Clicker2-STM32: Add configurations to support the endpoint and hub 14892 roles in a star topology. 14893 - Clicker2-STM32: Add support for per-function-call stack checking. 14894 From Anthony Merlino. 14895 - Clicker2-STM32: Configure EDBG SPI CS just to make that it is 14896 disabled. 14897 - STM32F4 Discovery: Add logic to register the button driver and the 14898 user led driver if so configured. From Jan Pobrislo. 14899 - STM32F4-Discovery: Add a configuration for testing libc++. From Alan 14900 Carvalho de Assis. 14901 - B-L475E-IOT01A: Add support for the STMicro B-L475E-IOT01A board. 14902 From Simon Piriou. 14903 - B-L475E-IOT01A: Add support for the SPSRGF/Spirit1 radio module. Add 14904 a configuration for testing sprit radio. 14905 - B-L475E-IOT01A: Add configurations to support a star topology. 14906 - B-L475E-IOT01A: Add basic support for external Macronix QuadSPI flash 14907 memory. From Simon Piriou. 14908 - B-L475E-IOT01A: Enable UDP broadcast test in the spirit-starhub 14909 configuration. 14910 - STM32F334-DISCO: Add STM32F334-DISCO basic support. From Mateusz 14911 Szafoni. 14912 - STM32F746-Disco: Add ADC3 support. From Ivan Ucherdzhiev. 14913 - STM32L476-Disco: Add a knsh configuration that may be used to test 14914 the PROTECTED build mode. 14915 - STM32F769I-DISCO: Initial port to STM32F769I-DISCO. From Titus von 14916 Boxberg. 14917 14918 * C Library/Header Files: 14919 14920 - Move TUN ioctl command to include/nuttx/net/ioctl.h so that it will 14921 always be unique. 14922 - Math Library: Port gamma() and lgamma() from FreeBSD to NuttX. From 14923 Alan Carvalho de Assis. 14924 - C++: Compilation with recent C++ compiler needs an overloaded delete 14925 operator that includes a size_t size argument. New sized delete 14926 operators are only for C++14 and above. 14927 14928 * Build/Configuration System: 14929 14930 - Initial clang compile. From Goran Mekic. 14931 - Add CLANG definitions in Kconfig and Toolchain.defs. 14932 - drivers/wireless/ieee802154: Moved radios to individual 14933 sub-directories. From Anthony Merlino. 14934 - Makefile.unix: Add savedefconfig target. From Gwenhael Goavec-Merou. 14935 - Add Gwenhael's change to Makefile.win and update README.txt to 14936 described the new make target. 14937 - All defconfig files are now in the compressed format created with 14938 'make savedefconfig.' The original .config file can be reconstituted 14939 using 'make olddefconfig.' 14940 - Build System: It is no longer necessary to have a unique Make.defs 14941 file for each configuration. A board may share a common Make.defs 14942 file in the scripts directory. Duplicate Make.defs files removed; 14943 common Make.defs file moved to the scripts/ sub-directory for each 14944 board. 14945 - Networking: Move INET socket interface out of net/sockets to its own 14946 directory net/inet. 14947 14948 * Tools: 14949 14950 - testbuild.sh: Added -x to fail build on errors for continuous 14951 integration (CI). On CI we want to know ASAP of a failure. From 14952 David Sidrane. 14953 - Improve configure.sh behavior: (1) enable to call from top directory. 14954 (2) enable to designate direct path for config. (3) install .gdbinit 14955 if the target has. From Hidetaka Takano. 14956 - Update tools/configure.c to same functionality as configure.sh. Add 14957 an array of optional file names. Currently, .gdbinit is the only 14958 optional file but other things like IDE-specific project files might 14959 need to be copied as well. 14960 - tools/configure.sh will now copy Eclipse project files if they are 14961 present in the board directory file. 14962 - Update configure.sh, configure.bat, configure.c: With compressed 14963 format, part of the installation requires that we run 'make 14964 olddefconfig' to restore the uncompressed defconfig format. Also, 14965 while I was at it, I also added options to select host platform on 14966 configure command line. 14967 - tools/refresh.sh: Now runs make savedefconfig before copying the new 14968 defconfig file in place; Also, added a new option --defaults. Since 14969 the number of defaults that you now have to answer is so large, the 14970 option lets you just accept the default values. So it works just like 14971 --silent but still prompts you for the decision to save or discard the 14972 new defconfig file. 14973 - tools/refresh.sh: Update so that it can find the Make.defs file in 14974 the new location. 14975 14976 * NSH: apps/nshlib: 14977 14978 - NSH Library: Add a Telnetd command. This is needed when network 14979 initialization is deferred. In that case, telnet daemon cannot be 14980 started until the network is finally initialized. The telnetd command 14981 was added just for that case: So that the telnet daemon can be 14982 started from the NSH command line after the network is configured. 14983 - NSH Library: Misc changes needed for PktRadio support. 14984 - NSH Library: Extend ifconfig command so that it can set variable 14985 length packet radio address. 14986 - NSH Library: Update addroute and delroute command. The would support either 14987 IPv4 or IPv6, but not both. Allow expression of the netmask in IPv4 CIDR or 14988 IPv6 slash notation. This really reduces the pain of using the commands, 14989 especially for IPv6. 14990 - NSH Library: Add a route command that will dump the content of routing table. 14991 14992 * Examples/Tests: apps/examples: 14993 14994 - examples/udp: Add configurable network device name; Add option to 14995 suppress network initialization which is not needed if started by NSH 14996 or for 6LoWPAN. 14997 - examples/udp: Fix registration as a built-in program; Change some 14998 naming to make room for a second target. Current one endpoint is the 14999 target and one is the host. This will (eventually) allow two targets 15000 to be both endpoints of the test. Change build so that both server 15001 and client can be on a target, rather than one on the target one on 15002 the host PC. Server IP address may not be provided on the command line. 15003 - examples/udp: Port numbers need to be configurable to work with 15004 6LoWPAN. Need to bind the client socket to a port number. This was 15005 not required before so is a apparently a change in the UDP packet 15006 dispatch logic. 15007 - examples/udp: Enable testing with the broadcast address. 15008 - examples/nettest: Support target boards on both ends of the test. 15009 Separate out network initialization so that it may be used by both a 15010 target server and a target client. Fix client/server naming 15011 confusion; Add command line option to select the server address on the 15012 target. Add support for both endpoints on target boards vs. one on a 15013 target and one on the host PC. 15014 - examples/nettest: The send buffer size is now a configuration option. 15015 - examples/nettest: Loopback option should be available in Kconfig for 15016 PktRadio. 15017 - examples/keypadtest: REMOVED and warehoused in the Obsoleted 15018 repository. This was just a bad clone of apps/examples/hidkbd for a 15019 keypad driver that was removed years ago. It also uses illegal 15020 function calls into the OS. So it has no purpose: It is redundant, it 15021 uses illegal interfaces, and is a test for non-existent code. 15022 - examples/ipforward: Add an IP forwarding example using only TUN 15023 devices. Test extended to test forwarding of ICMPv6 multicast messages. 15024 - Implement powermonitor example for ltc4151 current and voltage 15025 monitor. From Giorgio Groß. 15026 - examples/pf_ieee802154: Add for testing PF_IEEE802154 sockets. Add 15027 PANID to command line options; Cannot bind to address zero... There is 15028 no counterpart to INADDR_ANY for these radios (not now at least). 15029 - examples/dac: Add DAC example. From Juha Niskanen. 15030 15031 * Network Utilities: apps/netutils: 15032 15033 - netutils/telnetc: This a port of libtelnet to NuttX. 15034 - netutils/telnetd and users of telnetd: Add support for IPv6. 15035 - netutils/thttpd: Remove the netstats demo. This depends on an 15036 illegal function call and cannot be supported. That example could be 15037 replaced with logic that uses the procfs network entries as was done 15038 for NSH which had the same issue. But I am too lazy to implement that. 15039 - netutils/netlib: Add support for PktRadio IOCTL commands. 15040 - netutils/netlib: Add a helper to decode short addresses. 15041 15042 * Wireless Utilities: apps/wireless: 15043 15044 - wireless/ieee802154/i8sak: Rewrote i8sak to be test CLI for IEEE 15045 802.15.4 MAC layer. From Anthony Merlino. 15046 - wireless/ieee802154/i8sak: Updates to i8sak for 15047 association/beacon-enabled changes to IEEE 802.15.4. From Anthony 15048 Merlino. 15049 - wireless/ieee802154/i8sak: Add option to make it easy to send large 15050 frame for testing purposes. From Anthony Merlino. 15051 - wireless/ieee802154/i8sak: Add scan command. From Anthony Merlino. 15052 - wireless/ieee802154/i8sak: Add coordinfo command allowing you to 15053 poll various attributes related to the coordinator. From Anthony 15054 Merlino. 15055 - wireless/ieee802154/i8sak: Add a option to retry on failures to the 15056 assoc command (usually meaning tht the coordinator is not yet up). 15057 - iwireless/ieee802154/8sak: Add reset command to reset the MAC layer. 15058 Adds option to assoc command -t to specify how long to wait for a 15059 response from the Coordinator. From Anthony Merlino. 15060 - ieee802154/i8sak: Adds command to trigger regdump of radio. From 15061 Anthony Merlino. 15062 15063 * System Utilities (apps/system) 15064 15065 - apps/system/composite: Update to apps/system/composite associated with 15066 big changes to the composite device logic. From Frank Benkert. 15067 - apps/system/composite: Remove CDC/ACM and MSC configuration logic. 15068 This belongs in the OS composite initialization. Add and argument so 15069 that you can select the USB composite configuration to be attached. 15070 Restore USB tracing; remove unused field in a structure. Remove 15071 configuration settings that are no longer used. Fix configuration 15072 selecting.. was setting the port number, not the configure ID. Also 15073 add a configuration option to select the default configuration. 15074 - apps/system/composite: Add a configuration option to the boardctl() 15075 calls to support multiple composite device configurations dynamically. 15076 - apps/system/composite: Remove references to USBMSC. There still 15077 dependencies on CDC/ACM in the serial USB trace output. 15078 - apps/system/telnet: Add Telnet Chat daemon and client from 15079 libtelent. 15080 15081 * Platform-Specific Support (apps/platform) 15082 15083Bugfixes. Only the most critical bugfixes are listed here (see the 15084ChangeLog for the complete list of bugfixes and for additional, more 15085detailed bugfix information): 15086 15087 * Core OS: 15088 15089 - Fix ELF loader up_checkarch on ARM arch. From Cristian Condurache. 15090 - pthread_mutex_unlock(): Missing check for the case where 15091 pthread_mutex_lock() is called when the mutex is not locked. In that 15092 case, it would increment the underlying semaphore above 1. This is 15093 the fix for a problem noted by initialkjc@yahoo.com. 15094 - sig_timedwait(): Pending signal structure used after it has been 15095 releasd. From anonymous Bitbucket Issue 59. 15096 - mm_mallinfo: do heap end debug assert check with heap semaphore held. 15097 From Jussi Kivilinna. 15098 - sched/: Fix return value in sched_setaffinity(). From Masayuki 15099 Ishikawa. 15100 - Work Queues: work_queue() must cancel existing work prior to queuing 15101 new work, otherwise the work queue list structure can become 15102 corrupted. Problem noted by Pascal Speck. 15103 - waitpid(): Corrects two problems when CONFIG_SCHED_HAVE_PARENT + 15104 CONFIG_SCHED_CHILD_STATUS are enabled: (1) Was erroring out if the 15105 waited for task had already exited, and (2) was not freeing resources 15106 when a wait was completed. From Boris Astardzhiev. 15107 15108 * File System/Block and MTD Drivers: 15109 15110 - VFS poll(): Fix timeout calculation. From Jim Paris. 15111 - VFS poll(): Fix poll for regular files and block devices. Open Group 15112 documentation says that poll (and select) support regular files and 15113 that 'Regular files shall always poll TRUE for reading and writing'. 15114 From Jussi Kivilinna. 15115 - VFS epoll(): Fix epoll_wait function. From Simon Piriou. 15116 - Smart FS: Fix wrong freeing of device structure and use-after-free 15117 issues on error paths. From Jussi Kivilinna. 15118 - MTD FLASH drivers: The byte write method of several drivers had a 15119 cloned error: It was not locking the bus while performing byte write 15120 operations. 15121 - MTD M2PX: If we READ while a write/erase is pending, the command is 15122 ignored and the write/erase continues. If we don't catch this situation 15123 we will return garbage to the user because the flash will not execute 15124 the command. So READ MUST wait for write completion, and before that, 15125 the bus must be locked since it's a precondition to calling 15126 waitwritecomplete(). From Sebastien Lorquet. 15127 - MTD FLASH drivers: Clone Sebastien Lorquet's m25px change to at25, 15128 is25xp, ramtron, and sst25xx. 15129 - MTD W25: Add missing locking and fix SPI_SELECT usage for 15130 w25_unprotect. From Jussi Kivilinna. 15131 - MTD W25: Wait for BUSY flag to clear in w25_readid and 15132 w25_unprotect. W25Q128 datasheet says that all instructions expect 15133 'Read Status Register' and 'Erase/Program Suspend' are ignored when 15134 BUSY flag in status register is '1'. Therefore wait for busy flag to 15135 clear in w25_readid() and w25_unprotect(). From Jussi Kivilinna. 15136 - Automounter: FS_AUTOMOUNTER should depend on SCHED_LPWORK. From 15137 Nickolay Semyonov. 15138 15139 * Networking/Network Drivers: 15140 15141 - TCP Listen: Throw error when error happens in the tcp_listen 15142 function. From Roland Takacs. 15143 - Network Device Management: Do not search net device when all-zeros 15144 address is used. From Roland Takacs. 15145 - Network Device Management: Fix a error in netdev_register(); it was 15146 not handling device names properly when TUN is the only network device. 15147 - Network Device Management: Fix netdev_dev_lladdrsize(). In some 15148 configurations, it could return the wrong size for the address of a 15149 packet radio. 15150 - Network Device Management: Fix typo for 802.11 devices in 15151 netdev_register(). Was being masked before because depended on 15152 CONFIG_NET_MULTLINK. 15153 - TUN Driver: Use critical section instead of semaphore in 15154 tun_ifdown(). From Masayuki Ishikawa. 15155 - TUN Driver: Do all polling on worker thread. Otherwise, the stack 15156 gets very deep. 15157 - TUN Driver: Currently cannot support TAP mode unless Ethenet is 15158 enabled. 15159 - netdb: Fixed buffer size used for sending DNS queries should depend 15160 on the configured DNS name size. From Ritjaina. 15161 - UDP networking: The TTL (time to live) was not being set in the IPv4 15162 or IPv6 header unless the UDP socket was bound. 15163 - UDP Networking: Fix a copy-paste error that could effect networking 15164 when both IPv4 and IPv6 are enabled. 15165 - UDP Networking: When upd_input() cannot process a packet, it returns 15166 ERROR so that network drivers may try calling ipv4_input() later. In 15167 this case, it must also set d_len to zero. Otherwise, all network 15168 drivers will assume tht there is also an outgoing packet. This 15169 results in a gratuitous ARP. 15170 - TCP Networking: Correct some issues that prevent TCP from working 15171 correctly when both IPv4 and IPv6 are enabled. 15172 - TCP Networking: TCP disconnection callbacks are not retained in a 15173 list. This will support multiple callbacks per lower-level TCP 15174 connection structure. That is necessary for the cae where a socket is 15175 dup'ed and shares the same lower-level connection structure. NOTE: 15176 There still needs to be a call to tcp_start_monitor() when the socket 15177 is dup'ed. 15178 - TCP Networking: Start the network monitor for a socket when a TCP 15179 socket is dup'ed. 15180 - TCP Networking: If one of the dup'ed socket's is closed, then network 15181 monitor resources associated with that one socket must be recovered. 15182 Also, in the event that socket is being used on one thread, but then 15183 closed on another, any threads waiting for events from the socket 15184 should be informed of the closure. That latter requirement is not 15185 implemented because current data structures do not support it. 15186 - TCP Networking: Fix a race condition. The accept() operation is 15187 performed with the network locked. However, the network is unlocked 15188 BEFORE the connected state is set. Therefore, a context switch may 15189 occur and the socket may no longer be connected when it is marked so. 15190 Noted by Pascal Speck. 15191 - Network routing tables: Fix a compilation error when IPv6 and 15192 routing are enabled. 15193 - Network procfs: Fix some spacing when both IPv6 and IPv4 are enabled. 15194 - Network Local Sockets: Fix accept for local stream sockets. From 15195 Jussi Kivilinna. 15196 - Network Local Sockets: Fix server lc_waitsem overflow. From Jussi 15197 Kivilinna. 15198 - IPv6 Networking: Remove comparisons to the address with all ones 15199 set. IPv6 does not support broadcast addresses and certainly not in 15200 that form. Replace with multicast addresses beginning with 0xff02. 15201 - ICMPv6 Networking: Fix a compilation issue with 15202 CONFIG_NET_ICMPv6_AUTOCONF=y. From Masayuki Ishikawa. 15203 - Networking: Fix net_lock returning ERROR when instead of real error 15204 code on failure. From Jussi Kivilinna. 15205 - IGMPv2 Networking: Remove special support for interrupt level 15206 processing (there is none) and fix some timer cancellation logic. In 15207 many files, correct comments. There is no interrupt level processing 15208 in the networking layer. 15209 15210 * Wireless/Wireless Drivers: 15211 15212 - IEEE 802.15.4 MAC: Need counting protection on the logic that 15213 releases the notification resources. Otherwise, notification handlers 15214 may be operating with a stale pointer. 15215 - IEEE 802.15.4 MAC: Improves internal timer logic to handle work 15216 serially. Before, the MAC timer used a watchdog to schedule work with 15217 the high priority worker queue. However, since everything in the MAC 15218 is supposed to be serialized through the use of the high priority work 15219 queue, but the timer uses a watchdog, there are some unintended 15220 consequences. To simplify, we now use the delayed work feature of the 15221 work queue. From Anthony Merlino. 15222 - IEEE 802.15.4 Network Driver: Update RX statistics in network driver. 15223 - IEEE 802.15.4 MRF24J40 Driver: Minor timing fix. Matches recommended 15224 value in datasheet. Splits up driver into multiple files to make it 15225 easier to navigate. Fixes issue with non-beacon enabled mode. From 15226 Anthony Merlino. 15227 - IEEE 802.15.4 MRF24J40 Driver: Fix a bug causing radio to cease 15228 transmitting. From Anthony Merlino. 15229 - IEEE 802.15.4 MRF24J40 Driver: Fixes issues with sleeping for beacon 15230 enabled networking. From Anthony Merlino. 15231 - EEE 802.15.4 MRF24J40 Driver: Fix math error for calculating sleep 15232 count values. From Anthony Merlino. 15233 - IEEE 802.15.4: Fix timing issues for beacon enabled coordinators and 15234 endpoints. From Anthony Merlino. 15235 - iIEEE 802.15.4: Fix issue with association on beacon-enabled 15236 networking. From Anthony Merlino. 15237 - 6LoWPAN: Correct a few addressing issues. Also reserve two bytes at 15238 the end of the frame for the FCS. 15239 - 6LoWPAN: Fixes needed when extended addressing is enabled; broke short 15240 addressing. Loopback driver needs to initialize the MAC meta data; 15241 Address decompression logic must have the MAC address to handle the 15242 most common compression cases. Fix a src/dest address confusion and 15243 other addressing problems. 15244 - 6LoWPAN: Add missing IPv6 address creation to HC1 decode logic. Fix a 15245 typo in an index that prevented use with HC1 and extended addresses. 15246 - 6LoWPAN: TCP logic was not obeying MTU packet size limitations. 15247 - 6LoWPAN: Major re-architecting of TCP logic to properly handle TCP 15248 stuff like ACKs and TDP windowing which were not properly covered in 15249 the initial design. 15250 - 6LoWPAN: HC06, copy TCP header as though it were data. TCP packet 15251 reassembly now seems to work OK. 15252 - 6LoWPAN: Fix duplicate and bad memcpy in loopback driver. 15253 - 6LoWPAN: Fix a misconception about HC06 16-bit IPv6 address 15254 compression. 15255 - 6LoWPAN: TCP send logic was returning a failure in one case when, in 15256 fact, the send was successful. 15257 15258 * Common Drivers: 15259 15260 - USB MSC: Use struct instead of pointer to the struct as sizeof 15261 argument in memset in usbmsc.c. Otherwise it leads to error: argument 15262 to sizeof in memset call is the same pointer type struct usbmsc_lun_s 15263 * as the destination. From Oleg Evseev. 15264 - USB MSC: Add missing logic to define endpoints. The composite 15265 changes broke the the non-composite, USB MSC only case because it omitted the critical setup when USB MSC was not part of the composite. 15266 - USB CDC/ACM. Fix several known problems resulting from merge of USB 15267 composite device. That merge now breaks some of the non-composite USB 15268 devices. 15269 - Button Driver: Interrupts weren't enabled since nothing updates them 15270 after btn_poll() marks the file descriptor structure as being polling. 15271 From Jan Pobrislo. 15272 - ADC Driver: Fix some data alignment issues in the ADC driver. 15273 - I2C Drivers: Handle I2C_TRANSFER return value consistently. Some I2C 15274 peripherals transfers return zero on success, others number of 15275 completed transfers. Make drivers robust against this. From Juha 15276 Niskanen. 15277 - COMP Driver: Fix compilation errors when poll disabled. From Mateusz 15278 Szafoni. 15279 15280 * Simulation: 15281 15282 - Simulation: Fix mkdir issue in GNU target. From Simon Piriou. 15283 - Simulation: x86 stack needs to be aligned to 16-byte boundaries. 15284 - Simulation: Fix building 32-bit simulation on 32-bit X86. From Jussi 15285 Kivilinna. 15286 15287 * ARM: 15288 15289 - ARM: The older ARM7 and ARM9 configurations were determining CFLAGS 15290 based on the GCC version 4.x.x or not. That needx to be extended for 15291 5.x.x and 6.x.x which also behave like 4.x.x. 15292 15293 * ARMv7-M: 15294 15295 - Fixed ARMv7-M Toolchain setting. Cortex-M4 only have Single 15296 Precision FPU. From Hidetaka Takano. 15297 - ARMv7-M syscall logic: Clear bit 0 in PC settings. Bit 0 is the 15298 thumb mode indication and should not be set in the PC. This extra bit 15299 has not caused problems in the past, but seeing it set in the PC is 15300 unnerving. 15301 15302 * Espressif ESP32: 15303 15304 - Fix ESP32 gpio enable reg and default UART pin. Modify default UART 15305 pin for ESP-WROOM-32. Fix gpio enable reg. From Sungki Kim. 15306 15307 * Microchip/Atmel SAMD21 Drivers: 15308 15309 - SAMD21: Fix some SPI-related issues. From Matt Thompson. 15310 - SAMD21 SPI: I was having issues with the bus freezing up .. slaves 15311 holding SDL low.. so I rewrote a good portion of the interrupt logic 15312 based on the application notes from Atmel. One major improvement is 15313 using the RXNACK flag in the STATUS register, which indicates that no 15314 device responded to an address packet. Assuming that the chip will 15315 always give an interrupt status, I believe it's possible to eliminate 15316 the timer as well. From Matt Thompson. 15317 - SAMD/L21: Need to preserve errno value across syslog() call. 15318 - SAMD21: Changes needed to get USB working. From Matt Thompson. 15319 15320 * Microchip/Atmel SAMv7 Drivers: 15321 15322 - SAMv7 TWIHS: TWIHS driver add reference counting. From David Sidrane. 15323 - SAMv7 CAN: We discovered a problem with the samv7 mcan driver which 15324 results, under some circumstances, in a very high CPU load. The 15325 problem occurs, and is easily reproducible, if the device is connected 15326 to a CAN network with a wrongly configured CAN speed (baud rate). In 15327 our tests we set the CAN speed of the device to 1000000 and the speed 15328 of the other CAN nodes to 500000. The device is restarted and sends a 15329 CANopen "bootup message" to the CAN network. This results in huge 15330 amount of errors messages on the CAN bus, probably because of the CAN 15331 feature for acknowledging error messages. The error messages can't be 15332 read by the device because of the misconfigured CAN speed, instead the 15333 CAN chip reports lots of errors, which are reported to the application 15334 which uses the CAN driver (CONFIG_CAN_ERRORS is enabled). The CAN 15335 errors are reported from the CAN chip via interrupts and thus the 15336 interrupt load is very high in this scenario. To fix the problem the 15337 driver now disables each RX error interrupt after it is occurred. The 15338 RX error interrupts are turned back on if at least one CAN message is 15339 received successfully. From Stefan Kolb. 15340 - SAMv7 CAN: I discovered while working on the SAMV7 mcan driver that 15341 the implementation of the CAN error handling is suboptimal. In the 15342 current implementation the many errors are implemented as pending 15343 errors. But those errors are not pending, the errors occurred and are 15344 gone directly afterwards. This commit changes the described behavior 15345 and simplifies the handling of CAN errors. From Stefan Kolb. 15346 15347 * Microchip/Atmel SAMv7 Boards: 15348 15349 - SAMv71-XULT: Fix MRF24J40 interrupt GPIO number. 15350 15351 * NXP/Freescale Kinetis: 15352 15353 - Kinetis MPU: Disable MPU when not in protected mode. The hardware 15354 reset state of the the MPU precludes any bus masters other than DMA 15355 access to memory. Unfortunately USB and SDHC have their own DMA and 15356 will not have access to memory in the default reset state. This change 15357 disabled the MPU if present on system startup. From David Sidrane. 15358 - Kinetis MPU: Fixed warning for kinetis_mpudisable. Missing header 15359 file added. From David Sidrane. 15360 - Kinetis SIM: Ensure isolation of clock dividers for 0 value case. 15361 This fixes a bug were a SoC does not have a clockdivN register and 15362 passes a 0 for the init value. This prevents overflow of the 0 15363 decremented to -1 (0xffffffff) spilling over to other clockdivN 15364 fields. From David Sidrane. 15365 15366 * NXP/Freescale i.MX6 Drivers: 15367 15368 - i.MX6: Fix a wrong parameter passed when calling irq_attach() in 15369 imx_serial.c. From Masayuki Ishikawa. 15370 - Based on Masayuki's change, I review all serial driver vector 15371 attachment. I Found one additional error and updated all relevant 15372 drivers to current interrupt parameter passing. 15373 15374 * STMicro STM32: 15375 15376 - STM32 F410 Kconfig: Fix peripherals available on the STM32 F410. 15377 This also adds a select for STM32_HAVE_DAC1 present on this STM32 15378 flavor. From Gwenhael Goavec-Merou. 15379 - STM32 L4 DMA: Correct USART3_RX bad channel definition. From Juha 15380 Niskanen. 15381 - STM32 L4 PWR: Correct PWR_SR2 REGLPS and REGLPF bits, add port I 15382 registers. Also remove duplicate section from Kconfig. From Juha 15383 Niskanen. 15384 - STM32 F7: do not enable read-modify-write on DTCM. "AN 4667 - STM32F7 15385 Series system architecture and performance" recommends to disable 15386 read-modify-write on DTCM: "If the DTCM-RAM is used as data location 15387 and the variables used are byte or/and halfword types, since there is 15388 no ECC management in this RAM on the STM32F7 Series, it is recommended 15389 to disable the read-modify-write of the DTCM-RAM in the DTCM interface 15390 (in the DTCMCR register) to increase the performance." From Jussi 15391 Kivilinna. 15392 15393 * STMicro STM32 Drivers: 15394 15395 - STM32 TIM3/4 are always 16-bits; never 32-bits. Noted by Eetu 15396 Nevalainen.. 15397 - STM32 ADC: Invalidate dma buffer before use. Missing invalidation 15398 caused old samples being fetched from cache. From Jussi Kivilinna. 15399 - STM32, STM32L4, STM32F7 ADC: Fix channel 18 sample time. From Juha 15400 Niskanen. 15401 - STM32 DAC: Fix some configuration logic. When STM32_NDAC is greater 15402 than 1, then second channel is always DAC1OUT2. From Mateusz Szafoni. 15403 - STM32 DAC: Fix compilation when DMA disabled for channel. From 15404 Mateusz Szafoni. 15405 - STM32 F0: Fix some funny shifts in DAC header files. From Juha 15406 Niskanen. 15407 - STM32 F1 RTC fixes: (1) Compile issues because of missing RTC_MAGIC 15408 #defines, (2) missing functionality based on RTC_MAGIC in RTC based on 15409 stm32_rtcounter.c, (3) IRQ setup from up_rtc_initialize was later 15410 reset in up_irqinitialize, (4) write access to backup registers 15411 without enabling access to backup domain, (5) possible races in 15412 set/cancel alarm. tested with STM32F103C8 only. device now wakes up 15413 from forced STANDBY mode by alarm. From Leif Jakob. 15414 - STM32/STM32 L4 PWM: While attempting to output a 70 MHz square wave 15415 from the timer output of a STM32 clocked at 140 MHz, found that the 15416 reload calculation was off by one. This correction does allow the 15417 output up to 70 MHz. I am not sure this affects most users 15418 generating slow PWM but for frequencies close to the PCLK, the 15419 difference becomes significant. From JM. 15420 - STM32 L4 I2C: Set I2C SDA and SCL pins to open drain mode. From Pekka 15421 Ervasti. 15422 - STM32 L4 I2C: I2C4 was writing to wrong RCC registers. From Juha 15423 Niskanen. 15424 - STM32 L4 DAC: Report transfer as completed in DMA callback. Without 15425 this even O_NONBLOCK writes block the calling task if DAC was using 15426 DMA. From Juha Niskanen. 15427 - STM32 L4 COMP: comparators share RCC enable bit with SYSCFG. From 15428 Juha Niskanen. 15429 - STM32 L4 ADC: Correct EXTSEL macros. From Juha Niskanen. 15430 - STM32 L4 TIM: TIM15,16,17 are always in APB2. From Juha Niskanen. 15431 - STM32 F7 I2C: Set I2C4 SDA and SCL pins to open drain mode. From Juha 15432 Niskanen. 15433 - STM32 F4 RTCC: ISR register and write protection fix. From Eetu 15434 Nevalainen. 15435 - STM32 F7 Ethernet: Fix typo in header; Add memory sync barrier 15436 between writing to DMA TX descriptor and restarting DMA TX. Avoid 15437 calling work_queue on pollwork if it's already queued, just skip a 15438 poll cycle instead. Nucleo-144: Fix RMII TXD1 signal, connected to 15439 PB13 not to PG14. From savinz. 15440 - STM32 F7: Added missing config option for register value debugging. 15441 From Titus von Boxberg. 15442 - STM32 F7: No FSMC, only FMC for STM32F7. From Titus von Boxberg. 15443 - STM32 F7: HEAP2 depends on CONFIG_ARCH_HAVE_HEAP2, not on particular 15444 FMC RAM type. From Titus von Boxberg. 15445 - STM32 F7: STM32_RCC_DCKCFGR2 has nothing to do with PLLI2S; PLLI2S is 15446 not dependent on LTDC, instead on SAICLK1/2 generated from PLLI2S. 15447 From Titus von Boxberg. 15448 - STM32F7: Some STM32F7 builds failed in build testing due to undefined 15449 STM32_SRAM1_BASE. I think that is because stm32_allocateheap.c was 15450 not including chip/stm32_memorymap.h. 15451 - STM32 F7: dcache write-buffed mode is used (not write-through) buffer 15452 alignment is required for DMA transfers because a) 15453 arch_invalidate_dcache could lose buffered writes data and b) 15454 arch_flush_dcache could corrupt adjacent memory if the buffer and the 15455 bufflen, are not on ARMV7M_DCACHE_LINESIZE boundaries. From David 15456 Sidrane. 15457 15458 * STMicro STM32 Boards: 15459 15460 - STM32F103-Minumum SPI: SPIDEV_WIRELESS used when this has 15461 changed to SPIDEV_CONTACTLESS. From Nicolas Estibals. 15462 - configs/: a few more places where SPIDEV_WIRELELSS should be 15463 SPIDEV_CONTACTLESS. 15464 - STM32F103-Minumum: Fix a BUG when reading from output pin. We need 15465 a different read_ops to read from output pin. This patch fixes the 15466 issue. From Alan Carvalho de Assis. 15467 - STM32F103-Minumum: Use separated read_ops for GPIO interrupt pins. 15468 From Alan Carvalho de Assis. 15469 - STM32F103-Minumum: Fix compiler error in MCP2415 logic. 15470 - STM32F746G-DISCO: Fix for compilation of STM32F746G-DISCO. From Ivan 15471 Ucherdzhiev. 15472 - STM32F746G-DISCO: Fix for stm32f746g-disco board for button support 15473 with interrupt. This change is tested with buttons app example and it 15474 is working with interrupts (signals). I tried the test with polling 15475 but at this point it doesn't work. From Ivan Ucherdzhiev. 15476 15477 * Build System 15478 15479 - Fix -Werror=implicit-fallthrough on gcc7. From Julien Lecoeur. 15480 - configs/Board.mk: Remove comment form end of line. In windows native 15481 build, it appears to be trying to make that an extra parameter to the 15482 AR command. From Jeff. 15483 - configs/Board.mk: Remove quotes from CONFIG_ARCH_FAMILY. Causes 15484 problems with Windows native build. From Jeff. 15485 - Makefile.win would only create uboot images for ARM. MIPS support 15486 also needed. From Lwazi Dube. 15487 15488 * C Library/Header Files: 15489 15490 - C++: Fix C++ __guard implementation for ARM. The standard C++ ABI 15491 that most platforms follow defines __guard to be 64 bits. The existing 15492 implementation of libxx_cxa_guard.cxx follows this. However, the 15493 32-bit ARM C++ ABI defines it as 32 bits instead, and changes the 15494 meaning slightly so only the lowest bit is used. This matters because 15495 GCC creates guard symbols without regards to what libxx_cxa_guard.cxx 15496 says. So on ARM, gcc allocates 4 bytes, but __cxa_guard_release 15497 writes 8 bytes, zeroing out another unlucky variable nearby. Fix it 15498 by special-casing 32-bit ARM in libxx_cxa_guard. From Jim Paris. 15499 - C++: In cwchar it uses CONFIG_LIBC_WCHAR to only export the wc/mb 15500 functions. When a build does not want to use wide or multibyte char 15501 CONFIG_LIBC_WCHAR is not set. Therefore we should to only export the 15502 wc/mb functions when defined. Regardless of the stat of 15503 CONFIG_LIBC_WCHAR the non mb/wc definitions such as mbstate_t, 15504 wint_t, wctype_t need to be exported. From David Sidrane. 15505 - C Library: Fix an error in mkstemp() the could result in an infinite 15506 loop. From Alan Carvalho de Assis. 15507 - C Library: (1) Fix an error in mkstemp() the could result in an 15508 infinite loop. (2) Fix for wrong output in some cases. For Example: 15509 (a) input: "FILEXX", output: "FILE00" and repeats same output for 15510 further invocations of mkstemp(). But, the output has to be FILE01, 15511 FILE02, ...., FILEZZ. (b) input: "FILEXXXXXX", output: "FILE100000", 15512 for next invocation "FILE200000" and so on. But it's good, if the 15513 output goes like FILE000001, FILE000002, ..., FILE000101, ... From 15514 Lokesh B V. 15515 - C Library: gethostbyname_r: Fix check for space in buffer. 15516 - C Library: inet_ntop() was printing negative values for fields >127. 15517 - Math Library: Fix wrong output in modf() API. The sign of integral 15518 part given by the modf() should be same as sign of input. But for 15519 inputs between 0 and 1, the sign of integral part was not same as 15520 sign of input. From Lokesh B V. 15521 - Math Library: Fix wrong output in ceil() API. Ex:for input x = 1.0, 15522 the output should be 1.0, but the output was 2.0. From Lokesh B V. 15523 15524 * Tools 15525 15526 - tools/testbuild.sh: Fix missing $ before variable name. 15527 - tools/mkdeps.c: Eliminate a warning. MAX_PATH may already be defined 15528 in included system files. From Jeff. 15529 15530 * Applications: apps/ 15531 15532 - All apps/ Makefiles: Add .PRECIOUS: apps/libapps.a to every 15533 Makefile. Hopefully this will end awkward problems when you Control-C 15534 out of a build and libapps.a is deleted. 15535 - platform/Makefile: More attempts to fix for Windows native build. 15536 Backslash as a delimiter causes problems in pattern subsitutions. 15537 15538 * NSH: apps/nshlib: 15539 15540 - NSH network initialization: Fix some ieee 802.15.4 initialization 15541 logic. It should not set the saddr or panid; those cannot be 15542 hard-coded but must come from the coordinator. Re-factor a function 15543 that has gotten too big and too complex. Do not set the IP address 15544 for 6loWPAN. The 6loWPAN stack uses IP address that derive from the 15545 ieee 802.15.4 addressing and cannot be (safely) configured by the user. 15546 - NSH Library: Fix copy-paste typo in nsh_usbconsole.c. From Oleg 15547 Evseev. 15548 - NSH Library: fix size of 6LoWPAN extended address. 15549 - NSH Library: Fix build break in nsh_command.c with IPv4/IPv6 dual 15550 stack. From Masayuki Ishikawa. 15551 - NSH Library: Correct parsing of ifconfig so that you can specify the 15552 HW address without specifying the IP address. 15553 15554 * Examples/Tests: apps/examples: 15555 15556 - examples/smart: Fix some compilation errors. Obviously this test has 15557 not been used in a LONG time. 15558 - examples/udp: Renaming some files to prevent name collision in 15559 libapps.a. Fix naming of a configuration setting. 15560 - examples/nettest: Renaming some files to prevent name collision in 15561 libapps.a 15562 - examples/nximage: Remove unused global variable. 15563 - examples/nsh: Remove APPNAME, PRIORITY, and STACKSIZE settings from 15564 Makefile to avoid showing nsh in Builtin Apps. From Masayuki Ishikawa. 15565 15566 * Network Utilities: apps/netutils: 15567 15568 - netutils/tftpc: Missing header file causes errors in some 15569 configurations. 15570 - netutils/tftpc: TFTPC depends on CONFIG_NET_IPv4. 15571 - netutils/netlib: Fixes to work when only USRSOCK is enabled. 15572 - netutils/netlib: Fix netlib_nodaddrconv() so that its return type is 15573 the same as other address conversion functions. 15574 - netutils/netlib: If only PF_IEEE802154 socket family is enabled, then 15575 must use SOCK_DGRAM. 15576 - netutils/ftpc: Fix some memory leaks. From Boris Astardzhiev. 15577 - netutils/thttpd: Fix a malformed if condition detected by GCC 6.x.x. 15578 - netutils/dhcpd: Prevent buffer overflow in dhcpd_addoption. offset 15579 represents distance from start of option buffer. So this should be 15580 changed current option pointer minus start of buffer. From EunBong 15581 Song. 15582 15583 * Wireless Utilities: apps/wireless: 15584 15585 - wireless/ieee802154/i8sak: Need to increment the next_saddr after 15586 each successful association. 15587 15588 * System Utilities (apps/system) 15589 15590 - correct copy-paste typo in comments in composite_main.c From Oleg 15591 Evseev. 15592 - system/dhcpc: The DHCPC renew command did not build correctly due to 15593 naming problems. Noted by Masayuki Ishikawa. 15594 - system/dhcpc: Fix warning about renew_main.o appear twice in rule. 15595 15596 * Tools (apps/tools): 15597 15598 - tools/mkkconfig.bat: Use %cd% instead of %~dp0 for usage of APPSDIR 15599 in this batch file. 15600 - tools/mkkconfig.bat: Remove quotes in echo. These were begin 15601 Echo'ed and generating double quots in the output. From Jeff. 15602 - Windows build fixes: tools/mkkconfig.bat - switch APPSDIR path to 15603 use forward slashes for kconfig-frontends. interpreters/ficl - 15604 Reorder some targets that causes GNUwin32 make to behave badly. From 15605 Jeff. 15606 15607NuttX-7.23 Release Notes 15608------------------------ 15609 15610The 123rd release of NuttX, Version 7.23, was made on December 4, 2017, 15611and is available for download from the Bitbucket.org website. Note 15612that release consists of two tarballs: nuttx-7.23.tar.gz and 15613apps-7.23.tar.gz. These are available from: 15614 15615 https://bitbucket.org/nuttx/nuttx/downloads 15616 https://bitbucket.org/nuttx/apps/downloads 15617 15618Both may be needed (see the top-level nuttx/README.txt file for build 15619information). 15620 15621Additional new features and extended functionality: 15622 15623 * Core OS: 15624 15625 - sem_open() should return SEM_FAILED on any failures. This is change 15626 in the POSIX specification since the original sem_open() was written 15627 so many years ago. 15628 - exec(): The non-standard interface exec() is now enshrined as a 15629 official NuttX API. I really dislike doing this but I think that 15630 this is probably the only want to load programs in the protected 15631 mode. It is currently used by some example code under apps/ that 15632 generate their own symbol tables for linking. Other file execution 15633 APIs relay on a symbol table provided by the OS. In the protected 15634 mode, the OS cannot provide any meaning symbol table for execution 15635 of code in the user-space blob so that is they exec() is really 15636 needed in that build case. And, finally, the interface is 15637 completely useless and will not be supported in the KERNEL build 15638 mode where the contrary is true: An application process cannot 15639 provide any meaning symbolic information for use in linking a 15640 different process. 15641 - OS Internal Functions: Rename many OS internal functions so it is 15642 clear that they are not part of the application interface. All 15643 internal functions with the sem_* prefix became nxsem_*, sig* become 15644 nxsig_*, mq_* become nxmq_*, etc. 15645 - Cancellation Points: Add new cancellation point interface, 15646 check_cancellation_point(). 15647 - Signals: Add logic to wake up a thread that is waiting on a signal 15648 if it is canceled. 15649 - sigtimedwait(): Add logic to suppress the wait if there is a 15650 pending cancellation. 15651 - clock_nanosleep(): Implement clock_nanosleep(). nanosleep() is now 15652 reduced to a libc wrapper around clock_nanosleep(). 15653 - task_delete(): Do not permit user applications to delete kernel 15654 threads. 15655 - kthread_create(): Rename kernel_thread() to kthread_create() for 15656 better naming consistency with task_create() and kthread_delete(). 15657 - boardctl(): Remove the BOARDIOC_GRAPHICS_SETUP command. 15658 - TCB: Move POSIX thread specific data from pthread TCB to common TCB 15659 structure. This change allows using pthread_getspecific and 15660 pthread_setspecific from main thread. Patch also enables using 15661 pthread data with config option CONFIG_DISABLE_PTHREAD=y. From Jussi 15662 Kivilinna. 15663 - mm: Remove the CONFIG_GRAN_SINGLE configuration option. It adds no 15664 technical benefit (other than some minor reduction in the number of 15665 interface arguments) but adds a lot of code complexity. Better 15666 without it. 15667 - mm: Add a function to get information about the state of the 15668 granule allocator. This is the moral equivalent of mallinfo(). 15669 15670 * File Systems/Block and MTD Drivers 15671 15672 - MT25Q Serial FLASH: Add support for Micron MT25Q series MT25Q128. 15673 From Sebastien Lorquet. 15674 - MX35LFxGE4AB: Add an MTD driver for Macronix MX35LFxGE4AB serial 15675 NAND flash. From Ekaterina Kovylova. 15676 - FileMTD: Add block device MTD interface. Block MTD interface 15677 allows using block device directly as MTD instead of having to use 15678 file-system in between. NOTE that this provides the opposite 15679 capability of FTL which will let you use an MTD interface directly 15680 as a block device. From Jussi Kivilinna. 15681 - BCH: The character driver to block device access now supports an 15682 IOCTL to get the geometry of the underlying block device. 15683 - mkfatfs: Remove mkfatfs from the OS. This is a user-space 15684 application and belongs in apps, not in the OS. 15685 - procfs: Implements procfs /proc/fs/blocks and /proc/fs/usage files, 15686 replacing the NSH df command. Also implements procfs /proc/fs/mount 15687 file, replacing the NSH mount command when there are no arguments. 15688 - procfs: Add /proc/meminfo. This is an alternative way to get the 15689 information that was previoulsy available in apps/system/free. 15690 apps/system/free was removed because it made illegal calls into the 15691 OS violating the portable interface. This new procfs entry provides 15692 the same information with no such violation. it also provides 15693 information about the kernel heap (formerly /proc/kmm), about the 15694 use of program memory(formerly /proc/progmem). And also information 15695 for the page table usage in the KERNEL build. 15696 - UserFS: Adds the UserFS client and of the UserFS feature in 15697 general. Initially used Unix domain local sockets instead of 15698 message queues. Easier to transfer big data in local sockets than 15699 message queues. However, that lead to certain inescapable deadlock 15700 conditions So the IPC was converted to UDP LocalHost loopback 15701 sockets. The problem with the local sockets is that they do require 15702 operations on the top level pseudo-file system inode tree. That 15703 tree must be locked during certain traversals such as enumerate 15704 mountpoints or enumerating directory entries. This conversion is 15705 unfortunate in the sense that Unix local domain sockets are 15706 relatively lightweight. LocalHost UDP sockets are much heavier 15707 weight since they rely on the full UDP stack. 15708 15709 * Graphics/Display Drivers: 15710 15711 - Framebuffer character driver: Add framebuffer character device driver. 15712 - LCD Framebuffer: Add support for a generic front-end that will 15713 convert any LCD driver into a framebuffer driver. 15714 - Framebuffer character driver: Include support for LCD drivers that 15715 use a simulated framebuffer and must receive explicit notification 15716 when there is an update to a region in the framebuffer. 15717 - LCD: Make LCD driver configuration independently selected from NX 15718 graphics configuration. This makes things awkward and loses some 15719 error checking but is a necessary step in order to make LCD drivers 15720 usable when the NX graphics system is disabled. 15721 15722 * Networking/Network Drivers: 15723 15724 - Networking: Add implementation of logic for SIOCGIFCONF and 15725 SIOCGLIFCOF IOCTL commands. 15726 - Network IOCTLs: Add support for the SIOCGIFBRDADDR ioctl() command. 15727 - Routing Tables: Permit IPv4 and IPv6 routing tables to be of 15728 different sizes. 15729 - Routing Tables: Adds support for read-only routing tables. Prior 15730 to this change, routing tables were only support in RAM and had to 15731 be initialized with explicit logic to add the necessary routes to 15732 the routing table. With this change, routes may be defined in the 15733 pre-initialized, read-only routing table provided by the 15734 board-specific logic. 15735 This would be particularly useful, for example, in the case where 15736 there is only a single network adaptor and you want all output 15737 packets to go to the single adaptor in all cases. So for that 15738 behavior you could add a read-only routing table to the 15739 board-specific long that contains a single entry, the default route: 15740 0.0.0.0/0. 15741 - Routing Tables. Added support for routing tables in files in a file 15742 system. This might be useful for customized, per-unit routing 15743 tables. There are two issues with it however: 15744 1. Reading from file system on a per packet basis could be slow. I 15745 think it probably should have a small, in-memory cache of most 15746 frequently used routes for good problem. 15747 2. Currently the delroute logic is disabled due to a problem with 15748 the design. NuttX does not currently support truncate(). 15749 Therefore, it is not possible to delete entries from the routing 15750 table file. In this current implementation, that leaves the last 15751 entry intact at the end of the file. An alternative design 15752 might include a tag on each record to indicate if the record is 15753 valid or not. That would work but would add complexity to the 15754 other routing table functions. 15755 - Routing Tables: Add support for an in-memory routing table cache in 15756 order to improve performance when the routing table is retained in a 15757 file. The cache holds the most recently used routing table entries 15758 and so can eliminate some file access. Flush the in-memory cache 15759 when any entry is deleted from the routing table. When a router 15760 matching an IP address is found, add the routing table entry to the 15761 cache. 15762 - Routing Tables: Add logic to mark a route as most-recently-used in 15763 the route cache. 15764 - ICMP: This change adds support for semi-standard IPPROTO_ICMP 15765 AF_INET datagram sockets. This replaces the old ad hoc, nonstandard 15766 way of implementing ping with a more standard, socket interface. 15767 - ICMPV6: This commit adds support for semi-standard IPPROTO_ICMP6 15768 sockets. This is a replacement for the non-standard ICMPv6 ping 15769 support that violated the portable POSIX OS interface. 15770 - ICMPv6: Add option to manually specify router prefix in router 15771 advertisement message. From Sakari Kapanen. 15772 - Local Sockets: This commit modifies the Unix domain local socket 15773 design. Local sockets are built on top of pipes. The Local socket 15774 implementation maintained file descriptors to interrupt with the 15775 pipes. File descriptors have the bad property that they are valid 15776 only while running on the thread within the task that created the 15777 local socket. 15778 As a policy, all internal OS implementations must use "detached" 15779 files which are valid in any context and do not depend on the 15780 validity of a file descriptor at any point in time. This commit 15781 converts the usage of file descriptors to detached files throughout 15782 the local socket implementation. 15783 15784 * Wireless Networking/Wireless Drivers: 15785 15786 - IEEE-802154: Adds support for receiving MAC events via IOCTL through 15787 socket interface. From Anthony Merlino. 15788 - IEEE-802154: Simplifies notify() and rxframe() calls to a single 15789 notify() call. dataind's and all other "notifs" are now "primitives" 15790 which aligns with standard terminology From Anthony Merlino. 15791 - MAC802154: Add support for getting promiscuous mode state From 15792 Anthony Merlino. 15793 - MAC802154 Character Driver: When in promiscuous mode, the char 15794 driver sends the entire frame, including the MAC header. This 15795 change adds an offset field indicating the header-payload boundary. 15796 It is set to 0 when not in promiscuous mode as the header is not 15797 passed to the application 15798 - 6LoWPAN: Remove CONFIG_NET_6LOWPAN_FRAMELEN. In this case where 15799 multiple radios are supported, this may not be a constant. 6LoWPAN 15800 now always queries the driver to get the maximum frame length. 15801 - 6LoWPAN: Support sending to a router that is on-link and may be 15802 able to forward the packet for us if the destination is not 15803 reachable directly. From Anthony Merlino. 15804 - XBee: Adds XBee S2C (802.15.4 firmware) support. XBee driver 15805 emulates mac802154 interface. From Anthony Merlino. 15806 15807 * Other Common Device Drivers: 15808 15809 - PowerLED: Add upper-half driver for high power LED driver (powerled) 15810 From Mateusz Szafoni. 15811 - RTC Driver: Add periodic alarms to upper and lower halves. From 15812 Juha Niskanen. 15813 - Pipes: Fix writing large buffers not triggering POLLIN for reader 15814 poll. From Jussi Kivilinna. 15815 - USB CDC/ACM Device: Add support for RX flow control to the CDC/ACM 15816 driver. 15817 - USB CDC/ACM Device: Add support for flow control TERMIOs in CDC/ACM 15818 driver. 15819 - USB RNDIS Device: Add RNDIS-over-USB driver. From Sakari Kapanen 15820 with added Hi-Speed support from Masayuki Ishikawa. 15821 - Loop Driver: Don't use file descriptors... Use the internal file 15822 system interfaces so that the loop device can be shared across 15823 threads. 15824 - APA102 LED controller: Add driver for APA102 LED controller. These 15825 LEDs are used on LED Strips and are controlled over SPI. 15826 - INA219. Add INA219 Driver. The INA219 is a combined voltage and 15827 current sensor that can measure up to 26 volts and a current that 15828 depends on an external shunt resistor. Connection happens via 15829 i2c/smbus and the chip features a power supply rail that is 15830 independent from the measured voltage, so it can measure low 15831 voltages. Right now it measures bus voltage and current, and does 15832 not use the internal calibrated current reading, nor the available 15833 power measurement. From Sebastien Lorquet. 15834 - PCA9555: The IRQ subsystem now supports passing a void * parameter 15835 to IRQ handlers. Use that method to support multiple PCA9555 15836 devices, by passing a pointer to the device to the board defined IRQ 15837 handler. Now the CONFIG_ for multiple PCA devices just allocates 15838 device structures dynamically instead of statically when not enabled. 15839 The same interrupt handler is entered with the device structure 15840 parameter in all situations, multiple or single PCA. One should 15841 still be careful if multiple PCA devices share the same IRQ. From 15842 Sebastien Lorquet. 15843 - APDS-9960: Add driver for the APDS-9960 gesture sensor. From Alan 15844 Carvalho de Assis. 15845 - MAX7219: Add support to MAX7219 LED Matrix as LCD interface. From 15846 Alan Carvalho de Assis. 15847 - WM8774: Add WM8774 audio DAC support. From Masayuki Ishikawa. 15848 - Nunchuck: Add Nintendo Wii Nunchuck driver. From Alan Carvalho de 15849 Assis. 15850 15851 * Simulation 15852 15853 - Simulation: Add a configuration for non-graphical testing of the 15854 framebuffer character driver using apps/example/fb. 15855 - Simulation: Add a configuration for testing the UserFS using 15856 apps/examples/userfs. 15857 15858 * Broadcom BCM2708: 15859 15860 - BCM2708: Add enough infrastructrue (more stubs) to get a clean 15861 compilation of the Pi Zero configuration (with many undefined things 15862 at link time). This includes several register definition header 15863 files (some from Alan Carvalho de Assis), basic interrupt handling 15864 logic, boot-up files, GPIO support, tickless timer, build and 15865 configuration logic 15866 15867 * Broadcom BCM2708 Boards: 15868 15869 - Raspberry Pi Zero. Basic board support at configs/pizero. Untested 15870 in this release and still some remaining issues. 15871 15872 * Infineon XMC4xxx Boards: 15873 15874 - XMC4500-Relax: Add config for UART3 on RXD P0.0 and TXD P0.1 pins. 15875 From Alan Carvalho de Assis. 15876 15877 * NXP Freescale LPC17xx Boards: 15878 15879 - Open1788: Add initialization of Framebuffer driver. Add 15880 configuration for testing the framebuffer driver. 15881 15882 * NXP Freescale LPC43xx Drivers: 15883 15884 - LPC43xx: Add LPC43xx CAN driver. From Alexander Vasiljev. 15885 15886 * NXP Freescale LPC43xx Boards: 15887 15888 - MCB1700: Add support for Keil MCB1700 board. From Alan Carvalho de 15889 Assis. 15890 - Open1788: Add support for the discrete joystick driver. 15891 - Open1788: Add a configuration for testing pdcurses with discrete 15892 joystick. 15893 15894 * On Semiconductor LC823450 15895 15896 - LC823450: Add ADC driver and watchdog drivers. From Masayuki 15897 Ishikawa. 15898 - LC823450: Add IPL2 support. From Masayuki Ishikawa. 15899 - LC823450: Add I2S support. From Masayuki Ishikawa. 15900 - LC823450: Add auto LED for CPU activity. From Masayuki Ishikawa. 15901 15902 * On Semiconductor LC823450 Boards 15903 15904 - LC823450-XGEVK: Enable ADC and watchdog driver. From Masayuki 15905 Ishikawa. 15906 - LC823450-XGEVK: Add IPL2 support. From Masayuki Ishikawa. 15907 - LC823450-XGEVK: Add WM8774 support. From Masayuki Ishikawa. 15908 - LC823450-XGEVK: Add auto LED support. From Masayuki Ishikawa. 15909 - LC823450-XGEVK: Enable CONFIG_SMP for audio. From Masayuki Ishikawa. 15910 - LC823450-XGEVK: Add rndis configuration. From Masayuki Ishikawa. 15911 15912 * STMicro STM32: 15913 15914 - ARM Kconfig: Add support for classic ARM11 architecture selections. 15915 - STM32 Tickless: Removes the restriction to 16-bit counts when a 15916 32-bit timer is used for tickless operation on the stm32. As it 15917 was, the restriction is very limiting, especially if one wants high 15918 granularity and large achievable intervals and has the hardware 15919 (namely the 32bit timers) available. From Rajan Gill. 15920 - STM32 L4 Kconfig: Add some L486 and L496 chips. From Juha Niskanen 15921 - STM32 F7: Adds architecture support for the STM32 F72x and F73x 15922 families. From Bob Feretich. 15923 - STM32 F7: Allow changing voltage output scaling setting and 15924 prevents enabling over-drive mode for low frequencies (STM32 F74xx, 15925 75xx, 76xx, 77xx). From Jussi Kivilinna. Changes replicated for 15926 the 72xx and 73xx families. 15927 15928 * STMicro STM32 Drivers: 15929 15930 - STM32 ADC: Added support for ADC's IO_ENABLE_TEMPER_VOLT_CH ioctl 15931 on STM32F10XX and STM32F20XX. From Dmitriy Linikov. 15932 - STM32 Wakeup: Add logic for enabling wakeup pins. From Oleg Evseev. 15933 - STM32 PWR: Adds stm32_pwr_getsbf and stm32_pwr_getwuf functions 15934 that return the standby flag and the wakeup flag PWR power 15935 control/status register. From Oleg Evseev. 15936 - STM32 HRTIM: Sdd support for capture, chopper, deadtime and dump 15937 registers. From Mateusz Szafoni. 15938 - STM32 RTC: Canceling an alarm marks it as inactive. From Juha 15939 Niskanen 15940 - STM32 Serial: Add interface to get uart_dev_t by USART number, 15941 stm32_serial_get_uart(). From Juha Niskanen. 15942 - STM32 F33xx ADC: Initial ADC support for the STM32F33XX. From 15943 Mateusz Szafoni. 15944 - STM32 F33xx ADC: Add ADC DMA support to STM32F33 configuration. From 15945 Mateusz Szafoni. 15946 - STM32 L4 ADC: Port analog watchdog ioctl commands from the Motorola 15947 MDK. From Juha Niskanen 15948 - STM32 L4 ADC: Add option for routing ADC data to DFSDM, fix DFSDM 15949 DMA. From Juha Niskanen 15950 - STM32 L4 ADC: Add PM hooks from Motorola MDK 15951 - STM32 L4 FLASH: Add function for modifying device option bytes, 15952 From Juha Niskanen. 15953 - STM32 L4 DFSDM: Add peripheral support for digital filters for 15954 sigma-delta ADCs. Initial version. Timer trigger support is not 15955 completed and there is some issue with DMA. From Juha Niskanen. 15956 - STM32 L4 I2C: Port then STM32 F7 I2C driver to STM32 L4. STM32L4 I2C 15957 driver is in work-in-progress state (plentiful of TODOs and 15958 #warnings) and lags many features found in more up-to-date STM32 I2C 15959 drivers. The peripheral on STM32F7 and STM32L4 are identical except 15960 for L4's 'wakeup from stop mode' flag and STM32F7's I2C driver is in 15961 more 'ready to use' state. The I2C clock configuration is kept the 15962 same as before (I2CCLK = PCLK1 80 MHz) instead of switching to 15963 STM32F7 arch default that is I2CCLK=HSI. Further work would be to 15964 add configuration option for choosing I2C clock source instead of 15965 current hard-coded default. From Jussi Kivilinna. 15966 - STM32 L4 RTC: Add up_rtc_getdatetime_with_subseconds 15967 - STM32 L4 RTC: Change maximum alarm time from 24h to one month. From 15968 Juha Niskanen. 15969 - STM32 L4 RTC: Add support for periodic interrupts with 15970 (experimental) CONFIG_RTC_PERIODIC. From Juha Niskanen. 15971 - STM32 L4 SDMMC: Add support for an SDMMC driver. From Miha Vrhovnik. 15972 - STM32 L4 Serial: Suspend serial for Stop mode. From Juha Niskanen. 15973 - STM32 L4 Serial/PM: STM32L4 serial PM interface improvements: 15974 Check rx/tx buffers for pending data in pmprepare. Remove adhoc PM 15975 interfaces and move serial suspend functionality behind CONFIG_PM. 15976 From Jussi Kivilinna. 15977 15978 * STMicro STM32 Boards: 15979 15980 - STM32F103-Minimum: Add board support for APA102 driver. From Alan 15981 Carvalho de Assis. 15982 - STM32F103-Minimum: Add ADC support on stm32f103-minimum board. 15983 From Alan Carvalho de Assis. 15984 - STM32F103-Minimum: Add support for LM75 in the stm32f103-minimum 15985 board. From Alan Carvalho de Assis. 15986 - STM32F103-Minimum: Add an ADPS-9960 example configuration. From 15987 Alan Carvalho de Assis. 15988 - STM32F103-Minimum: Add board support for MAX7219 LED Matrix 15989 controller. From Alan Carvalho de Assis. 15990 - STM32F103-Minimum: Add USB MSC device initialization to 15991 stm32f103-minimum. From Alan Carvalho de Assis. 15992 - STM32F103-Minimum: Add framebuffer driver initialization for 15993 stm32f103-minimum board. From Alan Carvalho de Assis. 15994 - STM32F103-Minimum: Add Nunchuck board support for 15995 stm32f103-minimum board. From Alan Carvalho de Assis. 15996 - STM32F4 Discovery: Add support for JLX12864G display on STM32F4 15997 Discovery board. From Alan Carvalho de Assis. 15998 - Viewtool-STM32F107: Add support to auto-mount the procfs file system. 15999 - Photon: Support SPI1 and SPI3. From Anthony Merlino. 16000 - STM32F334-DISCO: Add lower half driver for high power LED 16001 (powerled). From Mateusz Szafoni. 16002 - STM32F334-DISCO: Add flash mode support for powerled driver. From 16003 Mateusz Szafoni. 16004 - STM32F334-DISCO: Add powerled example configuration. From Mateusz 16005 Szafoni. 16006 - STM32F334-DISCO: Add lower-half driver for SMPS (buck-boost onboard 16007 converter). From Mateusz Szafoni 16008 - Nucleo-F334R8: Add logic for zero latency high priority interrupts 16009 example. From Mateusz Szafoni. 16010 - Nucleo-F334R8: Add highpri example configuration. From Mateusz 16011 Szafoni. 16012 - STM32 F4 Discovery: Added support for the LIS3DSH accelerometer on 16013 the STM32F4 Discovery rev. C boards. From Florian Olbrich. 16014 - STM32 F4 Discovery: ROMFS for STM32F4 Discovery board. From Tomasz 16015 Wozniak. 16016 - STM32 F4 Discovery: Add a USB MSC configuration. From Alan Carvalho 16017 de Assis. 16018 - STM32 F4 Discovery: RNDIS support on STM32F4Discovery + DM-STF4BB. 16019 NOTE: MAC address for the host side starts 0xaa. This assignment 16020 scheme should be fixed later. From Masayuki Ishikawa. 16021 - STM32 F4 Discovery: Add STM32F4 Discovery board support for 16022 Nunchuck joystick. From Alan Carvalho de Assis. 16023 - STM3240G-EVAL: Add a configuration for testing the Framebuffer 16024 character driver using the LCD framebuffer front. 16025 - STM3240G-EVAL: Mount procfs if enabled. 16026 - STM3240G-EVAL: Add support for pdcurses and the pdcurses demo 16027 programs in the 'fb' configuration. 16028 - Clicker2-STM32: Adds SD card, automount, and syslog file 16029 support and fixes a few minor issues. From Anthony Merlino. 16030 - Clicker2-STM32: Adds support for USB RNDIS device. From Anthony 16031 Merlino. 16032 - Olimex STM32-H407: Add serial support on the on-board UEXT 16033 connector. Add USART6 for UEXT connector. Add nsh_uext 16034 configuration and README update. From Jan Pobříslo. 16035 - Nucleo-F410RB: Add support for the nucleo-F410RB board. From 16036 Gwenhael Goavec-Merou. 16037 - STM32F429i-DISCO: Add framebuffer driver initialization. Add a 16038 framebuffer (fb) configuration. 16039 - STM32F429i-DISCO: Add logic to auto-mount procfs. Enable procfs in 16040 all configurations that use NSH. 16041 - STM32F429i-DISCO: Enable support for the STMPE811 touchscreen 16042 controller. Enable touchscreen and also the touchscreen testa at 16043 apps/examples/touchscreen in the fb configuration. 16044 - STM32F429i-DISCO: Convert NxWM configuration to use LTDC 16045 framebuffer driver instead of SPI serial. Also reduce number of 16046 layers from 4 to 1 in fb configuration. Only one layer is used. 16047 - STM32L476-MDK: Add support for the on-board LEDs. 16048 - Nucleo-L496ZG: Add DFSDM initialization. From Juha Niskanen 16049 - Nucleo-L496ZG: Add support for SDMMC driver. From Miha Vrhovnik. 16050 - Nucleo-L496ZG: Enable I2C4 bus with i2ctool in NSH configuration. 16051 From Jussi Kivilinna. 16052 - Nucleo-L496ZG: Make HSE on Nucleo-L496ZG default to enable USB. 16053 From Miha Vrhovnik. 16054 - Nucleo-F746ZG: Use the serial console over /dev/ttyACM0 by default. 16055 The Nucleo-F746ZG doesn't come with Arduio RS-232 shield, then it is 16056 better to use the serial over the /dev/ttyACM0 that is created 16057 automatically when the board is plugged in the computer. From Alan 16058 Carvalho de Assis. 16059 - Nucleo-144: Adds support for the Nucleo-144 boards with 16060 STM32F722ZE. From Bob Feretich. 16061 16062 * ZiLOG Z80 16063 16064 - z80/include: compiler.h, limits.h, types.h: Update SDCC/z80 files 16065 to include support for long long, inline, __FILE__, and __func__. 16066 16067 * C Library/Header Files: 16068 16069 - include/: Add stdnoreturn.h. Holds definitions for the C11 16070 noreturn keyword. Applies to C too. 16071 - include/netinet/tcp.h: Add trivial standard tcp.h header file. 16072 - libc: Add support for readv() and writev(). 16073 - libc: Adds tcflow(). 16074 - libc: Add support for sigwait(). 16075 - libnx: Changes to allow the font subsystem to be built without 16076 enabling the entire graphics system (CONFIG_NX). Adds 16077 CONFIG_NXFONTS and CONFIG_NXGLIB. Needed to duplicate some Kconfig 16078 setting for NXFONTs if it can be configured and built independently 16079 of NX. 16080 16081 * Tools: 16082 16083 - tools/configure.sh: Add special support so that you can start with a 16084 windows native configuration and install on a different host (and 16085 vice versa). 16086 - tools/configure.c: Duplicate new functionaity added to configure.sh. 16087 - tools/configure.sh: This commit adds a -m option for macOS. For 16088 anyone not aware, Apple renamed OSX to macOS recently; thus the 'm' 16089 instead of 'o'. This does not change the other uses of *_OSX to 16090 macOS. From jeditekunum. 16091 - tools/configure.c: Update functionality to match last change to 16092 tools/configure.sh. 16093 16094 * NSH: apps/nshlib: 16095 16096 - apps/nshlib: mount command no long uses the non-standard OS 16097 interface foreach_mountpoint(). Now simply cats /proc/fs/mount 16098 when there are no arguments to the mount command. 16099 - apps/nshlib: df command no long uses the non-standard OS interface 16100 foreach_mountpoint(). Now simply cats /proc/fs/blocks or 16101 /proc/fs/usage. 16102 - apps/nshlib: The free commands no longer used mallinfo() to get 16103 the state of the use heap. Two reasons: That is not useful 16104 information in the kernel build. And (2) there are other memory 16105 resources of interest in other configurations such as the Kernel 16106 heap in PROTECTED and KERNEL builds, and the prog mem uses when 16107 FLASH is used to hold modifiable data. The free command has been 16108 extended to just dump the content of procfs entries and to include 16109 all of these other memory resources of the procfs entries are 16110 available. 16111 16112 * Examples/Tests: apps/examples: 16113 16114 - apps/examples/fb: Add a simple test for the framebuffer character 16115 driver.. 16116 - apps/examples/ostest: sem_open() now returns SEM_FAILED in the 16117 event of a failure. 16118 - examples/ostest: Extend cancellation test to make sure that 16119 cancelable threads waiting on a message queue or on a signal can be 16120 canceled. 16121 - Added a simple reader example for the LIS3DSH acceleration sensor 16122 on STM32F4Discovery. From Florian Olbrich. 16123 - apps/examples/apa102: Add a Rainbow example for APA102 LED Strip. 16124 From Alan Carvalho de Assis. 16125 - apps/examples/flowc: Add a simple test of serial hardware flow 16126 control. 16127 - Add powerled driver example. From Mateusz Szafoni. 16128 - apps/examples/ina219: A simple infinite loop that polls the INA219 16129 sensor and displays the measurements. From Sebastien Lorquet. 16130 - apps/examples/alarm: Add options for reading alarm value and 16131 canceling it. From Juha Niskanen. 16132 - Add -n samples to lm75 app and replace Centigrade with Celsius. 16133 From Alan Carvalho de Assis. 16134 - apps/examples/adps9960: Add ADPS-9960 example. From Alan Carvalho 16135 de Assis. 16136 - apps/examples/obd2: Add OBD2 example application. From Alan 16137 Carvalho de Assis. 16138 - apps/examples/userfs: Add a test case for verifying UserFS. 16139 - apps/examples/smps: Add SMPS driver example. From Mateusz Szafoni. 16140 - apps/examples/pdcurses: Bring in pdcurses demos and make them 16141 conform to the NuttX coding style. 16142 - apps/examples/pdcurses: Add a very simple example that just shows 16143 the entire character set (7-bit only). It adapts to the size of 16144 the framebuffer and, hence, can be used with very tiny displays. 16145 In fact it looks really dumb on big displays. 16146 - apps/examples/nunchuck: Add Nunchuck example application. From 16147 Alan Carvalho de Assis. 16148 16149 * File System Utilities: apps/fsutils: 16150 16151 - apps/fsutils/mkfatfs: Move mkfatfs from the OS to here. 16152 16153 * Network Utilities: apps/netutils: 16154 16155 - apps/netutils/netlib: Add netlib_ipv6adaptor() and 16156 netlib_ipv4adaptor(). 16157 - apps/netutils/netlib: Add helpers for reading the routing table: 16158 netlib_read_ipv4route() and netlib_read_ipv6route(). 16159 - apps/netutils/netlib: Add new utilities netlib_ipv[4|6]router() 16160 that can be used to determine the IP address of a router that would 16161 be used some some destination IP address that is not locally 16162 accessible. 16163 - apps/netutils/ftpc: Adds support for IPv6 and fixes various 16164 transfer issues. From Anthony Merlino. 16165 16166 * CANUtilities: apps/canutils: 16167 16168 - apps/canutils/libobd2: Add libobd2 for NuttX. From Alan Carvalho 16169 de Assis. 16170 16171 * Graphics: apps/graphics: 16172 16173 - graphics/traveler: Convert to use the framebuffer driver. 16174 - apps/graphics/pdcurs34: This commit brings the public domain 16175 pdcurses library into NuttX. NuttX graphics support based on the 16176 framebuffer character drivers has been integrated. Input is 16177 currently limited to a discrete joystick driver. 16178 16179 * Wireless Utilities: apps/wireless: 16180 16181 - apps/wireless/ieee802154/i8sak: Adds socket interface support. You 16182 can now use both socket or char driver to control the MAC layer. 16183 From Anthony Merlino. 16184 - apps/wireless/ieee802154/i8sak: Adds sniffer port option and a few 16185 other get/set parameters. From Anthony Merlino. 16186 - apps/wireless/ieee802154/i8sak: Changes 'notif' to 'primitive' 16187 corresponding to the changes in the Kernel. From Anthony Merlino. 16188 - apps/wireless/ieee802154/i8sak: Channel setting is now saved 16189 locally, so when performing a startpan or assoc, the channel 16190 previously set is still used, even though the MAC layer gets reset. 16191 From Anthony Merlino. 16192 - apps/wireless/ieee802154/i8sak: Adds ability to get/set rxonidle 16193 setting for MAC layer. From Anthony Merlino. 16194 - apps/wireless/ieee802154/i8shark: Adds i8shark, a sniffer "adapter" 16195 that captures all 802.15.4 traffic, packages it into a Wireshark ZEP 16196 packet, and sends it to a host running Wireshark From Anthony 16197 Merlino. 16198 16199 * System Utilities (apps/system) 16200 16201 - apps/system/ping and ping6: This commit removes the ping and ping6 16202 commands from NSH and replaces then with the apps/system/ping and 16203 apps/system/ping6 built-in commands. The NSH ping[6] commands had 16204 to be removed because they violated the portable POSIX OS interface. 16205 The apps/system/png and ping6 command uses the sem-standard 16206 IPPROTO_ICMP and IPPROTO_ICMP6 socket interfaces. 16207 16208 * Platform-Specific Support (apps/platform) 16209 16210Bugfixes. Only the most critical bugfixes are listed here (see the 16211ChangeLog for the complete list of bugfixes and for additional, more 16212detailed bugfix information): 16213 16214 * Core OS: 16215 16216 - Task Environment Creation: Fix an error in the duplication of the 16217 child tasks environment in the special case where the parent's 16218 environment was created, but then all of the variables were unset. 16219 In that case, there is still an allocation in place but the size of 16220 the allocation is zero. This case was not being handled correctly 16221 when a child task attempts to create its environment and inherit the 16222 zero-size partent environment. Noted by Anthony Merlino. 16223 - timer_create(): Fix watchdog resource leak if cannot allocate a new 16224 timer. From Bruno Herrera. 16225 - OS Internal Functions: Internal OS functions should not return error 16226 information via the user errno variable: This includes functions 16227 like file_seek(), file_read(), file_write(), etc. The complete list 16228 is too long to duplicate here (please refer to the ChangeLog for 16229 details). 16230 - OS Internal Functions: Not only should internal OS functions not 16231 modify the errno variable, they should never introduce cancellation 16232 points: psock_connect(), psock_listen(), psock_getsockopt(), etc. 16233 The list is too long to duplicate here (please refer to the 16234 ChangeLog for details). 16235 - OS Internal Functions: Create OS internal versions of many 16236 applications functions that were used by the OS. The new versions 16237 differ from the application interfaces in that (1) they do not 16238 return error information via the errno variable, and (2) they never 16239 create cancellation points. This includes new internal interfaces 16240 like nxsem_init() that is like sem_init(), etc. There are too many 16241 to list here (see the ChangeLog for details). 16242 - Task Exit: task_exithook.c fails to link if signals are disabled 16243 because was unconditionally trying to send the SIGCHLD signal to the 16244 parent in certain configurations. Noted by Jeongchan Kim. 16245 - memalign(): Fix heap corruption caused by using unaligned chunk 16246 size. Unaligned nodes generated by memalign later cause heap 16247 corruptions when nodes are shrink further (for example, 24 bytes -> 16248 8 bytes, when alignment is 16 bytes). From Jussi Kivilinna. 16249 - SMP: In sched/sched/sched_cpuselect.c, in order to find the cpu 16250 with the lowest priority thread, we have to remember the already 16251 found lowest priority. Noted by Anonymous in Issue #75. 16252 - spinlocks: Disable local interrupts in spin_setbit() and 16253 spin_clrbit() in order to avoid a deadlock condition. From Masayuki 16254 Ishikawa. 16255 - atexit()/on_exit(): Clear atexit()/on_exit() function pointer 16256 before calling it. On most archs, up_assert() calls exit() so 16257 without this change, if atexit() function triggers an assertion we 16258 are in endless loop. From Juha Niskanen. 16259 16260 * File System/Block and MTD Drivers: 16261 16262 - tmpfs: Fixed directory unlocking in tmpfs_opendir. From Dmitriy 16263 Linikov. 16264 - fcntl(): fcntl() did not return success fail for F_SETFL. Reported 16265 by Jussi Kivilinna. 16266 - tcdrain(): tcdrain() was recently added to the NuttX C library. 16267 But there is a problem. The specification of tcdrain() requires 16268 that it be a cancellation point. In order to do this, tcdrain was 16269 moved from the C library into the OS and the addition cancellation 16270 point hooks were added. In non-FLAT builds, access via system calls 16271 is also now supported. 16272 - FS FAT: Fix hard-fault when listing contents of FAT root. From 16273 Jussi Kivilinna. 16274 - procfs: Correct a problem that was causing an apparent directory to 16275 be reported as a file instead of a directory by opendir. This 16276 happened after adding these three new procfs entries: fs/block, 16277 fs/mount, and fs/usage. Of course, there is no directory fs in this 16278 case, only three files that have fs/ in their relative pathnames. 16279 The logic was detecting that fs was the name of the enty to report, 16280 but it was then declaring that fs was a file (because fs/block is of 16281 type file). This was fixed by adding a check for matching lengths. 16282 i.e., if strlen(fs) != strlen(fs/block), then report fs as a 16283 directory instead of a file. 16284 - procfs: Fix uptime being clse to maximum 32-bit value in certain 16285 config. From Juha Niskanen. 16286 16287 * Binary Loader: 16288 16289 - binfmt/: Don't schedule starthook if there are no constructors. 16290 16291 * Graphics/Display Drivers: 16292 16293 - LCD: ILI9341 initialize method not permitted to set errno. 16294 16295 * Networking/Network Drivers: 16296 16297 - Networking: net/netdev/netdev_ifconfig.c: Was not returning all of 16298 the address info. 16299 - Networking: In some cases, packets are still not sent behind the 16300 router. I found that NuttX sends the ARP requests not to the router 16301 but to the target. Mistake in file net/route/netdev_router.c. From 16302 Aleksandr Kazantsev. 16303 - SIOCGIFCONF and SIOCGLIFCONF IOCTL commands should only report on 16304 network adatpors in the UP state. 16305 - recvfrom(): Fix double leave_cancellation_point on error path. 16306 From Jussi Kivilinna. 16307 - send(): Verify that sock descriptor is valid. Fixes assertion when 16308 using send on closed socket. From Jussi Kivilinna. 16309 - sendto(): Remove assert check for null psock and buf input 16310 pointers. Removes check as 'psock == NULL' altogether because that 16311 checked for later in psock_send and psock_sendto. Change null check 16312 for 'buf' so that it is handled same as in recvfrom.c (return 16313 -EINVAL instead of assert). From Jussi Kivilinna. 16314 - sockgetname() files need to include udp/udp.h and tcp/tcp.h or 16315 otherwise NET_UDP_HAVE_STACK and NET_TCP_HAVE_STACK are undefined 16316 and the logic is never compiled. Noted by Anthony Merlino. 16317 - dup()/dup2(): There was a reference counting problem in the TCP 16318 logic of net_clone(). net_clone() which is the common logic 16319 underlying dup() and dup2() for sockets. When net_clone() calls 16320 net_start_monitor() and net_start_monitor() returns a failure 16321 (because the underlying TCP connection) then net_clone() must back 16322 out the reference count on the structure. Problem noted by Pascal 16323 Speck and this implementation of the solution is based on his 16324 suggestion. 16325 - close(): There was a possible recursion that could eventually 16326 overflow the stack. The error occurred when closing the socket with 16327 inet_close() while a socket callback was still queued. When the 16328 socket callback was executed by devif_conn_event(), this resulted in 16329 a call to psock_send_eventhandler() with TCP_CLOSE flag set which 16330 then called tcp_lost_connection(). tcp_shutdown_monitor() then 16331 called tcp_callback() again, which again called 16332 psock_send_eventhandler(), and so on.... Noted by Pascal Speck. 16333 Solution is also similar to a solution proposed by Pascal Speck. 16334 - inet: Add check for protocol before handing out TCP and UDP sockets. 16335 - IP Forwarding: Fixes typo that caused build error when IP 16336 forwarding was enabled with CONFIG_NET_ICMPv6_NEIGHBOR enabled as 16337 well. From Anthony Merlino. 16338 - IP Forwarding: Do not add link layer header size to d_len inside 16339 devif_forward(). From Anthony Merlino. 16340 - TCP Networking: When CONFIG_NET_TCP_WRITE_BUFF=y there is a 16341 situation where a NULL pointer may be dereferenced. In this 16342 configuration, the TCP connection's 'semi-permanent' callback, 16343 s_sndcb was nullified in tcp_close_disconnect. However, other logic 16344 in tcp_lost_connection() attempt to use that callback reference 16345 after it was nullifed. Fixed in tcp_lost_connectino() by adding a 16346 NULL pointer change before the access. This was reported by Dmitriy 16347 Linikov in Bitbucket Issue 72. 16348 - UDP Broadcast: Fix some issues with regard to UDP broadcast 16349 handling. This is Bitbucket Issue #77. 16350 - ICMP: Fix an error in the poll logic. It was assumed that the 16351 input parameter pvconn was valid. It was not. Instead, the poll 16352 logic must work like the sendto() and recvfrom() logic: It must 16353 keep a copy of the conn structure in the private data. 16354 - ICMPv6: Fixes several errors preventing icmpv6_radvertise.c from 16355 being compiled. Fixes conversions to network byte order (namely 16356 vlifetime, plifetime, mtu). IPv6 source address is set to 16357 link-local IP address instead of the address in the netdev 16358 structure. This is in compliance to RFC 4861. RA didn't work on 16359 Linux before this change. Finally, router prefix and prefix length 16360 are derived from the IPv6 address and netmask in the netdev 16361 structure. This seems to make more sense than using a predefined, 16362 separate prefix from the config. From Sakari Kapanen. 16363 - ICMPV6: icmpv6_input() needs to set d_len to 0 after consuming echo 16364 reply, otherwise, garbage will get sent out. From Anthony Merlino. 16365 - ICMPV6: Fix an error in the poll logic. It was assumed that the 16366 input parameter pvconn was valid. It was not. Instead, the poll 16367 logic must work like the sendto() and recvfrom() logic: It must 16368 keep a copy of the conn structure in the private data. 16369 - IGMPv2 Send: Fix incoming IGMP checksum calculation. From Louis 16370 Mayencourt. 16371 - ARP: Fix IGMP Ethernet address computation. From Louis Mayencourt. 16372 16373 * Wireless/Wireless Drivers: 16374 16375 - CC1101: CC1101 driver not permitted to set errno. 16376 - 6LoWPAN: Correct an error in uncompressing multicast address. 16377 - 6LoWPAN: Correct a bug in handling uncompressed frames (IPv6 16378 dispatch). Adds a separate local variable, protosize, to keep track 16379 of the size of thep protocol header. 16380 - 6LoWPAN: Fix an endian-ness problem in 6LoWPAN address 16381 decompression. From Anthony Merlino. 16382 - 6LoWPAN: The logic that extracts interface identifier from the IP 16383 address needs to be generalized to handle cases where the address is 16384 not a link local address. From Anthony Merlino. 16385 16386 * Common Drivers: 16387 16388 - Serial: 16550 UART driver IOCTL method must not set errno; it must 16389 return a negated errno value. 16390 - LIS3DSH: Added the argument parameter (FAR void *arg) to the 16391 interrupt handler provided by the LIS3DSH driver to fit the 16392 definition for ISRs in xcpt_t. Changed the check for working queue 16393 availability in lis3dsh interrupt handler to use work_available() 16394 and not crash in case of an overrun. From Florian Olbrich. 16395 - LIS2DH: Fixes for self-test. From Jussi Kivilinna. 16396 - LIS2DH: Fix use of obsolete dbg macro. From Jussi Kivilinna. 16397 - LIS331DL: LIS331DL driver not permitted to set errno. 16398 - HTS221: Power-on sensor for loading calibration data. From Jussi 16399 Kivilinna. 16400 - MCP2515: Fix the MCP2515 Bit Rate Prescale calculation. Fix BRP 16401 for SET_BITTIMING ioctl as well. From Alan Carvalho de Assis. 16402 - STMPE811: Fix GPIO operation of STMPE811 driver. 16403 1. STMPE811_GPIO_DIR was defined for register name and later was 16404 redefined to be the pin direction mask for `stmpe811_gpioconfig`. 16405 I decided to change register name to be STMPE811_GPIO_DIR_REG, and 16406 keep pin direction mask STMPE811_GPIO_DIR, so that any external 16407 code that already use this driver will be unchanged. 16408 2. The STMPE811 register GPIO_DIR uses bit value 1 for output and 0 16409 for input, but `stmpe811_gpioconfig` set the opposite. 16410 3. The call to `stmpe811_gpiowrite` from inside of 16411 `stmpe811_gpioconfig` leaded to deadlock. 16412 From Dmitriy Linikov. 16413 - BQ2429X: Add BATIO_OPRTN_SYSON for enabling BATFET after SYSOFF. 16414 From Jussi Kivilinna. 16415 16416 * Simulation: 16417 16418 - Simulation: Serial and console drivers are not permitted to set 16419 the errno. 16420 16421 * ARMv7-M: 16422 16423 - ARM Stack Check: Fix assert panic when both TLS and interrupt stack 16424 are enable. From Jussi Kivilinna. 16425 16426 * Infineon XMC4xxx Drivers: 16427 16428 - XMC4 USIC: Kconfig was not selecting XMC4_USIC for USIC1. From Alan 16429 Carvalho de Assis. 16430 - XMC4 UART: Fix XMC4xxx USIC UART sginal to be high level when in idle. 16431 From Alan Carvalho de Assis. 16432 - XMC4 UART:xmc4_uart_configure() expects the channel# not uartbase as 16433 an input parameter. From Alan Carvalho de Assis. 16434 - XMC4 UART: Enable RX/TX status. From Alan Carvalho de Assis. 16435 - XMC4 UART: The Alternative Receive Interrupt was not being 16436 configured. 16437 16438 * Infineon XMC4xxx Boards: 16439 16440 - XMC4500-Relax: Setup max. freq. 120MHz and setup pull-up to UART 16441 RXD pin. From Alan Carvalho de Assis. 16442 16443 * Microchip/Atmel SAMv7 Drivers: 16444 16445 - SAMv7: DAC and ADC drivers are not permitted to set the errno. 16446 - SAMv7: Correct an error in RX DMA setup. From Manish Kumar Sharma. 16447 - SAMv7 USB: It is necessary to disable pre-emption and interrupts 16448 around a loop that copies TX data into the hardware in order to 16449 avoid a TX data underrun condition. From Anthony Merlino. 16450 16451 * NXP/Freescale LPC31xx Drivers: 16452 16453 - LPC31xx: Serial and console drivers are not permitted to set 16454 the errno. 16455 16456 * NXP/Freescale LPC43xx: 16457 16458 - lpc43xx: lpc43_adc.c was being selected by the build system when 16459 DAC was selected. 16460 16461 * NXP/Freescale LPC43xx Drivers: 16462 16463 - LPC43xx Ethernet: Fix some backward logic setting full-duplex and 16464 100mbps when autoconfiguration is disabled. Noted by Anonymous in 16465 Issue #76. 16466 - lpc43xx: UART_RX pins should be configured with input buffers 16467 enabled. Otherwise it cannot be read. From Alexander Vasiljev. 16468 16469 * STMicro STM32: 16470 16471 - STM32 F2: Fixed build for STM32F20XX platforms when 16472 CONFIG_STM32_DMACAPABLE is enabled. From Dmitriy Linikov. 16473 - STM32 F4: Remove ltdc.h and dma2d.h. Those header files in that 16474 location permitted inclusion into application space logic and, 16475 hence, facilitated and encouraged calling into the OS and violating 16476 the portable POSIX OS interface. The definitions in those header 16477 files were move the appropriate location in the counterpart, 16478 architecture specific files at arch/arm/src/stm32/dma2d.h and ltdc.h. 16479 - STM32 L4: Build stm32l4_idle.c only if CONFIG_ARCH_IDLE_CUSTOM is 16480 not enabled. From Jussi Kivilinna. 16481 - STM32 F7: Remove ltdc.h and dma2d.h. Those header files in that 16482 location permitted inclusion into application space logic and, 16483 hence, facilitated and encouraged calling into the OS and violating 16484 the portable POSIX OS interface. The definitions in those header 16485 files were move the appropriate location in the counterpart, 16486 architecture specific files at arch/arm/src/stm32f7/dma2d.h and 16487 ltdc.h. 16488 16489 * STMicro STM32 Drivers: 16490 16491 - STM32: DAC and ADC drivers are not permitted to set the errno. 16492 - STM32 ADC: Clear pending interrupts. From Mateusz Szafoni. 16493 - STM32 CAN: Lower part of STM32 CAN driver 16494 arch/arm/src/stm32/stm32_can.c uses all three hw tx mailboxes and 16495 clears TXFP bit in the CAN_MCR register (it means transmission order 16496 is defined by identifier and mailbox number). 16497 This creates situation when order frames are put in upper part of 16498 CAN driver (via can_write) and order frames are sent on bus can be 16499 different (and I experience this in wild). Since CAN driver API 16500 pretends to be "file like" I expect data to be read from fd the same 16501 order it is written. So I consider described behaviour to be a bug. 16502 Fixed by settin the TXFP bit in the CAN_MCR register (FIFO 16503 transmit order). From comments by Alexey T, in Bitbucket Issue 73. 16504 - STM32 HRTIM: Fix pclk calculation. From Mateusz Szafoni. 16505 - STM32 HRTIM: Fix burst mode prescaler update. From Mateusz Szafoni. 16506 - STM32 (alt) I2C: Ensure proper error handling. Injecting data 16507 errors would cause the driver to continually reenter the isr with 16508 BERR an RxNE. This fix allows the error to be cleared and 16509 propagated to the waiting task. From David Sidrane. 16510 - STM32: LTDC and DMA2D drivers are not permitted to set the errno. 16511 - STM32 RTC: Workaround for potential subseconds race condition. In 16512 all recent STM32 chips reading either RTC_SSR or RTC_TR is supposed 16513 to lock the values in the higher-order calendar shadow registers 16514 until RTC_DR is read. However many old chips have in their errata 16515 this silicon bug (at least F401xB/C, F42xx, F43xx, L15xxE, L15xVD 16516 and likely others): "When reading the calendar registers with 16517 BYPSHAD=0, the RTC_TR and RTC_DR registers may not be locked after 16518 reading the RTC_SSR register. This happens if the read operation is 16519 initiated one APB clock period before the shadow registers are 16520 updated. This can result in a non-consistency of the three 16521 registers. Similarly, RTC_DR register can be updated after reading 16522 the RTC_TR register instead of being locked." 16523 - STM32 Serial: Do not stop processing input in SW flow-control 16524 mode. From Juha Niskanen. 16525 - STM32F33xxx ADC: Add some publicly visible interfaces and some 16526 code to support injected channels. From Mateusz Szafoni. 16527 - STM32F33xxx DMA: Add public interface to handle with DMA 16528 interrupts. From Mateusz Szafoni. 16529 - STM32F33xxx RCC: Fix CAN clock enable. From Mateusz Szafoni. 16530 - stm32 F4 I2C: Ensure proper interrupt handling. Injecting data 16531 errors that causes a STOP to be perceived by the driver, will 16532 continually re-enter the isr with SB not set and BTF and RxNE set. 16533 This changes allows the interrupts to be cleared and propagates a 16534 I2C_SR1_TIMEOUT to the waiting task. From David Sidrane. 16535 - STM32 L4 Serial: Do not stop processing input in SW flow-control 16536 mode. From Juha Niskanen. 16537 - STM32 F7: LTDC and DMA2D drivers are not permitted to set the errno. 16538 - STM32 L4: DAC and ADC drivers are not permitted to set the errno. 16539 - STM32 L4 DAC: Do not configure output pin if it is not used. From 16540 Juha Niskanen. 16541 - STM32 L4 RTC, PM: Small fixes to subseconds handling, ADC 16542 power-management hooks 16543 - STM32 F4 RTC: Fix reading alarm value that is more than 24h in 16544 future. From Juha Niskanen 16545 - STM32 L4 RTC: Fix reading alarm value that is more than 24h in 16546 future. From Juha Niskanen 16547 - STM32 L4 TIM: Fix compilation of timers with complementary outputs 16548 when not PWM_MULTICHAN. From Juha Niskanen. 16549 - STM32 L4 RCC: Restore backup-registers after backup-domain reset. 16550 From Jussi Kivilinna. 16551 - STM32 L4 RTC: Correct RTC_SSR and RTC_TR read ordering. In all 16552 recent STM32 chips reading either RTC_SSR or RTC_TR is supposed to 16553 lock the values in the higher-order calendar shadow registers until 16554 RTC_DR is read. Change the register read ordering to match this and 16555 don't keep a workaround for a hypothetical race condition (not in 16556 any L4 errata, lets for once assume ST's silicon works as it is 16557 documented...) 16558 - STM32 L4 RTC: Init mode was never exited because nested locking in 16559 rtc_synchwait() disabled backup domain access. From Juha Niskanen. 16560 - STM32 L4 RTC: Use backup register magic value instead of INITS 16561 bit. The INITS (bit 4) of RTC_ISR register cannot be used to 16562 reliably detect backup domain reset. This is because we can operate 16563 our device without ever initializing the year field in the RTC 16564 calendar if our application does not care about correct date being 16565 set. Hardware also clears the bit when RTC date is set back to year 16566 2000. From Juha Niskanen. 16567 - STM32 L4 RTC: Put back the SSR race condition workaround. ST has 16568 confirmed that the issue has not been fixed, and that it applies to 16569 STM32 L4 too (was not in errata sheets due to documentation bug) See 16570 discussion: https://community.st.com/thread/43710-issue-with-rtc-maximum-time-resolution . 16571 From Juha Niskanen. 16572 - STM32 F7 BBSRAM: Avoid assert in stm32_bbsram_savepanic. If panic 16573 happens before stm32_bbsram is initialized, stm32_bbsram_savepanic 16574 caused additional assert panic. Function has null pointer check, so 16575 drop DEBUGASSERT. From Jussi Kivilinna. 16576 - STM32 F7 I2C: fix I2C_M_NORESTART handling. From Jussi Kivilinna. 16577 - STM32 F7 I2C: Restore bus frequency after I2C reset. Copy 16578 frequency restoration fix from STM32L4 I2C driver to STM32F7 I2C 16579 driver. From Jussi Kivilinna. 16580 - STM32 F7 RTC: Fix reading alarm value that is more than 24h in 16581 future. From Juha Niskanen 16582 16583 * STMicro STM32 Boards: 16584 16585 - STM32F334-DISCO: Add missing ram_vectors configuration in linker 16586 script. From Mateusz Szafoni. 16587 - Nucleo-F334R8: Add missing ram_vectors configuration in linker 16588 script. From Mateusz Szafoni. 16589 - Nucleo-F334R8: Add Missing ADC trigger configuration to the highpri 16590 configuration. From Mateusz Szafoni. 16591 - STM3240G-EVAL: The timer frequencies (BOARD_TIMx_FREQUENCY) are 16592 incorrectly defined in board.h. Since the APB prescalers are set to 16593 divide by 4 and 2 respectively, the frequencies should be "2xAPBx" 16594 as said in the comment. The correct frequencies are already defined 16595 but as STM32_APBx_TIMx_CLKIN. From Mattias Edlund. 16596 - STM32F429i-DISCO: The ltdc configuration has been deleted because 16597 it violated the portable POSIX OS interface. It used 16598 apps/examples/ltdc and include ltdc.h and dma2d.h which were also 16599 removed for the same reason. 16600 16601 * ZiLOG Z80 16602 16603 - configs/z80sim and xtrs: Serial driver lower halves ioctl methods 16604 should return a negated errno value, not set the errno variable. 16605 - z80 Make.defs: Fixes dependency generation with newest SDCC 16606 compiler. 16607 - configs/z80sim: Fix a naming problem. Also, don't try to build the 16608 serial driver if CONFIG_NFILE_DESCRIPTOR=0. 16609 - Z80: Makefile fix for use with current SDCC. 16610 16611 * Build System 16612 16613 - configs/: All defconfig files that include 16614 CONFIG_NET_ICMPv6_SOCKET=y need to select CONFIG_SYSTEM_PING6=y and 16615 deselect CONFIG_DISABLE_POLL. 16616 - configs/: All NX configuration... Because of recent changes to 16617 libnx/nxfonts, Supported bit per pixel must be separated specified 16618 for NXFONTs too and need to match the select BPP for NX. 16619 - Build system: Fix CONFIG_BUILD_KERNEL logic directories that have 16620 ubin and kbin subdirectories. Conditional logic was fine for 16621 CONFIG_BUILD_FLAT and CONFIG_BUILD_PROTECTED but generated useless 16622 dependencies if CONFIG_BUILD_KERNEL. 16623 16624 * C Library/Header Files: 16625 16626 - libc/stdio: Build the lib_noflush() and lib_snoflush() stubs even 16627 if CONFIG_FILE_DESCRIPTORS=0. They may still be needed. 16628 - libc and libnx: When the libraries are built into two libraries, a 16629 user space library and a OS space library (as in the PROTECTED and 16630 KERNEL build). Then the user space library must not use the OS 16631 internal interfaces; similarly, the OS must avoid using the 16632 userspace interfaces so that it does not muck the errno value or 16633 create spurious cancellation points. 16634 - libc/match: Use of exp() vs expf() in logf() caused function to be 16635 slow. From Alan Carvalho de Assis. 16636 - libnx: Fixes a memory leak that is caused because the client message 16637 queue is not unlinked after the client disconnects from the NX 16638 server. From Masayuki Ishikawa. 16639 - sscanf(): Fix sscanf() character conversion (%c): do not add '\0' at 16640 the end as for strings, cause, for example, parsing one character 16641 will fill two bytes: character itself and zero one '\0' after it, so 16642 will overflow one byte variable argument and corrupt memory for 16643 variables allocated after it. From Oleg Evseev. 16644 16645 * Tools 16646 16647 - tools/: configure.sh and configure.c should redirect stdout to 16648 /dev/null but should not suppress stderr output. 16649 16650 * NSH: apps/nshlib: 16651 16652 - apps/nshlib/: Avoid truncating the strcmp result in the parser 16653 into a unsigned char variable. nshlib/nsh_netcmds.c: Check for 16654 valid hostip before using it. From Bruno Herrera. 16655 - apps/nshlib/: Fix resource leak in 'dd' commenad when 'if=' or 16656 'of=' params are repeated in the command line. For example: 16657 dd if=/dev/null if=/dev/zero of=/dev/null or 16658 dd if=/dev/zero of=/dev/zero of=/dev/null. From Bruno Herrera. 16659 - apps/nshlib: This commit eliminates the ping and ping6 commands 16660 from NSH and replaces them with 'built-in' commands at 16661 apps/system/ping and ping6. The original NSH version of ping[6] 16662 commands violated the portable POSIX interface and, hence, had to 16663 be removed. The new system/ping and ping6 built-in commands uses 16664 the new IPPROTO_ICMP AF_INET and IPPROTO_ICMP6 AF_INET6 datagram 16665 sockets to implement ping. 16666 - apps/nshlib: Fix parsing of empty strings when CONFIG_NSH_CMDPARMS 16667 is not defined. Problem noted by Juha Niskanen. 16668 16669 * Examples/Tests: apps/examples: 16670 16671 - All configurations that use NXIMAGE or NXHELLO must select 16672 NX_MULTIUSER. All configurations that use examples/nxterm must 16673 enable CONFIG_BOARDCTL. 16674 - All configurations that use NXLINES must select NX_MULTIUSER. All 16675 configurations that use the NX server need to have larger POSIX 16676 messages. 16677 - apps/examples/adc: Fix g_adcstate.count initialization. From 16678 Masayuki Ishikawa. 16679 - apps/examples/elf: Remove low-level interfaces and replace with 16680 call to exec(). 16681 - apps/examples/nxflat: Remove low-level interfaces and replace with 16682 call to exec(). 16683 - examples/ostest: Works around a bug in printf() when cancellation 16684 points are enabled. printf() is a cancellation point because it 16685 calls write(). This is correct according to OpenGroup.org. 16686 However, printf holds the stdio library semaphore when it is 16687 canceled and this leaves the semaphore in a bad state. No fix for 16688 the printf bug yet. 16689 - apps/examples/nx: The NX example no longer supports single user 16690 mode. 16691 - apps/examples/nxtext: The nxtext example no longer supports single 16692 user mode. 16693 - apps/examples/nxhello now supports only multiuser mode. 16694 - apps/examples/nximage now supports only multiuser mode. 16695 - examples/nxlines: Now supports only multiuser mode. 16696 16697 * Network Utilities: apps/netutils: 16698 16699 - apps/netutils/ftpc: Fix some crazy comparisons to determine is a 16700 file is an absolute path. Noted by Anthony Merlino. 16701 16702 * System Utilities (apps/system) 16703 16704 - apps/system/i2ctool: Fixed i2ctool write operation in `no restart` 16705 mode (flag `-n`). It seems that I2C driver has changed a bit since 16706 i2ctool was written, so now i2ctool sends repeated start even if 16707 `no restart` flag (-n) was passed to it. From Dmitriy Linikov. 16708 16709NuttX-7.24 Release Notes 16710------------------------ 16711 16712The 124th release of NuttX, Version 7.24, was made on March 2, 2018, 16713and is available for download from the Bitbucket.org website. Note 16714that release consists of two tarballs: nuttx-7.24.tar.gz and 16715apps-7.24.tar.gz. These are available from: 16716 16717 https://bitbucket.org/nuttx/nuttx/downloads 16718 https://bitbucket.org/nuttx/apps/downloads 16719 16720Both may be needed (see the top-level nuttx/README.txt file for build 16721information). 16722 16723Additional new features and extended functionality: 16724 16725 * Core OS: 16726 16727 - SMP: Introduce spin_lock_irqsave() and spin_unlock_irqrestore(). 16728 These APIs are simplified version of enter_critical_section() 16729 and leave_critical_section() to protect data (e.g. registers) in 16730 SMP mode. By using these APIs inside drivers, performance will 16731 be improved. From Masayuki Ishikawa. 16732 - System Timer: Replace critical section APIs with spinlock APIs. 16733 (64bit only). If SMP=n or SMP=y && SPINLOCK_IRQ=n, this works 16734 in the same way as before. If SMP=y && SPINLOCK_IRQ=y, performance 16735 will be improved. From Masayuki Ishikawa. 16736 - POSIX Timers: Replace critical section APIs with spin lock APIs in 16737 clock_gettime.c. This change will improve performance for SMP 16738 systems but nothing changes for non-SMP systems. In SMP mode, 16739 the running TCB is not always at the g_readytorun.head. From 16740 Masayuki Ishikawa. 16741 - SMP: Introduce spin_lock_wo_note() and spin_unlock_wo_note(). These 16742 APIs are used in sched_note.c to protect instrumentation data. The 16743 difference between these APIs to existing spin_lock() and 16744 spin_unlock() is that they do not perform instrumentation to avoid 16745 recursive call when SCHED_INSTRUMENTATION_SPINLOCKS=y. From 16746 Masayuki Ishikawa. 16747 - Interrupts: Add a configuration option to show interrupt 16748 information via a procfs file. 16749 16750 * File Systems/Block and MTD Drivers 16751 16752 - VFS: Add support for truncate() and ftruncate(). 16753 - FAT, SmartFS, UserFS, UnionFS, TmpFS, NFS: Add truncate() support. 16754 - FAT. Effectively handles the situation when a new file position is 16755 within the current sector. Accelerates the work of the FS with a 16756 multitude of operations to write small pieces of data within the 16757 current sector. From Aleksandr Vyhovanec. 16758 16759 * Graphics/Display Drivers: 16760 16761 - HiletGo OLED: Add configuration support for HiletGo SSD1306 OLED. 16762 - lcd/ft80x: This commit adds an FTDI/BridgeTek FT80x GUI driver. It 16763 is untested (I don't even have hardware yet) and, hence, it is 16764 marked as EXPERIMENTAL). 16765 16766 * Networking/Network Drivers: 16767 16768 - 6LoWPAN: Adds configuration options for specifying preloaded 16769 address contexts for compression From Anthony Merlino. 16770 - TCP: Introduce tcp receive window control based on I/O buffer. 16771 NOTE: The algorithm is still experimental but useful for http 16772 streaming. From Masayuki Ishikawa. 16773 - UDP: Add an implementation of UDP write buffering. 16774 - Routing Tables: Adding ftruncate() support eliminates an issue 16775 in file-based routing table management system. 16776 - Telnet: Add support for Telnet character mode From Masayuki 16777 Ishikawa. 16778 16779 * Other Common Device Drivers: 16780 16781 - drivers/input/ft5x06.c: Add a driver for the FT5x06 capacitive, 16782 multi-touch, touchscreen controller. 16783 - drivers/input/ft5x06: Add a polled mode of operation for the FT5x06 16784 in attempt to work around the fact that the LPCXpresso-LPC54628 16785 chose a non-interrupt pin for the FT5x06 interrupt. Driver is still 16786 not yet functional. 16787 - drivers/power/bq2429x.c: Add trickle charging mode From Juha 16788 Niskanen. 16789 - drivers/sensors: Add support to MAX44009 ambient light sensor. 16790 From Juha Niskanen. 16791 - drivers/sensors: Added support for LIS3DH accelerometer sensor. 16792 From Matt Thompson. 16793 - drivers/eeprom: EEPROM driver for AT24xx compatible EEPROMs. 16794 From Sebastien Lorquet. 16795 16796 * Simulation 16797 16798 - sim: Add support for a RAM MTD driver and initialization for use 16799 with SmartFS. 16800 - sim: Add support for testing NXFFS. 16801 16802 * ARM: 16803 16804 - ARMv7-A, ARMv7-R, ARMv7-M: Add atomic read-add-write and 16805 read-subtract-write functions. 16806 16807 * Infineon XMC4xxx: 16808 16809 - XMC4xxx: Refactor PLL setup, refactored PLL/CLK config, easier, 16810 checks for correctness, call go_os_start if STACK_COLORIZED, smarter 16811 config of EXTCLK output freq. From David Alessio. 16812 16813 * Infineon XMC4xxx Boards: 16814 16815 - Add FPU to xmc4 ostest. Remove +x from makefiles, preserve 16816 .gdbinit across make clean, add FPU support to ostest on xmc4, 16817 add FPU test to ostest on xmc4 From David Alessio. 16818 16819 * Microchip/Atmel SAMD/L Drivers: 16820 16821 - SAMD: SAMD External Interrupt Controller (EIC) support From Matt 16822 Thompson. 16823 - SAMD/L: Added Analog Comparator basic initialization From Matt 16824 Thompson. 16825 - SAMD/L: Added FDPLL clock support. Fixed sequence of OSC32K 16826 calibration setup. From Matt Thompson. 16827 - SAMD/L: Added loading factory USB calibration data from NVRAM. 16828 From Matt Thompson. 16829 - SAMD/L: Added experimental DMA support to SPI driver. spi_exchange() 16830 uses a pair of DMA channels for TX and RX. From Matt Thompson. 16831 16832 * Microchip/Atmel SAM3/4 Boards: 16833 16834 - Flip&Click SAM3X: Add board support for the Mikroe Flip&Click 16835 SAM3X. 16836 - Flip&Click SAM3X: Adds basic board support for the HiletGo OLED. 16837 16838 * Microchip PIC32MZ 16839 16840 - PIC32MZEF: Add architectural support for the PIC32MZEF family. 16841 16842 * Microchip PIC32MZ Boards 16843 16844 - Flip&Click PIC32MZ: Adds board support for the Mikroe Flip&Click 16845 PIC32MZ board. 16846 - Flip&Click PIC32MZ: Add board support for HiletGo OLED. 16847 - Flip&Click PIC32MZ: Add an nxlines configuration for use in 16848 testing the custom HiletGo Click board. 16849 16850 * NXP Freescale LPC43xx Drivers: 16851 16852 - LPC43xx: Adapt LPC176x RTC driver for the LPC43xx. From Gintaras 16853 Drukteinis. 16854 - LPC43xx: Add Windowed Watchdog Timer (WWDT) driver. Tested on 16855 LPC4357 but should be compatible for all LPC43xx MCUs. 16856 From Gintaras Drukteinis. 16857 - Leverage the LPC54xx SD/MMC back to the LPC43xx (where it came from 16858 originally). 16859 16860 * NXP Freescale LPC43xx Boards: 16861 16862 - Bambino-200e: Add LPC43 SDMMC board support to Bambino-200E. From 16863 Alan Carvalho de Assis. 16864 16865 * NXP Freescale LPC54xx: 16866 16867 - LPC546xx: Added basic architectural support for the LPC546xx 16868 family. 16869 16870 * NXP Freescale LPC54xx Drivers: 16871 16872 - LPC546xx: Basic NSH configuration includes support for UARTs, 16873 SysTick timer, GPIOs, LEDs, and buttons 16874 - LPC546xx: Additional drivers include EMC, I2C, Ethernet 16875 - LPC546xx: Implement GPIO interrupt support. 16876 - LPC546xx: And unverified SPI driver is included. 16877 - LPC546xx: Ported LPC1788 LCD driver to use the LPC54xx pin. 16878 - LPC546xx: Bring in LPC43xx SD/MMC driver from 16879 https://github.com/Smoothieware/smoothie-nuttx/tree/master/nuttx/arch/arm/src/lpc43xx 16880 and adapt for use with the LPC43xx 16881 - LPC546xx: Add DMA driver ported from the LPC43xx GPDMA driver. 16882 - LPC546xx: Bring in WWDT driver from LPC43. 16883 - LPC546xx: Add an RTC driver and a RTC character driver lower half. 16884 - LPC546xx: Add support for a random number generator. 16885 - LPC546xx: Add an Ethernet driver. 16886 16887 * NXP Freescale LP54xx Boards: 16888 16889 - LCXpresso-LPC54628: Added support for the LPCXpresso-LPC54628 16890 board. The initial bring-up used a basic NSH port. 16891 - LCXpresso-LPC54628: On-board SDRAM is also supported 16892 - LCXpresso-LPC54628: Add support for I2C2 and for the I2C tool to 16893 the NSH configuration. 16894 - LCXpresso-LPC54628: Add support for the USER button. Enable the 16895 apps/examples/button test in the NSH configuration. 16896 - LCXpresso-LPC54628: Add the fb configuration for testing the LCD. 16897 - LCXpresso-LPC54628: Add support for the the FT5x06 touchscreen 16898 controller. Enable the driver as well as the apps/examples 16899 touchscreen test. 16900 - LCXpresso-LPC54628: Add an NxWM configuration. 16901 - LCXpresso-LPC54628: Add logic to bring up SDMMC. 16902 - LCXpresso-LPC54628: Add logic to register the RTC character driver 16903 if it is enabled. Enable the RTC and RTC character driver in the 16904 NSH configuration. 16905 - LCXpresso-LPC54628: Add a netnsh configuration that was be used to 16906 test the Ethernet driver. 16907 - LCXpresso-LPC54628: Add LittlevGL graphics demo configuration. 16908 16909 * On Semiconductor LC823450 16910 16911 - LC823450 SMP improvements: (1) Apply irq_spin APIs to 16912 modifyregXX, (2) Do not use modifyreg32() to enable Mutex, (3) 16913 Modify IRQ control for i2s. Apply irq_spin APIs to 16914 dma/syscontrol/usbdev. From Masayuki Ishikawa. 16915 - LC823450: LC823450 http streaming improvements: (1) Use spinlock 16916 APIs in lc823450_gpio.c. (3) Fix a potential race condition in 16917 up_enable_irq(), (3) Use spinlock APIs instead of critical section 16918 APIs, (4) Enable HRT_TIMER in lc823450_timerisr.c. (5) Use spinlock 16919 APIs instead of critical section APIs. (6) Fix race conditions in 16920 dma/usbdev. From Masayuki Ishikawa. 16921 - LC823450: Introduce DVFS. This version only supports manual mode 16922 and Vdd1 is fixed to 1.2V. From Masayuki Ishikawa. 16923 16924 * On Semiconductor LC823450 Drivers 16925 16926 - LC823450: Refactor timer driver. Add MTM timer APIs for DVFS. 16927 Introduce up_rtc_gettime() for CONFIG_RTC_HIRES. Introduce idle 16928 time calculation in DVFS. Also, DVFS autonomous mode based on CPU 16929 idle time is supported. NOTE: voltage control is still disabled. 16930 From Masayuki Ishikawa. 16931 16932 * On Semiconductor LC823450 Boards 16933 16934 - LC823450-XGEVK: I2S interrupt will be handled on CPU0 with this 16935 change. Assign CPU1 to lpwork. This change will improve load 16936 balancing for networking with RNDIS. From Masayuki Ishikawa. 16937 - LC823450-XGEVK: Enable SPINLOCK_IRQ and NXPLAYER in rndis. From 16938 Masayuki Ishikawa. 16939 - LC823450-XGEVK: LC823450 http streaming improvements: (1) In SMP 16940 mode, H/W interrupts should be handled on CPU0 to avoid deadlocks. 16941 (2) Call up_enable_irq() to assign CPU0 for IRQ handling. (3) 16942 Enable HRT_TIMER, LC823450_MTM0_TICK, SPINLOCK_IRQ, (4) Enable 16943 NET_TCP_RWND_CONTROL, NXPLAYER_HTTP_STREAMING_SUPPORT (rndis only) 16944 From Masayuki Ishikawa. 16945 - LC823450-XGEVK: Enable DVFS in lc823450_bringup.c. Enable DVFS 16946 in audio and rndis. Add Telnet character mode to rndis. From 16947 Masayuki Ishikawa. 16948 - LC823450-XGEVK: Explicitly assign I2S IRQ handling to CPU0. From 16949 Masayuki Ishikawa. 16950 - LC823450-XGEVK: Enable RTC_HIRES instead of RTC_DATETIME (audio/ 16951 rndis). Disable TCP_WRITE_BUFFERS and change SCHED_LPWORKPRIORITY 16952 (rndis). Update SMP and DVFS related part. From Masayuki Ishikawa. 16953 16954 * STMicro STM32: 16955 16956 - STM32 F7: Add support for the STM32F72x/73x family. From Bob 16957 Feretich. 16958 16959 * STMicro STM32 Drivers: 16960 16961 - STM32 HRTIM: Add interface to change outputs SET/RST configuration. 16962 From Mateusz Szafoni. 16963 - STM32 HRTIM: Add interface to get timer clock frequency, 16964 calculation, add compare/capture registers significant bits 16965 checking. From Mateusz Szafoni. 16966 - STM32 HRTIM: Add interface to set timer frequency, fix slave timers 16967 reset configuration, change POWER_INFO to TIMER_INFO From Mateusz 16968 Szafoni. 16969 - STM32 HRTIM: Add repetition support and fix enum overflow From 16970 Mateusz Szafoni. 16971 - STM32 HRTIM: Add HRTIM push-pull mode configuration. From 16972 raiden00pl. 16973 - STM32 FLASH: Add progmem support for STM32L15XX From Juha Niskanen. 16974 16975 * STMicro STM32 Boards: 16976 16977 - configs/photon: Adds BOARD_TIMn_FREQUENCY macros From Anthony 16978 Merlino. 16979 - configs/indium-f7: Adds support for the RAF Research Indium-F7 16980 board. From Bob Feretich. 16981 - Rename the configs/stm32f0discovery board directory to 16982 configs/stm32f051-discovery. There are others stm32f0discovery 16983 boards with different MCUs and different peripherals on the board. 16984 From Alan Carvalho de Assis. 16985 - configs/stm32f072b-discovery: Adds support for stm32f072b-disco 16986 board. This is the board. I added the LEDs of this board and tested 16987 the compilation. From Alan Carvalho de Assis. 16988 - configs/stm32f103-minimum: Add AT24 EEPROM support on STM32F103- 16989 Minimum board From Alan Carvalho de Assis. 16990 - configs/stm32f103-minimum: Add support to BMP180 on BluePill 16991 (stm32f103-minimum) board. From Alan Carvalho de Assis. 16992 - configs/stm32f334-disco: Add buck converter and boost converter 16993 logic. From Mateusz Szafoni. 16994 - configs/stm32f103-minimum: Add zerocross support to STM32F103- 16995 Minimum board From Alan Carvalho de Assis. 16996 - configs/stm32f103-minimum: Add OLED SSD1306 support to 16997 STM332F103-Minimum From Alan Carvalho de Assis. 16998 - configs/stm32f103-minimum: Add board support to MAX6675 Thermocouple 16999 sensor From Alan Carvalho de Assis. 17000 - configs/stm32f746g-disco: Add stm32f746g-disco Ethernet configuration. 17001 Add USART1 support (connected to the USB virtual serial port) From 17002 Louis Mayencourt. 17003 - configs/viewtool-stm32f107: Add support for FT80X initialization. 17004 Add ft80x configuration that will eventually be used for testing the 17005 ft80x if I ever receive hardware. 17006 17007 * Tools: 17008 17009 - tools/logparser: Add a tool which will help me to convert git logs 17010 to ChangeLog format. 17011 17012 * NSH: apps/nshlib: 17013 17014 - apps/nshlib: Add support for a truncate command. This will be used 17015 to test the new ftruncate file system support. 17016 - apps/nshlib: Add support for Telnet character mode. From Masayuki 17017 Ishikawa. 17018 - apps/nshlib: Add support for '-n' option to the echo command. From 17019 Masayuki Ishikawa. 17020 - apps/nshlib: Add irqinfo command. 17021 17022 * Examples/Tests: apps/examples: 17023 17024 - apps/examples/userfs: Add truncate() support for userfs. 17025 - apps/examples/lvgldemo: Add lvgldemo example for LittlevGL. 17026 - apps/examples/veml6070: Add VEML6070 Application Example. From 17027 Alan Carvalho de Assis. 17028 - apps/examples/bmp180: Add BMP180 application example. From Alan 17029 Carvalho de Assis. 17030 - apps/examples/ft80x: Add a test of the FT80x based on FTDI 17031 SampleApp. Includes tests of GPU primitives and graphics co- 17032 processor commands. 17033 17034 * Network Utilities: apps/netutils: 17035 17036 - apps/netutils/netlib: Add default route in netlib_set_dripv4addr(). 17037 From Masayuki Ishikawa. 17038 17039 * Graphics: apps/graphics: 17040 17041 - apps/graphics/littlevgl: Add littlevgl library. From Alan Carvalho 17042 de Assis. 17043 - apps/graphics/ft80x: Add the FTDU FT80x GUI support library. 17044 Consists of some display list helpers, audio helpers, touch helpers, 17045 RAM access, register access etc. 17046 17047 * System Utilities (apps/system) 17048 17049 - apps/system/nxplayer: Add support for HTTP streaming in nxplayer. 17050 From Masayuki Ishikawa. 17051 - apps/system/setlogmask: Adds 'setlogmask' application that allows 17052 you to set the syslog priority via a simple command. From Anthony 17053 Merlino. 17054 - apps/system/usbmsc: Added Kconfig options to configure write 17055 protection for each LUN. From Fabio D'Urso. 17056 - system/stackmonitor: Re-design the stack monitor so that it does not 17057 make forbidden calls directly into the OS, breaking the portable POSIX 17058 OS interface. It now properly uses the PROCFS file system to glean 17059 information about stack usage. 17060 17061Bugfixes. Only the most critical bugfixes are listed here (see the 17062ChangeLog for the complete list of bugfixes and for additional, more 17063detailed bugfix information): 17064 17065 * Core OS: 17066 17067 - System Timer: Change the way that the 64-bit time is sampled. 17068 Previously, we disabled interrupts before sampling the 64-bit 17069 timer since the uint64_t access is not atomic on most CPUs. However, 17070 disabling (local) interrupts does not work in the SMP case. In that 17071 case, the timer interrupt may be running on only one of the CPUs; 17072 disabling interrupts on a different CPU will provide no protection 17073 from timer rollover. To work around this, logic was added that 17074 samples 64-bit timer is sampled twice and if 32-bit rollover was 17075 detected between samples, then loops until there is no rollover. 17076 - POSIX Timers: In SMP mode, running TCB is not always at the head of 17077 the g_readytorun list. This change removes DEBUGASSERT() to avoid 17078 this condition. From Masayuki Ishikawa. 17079 - Spinlocks: Add memory barrier operations in spin_unlock(). In ARM 17080 document regarding memory barriers, SP_DMB() must be issued before 17081 changing a spinlock state to SP_UNLOCKED. However, we found that 17082 SP_DSB() is also needed to ensure that spin_unlock() works 17083 correctly for network streaming aging test. From Masayuki Ishikawa. 17084 - Sporadic Scheduler: Fix compiler error in Sporadic Scheduler when 17085 priority inheritance is enabled. Noted by eunb.song@samsung.com 17086 - Priority Inheritance: Fix some priority inheritance related issues 17087 noted during review of logic. Also add some REVISIT comments for some issues noted in the design. 17088 - boardctl: Remove the BOARDIOC_TSCTEST_TEARDOWN and 17089 BOARDIOC_TSCTEST_SETUP boardctl() commands. Remove all 17090 implementations of board_tsc_teardown(). Each board now initializes 17091 the touchscreen controller as a normal part of its board bring-up. 17092 board_tsc_setup() is gone; the touchscreen controller is now treated 17093 like any other on-board device. 17094 - configs: CONFIG_MAX_TASKS must be a power of 2. 17095 - SMP: Introduce a new global IRQ clearing logic and tasklist 17096 protection. The previous implementation of clearing global IRQ in 17097 sched_addreadytorun() and sched_removereadytorun() was done too 17098 early. As a result, nxsem_post() would have a chance to enter the 17099 critical section even nxsem_wait() is still not in blocked state. 17100 This patch moves clearing global IRQ controls from 17101 sched_addreadytorun() and sched_removereadytorun() to 17102 sched_resumescheduler() to ensure that nxsem_post() can enter the 17103 critical section correctly. For this change, 17104 sched_resumescheduler.c is always necessary for SMP configuration. 17105 In addition, by this change, task_exit() had to be modified so that 17106 it calls sched_resumescheduler() because it calls 17107 sched_removescheduler() inside the function, otherwise it will cause 17108 a deadlock. However, I encountered another DEBUGASSERT() in 17109 sched_cpu_select() during HTTP streaming aging test on LC823450-XGEVK. 17110 Actually sched_cpu_select() accesses the g_assignedtasks which might 17111 be changed by another CPU. Similarly, other tasklists might be 17112 modified simultaneously if both CPUs are executing scheduling logic. 17113 To avoid this, I introduced tasklist protection APIs. With these 17114 changes, SMP kernel stability has been much improved. From Masayuki 17115 Ishikawa. 17116 - SMP: Fix this_task() to be an atomic operation. In the previous 17117 implementation, this_task() was defined in sched.h by using just a 17118 macro current_task(this_cpu()). However, I found that this is not 17119 atomic and actually sometimes switching CPU happened in executing 17120 the macro when we tested audio steaming plus executing commands via 17121 Telnet. This change resolves this issue by implementing atomic 17122 this_task()in sched_thistask.c which is newly introduced. From 17123 Masayuki Ishikawa. 17124 - SMP: Implements a global scheduler lock capability as part of SMP 17125 support. This allows the scheduler to be locked with no knowledge 17126 or access to the TCB of the currently running task. This is 17127 necessary because accessing the TCB of the currently running task 17128 is, itself, a non-atomic operation. This global scheduler lock 17129 capability was add just to support that atomic access to the TCB. 17130 - SMP: Extend the last global lock change to work with the 17131 LC823450-XGEVK which does not support the atomic fetch add but 17132 does support disabling interprocessor interrupts. Disabling 17133 interprocessor interrupts will also guarantee that the TCB address 17134 calculation is atomic. 17135 - SMP: Fix a infinite recursion problems that a recent changes 17136 introduced into the i.MX6 SMP implementation. This is not seen 17137 with the LC823450 because you can disable inter-processor interrupts 17138 in that architecture; but you cannot in the ARMv7-A/GIC architecture. 17139 - SMP: Remove SMP related logic in sig_dispatch.c. This change 17140 prevents from a deadlock in up_schedulesigaction.c where inter-CPU 17141 signal handling is actually implemented. arch/arm/src/armv7-m: Fix 17142 signal handling for SMP. In previous implementation, signal handling 17143 for SMP was incorrect. Thus, for example, if an inter-CPU signal 17144 happened an incorrect tcb was signaled and caused ASSERT(). This 17145 change fixes the issues and works for both inter-CPU signal handling 17146 and signal handling on the same CPU. From Masayuki Ishikawa. 17147 - Tasking: Add nxtask_create(). Kthread_create() and nxtask_create() 17148 are internal OS functions and should not modify the errno variable. 17149 Convert legitimate uses of task_create() to nxtask_create(). 17150 Review handling of returned values from all uses of kthread_create() 17151 (as well as nxtask_create()). 17152 - Tasking: Threads started by board bring-up logic should be kernel 17153 threads, not user tasks. 17154 - Tasking: Threads started by drivers should be kernel threads, not 17155 user tasks. 17156 - Semaphore Usage: Added ECANCELED condition to DEBUGASSERT's 17157 checking sem_wait result From Dmitriy Linikov. 17158 17159 - errno: Add new internal OS function nxsched_setaffinity() that is 17160 identical to sched_isetaffinity() except that it does not modify the 17161 errno value. All usage of sched_setaffinity() within the OS is 17162 replaced with nxsched_setaffinity(). 17163 - errno: Internal functions sched_reprioritize() and 17164 sched_setpriority() no longer modify the errno value. Also renamed 17165 to nxsched_reprioritize() and sched_setpriority(). 17166 - errno: Add new internal OS function nxsched_getscheduler() that is 17167 identical to sched_getscheduler() except that it does not modify the 17168 errno value. All usage of sched_getscheduler() within the OS is 17169 replaced with nxsched_getscheduler(). 17170 - errno: Add new internal OS function nxsched_setparam() that is 17171 identical to sched_setparam() except that it does not modify the 17172 errno value. All usage of sched_setparam() within the OS is 17173 replaced with nxsched_setparam(). 17174 - errno: Add new internal OS function nxsched_getparam() that is 17175 identical to sched_getparam() except that it does not modify the 17176 errno value (actually, the previous value erroneously neglected to 17177 set the errno value to begin with, but this fixes both issues). All 17178 usage of sched_getparam() within the OS is replaced with 17179 nxsched_getparam(). 17180 - errno: wd_start() is an internal OS function and should not set the 17181 errno value. Reviewed and updated every call to wd_start() to 17182 verify if return value is used and if so if the errno value is 17183 accessed. 17184 - errno: Fix several inappropriate accesses to get_errno() that were 17185 missed in previous changes (some going back to nuttx-7.23). Add new 17186 nxsched_setscheduler() and nxsched_getaffinity() which are 17187 equivalent to their counterparts without the nx on front. These 17188 versions do not modify the errno value. Changed all calls within 17189 the OS to use these newer versions of the functions. 17190 - errno: binfmt/, configs/, graphics/, libc/, mm/, net/, sched/: OS 17191 references to the errno variable should always use the set_errno(), 17192 get_errno() macros. 17193 - drivers/, fs/ and libc/: OS references to the errno variable should 17194 always use the set_errno(), get_errno() macros. 17195 17196 * File System/Block and MTD Drivers: 17197 17198 - FAT: CONFIG_FAT_MAXFNAME may not exceed NAME_MAX (CONFIG_NAME_MAX) 17199 - NFS: Correctly infer file type. The file type is in struct 17200 nfs_statinfo_s's ns_type field, not in the ns_mode field. From 17201 Michael Jung. 17202 - NFS: Fix buffer corruption. In case multiple read requests to the 17203 NFS server are required to fill up the user provided buffer, 17204 nfs_read() might write behind the end of said buffer. This is fixed 17205 with this change. From Michael Jung. 17206 - VFS: reopen() should return NULL when oflags is less than 0, not 17207 equal to 0. Because negative value is returned on failure of 17208 lib_mode2offlags() which converts the mode string into file open 17209 mode flag. 17210 - ProcFS: Fix an error in a common function that manages read data. 17211 - drivers/mmcsd: Respect SDIO_CAPS_DMABEFOREWRITE on CMD25. From 17212 Evgeniy Bobkov. 17213 - AT24xx: Correct page size for AT24C02 part. From Alexander 17214 Oryshchenko. 17215 - mtd_config.c: Add still more error handling (to detect bad 17216 underlying flash implementations). Remove MTD_ERASE that was 17217 erasing data block instead of erase block. This is a partial 17218 revert of 4f18b4. Reported-by: Pascal Speck <iktek01@yahoo.com> 17219 17220 * Graphics/Display Drivers: 17221 17222 - drivers/lcd: Fix the default I2C address of SSD1306 OLED display 17223 (7- vs 8-bit addressing) From Alan Carvalho de Assis. 17224 - drivers/lcd: lcd_framebuffer.c does not need to include board- 17225 specific board.h. 17226 - include/lcd: Eliminate a warning from an SSD1306 header file by 17227 adding a forward reference to struct i2c_master_s. From Sebastien 17228 Lorquet. 17229 17230 * Networking/Network Drivers: 17231 17232 - ARP: Fix an error introduced when ICMP and ICMP6 socket support was 17233 added in NuttX-7.3. A gratuitous ARP (or solicitation) was being 17234 sent after receive of the ECHO replay (advertisement). 17235 - ARP: Fix IGMP multicast address computation on NuttX network stack. 17236 This change fixes the IGMP address computation to allow multicast 17237 UDP messages. The destination address was created with the incorrect 17238 bytes of the given IPv4 address. From Louis Mayencourt. 17239 - ioctl: The existence of the network driver ioctl() method should 17240 depend on CONFIG_NETDEV_IOCTL rather than CONFIG_NETDEV_PHY_IOCTL. 17241 The former enables the method, the later enables a subset of 17242 possible driver IOCTLs. 17243 - TCP: Write buffering logic should not wait for a free buffer if 17244 the socket was opened non-blocking. 17245 - TCP: Fixed bad return value handling in psock_tcp_send(). send() 17246 expects psock_tcp_send() to return a negated errno value, not -1 17247 with the errno set (GN: I added same change for tcp_send_buffered.c 17248 which has the same issue as tcp_send_unbuffered.c) From Pelle 17249 Windestam. 17250 - TCP: Fixes hardfault when network goes done and network monitoring 17251 is in place. From Gianpaolo Ferroni Ariani. 17252 - TCP: tcp_send_[un]buffered.c: Check routing table in 17253 psock_send_addrchck(). Previously only ARP table was considered 17254 when determining if the data will actually be sent. From Juho 17255 Grundstrom. 17256 - TCP: Generalize Juho Grundstrom's IPv4 change for IPv6 as well. 17257 - UDP: Remove some conditional logic that was true if there is only a 17258 single network device, but not true in the multi-device context. 17259 - UDP: In sendto(), return EHOSTUNREACH if the network is down. 17260 17261 * Common Drivers: 17262 17263 - drivers/pipes: In poll logic, fix off-by-one error in calculation 17264 of bytes in the buffer. Buffer calculation in pipe poll setup is 17265 off-by-one when read index is larger than write index. This causes 17266 poll() not getting POLLIN when buffer has one byte as calculation 17267 gives zero bytes in buffer. From Jussi Kivilinna. 17268 - drivers/audio: Improve stability of the WM8776 driver in SMP mode. 17269 Apply irq_spin APIs to improve performance. Repeat to process a 17270 message to avoid deadlock. From Masayuki Ishikawa. 17271 - drivers/ioexpander: Fixed build of PCF8574 driver when its 17272 interrupts aren't enabled by config. From Dmitriy Linikov. 17273 - drivers/syslog: Fixes LOG_UPTO macro to include specified log level. 17274 From Anthony Merlino. 17275 - drivers/sensors: Fix HTS221 sensor reset with BOOT bit From Jussi 17276 Kivilinna. 17277 - drivers/loop: If we want to open read-only in losetup.c, flags 17278 should be O_RDONLY not O_RDWR. From Fabio D'Urso. 17279 - drivers/timers/ds3231.c: Correct some debug statements. From 17280 Alexander Oryshchenko. 17281 - drivers/sensors/lis2dh: Use realtime clock if monotonic is not 17282 available From Juha Niskanen. 17283 - drivers/i2c and drivers/spi: Fix compile error if 17284 CONFIG_DISABLE_PSEUDOFS_OPERATIONS, fix bad NULL checks From Juha 17285 Niskanen. 17286 17287 * ARMv7-A: 17288 17289 - Data Cache: Fix cp15_invalidate_dcache. In cases where more than 17290 one dcache line was to be invalidated, a missing branch label 17291 would result in a false branch target into cp15_flush_idcache. Also 17292 the .size macro was fixed for both cp15_invalidate_dcache. From 17293 Michael Jung. 17294 - SMP: Port the signal-related SMP change by Masayuki Ishikawa to the 17295 ARMv7-A family. 17296 17297 * Extensa: 17298 17299 - SMP: Port the signal-related SMP change by Masayuki Ishikawa to the 17300 Xtensa family. 17301 17302 * Infineon XMC4xxx Drivers: 17303 17304 - XMC4xxx: Only setup USB clock when USB PLL is enabled From Alan 17305 Carvalho de Assis. 17306 - XMC4xxx: Fix USIC_BRG_SCLKCFG definition From Alan Carvalho 17307 de Assis. 17308 17309 * Microchip PIC32MZ 17310 17311 - MIPS32: In up_idle, the kludge that was conditionally enabled if 17312 the work queue was enable appears to be needed even when he work 17313 queue is not enabled on the PIC32MZ. 17314 - PIC32MZ: Fix some typos in debug instrumentation in pic32mz-gpio.c; 17315 fix some typos related to UART5 configuration in pic32mz-serial.c. 17316 17317 * Microchip/Atmel SAMD/L: 17318 17319 - SPI: In sam_spibus_initialize(), the pinmux configuration was 17320 smashing the previous CTRLA register configuration. There are 17321 also some typos in samd_spi.h From Matt Thompson. 17322 - SPI: Fixes g_spi2ops and g_spi2dev using incorrect values From Matt 17323 Thompson. 17324 - SPI: SPI must be disabled before changing the mode bits in CTRLA 17325 register From Matt Thompson. 17326 - DMA: Fix DMA controller support. From Matt Thompson. 17327 17328 * NXP/Freescale LPC17xx Drivers: 17329 17330 - LPC17xx: Disable LPC17 FDR when not used. If a boot loader set the 17331 fractional divider (FDR) the baud rate in nuttx will be wrong 17332 (multiplied by this fraction). So if it is not used, it should be 17333 disabled. From Harald Gutsche. 17334 17335 * NXP/Freescale Kinetis Drivers: 17336 17337 - Kinetis: Correct some Ethernet PHY register bit tests for the 17338 KSZ8081 PHY. From Stewart. 17339 17340 * On Semiconductor LC823450 17341 17342 - arch/arm/src/LC823450: Add SP_DMB() into lc823450_testset.c. 17343 In LC823450, ldrex and strex are not supported. So we implemented 17344 up_testset() with H/W Mutex. However, there was a bug in memory 17345 access order. This change ensures correct memory access order in 17346 up_testset() for LC823450. From Masatoshi Tateishi. 17347 17348 * STMicro STM32 Drivers: 17349 17350 - STM32 F3 RCC: A flash wait state configuration. Flash latency must 17351 be fixed according to sysclk frequency. If this operation is not 17352 done or done after PLL configuration, the STM32 fail to continue 17353 boot operation if the frequency if greater than 24MHz according to 17354 the board variable STM32_SYSCLK_FREQUENCY. Tested on stm32f334-disco 17355 board. From Gwenhael Goavec-Merou. 17356 - STM32 RTC: Make STM32 usable with an external RTC. 17357 - STM32 SPI: Removed unnecessary (and incorrect) speed limitation. 17358 From Alexander Oryshchenko. 17359 - STM32 SPI: I have a SPI bus with both Mode 0 and Mode 3 devices 17360 on it. After performing SPI I/O to a Mode 0 device, switching to a 17361 Mode 3 device locked up the SPI interface. Only zeroes would be 17362 read. I traced the reason for the lock-up to arm/arm/src/stm32f7/stm32_spi.c function spi_setmode(). Changing 17363 the mode causes a spurious SPI clock transmission that confuses the 17364 stm32f7 SPI input hardware. This problem is solved by (1) changing 17365 the SPI mode with SPI (and perhaps DMA) disabled, and (2) flushing 17366 the receive FIFO if the mode change results in garbage in the FIFO. 17367 From Bob Feretich. 17368 - STM32 and STM32 F7: Remove confusing, redundant, and misleading 17369 definitions of STM32_BKP_BASE from the F2, F3, and F4 memory 17370 maps. Unlike the F1, these parts do not have a separate BKP address 17371 region. The BKP registers are with the RTCC address regions. 17372 stm32_bkp.h should only be used for STM32 F1. stm32_rtcc.h should be 17373 used to access BKP registers on F2, F3, and F4. 17374 - STM32 and STM32 F7: Architecture-specific code is not permitted to 17375 modify the errno variable. 17376 - STM32 F4 I2C: Correct some recent changes to STM32F4 I2C that broke 17377 poll mode of operation. From Alexander Oryshchenko. 17378 - STM32 F4 I2C: Corrections to STM32 F4 I2C to restore functionality. 17379 From Alexander Oryshchenko. 17380 - STM32 F4 I2C: Corrections to STM32 F4 I2C to fix the NORESTART 17381 flag. From Alexander Oryshchenko. 17382 - STM32 F7: Fixes a bug in multi-block SD-card operations on the 17383 STM32F7 platform. DBLOCKSIZE must be the size of SD-card block, not 17384 the total amount of transferred bytes. From Evgeniy Bobkov. 17385 - STM32 F7: Fix undefined variable when using USART1 for other 17386 purposes than UART (e.g. SPI). From Frank Benkert. 17387 - STM32 F7: Backport RTC alarm setting changes from STM32L4. Most 17388 notably this fixes RTC getting stuck issue when both alarms were 17389 used. Root cause was writing RTC ISR register contents to RTC CR 17390 register. From Juha Niskanen. 17391 - STM32 L4 Flash: Change flash programming to use page buffer for 17392 unaligned writes. From Juha Niskanen. 17393 17394 * STMicro STM32 Boards: 17395 17396 - Nucleo-L432KC: Fix some bogus logic noted by Fanda. 17397 - configs/nucleo-* and configs/stm32l476vg-disco: Fix more 17398 stm32_userleds.c bogus logic From Juha Niskanen. 17399 - Nucleo-L432KC: Fixed nucleo-l432kc broken build when 17400 CONFIG_USERLED_LOWER defined From Fanda. 17401 - Nucleo-L432KC: Issue #85: /dev/userleds is not working for 17402 Nucleo-L432KC fixed From Fanda Vacek. 17403 - STM32F429I-Disco: Separate SPI4 from MTD init. I was trying to 17404 attach a non-MTD peripheral to an STM32F429I Discovery Board's SPI4 17405 port and was hitting compilation problems, since CONFIG_MTD and 17406 thus 'struct mtd_geometry_s' was not defined. This patch separates 17407 SPI4 initialization logic from MTD initialization logic. From 17408 Michael Jung. 17409 - STM32F103-Minimum: Remove CONFIG_NX_LCDDRIVER dependence from 17410 stm32_ssd1306.c From Alan Carvalho de Assis. 17411 17412 * C Library/Header Files: 17413 17414 - libc/stdio: In dtoa(), up_interrupt_context() is used in a debug 17415 assertion. up_interrupt_context() is not available in the user-mode 17416 phase of the PROTECTED or KERNEL build configurations. In those 17417 configurations, enabling libc floating point support and debug 17418 assertions will result in an undefined reference to 17419 up_interrupt_context(). 17420 - libc/netdb: Fixed parsing of DNS response packets having compressed 17421 names ending with pointer. There were troubles parsing response 17422 packets which have compression of QNAME/NAME field when only 17423 trailing part of the name (not the whole name) is replaced with 17424 pointer to another part of the packet. This commit fixes parsing of 17425 such packets. Also I added checks to keep parsing only in bounds of 17426 the read part of DNS response packet. From Dmitriy Linikov. 17427 17428 * Tools 17429 17430 - tools/*.c: Add #define _GNU_SOURCE to all C files that call 17431 asprintf() to eliminate a warning. 17432 - tools/cvsparser.c: Add a check to avoid access past the end 17433 of a fixed size array 17434 17435 * NSH: apps/nshlib: 17436 17437 - apps/nshlib: Fix compile error when CONFIG_NSH_DISABLESCRIPT is not 17438 defined. The field np_flags does not exist if scripting is disabled. 17439 17440 * Examples/Tests: apps/examples: 17441 17442 - apps/examples/touchscreen: Eliminate BOARDIOC_TSCTEST_SETUP. 17443 17444 * Network Utilities: apps/netutils: 17445 17446 - apps/netutils/ftpc: Fix some corner-cases that could cause FTP to 17447 access past the end of valid data. 17448 17449 * Wireless Utilities: apps/wireless: 17450 17451 - apps/wireless/ieee802154/i8shark: Fixes special XBee compensation 17452 by purposely chopping off the FCS. From Anthony Merlino. 17453 17454NuttX-7.25 Release Notes 17455------------------------ 17456 17457The 125th release of NuttX, Version 7.25, was made on June 3, 2018, 17458and is available for download from the Bitbucket.org website. Note 17459that release consists of two tarballs: nuttx-7.25.tar.gz and 17460apps-7.25.tar.gz. These are available from: 17461 17462 https://bitbucket.org/nuttx/nuttx/downloads 17463 https://bitbucket.org/nuttx/apps/downloads 17464 17465Both may be needed (see the top-level nuttx/README.txt file for build 17466information). 17467 17468Additional new features and extended functionality: 17469 17470 * File Systems/Block and MTD Drivers 17471 17472 - fs/cromfs: Added CROMFS file system. CROMFS is a compressed, in- 17473 memory, read-only file system based on LZF. 17474 - fs/vfs: Added support for checking if a descriptor is a socket in 17475 fstat(). From Pelle Windestam. 17476 17477 * Graphics/Display Drivers: 17478 17479 - drivers/lcd: Remove support for the Nokia6100 LCD. That LCD uses a 17480 9-bit SPI interface (the 9th bit being the command/data bit that is 17481 normally a discrete). That communication was never successfully 17482 integrated. I now believe that it would would require some special 17483 support from the low-level, MCU SPI driver to manage that 9th bit. 17484 The deleted code is still available in the Obsoleted repository. 17485 17486 * Networking/Network Drivers: 17487 17488 - net/tcp: Added support for TCP Keepalive, add SO_KEEPALIVE socket 17489 option. Added socket options needed to manage TCP-keepalive and TCP 17490 state machine logic to detect if that the remote peer is alive. 17491 - net/tcp: In tcp_input(), add the logic to detect, decode, and 17492 respond to TCP Keep-Alive packets. 17493 - net/tcp: Extended support for sending to non-blocking tcp sockets. 17494 From Pelle Windestam. 17495 - net/bluetooth: Added support for AF_BLUETOOTH sockets. 17496 - drivers/net: Added TAP (network bridge) mode to tun.c. In the 17497 previous implementation, TAP mode did not handle a packet correctly. 17498 Also, the driver did not set the link layer type and could not 17499 assign the interface name. This change fixes such issues and supports 17500 TAP mode correctly. From Masayuki Ishikawa. 17501 17502 * Wireless/Wireless Drivers: 17503 17504 - wireless/ieee802154: Added basic MAC support for RX-ENABLE.request 17505 primitive From Anthony Merlino. 17506 - wireless/ieee802154: Added MAC ackreq flag to TX descriptor for use by 17507 radio driver. The radio layer is responsible for a full "transaction". 17508 Because of differences in radio capabilities, the radio must be 17509 responsible for the handling of acks and retransmissions. This commit 17510 simply passes the ackreq meta-data flag along to the radio. Also 17511 Fixes bug where primitive was freed when it shouldn't have been, 17512 causing double free call. From Anthony Merlino. 17513 - wireless/bluetooth: Bring in the Bluetooth stack from the Intel/ 17514 Zephyr arduino101_firmware_source-v1.tar package. 17515 - drivers/bluetooth: Added re-architected version of the Bluetooth 17516 UART driver from the Intel/Zephyr arduino101_firmware_source-v1.tar 17517 package. 17518 - include/nuttx/wireless: Added a setbaud() method to the HCI UART 17519 lower half interface that can be used to change the default BAUD 17520 selection. 17521 - wireless/bluetooth and include/nutt/net: Added support for Bluetooth 17522 IOCTL commands. 17523 - drivers/wireless/bluetooth: Added a NULL device to support some very 17524 low level testing on the Simulator. 17525 - drivers/wireless/cc3000: Eliminate support for the CC3000 wireless 17526 part because it doesn't use the USRSOCKET. From Alan Carvalho de 17527 Assis. 17528 - drivers/wireless/ieee80211: Added BCM43428 support. From hhuysqt. 17529 17530 * Other Common Device Drivers: 17531 17532 - drivers/1wire: Added 1-wire subsystem and ds28e17 driver From Juha 17533 Niskanen. 17534 - drivers/1wire: Added PM hooks and unlink support to sht21 sensor 17535 (allowing hot-swappable I2C bus from 1-wire converter). Unlike most 17536 other unlink implementations in NuttX drivers, this one does not 17537 allow any I2C operations after unlink, making it possible to 17538 deallocate the I2C bus. From Juha Niskanen. 17539 - drivers/i2c: Added support for the pca9540bdp i2cmultiplexer. From 17540 Giorgio Groß. 17541 - drivers/power: Added pm_unregister From Juha Niskanen. 17542 - drivers/power: Added generic upper-half motor driver From Mateusz 17543 Szafoni. 17544 - drivers/rgbled: Added support for multichannel PWM (multiple PWM 17545 channels on a single timer) From Anthony Merlino. 17546 - drivers/sensors: Added support for Sensirion SHT2x humidity sensor. 17547 From Juha Niskanen. 17548 - drivers/sensors: Added LSM330 SPI and ADXL372 drivers along with the 17549 - drivers/sensors: Added support for INA3221 power sensor. This has a 17550 3 channel bus/shunt voltage pairs. From Anthony Merlino. 17551 cluster driver infrastructure. From Bob Feratich. 17552 - drivers/sensors: Added multiple MAX31855 sensors feature support. 17553 From Tiago Almeida. 17554 - drivers/wireless/cc1101.c: Driver improvements from from lihaichen. 17555 - progmem interface: Discern r/w and erase page sizes. Introduce new 17556 up_progmem_erasesize architecture API to be able to communicate the 17557 read/write page size independently from erase page size. Implement 17558 up_progmem_erasesize for all architectures that already support 17559 progmem, assuming that for those architectures the sizes of both 17560 read/write and erase pages are identical. From Michael Jung. 17561 17562 * Simulation 17563 17564 - configs/sim: Added a configuration that will support some limited 17565 testing of the Bluetooth stack. 17566 17567 * ARM: 17568 17569 - ARM: All ARM architectures now support CONFIG_ARCH_IDLE_CUSTOM. 17570 17571 * MIPS: 17572 17573 - MIPS: All MIPS architectures now support CONFIG_ARCH_IDLE_CUSTOM. 17574 17575 * Infineon XMC4xxx Drivers: 17576 17577 - XMC4: Added SPI support for Infineon XMC45xx microcontroller. From 17578 Alan Carvalho de Assis. 17579 17580 * Infineon XMC4xxx Boards: 17581 17582 - XMC4500-Relax: Added board support for SPI. From Alan Carvalho de 17583 Assis. 17584 17585 * Nordic NRF52: 17586 17587 - NRF52: Initial support for the NRF52 including UART, Timer, and 17588 GPIO support. From Janne Rosberg. 17589 17590 * Nordic NRF52 Drivers: 17591 17592 - NRF52: Added watchdog timer drivers. Includes significant 17593 updates from Levin Li. 17594 - NRF52: Added nRF52 Flash PROGMEM support From Alan Carvalho de 17595 Assis. 17596 17597 * Nordic NRF52 Boards: 17598 17599 - configs/nrf52-pca10040: Added support for the NRF52-PCA10040 board 17600 including LEDs and buttons From Janne Rosberg. 17601 - configs/nrf52-pca10040: Added support for starting the watchdog 17602 timer on the nRF52. From Alan Carvalho de Assis. 17603 - configs/nrf52-pca10040: Added a configuration for testing the 17604 watchdog timer. From Alan Carvalho de Assis. 17605 17606 * NXP Freescale i.MX RT: 17607 17608 - i.MX RT: Brings in basic support for the i.MX RT 1050 'crossover' 17609 SoC. Includes timer and UART support. This port was the joint 17610 effort of Janne Rosberg, Ivan Ucherdzhiev, and myself. I give 17611 credit to Ivan for the kill because he is the one to held on to 17612 the end. From Ivan Ucherdzhiev. 17613 17614 * NXP Freescale i.MX RT Drivers: 17615 17616 - i.MX RT: Added power management hooks. 17617 - i.MX RT: Added eDMA support (unverified). 17618 - i.MX RT: Added Ethernet driver. From Jake Choy. 17619 - i.MX RT: Added cache operations to permit the Ethernet driver to 17620 work with the D-Cache enabled, at least in write-through mode. 17621 Added support for PHY interrupts and PHY IOCTLs. 17622 17623 * NX FreescaleP i.MX RT Boards: 17624 17625 - IMXRT1050-EVK: Added support for booting from the on board HYPER 17626 Flash. From Ivan Ucherdzhiev. 17627 - IMXRT1050-EVK: Added logic to support the board's user LED. From 17628 Jake Choy. 17629 - IMXRT1050-EVK: Added procfs auto-mount support in imxrt_bringup.c. 17630 From Ivan Ucherdzhiev. 17631 - IMXRT1050-EVK: Added LIBCXX test configuration. 17632 - IMXRT1050-EVK: Added support for the imxrt1050-evk button. From 17633 Jake Choy. 17634 - MXRT1050-EVK: Added support for on-board NOR FLASH boot. From 17635 Ivan Ucherdzhiev. 17636 - IMXRT1050-EVK: Disable LED support because pins conflict with PHY. 17637 Enable device statistics. Enable NSH ifup and ifdown commands. 17638 Added an NSH configuration for testing Ethernet. 17639 17640 * NXP Freescale Kinetis: 17641 17642 - K28F: Added architecture support for the Kinetis K28F. 17643 17644 * NXP Freescale Kinetis Drivers: 17645 17646 - SDHC: Make Kinetis SDHC pullups work the same as the STM32 SDIO 17647 pullups. 17648 17649 * NXP Freescale Kinetis Boards: 17650 17651 - Freedom-K28F. Added support for the Kinetis Freedom-K28F board. 17652 17653 * NXP LPC17xx: 17654 17655 - LPC17xx: Added support for ARMv7-M run time stack checking on NXP 17656 LPC17xx MCUs based on CONFIG_ARMV7M_STACKCHECK. Basically copied 17657 from STM32. From Michael Jung. 17658 17659 * NXP LPC17xx Drivers: 17660 17661 - LPC17xx: Added a configurable option to allow using a part of 17662 LPC17xx's internal flash memory as a Memory Technology Device via 17663 NuttX' mtd_progmem infrastructure. Tested with LPC1769. From 17664 Michael Jung. 17665 17666 * NXP LPC17xx Boards: 17667 17668 - Olimex-LPC1766STK: Remove support for the Nokia6100 LCD. That 17669 LCD uses a 9-bit SPI interface (the 9th bit being the command/data 17670 bit that is normally a discrete). That communication was never 17671 successfully integrated. 17672 17673 * NXP LPC43xx Boards: 17674 17675 - configs/bambino-200e: Added support for multiple MAX31855 sensors 17676 to the bambino-200e. From Tiago Almeida. 17677 17678 * OpenRISC 17679 17680 - arch/or1k/src. Added basic architectural support for the OpenRISK 17681 mor1kx architecture. The initial commit was verified on a Qemu 17682 simulation but is otherwise untested. From Matt Thompson. 17683 17684 * OpenRISC Board 17685 17686 - configs/or1k. OpenRISK mor1kx Qemu simulation. From Matt Thompson. 17687 17688 * STMicro STM32: 17689 17690 - STM32: Added support for the STM32F401xB and STM32F401xC families. 17691 17692 * STMicro STM32 Drivers: 17693 17694 - STM32 HRTIM: Added HRTIM software capture trigger, added software 17695 reset trigger, added outputs polarization configuration From 17696 raiden00pl. 17697 - STM32 ADC: Added ADC injected channels configuration. From Mateusz 17698 Szafoni. 17699 - STM32 HCIUART: Added a Bluetooth HCI UART lower half driver for the 17700 STM32. 17701 - STM32 HCIUART: Implement the setbaud() method for the STM32 HCI 17702 UART interface. 17703 - STM32 SDIO: Added support for SDIO card to SDIO driver. From 17704 hhuysqt. 17705 - STM32 SDIO: Added internal pull-up option for SDIO pins. From Alan 17706 Carvalho de Assis. 17707 - STM32 F2/F4 ADC: Added Vbat measurement to ADC driver for 17708 STM32F20xx and STM32F4xxx. As with the MCU temperature and VREFINT 17709 measurement, this change requires user to enable the corresponding 17710 channel first. For Vbat channel the ioctl cmd is 17711 IO_ENABLE_DISABLE_VBAT_CH, and its arg should be a pointer to bool 17712 which must be true to enable and false to disable the Vbat channel. 17713 Moreover, since Vbat input contains a built-in voltage divider, it 17714 is highly suggested to disable Vbat input channel after measurement 17715 is done in order to prevent battery drain through the divider. From 17716 Dmitriy Linikov. 17717 - STM32, STM32L4 1WIRE: Added one bit read and write to 1-wire 17718 interface. This is needed for devices that require single bit 17719 timeslot generation and for 1-Wire search algorithm triplets. From 17720 Juha Niskanen. 17721 - STM32 F3 SPI: Enable DMA for SPI on stm32f30xxx MCUs. From Michal 17722 Lyszczek. 17723 - STM32 L4 1WIRE: Ported 1wire driver from STM32. From Juha 17724 Niskanen. 17725 - STM32 L4 I2C/SPI/1WIRE: Added PM hooks to I2C, SPI and 1-wire From 17726 Juha Niskanen. 17727 - STM32 F7 RTC: Added CONFIG_RTC_PERIODIC support. Also makes the RTC 17728 lowerhalf more like in STM32L4. From Juha Niskanen. 17729 - STM32 F7 ADC/I2C/SPI: Added PM hooks to ADC, I2C and SPI. From 17730 Juha Niskanen. 17731 17732 * STMicro STM32 Boards: 17733 17734 - Indium-F7: Removed support for the Indium-F7 board. This was done 17735 for two reasons: (1) The board support was just clone of the 17736 Nucleo-144 board support with naming changes. There has been no 17737 support and no further development for the board support. (2) There 17738 does not seem to be any available Indium-F7 board available to the 17739 public anywhere on the Internet. There is not even a reference to 17740 the board on the rafresearch.com web stie. 17741 - Nucleo-L452RE: Added buttons example From Juha Niskanen. 17742 - Nucleo-L476RG: Added support to Nokia LCD PCD8544 on nucleo-l476rg. 17743 From Alan Carvalho de Assis. 17744 - Nucleo-L476RG: Added nxdemo configuration to nucleo-l476rg using 17745 PCD8544. From Alan Carvalho de Assis. 17746 - Olimex-STM32-P407: Added a zmodem test configuration. 17747 - Olimex-STM32-P407: Added the module configuration. 17748 - Photon: Added RGB led support From Anthony Merlino. 17749 - STM32F103-Minimum: Added support for DFU bootloader From Simon 17750 Piriou. 17751 - Spark: Removes Spark board configuration. Still available in the 17752 Obsoleted repository. If there is no CC3000 support, then there is 17753 no purpose in supporting the Spark either. 17754 - STM32F334-Disco: Added buck/boost converter example configuration. 17755 From Mateusz Szafoni. 17756 - STM32F4 Discovery: Added support for multiple MAX31855 sensors to the 17757 STM32F4 Discovery From Tiago Almeida. 17758 - STM32F4 Discovery: Added support in bring-up logic to initialize the 17759 HCI UART and register the HCI UART network device. 17760 - STM32F4 Discovery: Added MAX7219 support to STM32F4Discovery board. 17761 From Alan Carvalho de Assis. 17762 - STM32F4 Discovery: Added board configuration for CS43L22 audio 17763 example. From Alan Carvalho de Assis. 17764 - STM32F4 Discovery: Added a module configuration for testing the 17765 kernel module example with the STM32F4Discovery board. From Alan 17766 Carvalho de Assis. 17767 - STM32F429I-DISCO: Added a LittlevGL configuration for stm32f429i- 17768 disco. From seyyah. 17769 - STM32F746G-DISCO. Added clang support to stm32f746g-disco board. 17770 From Goran Mekic. 17771 - STM32L1 Discovery: Added support for the STM32L152RCT6 version of 17772 the board. 17773 17774 * TI TMS570: 17775 17776 - TMS570: Added support for the TMS570LS3137ZWT. From Ivan Ucherdzhiev. 17777 17778 * TI TMS570 Boards: 17779 17780 - configs/tms570ls31x-usb-kit: Added support for the TI Hercules 17781 TMS570LS31x USB Kit From Ivan Ucherdzhiev. 17782 17783 * TI Tiva: 17784 17785 - CC3200: Remove all support for the CC3200. This was a port that was 17786 started but never completed. What good is partial CC3200 support 17787 with no wireless support?. 17788 17789 * TI Tiva Drivers: 17790 17791 - EEPROM: Implements an EEPROM driver in compliance with MTD driver 17792 as provided by NUTTX for TM4C1294. The EEPROM driver currently 17793 supports only two functionalities - read bytes(multiple of 4) and 17794 write bytes (multiple of 4). From Shirshak Sengupta. 17795 - FLASH: Implemented Flash CONFIG_MTD_BYTE_WRITE for TM4c1294. 17796 Implemented the tiva_write function which will write an arbitrary 17797 number of bytes to flash (in multiple of 4). From Shirshak Sengupta. 17798 - Serial: Added TERMIOS IOCTL support to the Tiva serial driver. 17799 From Dmitry Sharihin. 17800 17801 * TI Tiva Boards: 17802 17803 - CC3200-Launchpad: Remove all support for the CC3200-Launchpad. 17804 This was a port that was started but never completed. What good is 17805 partial CC3200-Launchpad board support with no wireless support?. 17806 17807 * Libraries/Header Files: 17808 17809 - libs/: Moved all of the libraries under a common directory called 17810 libs/ (libc, libnx, and libxx). This almost certainly break libcxx 17811 for now. 17812 - libs/libc/time: Added an implementation of clock(). 17813 - libs/libc/lzf: Added a modified version of Marc Alexander Lehmann's 17814 LIBLZF3.6 library From Boris Astardzhiev. 17815 - libs/libc/unistd: Initial, minimal implementation of sysconf(). 17816 Only sufficient to support the functionality of less standard 17817 getdtabilesize(). From Michael Jung. 17818 - libs/libdsp: Added DSP support library. From Mateusz Szafoni. 17819 - include/sys: Added resource.h. 17820 - include/nuttx/video: Add overlay support to framebuffer interface 17821 definition. From Marco Krahl. 17822 17823 * Tools: 17824 17825 - tools/gencromfs.c: Added tools/gencromfs.c, a tool that can be used 17826 to generate CROMFS file system images. 17827 - tools/mkromfsimg.sh: Include an option in mkromfsimg.sh to ignore 17828 FAT/RAMDISK. This permits you to build tiny systems with ROMFS but 17829 with the rather large FAT FS support. From Alan Carvalho de Assis. 17830 - tools/nxstyle.c: Added check for blank lines before and after single 17831 line comments. From Bob Feretich. 17832 - tools/sethost.sh: Added support for macOS. 17833 - tools/uncrustify.cfg: An initial cut at an uncrustify C formatting 17834 script from Gregory Nutt. Updated, corrected, and verified. From 17835 Bob Feretich. 17836 17837 * Build System: 17838 17839 - Makefile: Added support for nconfig frontend for 'make nconfig'. 17840 From Michal Lyszczek. 17841 - configs/: Added definition of strip to many Make.defs files. 17842 - staging/: Remove fixed lib/ subdirectory and its content. Replace 17843 with new directory called staging/ that is created dynamically when 17844 building and removed when 'make clean' is done. This both improves 17845 the naming and eliminates a garbage directory from the repository. 17846 - tools/: Move all build-related files (except the top-level Makefile) 17847 into the tools/ sub-directory. This really cleans up the top-level 17848 directory. 17849 17850 * NSH: apps/nshlib: 17851 17852 - apps/nshlib: Added the mkfatfs -r option which can be used to 17853 specify the number of entries in the FAT12/FAT16 root directory. 17854 From Boris Astardzhiev. 17855 17856 * Examples/Tests: apps/examples: 17857 17858 - apps/examples/adxl372_test and lxm330spi_test: Added ADXL372 and 17859 LSM330 tests. From Bob Feretich. 17860 - apps/examples/cc3000: Removed the CC3000 example. From Alan 17861 Carvalho de Assis. 17862 - apps/examples/cromfs: Added an example of how to build a CROMFS 17863 file system image. 17864 - apps/examples/elf: Extend the ELF program module demo so that you 17865 can use compressed ELF programs with CROMFS. 17866 - apps/examples/elf: Use strip command to make ELF binaries MUCH 17867 smaller. Added an option to strip debug symbols even if the debug 17868 symbols are enabled in the base code. 17869 - apps/examples/max31855: Added an example to read multiple max31855 17870 sensors. From Tiago Almeida. 17871 - apps/examples/netloop: Update network loopback example so that it 17872 can be used to test TCP KeepAlive. 17873 - apps/examples/nxdemo: Added nxdemo application From Alan Carvalho 17874 de Assis. 17875 - apps/examples/powerled: Added arch initialization. 17876 - apps/examples/uavcan: Removed because apps/canutils/libuavcan is no 17877 longer available. 17878 17879 * System Utilities: apps/system 17880 17881 - apps/system/lzf: Added the test case from Marc Alexander Lehmann's 17882 LIBLZF3.6 librrary From Boris Astardzhiev. 17883 - apps/system/embedlog: Support for embedlog data loggin package from 17884 https://embedlog.kurwinet.pl/ From Michal Lyszczek. 17885 - apps/system/zmodem: Added an option to enable hardware flow control 17886 via termios. Allow stack size and priority to be configured. 17887 - apps/system/zmodem: Call tcflush() before closing the serial port. 17888 This is necessary because that close operation may hang if hardware 17889 flow control is enabled. Consider this scenario: After the host 17890 sz runs on the host, it exits and leaves CTS high. The target rz 17891 completes, and tries to close the serial port. But if there is 17892 buffered Tx data, then the close will hang when it tries to drain 17893 the buffered Tx data since there is no where it can go. tcflush() 17894 discards the buffered data and permits the close to continue. 17895 There is additional logic in nuttx/drivers/serial needed to work 17896 with this. 17897 17898 * CAN Utilities: apps/canutils: 17899 17900 - apps/canutils/libuavcan. Removed! libuavcan has not built for a 17901 year or so. The basic problem is that as NuttX advances, the old 17902 frozen version of libuavcan has become absolute because it violates 17903 the portable POSIX OS interface. No one is maintaining the port so 17904 there is no alternative but to remove it. 17905 17906 * Network Utilities: apps/netutils: 17907 17908 - apps/netutils/tftpc: Modified the TFTP client functions to use a 17909 data read/write callback instead of a file. This allows TFTP to 17910 write to arbitrary destination (in my case, a MTD device - for 17911 firmware update). Two new functions are introduced for this, named 17912 tftpget_cb and tftpput_cb. They are just made of most of the 17913 existing code. The previously existing tftpget/tftpput functions 17914 are now wrappers on the new ones, with callbacks that read/write 17915 from files, so my modifications are backwards compatible with 17916 existing applications, eg the associated nsh commands don't need to 17917 be changed. From Sebastien Lorquet. 17918 17919 * Wireless Utilities: apps/wireless: 17920 17921 - apps/wireless/bluetooth/btsak: Added a Bluetooth debug tool. 17922 17923Bugfixes. Only the most critical bugfixes are listed here (see the 17924ChangeLog for the complete list of bugfixes and for additional, more 17925detailed bugfix information): 17926 17927 * Core OS: 17928 17929 - sched/sched: Fix a deadlock in SMP mode. Two months ago, I 17930 introduced sched_tasklist_lock() and sched_tasklist_unlock() to 17931 protect tasklists in SMP mode. This change works well for HTTP 17932 audio streaming aging test with lc823450-xgevk. However, I found a 17933 deadlock in the scheduler when I tried similar aging tests with DVFS 17934 autonomous mode where CPU clock speed changed based on cpu load. In 17935 this case, call sequences were as follows. To avoid this deadlock, 17936 I added sched_tasklist_unlock() when calling up_cpu_pause() and 17937 sched_addreadytorun(). Also, added sched_tasklist_lock() after the 17938 call. Also added critical sections to lib_filesem.c, mm_sem.c, and 17939 net_lock.c for SMP for SMP. From Masayuki Ishikawa. 17940 - sched/sched: Change ordering of round-robin time slice check 17941 (sched_process_scheduler()) and processing of wdog timers 17942 (wd_timer()). wd_timer()'s callback function can change current 17943 running task and, hence, must be done after the time slice check. 17944 The time slice check will decrement the currently running task's 17945 time slice allotment. If such a context switch occurs, then the 17946 newly started task will lost one could of that allotment before it 17947 even has a chance to run. From EunBong Song. 17948 17949 * File System/Block and MTD Drivers: 17950 17951 - fs/fat: In fs_stat(), when stat'ing the root directory, avoid 17952 calculating the address of the root directory entry. The 17953 calculation is bogus (but not harmful) because the root directory 17954 does not have a directory entry. Noted by Boris Astardzhiev. 17955 - fs/fat: Avoid calculating the bogus directory entry address for 17956 the FAT root directory (since it has no directory entry). This 17957 change should have no effect, other than making the logic clearer. 17958 From Boris Astardzhiev. 17959 - fs/mount: Fix wrong size reported by df -h. Reason is that size 17960 in bytes is calculated always on uint32_t types and cards bigger 17961 than 4GB will overflow uint32_t type. Solution is to use uint64_t 17962 where possible. From Michal Lyszczek. 17963 - fs/smartfs: Fix a hardfault in SmartFS. Problem occurred when 17964 opening a file with O_CREAT (only) when the file arelready exists 17965 but has a size of zero. From Michal Lyszczek. 17966 - fs/vfs: Fix negative errno set in fs_open.c From Michal Lyszczek. 17967 - drivers/mtd: Fixed a W25 driver w25_cacheflush sector bug. From 17968 lihaichen. 17969 - drivers/mtd: mtdconfig_register() returned OK instead of -ENOMEM on 17970 failed allocation. From Michal Lyszczek. 17971 17972 * Graphics/Display Drivers: 17973 17974 - drivers/lcd/ft80x: ACTIVE host command appears to be formatted 17975 differently than other host commands; Fix ROM CHIPID. Appears to 17976 be big-ending, BCD. Fix some compile issues when debug features 17977 are enabled. 17978 - drivers/lcd/ft80x: Fix a typo that caused the driver to fail to 17979 recognize the ft801 chip version. From Gregory Nutt. 17980 - Review all board implementations of board_lcd_initialize(). The 17981 NuttX convention is that all internal functions that return errors 17982 as an 'int' must return a negated errno value on failure and a non- 17983 negative value on success. Most were right but eight of them had 17984 cloned logic that returns 1 on success and zero on failure. both 17985 of which are interpreted as success by the caller since they are 17986 non-negative. 17987 17988 * Networking/Network Drivers: 17989 17990 - net/tcp: Fixed problem with send() return value when using 17991 nonblocking I/O over buffered tcp socket From Dmitriy Linikov. 17992 - net/sixlowpan: Fix a nasty, byte-ordering/endian-ness problem. 17993 The root cause has been found and corrected. And a half dozen 17994 or so bandaid fixes were reverted. 17995 - net/sixlowpan: Preserve big-endian (network order) when 17996 uncompressing address. From Anthony Merlino. 17997 - net/sixlowpan: TCP send should have PSH and ACK flags set when 17998 sending. This matches the standard network (Ethernet) TCP send 17999 logic. From Anthony Merlino. 18000 - net/udp: Fix several issues using connected UDP sockets: sendto() 18001 should not accept an address. Normally send() should be used with 18002 connect UDP sockets instead. recvfrom() is no longer necessary. 18003 recvfrom() and poll() should not reset to accept any addresses but 18004 should, instead, only accept inputs and events from the connected 18005 remote peer. On of these issues was noted by ??? 18006 <liguiding@pinecone.net>. Changes were made as summarized here: 18007 http://www.masterraghu.com/subjects/np/introduction/unix_network_programming_v1.3/ch08lev1sec11.html 18008 From Gregory Nutt. 18009 - net/udp: Resolve race condition in connection-less UDP sockets with 18010 read-ahead buffering. In connection-mode UDP sockets, a remote 18011 address is retained in the UDP connection structure. This 18012 determines both there send() will send the packets and which packets 18013 recv() will be accepted. This same mechanism is used for 18014 connection-less UDP sendto: A temporary remote address is written 18015 into the connection structure to support the sendto() operation. 18016 That address persists until the next recvfrom() when it is reset to 18017 accept any address. When UDP read-ahead buffering is enabled, 18018 however, that means that the old, invalid remote address can be left 18019 in the connection structure for some time. This can cause read- 18020 ahead buffer to fail, dropping UDP packets. Shortening the time 18021 between when he remote address is reset (i.e., immediately after the 18022 sendto() completes) is not a solution, that does not eliminate the 18023 race condition; in only makes it smaller. With this change, a flag 18024 was added to the connection structure to indicate if the UDP socket 18025 is in connection mode or if it is connection-less. This change 18026 effects only UDP receive operations: The remote address in the UDP 18027 connection is always ignored if the UDP socket is not in connection- 18028 mode. No for connection-mode sockets, that remote address behaves as 18029 before. But for connection-less sockets, it is only used by sendto(). 18030 18031 * Wireless/Wireless Drivers: 18032 18033 - drivers/wiresless/ieee80211: Correct some initialization problems 18034 with BCM43362 chip. From hhuysqt. 18035 - drivers/ieee802154/xbee: Added a timeout to send logic to handle 18036 case where XBee module fails to respond to a Transmit request with 18037 a Transmit Status From Anthony Merlino. 18038 18039 * Common Drivers: 18040 18041 - Per OpenGroup.org, syslog -- and, hence, nonstandard vsyslog, and 18042 debug wrappers -- does not return a value. Rename _vsyslog to 18043 nx_vsyslog. Use internal nx_vsyslog in the few cases where a 18044 return value is required. 18045 - drivers/leds: Fixes RGB LED issues caused by uninitialized memory 18046 with CONFIG_RGBLED_MULTICHAN. The uninitialized pwm_info_s struct 18047 caused a rogue channel to be started causing errors in the pwm 18048 driver From Anthony Merlino. 18049 - drivers/sensors/lis2dh: Clear INT1 at SNIOC_WRITE_INT1THRESHOLD 18050 ioctl. From Jussi Kivilinna. 18051 - drivers/sensors/sht21: Changed I2C_TRANSFER return value so that 18052 it return on zero on success, not the count of bytes transferred. 18053 From Juha Niskanen. 18054 - drivers/serial: Per Matias Edlund: I recently used the tcflush 18055 function and found that it failed with ENOTTY. The reason is that 18056 the TCFLSH case in the function uart_ioctl in the file 18057 drivers/serial/serial.c does not update the ret value." On 18058 success, the TCFLSH IOCTL logic needs to explicitly set the return 18059 value (ret) to zero. 18060 - drivers/serial: Added a timeout to uart_tcdrain(). Even if 18061 tcflush() is used to discard buffered data, the close() can still 18062 hang if (a) hardware flow control is enabled, (b) CTS == 1, and 18063 (c) there is data stuck in the hardware Tx FIFO. tcflush() does 18064 not currently clear the MCU serial drivers' hardware Tx FIFOs. 18065 This is a workaround for that. 18066 - drivers/sensors: Fix APDS9960 work queue BUG found by Kyle Lei. 18067 From Alan Carvalho de Assis. 18068 18069 * Simulator: 18070 18071 - arch/sim: Various fixes necessary to build the simulator under 18072 MSYS2. 18073 18074 * ARMv7-R: 18075 18076 - ARMv7-R: Corrected several ARMv7-R issues. From Ivan Ucherdzhiev. 18077 18078 * Infineon XMC4xxx Boards: 18079 18080 - XMC4500-Relax: Call xmc4_spidev_initialize() in xmc4_boot.c. From 18081 Alan Carvalho de Assis. 18082 18083 * NXP/Freescale LPC17xx Drivers: 18084 18085 - LPC17xx USB: Fix USB device endpoint allocation bookkeeping. From 18086 Michael Jung. 18087 - LPC17xx USB: Freeing endpoints should be set the same allocations 18088 as when endpoint was allocated. 18089 - LPC17xx USB: Fix loss of RX initiatives. USB bulk endpoints are 18090 double buffered on LPC17xx MCUs. This means that up to two packets 18091 might be received on an OUT endpoint that can not be handled 18092 immediately if the receive request queue is empty. Thus, 18093 rxpending must be a counter not a boolean flag. From Michael Jung. 18094 18095 * NXP/Freescale Kinetis Drivers: 18096 18097 - Kinetis USG: USB device fixes: Use correct CONFIG OTG control, 18098 Fix interrupt storm when cable is disconnected. The DM, DP state 18099 were incorrect because the pulldowns were not enabled. Also the 18100 pending asynchronous resume interrupt needed to be re-armed after 18101 the suspend is in effect. This is now done in the isr. From David 18102 Sidrane. 18103 - Kinetis Serial: In kinetis_lowputc.c, fix esBRFA calculation 18104 effecting baudrate. Previous BRFA was not cleared and or-ed into 18105 new BRFA, hence, buadrate was wrong. Where Baud Rate Fractional 18106 Divisor (BRFD) UART baud rate = clock / (16 * (SBR + BRFD)). From 18107 David Sidrane. 18108 - Kinetis Serial: In kinetis_lowputc.c, fixed parity settings. 18109 Kinetis UART must be placed in 9 bit mode (M=1) with when 8 bit data 18110 with parity is required. If left in 8 bit mode (M=0) with parity 18111 then D7 of the TX/RX register becomes parity bit. Hence what is 18112 called 9-bit or 8-bit Mode Select is a misnomer. 8 bit mode when 18113 parity is enabled is really 7 bit with parity. From David Sidrane. 18114 18115 * NXP/Freescale Kinetis Boards: 18116 18117 - configs/teensy-3.x: Remove CONFIG_USBDEV_DUALSPEED from the usbnsh 18118 configuration. Hardware supports only FS. 18119 18120 * NXP i.MX6 Drivers: 18121 18122 - i.MX6: Bring in a few i.MX6 fixes that were committed to similar 18123 files for the i.MX RT. 18124 18125 * STMicro STM32: 18126 18127 - STM32 F3: Problem: stm32f30xx hangs waiting for LSE to initialize. 18128 Reason for hang is that operation of setting LSE_ON does not take 18129 effect because there is no clock on PWR peripheral. This is 18130 initialized later in the code From Michal Lyszczek. 18131 18132 * STMicro STM32 Drivers: 18133 18134 - STM32 and STM32 L4 1WIRE: In 1wire driver, do not write useless 18135 WRITEBIT zero return value to const buffer From Juha Niskanen. 18136 - STM32 HRTIM: Fixed capture_get function,. From raiden00pl. 18137 - STM32 F3 ADC: Fixed bug in RCC reset logic that resets ADC1 18138 configuration when both ADC1 and ADC2 are in use From Mateusz 18139 Szafoni. 18140 - STM32 Ethernet: In case of PHY failure, usually because of the 18141 lack of 25/50 MHz REFCLK input, the Ethernet block would lock up 18142 in a while loop waiting for readiness, which will never happened. 18143 This prevented the board from starting at all in the case of a PHY 18144 failure. This commit adds a retry loop to avoid bricking the board 18145 if the Ethernet block is unable to start. From Sebastien Lorquet. 18146 - STM32 F7 SDMMC: Added support for the second SDMMC device. The 18147 second SDMMC device was already supported but the clock was never 18148 enabled. This fixes that. From William Douglas. 18149 - STM32 Serial: Fix UART glitch when lowputc is enabled. From 18150 Simon Piriou. 18151 - STM32 USB: Skip recipient check for descriptor related 18152 requests From Simon Piriou. 18153 18154 * TI Tiva Drivers: 18155 18156 - Tiva ADC: Fix compilation errors on Tiva ADC code when ADC is 18157 enable. From Vinicius Maciel. 18158 - Tiva Serial: Allow building of Tiva platform with no serial 18159 console. From Dmitry Sharihin. 18160 18161 * C Library/Header Files: 18162 18163 - lib/libc/netdb: Fixed boundary conditions in dns_recv_response(). 18164 Fixed typos in include/nuttx/net/dns.h. From Masayuki Ishikawa. 18165 - libs/libc/modlib: Fixed backward test for an error in 18166 modlib_verify.c. 18167 18168 * Build System: 18169 18170 - Makefiles: Eliminate the spurious errors reported by 'make 18171 savedefconfig'. 18172 - Makefile(s): There is a sort command in the 'make savedefconfig' 18173 file. I found that sort behaves differently on different platforms 18174 based on the environment variable LC_ALL. Now, Makefile.unix will 18175 force LC_ALL=C just for the sort command so that we can all generate 18176 equivalent defconfig files. 18177 - Makefile(s): The clean_context target needs to invoke a 18178 corresponding clean_context target in the apps/Makefile in order to 18179 remove linkages. From Gregory Nutt. 18180 - LibTargets.mk, tools/Config.mk: Drop executable bit on installed 18181 libraries. The rules to install libraries under lib/ were modified 18182 to use mode 0644 instead of the default 0755. From Andrey Zabolotnyi. 18183 18184 * Examples/Tests: apps/examples: 18185 18186 - apps/examples/ft80x: Fix some size calculations. Added option to 18187 disable primitive tests. just too boring to have to watch over and 18188 over again. Fix a typo in backlight fade logic; Fix error in 18189 formatted display light debug dump output. 18190 - apps/examples/ft80x: Text is handled by the coprocessor and, hence, 18191 must use RAM_CMD, not RAM_DL. 18192 - apps/examples/ft80x: Fix some errors in co-processor demos. Correct 18193 an error in the spinner demo. 18194 - apps/examples/nsh and posix_spawn: Must not call exec_setsymtab() 18195 directly. That is a non-POSIX internal OS interface. 18196 - apps/examples/ostest: Do not call AIO test without 18197 CONFIG_EXAMPLES_OSTEST_AIO From Juha Niskanen. 18198 - apps/examples/smps: Fix typos in Kconfig. All power, voltage, 18199 current values were strings with no default. I assume they should 18200 be 'int' with what default?. 18201 - apps/examples/smps: Fixes in some printf and in Kconfig From 18202 Mateusz Szafoni. 18203 - apps/system/zmodem: Fix Makefile.host. It was broken when zmodem.h 18204 was moved to apps/include/system. Fix an incompatibility with the way 18205 that CRCs are calculated. 18206 18207 * System Utilities: apps/system: 18208 18209 - apps/system: Applications should use the standard clock() interface, 18210 not the internal NuttX clock_systimer() interface. 18211 - apps/system/stackmonitor: Fix comparison between pointer and zero 18212 character constant. From Juha Niskanen. 18213 18214 * Network Utilities: apps/netutils: 18215 18216 - apps/netutils/netlib: Various fixes needed to get a clean netlib 18217 build with Bluetooth only. 18218 18219 * Wireless Utilities: apps/wireless: 18220 18221 - apps/wireless: Applications should use the standard clock() 18222 interface, not the internal NuttX clock_systimer() interface. 18223 18224NuttX-7.26 Release Notes 18225------------------------ 18226 18227The 126th release of NuttX, Version 7.26, was made on September 8, 2018, 18228and is available for download from the Bitbucket.org website. Note 18229that release consists of two tarballs: nuttx-7.26.tar.gz and 18230apps-7.26.tar.gz. These are available from: 18231 18232 https://bitbucket.org/nuttx/nuttx/downloads 18233 https://bitbucket.org/nuttx/apps/downloads 18234 18235Both may be needed (see the top-level nuttx/README.txt file for build 18236information). 18237 18238Additional new features and extended functionality: 18239 18240 * Core OS: 18241 18242 - General: Eliminate use of the non-standard type systime_t and 18243 replace it the equivalent, standard type clock_t From Gregory Nutt. 18244 - General: Replace non critical PANIC with DEBUGPANIC to save the 18245 code space From Xiang Xiao. 18246 - General: Replace all ASSERT with DEBUGASSERT to save the code 18247 space From Xiang Xiao. 18248 - Initialization: Add option to mount block device for 18249 INIT_FILEPATH case. From anchao. 18250 - clock(): clock_systimer() is no longer a system interface. It has 18251 been replaced with the equivalent, standard interface clock(). 18252 Moved the implementation of clock() from the C library into the OS 18253 core. This is necessary because it calls the (now) internal OS 18254 function clock_systimer(). clock() is now accessed only via a 18255 system call in certain configurations. From Gregory Nutt. 18256 - clock Utilities: Move clock_timespec_[add|subtract] to 18257 include/nuttx/clock.h From Xiang Xiao. 18258 - Binary Loader: Add binfmt_initialize(). All binary formats are 18259 now registered centrally vs. in board-specific logic. This 18260 simplifies the usage of the binfmt subsystem. From Xiang Xiao. 18261 - Binary Loader: Reference default symtab name to binfmt From anchao. 18262 - mm: Add mm_heapmember function and reimplement kmm_heapmember base 18263 on mm_heapmember since this function is very useful if multiple 18264 heaps exist. From Xiang Xiao. 18265 - mm: Add {kumm/kmm}_calloc API. Add calloc API for manage user 18266 memory and kernel memory in Flat Build/Kernel Build without kernel 18267 heap. From zhuyanlin. 18268 - pthreads: Add support static pthread stack. Add standard 18269 pthread_attr_setstack() and pthread_attr_getstack(). In all cases 18270 where the stack is released, add check to see which allocator must 18271 be used to free the stack: The user or the kernel allocator. From 18272 xuanlin. 18273 - Semaphores: Apply the semaphore wait function 18274 nxsem_wait_uninterruptible(). This function is a wrapped version 18275 of nxsem_wait() that is uninterruptible and convenient for use. 18276 From liuhaiyang. 18277 - Signals: Add default signal action to SIGKILL. From ligd. 18278 - Signals: Update the signal default action logic to support 18279 sigaction(). signaction() must be able to handle and input action 18280 of SIG_DFL to setup the default signal action; it mast also return 18281 SIG_DFL it is replacing the default action. From Gregory Nutt. 18282 - Signals: Default Signal Actions. Change some types to 18283 superficially simplify. Add configuration options to enabled 18284 default signal behaviors on a per-signal basis. I don't think 18285 users are prepared for SIGALRM to terminate the task (which is the 18286 correct default behavior if you don't change it). Extend the 18287 implementation of default signals so that it is totally table 18288 driven and extensible by simply mondifying the content of const 18289 tables. From Gregory Nutt. 18290 - Signals: Add support for SIGINT in addition to SIGKILL. 18291 - Signals: Add logic and an interface to determine if a signal can 18292 be caught or ignored. sigaction now correctly returns EINVAL on 18293 any attempt to catch or ignore such signals (only SIGKILL for now 18294 and only if CONFIG_SIG_DEFAULT=y). From Gregory Nutt. 18295 - Signals: Add support for default signal actions for SIGSTOP, 18296 SIGSTP, and SIGCONT. Add procfs support to show stopped tasks. 18297 From Gregory Nutt. 18298 - Signals: Add nxsig_action() to solve a chicken and egg problem: 18299 We needed to use sigaction to set default actions, but sigaction() 18300 would refuse to set actions if the default actions could not be 18301 caught or ignored. From Gregory Nutt. 18302 - Signals: Add configuration option to selectively enabled/disable 18303 default signal actions for SIGSTOP/SIGSTP/SIGCONT and SIGKILL/SIGINT. 18304 - Signals: If a task/thread was already blocked when 18305 SIGSTOP/SIGSTP was received, it will restart in the running state. 18306 It will appear that to the task/thread that the blocked condition 18307 was interrupt by a signal and returns the EINTR error. From 18308 Gregory Nutt. 18309 - Signals: Update signal default STOP action. If waitpid was 18310 called with the WUNTRACED then wake up waitpid(). From Gregory 18311 Nutt. 18312 - IRQs: Monitor the IRQ execution time. This is very useful for 18313 measuring the interrupt latency. From Xiang Xiao. 18314 - IRQ Dispatch: Add support interrupt chains in NuttX. IRQ chain is 18315 very useful in these cases: (1) Multiple hardware connect to the 18316 same request line(e.g. PCI), (2) Need multiple driver to support 18317 one hardware block (like Linux MFD) From zhuguangqing. 18318 - Work Queue: Modify high priority work queue to support multiple 18319 threads. From ligd. 18320 - System Calls: Add support for getpeername() and get_sockname() 18321 system calls. From Gregory Nutt. 18322 - System Calls: svcall/sycall logic needs to get the ucontext 18323 argument from R4 instead of stack since all syscall parameters pass 18324 from registers in syscall.h From Xiang Xiao. 18325 - CPU Load Measurement: Support the CPU load measurement using 18326 timer_lowerhalf_s interface From Xiang Xiao. 18327 - Assertions: Change CONFIG_BOARD_RESET_ON_CRASH to 18328 CONFIG_BOARD_RESET_ON_ASSERT, arch/: Implement call to 18329 board_reset() if in all implementations of up_assert() when 18330 CONFIG_BOARD_RESET_ON_ASSERT=y. From Xiang Xiao. 18331 - boardctl(): Add support for board_app_finalinitialize() From ligd. 18332 - Architecture Interface: Add prototype for an architecture-specific 18333 up_trigger_irq function. From dongjianli. 18334 - Architecture Interface: Add the garbage collection hook so each 18335 architecture can do custom memory cleanup if necessary. From Xiang 18336 Xiao. 18337 - Architecture Interface: Add architecture-specific prototypes for 18338 conversions between physical and virtual address. From ligd. 18339 18340 * File Systems/Block and MTD Drivers 18341 18342 - ProcFS: Add support for a procfs entry that will permit examining 18343 the environment of any task. From Gregory Nutt. 18344 - ProcFS: Add support for proc/self/, a convenient way for getting 18345 information about the currently running task. From Gregory Nutt. 18346 - HostFS: Add support for open() append mode From anchao. 18347 - HostFS: Add ftruncate support. From Xiang Xiao. 18348 - HostFS: Remove ARCH_SIM dependence since other architectures 18349 (e.g., arm semihosting) could support hostfs too From Xiang Xiao. 18350 - HostFS: Support remote directory names without a trailing '/' 18351 From ligd. 18352 - HostFS: Add re-try when hostfs mount() fails From ligd. 18353 - NFS: Update NFS client mount to VER3 From zhangyuan7. 18354 - Partitions: Add PTABLE parser fs/partion: Add a partition parser 18355 framework fs/driver/fs_blockpartition.c: Add 18356 register_blockpartition for block partition From Xiang Xiao. 18357 - MTD: Add gd25 driver From wangyanjiong. 18358 - MTD: In MTD partitions, copy the partition name to internal 18359 buffer so that the caller can free the name argument From Xiang 18360 Xiao. 18361 - MTD: Support initialization of an FTL block device with a custom 18362 name From Xiang Xiao. 18363 - MTD: FTL: Reduce size of stack buffer from 64 to a maximum size 18364 as determined from NAME_MAX. From Gregory Nutt. 18365 - VFS poll(): Send poll() notification when the Tx buffer is flushed 18366 From ligd. 18367 - VFS fstat(): Add file_fstat() function for internal OS use. From 18368 ligd. 18369 - VFS fcntl(): Add file_fcntl, psock_fcntl, and psock_dupsd for use 18370 within the kernel. From Xiang Xiao. 18371 - VFS dup2(): Addpsock_dupsd for use within the kernel. From Xiang 18372 Xiao. 18373 - VFS poll(): Add poll use in kernel space. From dongjianli. 18374 - VFS select(): Make select be more consistent with Linux man page: 18375 'The timeout ... Some code calls select() with all three sets 18376 empty, nfds zero, and a non-NULL timeout as a fairly portable way 18377 to sleep with subsecond precision.' From anchao. 18378 18379 * Networking/Network Drivers: 18380 18381 - Sockets: Add getpeername() support From ligd. 18382 - sockopt(): Move psock check from [get|set]sockopt to 18383 psock_[get|set]sockopt From Xiang Xiao. 18384 - getsockname(): Add psock_getsockname function From Xiang Xiao. 18385 - Netlink Sockets: This brings in a fragmentary, experimental 18386 implementation of NETLINK sockets. There is not too much to that 18387 socket support on this initial commit, just the netlink socket 18388 framework. However, I decided to bring it into master because 18389 there is a enough that I would not want to lose what is in place. 18390 And since it is dependent on CONFIG_EXPERIMENTAL, its presence on 18391 master should be innocuous. From Gregory Nutt. 18392 - Interface Indexes: Add driver interface index support. Add 18393 implementation of if_nametoindex() and if indextoname(). Raw 18394 AF_PACKET sockets now depend on CONFIG_NETDEV_IFINDEX. Add syscall 18395 support for if_nametoindex() and if_indextoname(). Includes an 18396 algorithm to prevent an interface index from being reused until all 18397 network interfaces have by assigned once. The prevents removable 18398 devices from being removed, unregistered and re-installed, 18399 re-registered and keeping the same interface index. From Gregory 18400 Nutt. 18401 - Driver Interface: Add devif_loopback() to check the loopback 18402 case where a packet is being sent to itself. Modify the net driver 18403 to call this function in this case. This function will simply 18404 re-inject the packet back into the network and the network driver 18405 will not put anything on the wire. From Xiang Xiao. 18406 - Network Devices: Remove all references to CONFIG_NET_USER_DEVFMT. 18407 That feature is now unconditionally enabled. This was done because 18408 (1) the feature does not require very much additional memory, and 18409 (2) it causes confusion in the configuration due to the additional 18410 complexity. Any network drivers that fail to zero the device 18411 structure interface name field (d_ifname) because calling 18412 netdev_register() will, however, get a nasty surprise. From 18413 Gregory Nutt. 18414 - Network Devices: Add support for Microchip LAN91C111 driver From 18415 Xiang Xiao. 18416 - Network Devices: netdev_findby_ipv[4|6]addr return 18417 netdev_default() as last resort but don't return loopback device 18418 if another network device is in the UP state. From Xiang Xiao. 18419 - Network Device IOCTLs: Add si_ioctl callback and net_ioctl_arglen 18420 so usrsock could forward the ioctl to the remote end/ From 18421 dongjianli. 18422 - IPv6: Rename g_ipv6_allzeroaddress with the more meaning 18423 g_ipv6_unspecaddr since the all-zero address is the IPv6 18424 unspecified address (sometime IN6_ADDR_ANY). Replace more inline 18425 tests for IPv6 multicast with common net_is_addr_mcast() macro. 18426 From Gregory Nutt. 18427 - ARP: arp_find() now checks if the target IP belongs to one of the 18428 local network devices. From Xiang Xiao. 18429 - ARP: Make the function arp_find() thread-safe. It now returns a 18430 copy of the MAC address from the ARP table entry, rather than a 18431 potentially unstable reference to the ARP table entry. From 18432 Gregory Nutt. 18433 - TCP: Re-work of TCP receive window size algorithm. The new logic 18434 is based only on the ability to buffer TCP read-ahead data. From 18435 Gregory Nutt. 18436 - UDP: Add support for the UDP_BINDTODEVICE protocol socket option 18437 From Sebastien Lorquet. 18438 - Slip: Uncomment the prompt of NET_SLIP_PKTSIZE in Kconfig file. 18439 From Xiang Xiao. 18440 - USRSOCK: Combine some the duplicated logic. From Xiang Xiao. 18441 - USRSOCK: Optimize option dependence From Xiang Xiao. 18442 - USRSOCK: Add the listen/accept/getpeername/ioctl support From 18443 dongjianli. 18444 18445 * Other Common Device Drivers: 18446 18447 - Analog DAC: Add driver for digital to analog converter DAC7571. 18448 Nucleo-L422KC: Add support for a connect DAC7571 converter. From 18449 Daniel Pereira Carvalho. 18450 - Audio Interface: Change member samp of apb to pointer so driver 18451 can customize sample buffer allocation From ZhongAn. 18452 - Audio Interface: Add ioctl cmd 'AUDIOIOC_SETBUFFERINFO' so user 18453 space could config the buffer From ZhongAn. 18454 - Audio Interface: Add hardware format support From anchao. 18455 - I2S Interface: Add i2s_rxchannels and i2s_txchannels methods to 18456 the I2S lower half interface. From ZhongAn. 18457 - Audio: Move the I2S character driver to a dedicated folder. From 18458 Xiang Xiao. 18459 - Audio: Add audio_i2s device driver. From ZhongAn. 18460 - Audio: Add the composite audio driver From Xiang Xiao. 18461 - Crypto: Move dev_urandom.c into new crypto folder. From Xiang 18462 Xiao. 18463 - GPIO driver: Add gpio_pin_unregister function to GPIO driver 18464 driver/ioexpander: Add pinset struct to GPIO driver for interrupt 18465 pins larger than 64. Initialize pintype/inttype when registering 18466 ioexpander device. Add SETPINTYPE ioctl command to the GPIO 18467 driver. From zhuyanlin. 18468 - I2C Interface: Add a definition to distinguish a new START of 18469 messages from a repeated start. No lower-half I2C drivers actually 18470 implement this new flag bit, however. In I2C write/read logic use 18471 new repeated START definition where appropriate. Rename 18472 I2C_M_NORESTART to I2C_M_NOSTART since it may be used in other 18473 contexts than a repeated start. Add comments to clarify setup for 18474 repeated start. From Gregory Nutt. 18475 - I2C: Add the standard speed macros. From dongjiuzhu. 18476 - Leds: Add support to MAX7219 to control 7-segment displays. From 18477 Alan Carvalho de Assis. 18478 - Power: PM: Add pm_stay and pm_relax function so special apps(e.g. 18479 mediaplayer) could disable suspend during playback much like linux 18480 kernel counterpart From Xiang Xiao. 18481 - Power: PM: Add pm_querystate function From zhuguangqing. 18482 - Power: PM: Don't update the power state in work thread: (1) 18483 Simplify the code logic and remove the work queue dependence, (2) 18484 Power calculation is too simple to delay into the work queue From 18485 Xiang Xiao. 18486 - Power: PM: Decrease the power state in the reverse order. Since 18487 the child driver need power off before parent driver. From 18488 zhuguangqing. 18489 - Power: PM: Make power manager service available as soon as 18490 possible: (1) Initialize g_pmglobals at the definition, (2) skip 18491 hold the lock if OS isn't ready From Xiang Xiao. 18492 - Power: PM: Add PM_RESTORE to notify driver that device exit WFI 18493 so the driver could restore state. For example, WDT may stop 18494 counting before enter low power state and restore the counting 18495 again in PM_RESTORE notification From zhuguangqing. 18496 - Power: PM: Add timer to decrease PM level automatically. From 18497 ligd. 18498 - PTYs: Add support so that a PTY can poll for both IN/OUT event 18499 simultaneously. From ligd. 18500 - PWM: Move pwm.c into pwm folder From Xiang Xiao. 18501 - RTC Interface: Extend struct rtc_time by adding. From Xiang 18502 Xiao. tm_nsec if RTC supports hiresolution time. From Xiang Xiao. 18503 - Sensors: Add support for Telair T6713 carbon dioxide sensor. From 18504 Juha Niskanen. 18505 - Sensors: Add support for LSM303AGR and LSM6DSL sensors From 18506 DisruptiveNL. 18507 - Sensors: Add driver for DHTxx sensor. From Ouss4. 18508 - syslog: Enable a partial, crippled version of syslog_flush(); 18509 Call syslog_flush() from assertion handling logic of all 18510 architectures. From Gregory Nutt. 18511 - syslog: Channel configuration. Decouple SYSLOG_SERIAL_CONSOLE and 18512 ARCH_LOWPUTC. Since some hardware can output log to the special 18513 debug channel not serial. From anchao. 18514 - syslog: Support pre-pending a prefix string to log output if 18515 enabled. This very useful to identify which CPU send out the log 18516 in AMP SoC. From anchao. 18517 - Serial: Add Ctrl-C/Ctrl-X support. From ligd. 18518 - Serial: Support UART direct write for non console device From 18519 xuanlin. 18520 - Serial: It is no longer necessary to restrict Ctrl-C handling to 18521 the FLAT build sched/signal: Add a new configuration option to 18522 select signal default actions, separate handling of signal default 18523 actions from both task startup logic and from the serial TTY 18524 Ctrl-C logic. Add a signal set in the group structure to keep 18525 track of what signals have been set to the default action. In 18526 dispatching signals in PROTECTED or KERNEL mode, use this signal 18527 set to determine if the default signal handler is attached and 18528 dispatch the signal in kernel mode for the default actions. From 18529 Gregory Nutt. 18530 - Serial: Integrate new Ctrl-C logic with the ISIG flag in the 18531 termios c_lflag. From Gregory Nutt. 18532 - Serial: Use SIGINT instead of SIGKILL when control-C is pressed. 18533 From Gregory Nutt. 18534 - Serial: Add support for Ctrl-Z. This works just like the 18535 recently added Ctrl-C support except that SIGSTP is sent when the 18536 Ctrl-Z characters is encountered vs. SIGINT. From Gregory Nutt. 18537 - 16550 UART: Add a configuration, analogous to the STM32 18538 configuration option, to suppress the NuttX standard re-ordering 18539 for /dev/ttySN for special case of the 16550 UART. 18540 - 16550 UART: Add CONFIG_SERIAL_UART_ARCH_MMIO option so the a 18541 memory mapped device doesn't need to provide uart_getreg() and 18542 uart_putreg() implementations. 18543 - 16550 UART: Add stub implementations of DMA-related methods in the 18544 16550 UART v-table. From ligd. 18545 - 16550 UART: Add serial termios handling From anchao. 18546 - 16550 UART: Support 16550 auto hardware flow control 18547 drivers/serial/uart_16550.c: Add configuration option 18548 CONFIG_16550_SUPRESS_INITIAL_CONFIG. This is identical to the 18549 standard configuration in arch/Kconfig 18550 CONFIG_SUPPRESS_UART_CONFIG, but with scope of only the 16550 18551 driver. From Xiang Xiao. 18552 - syslog: Make timestamp output same as linux kernel. It's very 18553 useful if NuttX syslog retarget to Linux syslog. From Xiang Xiao. 18554 - Timers: Add maxtimeout method to the struct timer_ops_s interface 18555 From Xiang Xiao. 18556 - Timers: Add a new method to the struct oneshot_operations_s 18557 interface to get the current time from a oneshot timer driver (if 18558 it is available from the lower half) From Xiang Xiao. 18559 - Timers: Implement timer arch API on top of timer driver. From 18560 Xiang Xiao. 18561 - Timers: Implement alarm arch API on top of oneshot driver 18562 interface. From Xiang Xiao. 18563 - Timers: Implement RTC arch API on top of RTC driver interface. 18564 From Xiang Xiao. 18565 - CDC/ECM: Adds USB device support for CDC/ECM From Michael Jung. 18566 - USB Host: Add support for the Maxim M3421E USB host driver. Not 18567 yet fully tested. From Gregory Nutt. 18568 18569 * General Architecture-Specific: 18570 18571 - All architectures: Make sure the up_irq_enable() is available on 18572 all architectures. From Gregory Nutt. 18573 18574 * Simulation 18575 18576 - Simulator Configurations: Add dsptest configuration. From Mateusz 18577 Szafoni. 18578 - Simulator: In network driver (1) Remove up_comparemac() check for 18579 matching MAC address. Let's trust that the tap device just return 18580 the packet which belong to us like other real network device 18581 hardware. (2) Add network device statistics support. From Xiang Xiao. 18582 18583 * ARM: 18584 18585 - ARM (all): Add CONFIG_DEBUG_MEMFAULT to Kconfig. From Masayuki 18586 Ishikawa. 18587 - ARM: (1) Add semihost support for syslog, (2) Add semihost support 18588 for HostFS From Gregory Nutt. 18589 18590 * ARMv6-M: 18591 18592 - ARMv6-M: Introduce CONFIG_DEBUG_HARDFAULT_INFO to up_hardfault.c 18593 From Masayuki Ishikawa. 18594 18595 * ARMv7-M: 18596 18597 - ARMv7-M: Removes support for the dedicated vector handling from the 18598 many older architectures. Only common vectors are now supported. 18599 From Gregory Nutt. 18600 - ARMv7-M: Introduce CONFIG_DEBUG_HARDFAULT_INFO to up_hardfault.c 18601 From Masayuki Ishikawa. 18602 - ARMv7-M: Implement SYSTICK timer driver From Xiang Xiao. 18603 - Simulator: Add loadable demo for arch sim. From anchao. 18604 - ARMv7-M: Add logic to trigger ARMv7-M interrupts and exceptions. 18605 From Gregory Nutt (from sample logic by Xiang Xiao). 18606 - ARMv7-M: Add NVIC definitions needed by up_trigger_irq(). From 18607 Gregory Nutt. 18608 18609 * ARMv7-R: 18610 18611 - ARMv7-R: Add general interrupt controller. This is based on 18612 ARMv7-A gic controller code. From EunBong Song. 18613 - ARMv7-R: Add invalidate dcache in arm_head.S. From EunBong Song. 18614 18615 * Infineon XMC4xxx Drivers: 18616 18617 - XMC4 GPIO: Add a specific bit encoding to GPIO driver for 18618 opendrain GPIO pin. From Alan Carvalho de Assis. 18619 18620 * Infineon XMC4xxx Boards: 18621 18622 - XMC4500-Relax: Add support to MAX6675 on XMC4500-Relax board. 18623 From Alan Carvalho de Assis. 18624 18625 * Microchip PIC32MX Boards; 18626 18627 - PIC32MX: Update some PIC32MX configurations so that either the 18628 MPLAB or Penguino toolchains may be used. From Gregory Nutt. 18629 18630 * Microchip/Atmel SAMD2x/L2x: 18631 18632 - SAMD2x/L2x: Rename all usage of samdl/SAMDL to samd2l2/SAMD2L2 to 18633 make room in the name space for samd5e5/SAMD5E5 From Gregory Nutt. 18634 18635 * Microchip/Atmel SAMD5x/E5x: 18636 18637 - SAMD5x/E5: Add a port to the SAMD5x/E5x MCU family. From Gregory 18638 Nutt. 18639 18640 * Microchip/Atmel SAMD5x/E5x Drivers: 18641 18642 - SAMD5x/E5x SPI/I2C: Bring in untested SPI and I2C drivers from 18643 SAMD2L2. From Gregory Nutt. 18644 - SAMD5x/E5x DMA: Leverage the SAMD2L2 DMA controller. From Gregory 18645 Nutt. 18646 - SAMD5x/E5x USB: Bring the SAMDL2 USB driver into the SAMD5E5 18647 port. From Gregory Nutt. 18648 18649 * Microchip/Atmel SAMD5x/E5x Boards: 18650 18651 - Metro M4: Add support for the Adafruit Metro M4 board. From 18652 Gregory Nutt. 18653 - Metro M4: Add an option to build the Metro M4 image to run out of 18654 SRAM. This ought to be a safer and quicker way to do the initial 18655 bring-up (having bricked the first Metro M4 due to a bad FLASH 18656 image). From Gregory Nutt. 18657 - Metro M4: Add a configuration option to use OSCULP32K instead of 18658 XOSC32K. From Gregory Nutt. 18659 - Metro M4: After some final fixes related to the SERCOM console, 18660 the basic NSH configuration appears fully functional. From 18661 Gregory Nutt. 18662 - Metro M4: Verify the CMCC and enable it by default in the NSH 18663 configuration. From Gregory Nutt. 18664 18665 * Microchip/Atmel SAMv7 Drivers: 18666 18667 - SAMv7 CAN: Add ability for CAN BUS_OFF autorecovery according 18668 ISO11898-1:2015. With this change we added an ioctl for triggering 18669 the autorecovery sequence for BUS_OFF to the CAN-driver and the 18670 SAMV7 low-level driver. According the datasheet: If the device 18671 goes Bus_Off, it will set MCAN_CCCR.INIT of its own accord, 18672 stopping all bus activities. Once MCAN_CCCR.INIT has been cleared 18673 by the processor (application), the device will then wait for 129 18674 occurrences of Bus Idle (129 * 11 consecutive recessive bits) 18675 before resuming normal operation. At the end of the Bus_Off 18676 recovery sequence, the Error Management Counters will be reset. 18677 During the waiting time after the resetting of MCAN_CCCR.INIT, each 18678 time a sequence of 11 recessive bits has been monitored, a Bit0 18679 Error code is written to MCAN_PSR.LEC, enabling the processor to 18680 readily check up whether the CAN bus is stuck at dominant or 18681 continuously disturbed and to monitor the Bus_Off recovery 18682 sequence. MCAN_ECR.REC is used to count these sequences. From 18683 Frank Benkert. 18684 18685 * NXP Freescale i.MX RT Drivers: 18686 18687 - i.MXRT RTC: Add support for the i.MXRT RTC. This is code complete 18688 (with limited features and options) but untested. The HPRTC is 18689 functional. However, if the LPSRTC is enabled, then there is a 18690 hang during LPSRTC initialization. It appears that there is some 18691 problem in providing clocking and initializing the LPSRTC domain. 18692 From Gregory Nutt. 18693 - i.MXRT SNVS: Add trivial SNVS from Rev 1. of the Reference Manual. 18694 From Gregory Nutt. 18695 - i.MXRT LSPI: IMXRT1050 LPSPI register and bit definitions added. 18696 From Ivan Ucherdzhiev. 18697 - i.MXRT Serial: IMXRT1050 LPUART TERMIOS support added. From Ivan 18698 Ucherdzhiev. 18699 18700 * NXP Freescale i.MX RT Boards: 18701 18702 - IMXRT1050-EVK: Add knsh configuration. PROTECTED mode NSH build. 18703 From Gregory Nutt. 18704 18705 * NXP Freescale Kinetis: 18706 18707 - Kinetis: Add DMA support. From David Sidrane. 18708 18709 * NXP Freescale Kinetis Drivers: 18710 18711 - Kinetis: Use circular DMA as an option to augment the RX FIFOs in 18712 the Serial driver. From David Sidrane. 18713 18714 * NXP LPC54xx: 18715 18716 - LPC54xx: The LPC54608 can only run at a maximum frequency of 18717 180Mhz. This configuration requires uses the clk_in, external 18718 crystal clock, to drive the PLL. When that input was selected, the 18719 board bootup failed waiting for the PLL to lock. After referring 18720 the driver from NXP, we should turn on power sources for the ext 18721 clock if system pll input select clk_in. NOTE that the LPC54628 18722 did not require this step... perhaps because the system oscillator 18723 power was already enabled. From kxjiang. 18724 - LC823450: Add support for mpu and userspace LC823450-XGEVK: Add 18725 kostest PROTECTED build LC823450-XGEVK: Add knsh PROTECTED build 18726 From Masayuki Ishikawa. 18727 18728 * NXP LPC54xx Boards: 18729 18730 - Lpcxpresso-LPC54628: Update lvgl board config to use the new 18731 version From Alan Carvalho de Assis. 18732 18733 * On Semi LPC23450 Drivers: 18734 18735 - LC823450 Bluetooth: Add lc823450 Bluetooth support. From Masayuki 18736 Ishikawa. 18737 - LC823450 I2S: Add tx start threshold to lc823450_i2s.c In 18738 addition, lc823450_i2s_send() now accepts byte-aligned stream. 18739 From Masayuki Ishikawa. 18740 - LC823450 SPI: Add SPI flash driver for lc823450. NOTE: Only bus 18741 accelerator mode is supported. From Masayuki Ishikawa. 18742 - LC823450: Change C-Buffer under-level control. The under-level 18743 setting was changed from 1KB to 55KB. In previous implementation, 18744 the setting can be changed by the tx threshold but it is fixed at 18745 startup. Also, check write size and adjust alignment if needed. 18746 From Masayuki Ishikawa. 18747 18748 * On Semi LPC23450 Boards: 18749 18750 - LC823450-XGEVK: Add loopback test for digital MIC on lc823450 via 18751 i2schar driver. From Masayuki Ishikawa. 18752 - LC823450-XGEVK: Add lc832450 elf test. From Masayuki Ishikawa. 18753 - LC823450-XGEVK: Add posix_spawn configuration From Masayuki 18754 Ishikawa. 18755 18756 * STMicro STM32: 18757 18758 - STM32 L4: Add initial support to STM32L4+ chips From Juha Niskanen. 18759 - STM32 H7: A partial port to the STMicro STM32H7 by Simon Laube was 18760 brought in from the PX4 repositories. Numerous changes were 18761 make(by Mateusz Szafone). The basic STM32 H7 NSH configuration is 18762 now functional, thanks to Mateusz Szafoni. 18763 18764 * STMicro STM32 Drivers: 18765 18766 - STM32 F0, F1-F4, F7, L4, H7: Added Single Wire Kconfig variable. 18767 From David Sidrane. 18768 - STM32 DAC: Set OUTEN bit for DAC1CH2 and DAC2CH1 power/motor. 18769 Direction parameter is now int8 + add overload fault. From Mateusz 18770 Szafoni. 18771 - STM32 F1-F4 ADC: Allow multiple channels without DMA on 18772 STM32L15XX. From Juha Niskanen. 18773 - STM32 F1: Add FLASH register definitions for F1 parts that have 18774 dual banked FLASH. From Dmitriy Linikov. 18775 - STM32 F2: Added progmem interface support for STM32 F2 From 18776 Dmitriy Linikov. 18777 - STM32 F4: Ports STM32 LTDC and STM32 DMA2D to use the 18778 framebuffer interface From Marco Krahl. 18779 - STM32 F7: This change ports Marco Krahl's STM32F4 framebuffer 18780 overlays for the LTDC and DMA2D into the STM32F7. That driver was 18781 same as the STM32 F4 driver. From Gregory Nutt. 18782 - STM32 F7: Port input capture from stm32. From Juha Niskanen. 18783 - STM32 F7 FLASH: Ported the STM32 F2/F4 driver to the STM32 F7 18784 platform. From Evgeniy Bobkov. 18785 - STM32 F7 SDMMC: Add SDIO card support to SDMMC driver. From 18786 Ramtin Amin. 18787 - STM32 F7 Serial: Previous logic would invalidate the data cache as 18788 each byte was read from the DMA buffer. This change adds logic to 18789 invalidate the data cache less frequently by monitoring the state 18790 of the Rx DMA buffer cache coherency and invalidating only regions 18791 as necessary. From Evgeniy Bobkov. 18792 - STM32 F7: Add up_stackcheck.c From Daniel Agar. 18793 - STM32 F7: Port the low-level PM functions to STM32 F7. From Juha 18794 Niskanen. 18795 - STM32 L4: STM32L4 has fetchadd and testset From Juha Niskanen. 18796 - STM32 L4: Added custom pin mapping for STM32L4X2XX processors. 18797 From Daniel P. Carvalho. 18798 - STM32 L4 FLASH: stm32l4xrxx: allow board to override flash wait 18799 states From Juha Niskanen. 18800 - STM32 L4: Some updates to analog peripherals ADC, COMP and DFSDM 18801 for STM32L4XR From Juha Niskanen. 18802 - STM32 L4: Add getstatus and getperiod() method to the timer 18803 driver (includes coding standard changes made prior to commit) 18804 From Goden Freemans. 18805 - STM32 H7: Remove old references to RXDMA. Add configuration 18806 - STM32 H7: Remove old references to RXDMA. Add configuration 18807 option to select the Rx FIFO threshold level. From Gregory Nutt. 18808 18809 * STMicro STM32 Boards: 18810 18811 - STM32F103 Minimum: Add blackpill LED support From Russ Webber. 18812 - Viewtool-STM32F107: Add a TCP performance test using 18813 apps/examples/tcpblaster. From Gregory Nutt. 18814 - Viewtool-STM32F107: Add support for the MAX3421E to the 18815 Viewtool-STM32F107 board support From Gregory Nutt. 18816 - STM32F334-DISCO: Use a PID controller from libdsp in the BuckBoost 18817 driver. From Mateusz Szafoni. 18818 - STM32F4-Discovery: Remove STM32F4BB dependence from RNDIS; add 18819 RAMDISK support. From Alan Carvalho de Assis. 18820 - STM32F4-Discovery Add board support for MAX7219 as numeric display 18821 controller. From Alan Carvalho de Assis. 18822 - Olimex-STM32-P407: Add kernel ELF (kelf) configuration. From 18823 Gregory Nutt. 18824 - Olimex-STM32-P407: Add a kmodule configuration that can be used 18825 for testing installation of kernel modules in the protected build. 18826 From Gregory Nutt. 18827 - Olimex-STM32-P407: Add logic to support initialization of the 18828 kernel module symbol table installed in the pass1/ directory during 18829 the application phase of the build. The kmodule configuration 18830 appears to be fully functional. From Gregory Nutt. 18831 - Olimex-STM32-P407: Add board support for the DHTxx sensor. From 18832 Ouss4. 18833 - STM32F476G-DISCO: Add support for STM32F746G-disco board LCD. 18834 From Marcin Wyrwas. 18835 - STM32F476G-DISCO: Add a configuration to build working nxdemo 18836 application From Fanda. 18837 - STM32F476G-DISCO: Add support for STM32F746G-disco board SDRAM 18838 Changed fb config to use SDRAM. From Marcin Wyrwas. 18839 - STM32F476G-DISCO: Add touchscreen support and a LittlevGL demo for 18840 STM32F746G-DISCO From Marcin Wyrwas. 18841 - Nucleo-L476RG: Add support for an external SPI-driven SD card on 18842 the Nucleo-L476RG. From Gregory Nutt. 18843 - Nucleo-L476RG: Add support for LSM303AGR and LSM6DSL sensors From 18844 DisruptiveNL. 18845 - Nucleo-H743ZI: Use Nucleo Virtual console as default console in 18846 the NSH configuration From Mateusz Szafoni. 18847 - STM32L4R9-DISCO: Add stm32l4r9ai-disco support. From Juha Niskanen. 18848 - B-L475E-IOT01A: Add timer driver support. From Goden Freemans. 18849 18850 * Libraries/Header Files: 18851 18852 - libc endian: Add support for endian.h. From Gregory Nutt. 18853 - libc net: Add inet_aton() From Juha Niskanen. 18854 - libc netdb: Add getaddrinfo() and friends. From Juha Niskanen. 18855 - libc termios: Add lib_cfmakeraw.c From Masayuki Ishikawa. 18856 - libc stdlib: Add implementation of random() and srandom(). From 18857 Gregory Nutt. 18858 - libc unistd: Add a crippled version of daemon(). From Gregory Nutt. 18859 - libdsp: All floats with f-sufix libdsp: (1) add precision option 18860 for library, (2) add debug option for library and assertions in 18861 functions, (3) add current samples correction for SVM3, (4) add 18862 some motor control specific functions, (5) add basic speed 18863 observer, (6) fix phase shift in SMO observe, (7) add more logic to 18864 FOC. From Mateusz Szafoni. 18865 - include/nuttx/compiler.h, include/poll.h: Add logic to determine 18866 if the compiler supports anonymous structures and unions. From 18867 Gregory Nutt. 18868 - include/nuttx/mutex.h: Add inline wrapper functions to more 18869 clearly support semaphores when used as mutexs. From QianWenfa. 18870 - include/nuttx/nuttx.h: Added nuttx.h header file which is 18871 analogous to the linux.h header file. Currently, it contains on 18872 the definition of the container_of() macro. From zhuyanlin. 18873 - include/queue.h: Add dq_tail marco From zhuguangqing. 18874 - include/stdio.h: Add prototypes for popen() and pclose(). Actual 18875 implementation is in apps/system/popen() From Gregory Nutt. 18876 - include/sys/param.h: Add a dummy sys/param.h header file. This is 18877 not a standard file but is used by other systems and having the 18878 dummy file may minimize some porting efforts. From Gregory Nutt. 18879 18880 * Tools: 18881 18882 - nuttx/tools/kconfig2html.c: Due to new usage, tool needs to be 18883 able to handle configuration files with names other than Kconfig. 18884 From Gregory Nutt. 18885 - nuttx/tools/kconfig2html.c: Update tool to handle tristate types. 18886 From Gregory Nutt. 18887 - nuttx/tools/Config.mk: Add function CATFILE definition. Currently 18888 only used in apps/builtin/Makefile. From Gregory Nutt. 18889 - nuttx/tools/Config.mk: Add the recursive wildcard function, 18890 RWILDCARD, to Config.mk. From Gregory Nutt. 18891 - nuttx/tools/testbuild.sh: Add an option to specify the location of 18892 nuttx directory. From Gregory Nutt. 18893 - nuttx/tools/refresh.sh: Add a --prompt option that will let you 18894 use --silent but will prompt before overwriting the original 18895 defconfig. From Gregory Nutt. 18896 - nuttx/tools/link.sh. Update link.sh per suggestions by Mark so 18897 that it can be used with MSYS vs copydir.sh. From Gregory Nutt. 18898 - nuttx/tools/mkexport.sh: Save the System.map file and User.map 18899 file (if it exists) in the export package so that it can be used to 18900 extract addresses. From Gregory Nutt. 18901 - nuttx/tools/mkexport.sh: Save the name of the STRIP tool too. From 18902 Gregory Nutt. 18903 - nuttx/tools/nxstyle.c: Add capability to detect multiple blank 18904 lines. Single spacing required by the coding standard. Also coding 18905 standard fixes to server .c files for problems found during testing 18906 nxstyle. From Gregory Nutt. 18907 - apps/tools: Add +x to mksymtab.sh. From Masayuki Ishikawa. 18908 - apps/tools/define.sh and define.bat: Move a copy of define.bat 18909 and sh from nuttx/tools to apps/tools so that they will be 18910 available for the import build. From Gregory Nutt. 18911 18912 * Build System: 18913 18914 - Apps/ Build System. The apps/ build system has undergone a major 18915 renovation to better support building applications as ELF modules. 18916 Module selections have changed from 'bool' to 'tristate' types. 18917 This means that building an ELF now is as simple setting the value 18918 to 'm'. This effort required many changes, too many to summarize 18919 here. The solution was contributed by Masayuki Ishikawa, Anchao 18920 An, and Xiang Xiao (and myself to a lesser extent). 18921 - NuttX/ Build System: This change extends support for the two-pass 18922 build. Its primary purpose is to incorporate source logic 18923 generated by applications into the kernel phase of the build. 18924 In the two pass build, the application logic is built during the 18925 first phase, pass 1. In that phase, the application may generate 18926 and install source files in the pass1/directory. The operating 18927 system is built during phase 2 of the build. At that time, those 18928 source files in the pass1/ directory will be built and incorporated 18929 into the kernel address space. 18930 The primary purpose of the pass1/ directory is to such 18931 application-generated kernel symbol tables. For an example of the 18932 use of this feature, look at 18933 apps/examples/module/drivers/Makefile. Kernel symbol tables are 18934 needed to support kernel modules. Of course, addition 18935 board-specific logic in, say, configs/<board>/src would have to be 18936 included to make use of the application-installed symbol tables. 18937 From Gregory Nutt. 18938 - Remove CONFIG_ARCH_CALIBRATION. It is awkward to use and no longer 18939 necessary now that we have apps/examples/calib_udelay. From 18940 Gregory Nutt. 18941 - Build System: With recent changes to apps/ all configurations that 18942 build applications as modules must now also select 18943 CONFIG_APPS_LOADABLE. From anchao. 18944 - Build System: Add dynamic application loadable support. From 18945 anchao. 18946 - Build System: Add configuration CONFIG_ARCH_GNU_NO_WEAKFUNCTIONS 18947 to suppress use of weak functions. Some gnu derived toolchains do 18948 not support weak symbols. From Xiang Xiao. 18949 - Kconfig: Move 'option modules' from NSH_FILE_APPS to 18950 BUILD_LOADABLE From anchao. 18951 - apps/ Build System: Introduce a build system for loadable apps 18952 for nsh. Add 'option modules' to NSH_FILE_APPS so that a user can 18953 change an application configuration to tristate (y/n/m) 18954 - apps/import: Add Makefile.symtab which can be used to compile the 18955 dynamically created symbol table C file. Also adds 18956 tools/mksymtab.sh. From Gregory Nutt. 18957 18958 * NSH: apps/nshlib: 18959 18960 - apps/nshlib: Add parsing support for back-slash quoted 18961 characters. Currently only implemented properly if 18962 CONFIG_NSH_ARGCAT is also selected. This commit is in response to 18963 Bitbucket Issue 11 opened by Maciej Wójcik From Gregory Nutt. 18964 - apps/nshlib: Add inverted logic support in the form of 'if ! 18965 <cmd>' From Beat Küng. 18966 - apps/nshlib: Expand reboot and poweroff commands to include a 18967 second, optional mode argument From ligd. 18968 - apps/nshlib: Add a force flag (-f) to mksmartfs command. SmartFS 18969 will be formatted only if (1) the FLASH does not already hold a 18970 SmartFS, or (2) the force flag is set. From Xiang Xiao. 18971 - apps/nshlib: NSH prompt string is now configurable. nsh> is 18972 still the default. From Xiang Xiao. 18973 - apps/nshlib: Add control-C support for terminating built-in and 18974 exec'ed file tasks. From ligd. 18975 - apps/nshlib: Call BOARDIOC_FINALINIT after start-up script (or 18976 immediately after BOARIOC_INIT is there is no start-up script). 18977 From ligd. 18978 - apps/nshlib: When using waitpid() to wait for a built-in 18979 application or a file application to exit. Add the WUNTRACED 18980 options to so the the waitpid() call will also be awakened if the 18981 waited-for task is stopped as well. From Gregory Nutt. 18982 18983 * NSH Builtins: apps/builtin: 18984 18985 - apps/builtin/Makefile. This commit changes apps/builtin to search 18986 the registry recursively. By supporting directories, external 18987 projects can install the hooks into the registry and easily clean 18988 them up and reinstall if something needs to be updated. Based on 18989 an idea from Anthony Merlino. From Gregory Nutt. 18990 18991 * Examples/Tests: apps/examples: 18992 18993 - apps/examples/calib_udelay: Add tool for calibrating 18994 CONFIG_BOARD_LOOPSPERMSEC From Juha Niskanen. 18995 - apps/examples/dhtxx: Example for the DHTxx sensor. From Ouss4. 18996 - apps/examples/dsptest: Add unit test for NuttX DSP library From 18997 Mateusz Szafoni. 18998 - apps/examples/elf: CROMFS and ROMFS configuration currently only 18999 usable in FLAT build. Add configuration to use ELF objects on 19000 external media like SD card or USB drive instead. From Gregory 19001 Nutt. 19002 - apps/examples/elf: If the test ELF files are on media in 19003 removable media such as SD or USB FLASH, the wait until the media 19004 has been installed and initialized before starting the test. From 19005 Gregory Nutt. 19006 - apps/examples/fb: Adds example to test framebuffer overlay From 19007 Marco Krahl. 19008 - apps/examples/gps: Add GPS example using MINMEA lib From Alan 19009 Carvalho de Assis. 19010 - apps/examples/i2sloop: Add i2sloop application. This application 19011 can be used to test I2S loopback like: ' nsh> i2sloop &'. From 19012 Masayuki Ishikawa. 19013 - apps/examples/lvgldemo: Update LVGL to version 5.1.1 From Alan 19014 Carvalho de Assis. 19015 - apps/examples/module: Add support for CROMFS and for stripping 19016 symbols from ELF module binaries. From Gregory Nutt. 19017 - apps/examples/module: Add support for automounting removable media. 19018 This involves a wait for the block driver to become available 19019 before performing the mount. From Gregory Nutt. 19020 - apps/examples/module: When built in the PROTECTED or KERNEL 19021 modes, the symbol table is not built by the application. That is 19022 because the build will fail since the kernel module depends on 19023 internal OS symbols thar are not available to the application 19024 build. With this change the examples does not attempt to build 19025 the kernel symbol table in these modes. Instead it just copies 19026 the kernel module symbol table into the nuttx/pass1 directory 19027 where it can be build directly into the OS during pass2 of the 19028 build. From Gregory Nutt. 19029 - apps/examples/ostest: Add a small test for SIGSTOP, SIGCONT, and 19030 SIGKILL actions. From Gregory Nutt. 19031 - apps/examples/popen: Add a test of popen/pclose. From Gregory 19032 Nutt. 19033 - apps/examples/powerled: Add arch initialization. From Mateusz 19034 Szafoni. 19035 - apps/examples/tcpblaster: Add TCP performance measurement test. 19036 From Gregory Nutt. 19037 19038 * System Utilities: apps/system 19039 19040 - apps/system/cle: Usage improvements including command line 19041 history (taken from readline) and support for addition control 19042 characters. From mst. 19043 - apps/system/i2c: Adapt to rename I2C_M_RESTART->i2C_M_START. 19044 I2C_M_NOSTOP should be in flags of first message in every 19045 write-read and write-write message sequence. From Gregory Nutt. 19046 - apps/system/i2c: Allow registers besides 0x00 in the dev command. 19047 From Jakob Haufe. 19048 - apps/system/nsh: Add logic to automatically register an 19049 application symbol table as part of NSH initialization. From 19050 Masayuki Ishikawa. 19051 - apps/system/nsh: The symbol table name and size variable names 19052 can now be configured. From Gregory Nutt. 19053 - apps/system/nsh: Move apps/examples/nsh to apps/system/nsh. It 19054 has become so entrenched that it is hardly an example these days. 19055 May as well formalized it as a system task. From Gregory Nutt. 19056 - apps/system/nxplayer: Refactor nxplayer.c. Apply 19057 netlib_parsehttpurl() and 19058 remove unnecessary usleep(). From Masayuki Ishikawa. 19059 - apps/system/nxplayer: Release buffer before session and release 19060 semaphore in nxplayer_setvolume system/nxplayer/nxplayer.c: 19061 Remove & for apb->samp reference. It is already a pointer. From Xiang Xiao. 19062 - system/nxplayer/nxplayer.c: Add playraw command From ZhongAn. 19063 - apps/system/nxrecorder: Add nxrecorder application From ZhongAn. 19064 - apps/system/popen: Add an implementation of the standard popen() 19065 and pclose() OS interfaces. These are implemented as applications 19066 vs. part of the OS because they depend on NSH. Untested on 19067 initial commit. From Gregory Nutt. 19068 - apps/system/system and popen: Adapt so that these can be used in 19069 the KERNEL build mode. In this case, simply replace task_spawn() 19070 with posix_spawn(). This depends on the existence of some 19071 environment where /bin/sh exists and can be used to execute one 19072 NSH command. For the case of system(), this change was more 19073 complete because it previously used task_create(). Now it uses 19074 either task_spawn() or posix_spawn(), depending upon the 19075 configuration. From Gregory Nutt. 19076 - apps/system/taskset: Add taskset command for SMP systems. This 19077 command can be used to retrieve or set a process's CPU affinity. 19078 For example, 19079 19080 nsh> taskset -p 4 19081 pid 4's current affinity mask: 2 19082 19083 nsh> taskset -p 3 4 19084 pid 4's current affinity mask: 3 19085 19086 nsh> taskset -p 1 busyloop & 19087 19088 From Masayuki Ishikawa. 19089 - apps/system/zmodem: Support -p <path> for rz to change the folder 19090 for the received file. Switch debug output from printf to 19091 syslog. Send the next packet for ZME_ACK in ZMS_SENDING to avoid 19092 rz on the host side stuck make send work reliable even without 19093 hardware flow control. From Xiang Xiao. 19094 19095 * Network Utilities: apps/netutils: 19096 19097 - apps/netutils/dhcpc: Activates BINDTODEVICE if available. From 19098 Sebastien Lorquet. 19099 19100 * Wireless Utilities: apps/wireless: 19101 19102 - apps/wireless/i8sak: i8sak daemon now gets shutdown if not in use. 19103 Previously, once the i8sak daemon was started, by running any 19104 command, it would stay running. This means that if you want to use 19105 i8sak to setup your network, but then want exclusive access to the 19106 char device, or network device, you have to manually shutdown the 19107 i8sak daemon. Now the daemon stays active as long as required to 19108 finish any commands, or stays open if a new command keeps it on, 19109 but when all work is finished, it shuts down. From Anthony Merlino. 19110 19111 * Filesystem Utilities: apps/fsutils: 19112 19113 - mkfatfs: Clean up some name BS_ and MBR_ refer to the same record 19114 and should use the same naming (MBR_). From Gregory Nutt. 19115 - mkfatfs: Add definitions for the FAT boot record (FBR). From 19116 Gregory Nutt. 19117 - mksmartfs: Add a check to see if the SmartFS is already 19118 formatted. From Xiang Xiao. 19119 19120 * Graphic Utilities: apps/graphics: 19121 19122 - graphics/littlevg/: Update LVGL to version 5.1.1 From Alan 19123 Carvalho de Assis. 19124 19125 * Test Utilities: apps/testing: 19126 19127 - testing/unity: Add Unity - unit testing library from 19128 ThrowTheSwitch.org. From Mateusz Szafoni. 19129 19130Bugfixes. Only the most critical bugfixes are listed here (see the 19131ChangeLog for the complete list of bugfixes and for additional, more 19132detailed bugfix information): 19133 19134 * Core OS: 19135 19136 - Signals: Signal handlers maybe run with interrupts enabled or 19137 disabled, depending on how the task the received the signal was 19138 blocked. (i.e.: If sem_wait() is called, then we disable 19139 interrupts, then block the currently running task). This could be 19140 dangerous, because user code would be running with interrupts 19141 disabled. 19142 This change forces interrupts to be enabled in up_sigdeliver() 19143 before executing the signal handler calling up_irq_enable() 19144 explicitly. This is safe because, when we return to normal 19145 execution, interrupts will be restored to their previous state when 19146 the signal handler returns. From Gregory Nutt (Based on a 19147 recommendation by Mark Shulte). 19148 - Signals: Lock the scheduler while while killing the children so 19149 that we do not lose priority and let the task group continue to 19150 run in an indeterminate state. From Gregory Nutt. 19151 - Groups: Fix a deadlock when loading an ELF From Masayuki Ishikawa. 19152 - Groups: In some circumstances, group_killchildren() could have 19153 called pthread_cancel() to kill a task. Also, the behavior would 19154 not be as expected if a pthread had cancellation disabled. From Gregory Nutt. 19155 - Posix Message Queues: mq_notify() fix - only part of struct copied 19156 to internal structure. As source address the address of the struct 19157 member sigev_value was used, and it is not located the start of the 19158 struct. This leads to invalid data being copied to internal 19159 structure. Both source and destination should be of type struct 19160 sigevent* . From Simon Liedl. 19161 - vfork(): vfork operation needs to allocate and copy the task 19162 argument too. Also correction of the address correction cannot 19163 depend on the stack pointer since it is not available in all 19164 architectures. Rather calculate the offset from the stack 19165 allocation pointer From Xiang Xiao. 19166 - IRQ Dispatch: Ensure vector never points to NULL since interrupt 19167 may happen before irq_initialize() From Xiang Xiao. 19168 - Work Queue: workqueues don't need set global data to zero since 19169 .bss is cleared automatically. Removing this unnecessary 19170 initialization also avoids the loss the work items queued before 19171 initialization. From ligd. 19172 - Work Queue: Remove work queue polling delay to simplify the code 19173 logic and save the power. From xuanlin. 19174 - syslog: Fix syslog crash on 64bit simulation. From anchao. 19175 - Pipes: Write to a pipe when there are no readers from the pipe 19176 should return -EPIPE. From ligd. 19177 - System Calls: Fix 6th parameter type of posix_spawnp in 19178 syscall.csv From Masayuki Ishikawa. 19179 - System Calls: Remove unused SYS_nnetsocket from syscall.h. Because 19180 SYS_nnetsocket is not implemented so far, it should be removed so 19181 that SYS_prctl can work correctly. From Masayuki Ishikawa. 19182 - Binary Loader: Refactor binfmt_exec.c. This change also fixes an 19183 argv issue for CONFIG_SCHED_ONEXIT=n or CONFIG_SCHED_HAVE_PARENT=n 19184 From Masayuki Ishikawa. 19185 - Binary Loader: Re-architect the way that loadable ELF or NXFLAT 19186 modules are unloaded. Memory resources must be recovered when the 19187 task loaded into memory exits. The original implementation used 19188 the death-of-child SIGCHLD signal to perform the unload. There are 19189 several problems with this: It is overly complex, it requires that 19190 the parent task stay resident while the loaded task runs, and it 19191 has fatal logic flaws in the protected and kernel model builds 19192 because the user signal handler attempts to run in the kernel 19193 address space. This corrects the issue using a mindlessly simply 19194 BINFMT callback when the task exits. From Gregory Nutt. 19195 - ELF Binary Loader: Set priority level to default if parent has no 19196 priority. From anchao. 19197 19198 * File System/Block and MTD Drivers: 19199 19200 - Auto-mounter: Ignore return values from work_cancel(). From 19201 Gregory Nutt. 19202 - SmartFS: Fixed filesystem corruption when writing to small file 19203 after open(... O_APPEND). From Dmitriy Linikov. 19204 - SmartFS stat(): A previous change added support for checking if a 19205 descriptor is a socket in fstat().' but it changed sys/stat.h in 19206 way that breaks smartfs file-type stat flags. CROMFS is similarly 19207 broken, as tools/gencromfs.c was not updated to match the 19208 sys/stat.h changes. This commit fixes both issues. It probably is 19209 not a good idea to use NuttX sys/stat.h bit-field values directly 19210 in stored structure of filesystem. From Jussi Kivilinna. 19211 - HostFS: Update duplicated definitions in HOSTFS that must match 19212 NuttX values. From ligd. 19213 - HostFS: Ensure f_type is equal to HOSTFS_MAGIC. From Xiang Xiao. 19214 - ROMFS: Make romfs_devread32 more portable From anchao. 19215 - TmpFS: Correct logic in tmpfs_ioctl() that extracts the priv state 19216 structure from the file system structures. It was not getting the 19217 right value and causing mmap() to fail. Noted by Jesse. From 19218 Gregory Nutt. 19219 - ProcFS network statistics: Was not handling the output correct for 19220 the case of an IEEE 802.11 device. From Gregory Nutt. 19221 - ProcFS IRQs: Fix occasional computation error when fracpart >= 19222 1000 From Xiang Xiao. 19223 19224 * Networking/Network Drivers: 19225 19226 - TAP/TUN: Fixed custom tun devname formatting. From Dmitriy Linikov. 19227 - Network Drivers: This change attempts remove some long standard 19228 confusion in naming and some actual problems that result from the 19229 naming confusion. The basic problem is the standard MTU does not 19230 include the size of the Ethernet header. For clarity, I changed 19231 the naming of most things called MTU to PKTSIZE. For example, 19232 CONFIG_NET_ETH_MTU is now CONFIG_NET_ETH_PKTSIZE. This makes the 19233 user interface a little hostile. People think of an MTU of 1500 19234 bytes, but the corresponding packet is really 1514 bytes (including 19235 the 14 byte Ethernet header). A more friendly solution would 19236 configure the MTU (as before), but then derive the packet buffer 19237 size by adding the MAC header length. Instead, we define the 19238 packet buffer size then derive the MTU. 19239 The MTU is not common currency in networking. On the wire, the 19240 only real issue is the MSS which is derived from MTU by subtracting 19241 the IP header and TCP header sizes (for the case of TCP). Now it 19242 is derived for the PKTSIZE by subtracting the IP header, the TCP 19243 header, and the MAC header sizes. So we should be all good and 19244 without the recurring 14 byte error in MTU's and MSS's. From 19245 Gregory Nutt. 19246 - netdev: Fix.. Too many calls to net_unlock() From Gregory Nutt. 19247 - IPv6: There are many different checks for IPv6 multicast 19248 addresses. Most of the checks are different. RFC 3513 clearly 19249 specifies how to detect an IPv6 multicast address: they should 19250 begin with 0xffxx. I did not change some of the checks in 19251 ipv6_input.c, however. In that file, the comments indicate that 19252 the code should only pick of certain multicast address that begin 19253 with 0xff02. From Gregory Nutt. 19254 - ARP: Fix some backward logic in an if condition. From Gregory 19255 Nutt. 19256 - TCP Re-assembly: Rename CONFIG_TCP_REASSEMBLY to 19257 CONFIG_IPv4_REASSEMBLY. Add some fixes to get a clean compile with 19258 CONFIG_IPv4_REASSEMBLY enabled. There are several problems with 19259 the current implementation: It is untested (and depends on 19260 CONFIG_EXPERMIMENTAL). It uses some Ethernet specific definitions 19261 (and depends on CONFIG_NET_ETHERNET). There is only a single 19262 reassembly buffer. The last two issues prevent use of this feature 19263 in any context where IPv4 packets may be reassembled for multiple 19264 network devices concurrently). From Gregory Nutt. 19265 - TCP: Set the default TCP MSS to the value required by RFC 879 and 19266 never change it under any circumstance unless the remote host 19267 requests a larger MSS via an option the TCP header. From Gregory 19268 Nutt. 19269 - TCP: Fix a deadlock condition that can occur when (1) all network 19270 logic runs on a single work queue, (1) TCP write buffering is 19271 enabled, and (2) we run out of IOBs. In this case, the TCP write 19272 buffering logic was blocking on iob_alloc() with the network 19273 locked. Since the network was locked, the device driver polls that 19274 would provide take the write buffer data and release the IOBs could 19275 not execute. This fixes the problem by unlocking the network lock 19276 while waiting for the IOBs. From Gregory Nutt. 19277 - TCP: Remove g_netstats.tcp.syndrop++ from tcp_data_event() From 19278 Masayuki Ishikawa. 19279 - TCP Monitor: Fix net unlock issue when tcp close. This bug could 19280 leave the net locked. From zhangyuan7. 19281 - UDP: When sending a broadcast (or multicast) packet do not attempt 19282 to look up the device by the destination IP address. Rather, use 19283 the locally bound address for these cases to select the correct 19284 network device. From Gregory Nutt. 19285 - UDP: Restore some legacy behavior that was lost with the 19286 implementation of CONFIG_NET_UDP_BINDTODEVICE: If no device has a 19287 local address when the broadcast packet is sent and the UDP socket 19288 is not bound to a device, there select some arbitrary device. This 19289 is certainly lunacy in the case where there are multiple network 19290 devices registered because the wrong device will probably be 19291 returned. It works find, however, for the legacy case where only a 19292 single network device is registered. From Gregory Nutt. 19293 - UDP: Fix for network byte-order issue when checking if an address 19294 is a multicast address. From Jake Choy. 19295 - USRSOCK: Correct of semaphore usage issues. From Gregory Nutt. 19296 - USRSOCK: Fix re-definitions of struct iovec. From ligd. 19297 - ICMP/ICMPv6 Connection: Change the type of id in 19298 icmpv[6]_findconn to uint16_t From Xiang Xiao. 19299 - ICMP/ICMPv6: Fix failure to poll ICMP socket issue. From 19300 dongjianli. 19301 19302 * Wireless/Wireless Drivers: 19303 19304 - XBee: Fixes issue with timeouts. Timeouts were in ticks but 19305 should have been in ms. This caused false triggers of timeout 19306 causing redundant packets, etc. From Anthony Merlino. 19307 - BCM43xx: Add missing logic to the BCM43xx IEEE 802.11 driver to 19308 poll for more Tx data after the last transfer completes. From 19309 Gregory Nutt. 19310 - BCM43xx: Bring in some fixes from the 'Haywire' branch. From 19311 Ramtin Amin. 19312 19313 * Common Drivers: 19314 19315 - Audio: Fix compile error in i2schar.c (CONFIG_DEBUG_ASSERTIONS=y) 19316 From Masayuki Ishikawa. 19317 - Audio I2S: Fix bad NULL pointer check From Juha Niskanen. 19318 - Input: Fixed FT5x06 driver to correctly close (previously it 19319 unregistered interrupt handler during close). From Marcin Wyrwas. 19320 - MMC/SD: Fix an error that was causing SDIO multiple block 19321 transfers from achieving full performance. From Bob Feretich. 19322 - Sensors: Increases SPI frequency in MAX6675 from 400Khz to 4MHz. 19323 From Alan Carvalho de Assis. 19324 - Sensors: Remove comment references to touchscreens from ADXL345 19325 driver. From Russ Webber. 19326 - Serial: Don't overwrite nwritten unconditionally on UART write 19327 failure. From Xiang Xiao. 19328 - Serial DMA: Move head/tail pointer reset to uart_recvchars_dma 19329 since dma may be still transferring in the background. From Xiang 19330 Xiao. 19331 - Serial DMA: In DMA mode, the use of uart_disablexinit() is 19332 insufficient to protect a critical section. 19333 enter/leave_critical_section() must be used in those cases if 19334 CONFIG_SERIAL_DMA=y From Xiang Xiao. 19335 - Serial DMA: Fix typo error in uart_recvchars_dma() From Xiang Xiao. 19336 - 16550 UART: u16550_txempty() should check UART_LSR_TEMT to avoid 19337 some data left in the transmit FIFO From Xiang Xiao. 19338 19339 * ARMv7-A: 19340 19341 - ARMv7-A (and i.MX6): Add support for per-CPU IRQ and FIQ interrupt 19342 stacks (bugfix). Add support so that up_assert will print the 19343 correct interrupt stack on an assertion (FIQ stack is still not 19344 printed). From Gregory Nutt. 19345 19346 * ARMv7-R: 19347 19348 - ARMv7-R: Fix some wrong configuration of program status 19349 register. PSR_E_BIT bit should be set for big endian system. 19350 PSR_A_BIT bis is set automatically as arm cortex-r4 reference 19351 manual 3.7.4. So we don't need to set this bit. From EunBong Song. 19352 - ARMv7-R: Fix some wrong MPU register definition. Change 19353 MPU_RBAR_ADDR_MASK and MPU_RACR_TEX_SHIFT mask as arm cortex-r4 19354 reference manual. Region Base Address Register 0-4 bits are 19355 reserved. MPU Region Access control register type 3-5 bits. From 19356 EunBong Song. 19357 19358 * ARMv7-M: 19359 19360 - ARMv7-M, Cortex F7: Add a configuration to enable workaround for 19361 r0p1 Errata 837070: Increasing priority using write to BASEPRI does 19362 not take effect immediately. This update is required to be 19363 serialized to the instruction stream meaning that after this update 19364 completes, it takes effect immediately and no exceptions of lower 19365 priority than the new boosted priority can preempt execution. 19366 Because of this erratum, the priority boosting does not take place 19367 immediately, allowing the instruction after the MSR to be 19368 interrupted by an exception of lower priority than the new boosted 19369 priority. This effect is only limited to the next instruction. 19370 Subsequent instructions are guaranteed to see the new boosted 19371 priority. This was raised in Bitbucket issue 113 from Vadzim 19372 Dambrouski. From Gregory Nutt. 19373 - ARMv7-M: MPU: mpu_log2regionceil needs take into account the 19374 offset too From Xiang Xiao. 19375 - ARMv7-M MPU: The prototype of mpu_log2regionfloor() changed; an 19376 additional parameter was added. However, none of the calls to 19377 mpu_log2regionfloor() were updated to pass the new, additional 19378 parameter. From Gregory Nutt. 19379 19380 * Infineon XMC4xxx Drivers: 19381 19382 - XMC4 SPI: XMC4 SPI was working only for the first transfer From 19383 Alan Carvalho de Assis. 19384 19385 * Microchip/Atmel SAMv7 Drivers: 19386 19387 - SAMv7 MCAN: Correct an error in the BUS_OFF reporting. In case of 19388 BUS_OFF the old implementation was leading to a package storm. Now 19389 it reports the error condition BUS_OFF only once. From Frank 19390 Benkert. 19391 19392 * NXP/Freescale LPC43xx Drivers: 19393 19394 - LPC43xx CAN: Fix lpc43 CAN configuration. Configuration settings 19395 were used and documented in README.txt files, but never in any 19396 Kconfig file. From Gregory Nutt. 19397 - LPC43xx: Make WWDT usable again. LPC43xx WWDT driver was not 19398 updated when irq_dispatch grew an argument parameter. Also fixes 19399 two typos and a naming inconsistency (WWDT vs. WWDG). From Jakob 19400 Haufe. 19401 19402 * NXP/Freescale Kinetis Drivers: 19403 19404 - kinetis: USB0 fix interrupt storm on error. The ERROR bit of 19405 USBx_ISTAT needed to be cleared once an error occurs. From David 19406 Sidrane. 19407 - Kinetis: SDHC fix SDIO driver so that DMA works. There were 2 19408 problems. The first was that the interrupt did test DINT and raise 19409 a completion events. But since DINT is just an indication of DMA 19410 completion, TC is a valid way to determine that the transfer is 19411 complete. The second problem is that Software Reset For DAT Line 19412 SDHC_SYSCTL[RSTD] clears the bits 24-0 in SDHC_PROTO this looses 19413 the wide bus setting DTW From David Sidrane. 19414 - Kinetis: (1) PIT add Lifetime and Chaining, (2) flexcan fix 19415 duplicate line and ordering, (3) kinetis_lowput.c LPUART data 19416 format with parity fix. The 9-bit data mode is typically used with 19417 parity to allow eight bits of data plus the parity, (4) lowputc 19418 LPUART_BAUD_INIT has to be defined. Build fails with test case 19419 enable LPUART0 and make UART1 console. If HAVE_LPUART_DEVICE is 19420 defined then LPUART_BAUD_INIT has to be defined even if the LPUART 19421 is not the console From David Sidrane. 19422 - Kinetis: I2C ensure timeout on bus error. The code had a dead 19423 wait on I2C_S_BUSY. Noise on the bus would cause the driver to 19424 hang. Add timeout on invalid states of I2C_S_BUSY to allow the 19425 upper layers do deal with restart or abort. From David Sidrane. 19426 19427 * NXP i.MXRT Drivers: 19428 19429 - i.MXRT Ethernet: I finally got the Ethernet CRC32 to work properly 19430 after the FAE pointed me in the right direction: (1) Added CRC32 19431 functions for multicast address filtering, (2) Do not reset PHY 19432 settings when doing an ifup, (2) Use chip's unique id as the device 19433 MAC, and (4) Enable discard enet frames with errors at PHY layer. 19434 From Jake Choy. 19435 19436 * On Semi LC823450 Boards: 19437 19438 - LC823450-XGEVK: Fix parallel build on lc823450-xgevk. This change 19439 fixes an archive file (*.a) corruption by locking $(TOPDIR). 19440 Please note that locking the current directory is insufficient 19441 because some archive files such as libapps.a are specified with 19442 absolute path. From Masayuki Ishikawa. 19443 - LC823450-XGEVK: Change IOB related params for rndis. Since TCP 19444 flow control scheme was changed, HTTP audio streaming has not been 19445 working. These IOB params are not optimized but HTTP audio 19446 streaming now works. From Masayuki Ishikawa. 19447 19448 * STMicro STM32: 19449 19450 - STM32 F7: Fix compile error caused by intentional use of fall 19451 through From Daniel Agar. 19452 19453 * STMicro STM32 Drivers: 19454 19455 - STM32 F1-F4: Port Bob Feritich's change to STM32 F2 and F4 which 19456 appear to have identical SD support and I/O compensation 19457 requirements. 19458 - STM32 F1-F4, STM32 F7, and STM32 L4: The STM32 RTC driver was 19459 being selected by the global CONFIG_RTC option. That is in 19460 correct. For example, if you want to disabled the STM32 RTC and 19461 use an external RTC you cannot because the external RTC also 19462 depends on the global CONFIG_RTC. The solution is to add a new 19463 CONFIG_STM32xx_RTC configuration option the permits to you select 19464 or deselect the STM32 RTC but still be able to select the external 19465 RTC. From Gregory Nutt. 19466 - STM32 F3 I2C: Fix compile error with I2C reset. From Juha 19467 Niskanen. 19468 - STM32 F7 Serial: Fix ioctl TIOCSSINGLEWIRE The TRM notes that UE 19469 must be disabled in order to write HDSEL in USART_CR3. This was not 19470 being done, so calls to TIOCSSINGLEWIRE were silently failing. 19471 This change checks the state of UE in USART_CR1, clears the UE bit 19472 before writing HDSEL, then re-enables it if necessary. From Kurt 19473 Kiefer. 19474 - STM32 F7 DMA: DMA macros did not account for the increase from 8 19475 to 16 DMA channels. From Gregory Nutt. 19476 - STM32 F7 I2C: I2C reset Configure I2C pins as GPIO output. Pins 19477 were reset to inputs in the deinit(). This resets them to outputs. 19478 From David Sidrane. 19479 - STM32 F7: All of the SDMMC pins were set to 50 MHz, but not the 19480 clock. This sets the clock to 50 MHz also. This combined with 19481 turning on I/O compensation makes intermittent failures go away. 19482 From Bob Feritich. 19483 - STM32 F7: Port Bob Feritich's change to SDMMC2 and to all other 19484 STM32 F7 architectures. Also add a configuration option to 19485 automatically enable I/O compensation. From Gregory Nutt. 19486 - STM32 F7 SDMMC: Fix data timeout errors with multi-block 19487 transfers. From Bob Feretich. 19488 - STM32 L4: Corrects some mistakes in pin definitions for the 19489 STM32 L4 family. According to datasheet of STM32L496xx, STM32L475xx 19490 and STM32L443XX the AF2 of PE14 is TIM1_BKIN2 not TIM2_BKIN. From 19491 Daniel Pereira Carvalho. 19492 - STM32 L4: Avoid using redundant CONFIG_STM32L4_STM32L4X2. This is 19493 almost always same as CONFIG_STM32L4_STM32L4X3. Avoid duplication 19494 to reduce macro clutter. This patch limits 19495 CONFIG_STM32L4_STM32L4X2 usage to dependency tracking and pinmap. 19496 Also enable ADC for CONFIG_STM32L4_STM32L4X5 (untested, but same 19497 RM). From Juha Niskanen. 19498 - STM32 H7 Serial: don't include stm32_dma.h From raiden00pl. 19499 19500 * STMicro STM32 Boards: 19501 19502 - STM32F4-Discovery: Fix pca9635pw LED driver compilation on 19503 STM32F4-Discovery. From Alan Carvalho de Assis. 19504 - STM32F4-Discovery: Krassimir Cheshmedzhiev claims that sys/types.h 19505 needs to be included in the RGB LED file to avoid undeclared 'OK' 19506 From Gregory Nutt. 19507 - STM32F4-Discovery: Missing EXTERN(_vectors) in linker script. 19508 From Gregory Nutt. 19509 - Nucleo-L422KC: Fix RAM size; STM31L4x2xx has only 64Kb of RAM. 19510 Remove references to I2C and SDIO: There is no I2C2 or SDIO on the 19511 STM32F4x2xx. From Daniel P. Carvalho. 19512 - Nucleo-L422KC: Fix stm32_userleds. After change LD2 to LD3 in 19513 board.h stm32_userleds.c was broken. From Daniel P. Carvalho. 19514 - Nucleo-L422KC: Fix TIMx clock configuration. Also removes 19515 definitions related to timers not available in the STM32L432KC. 19516 From Daniel Pereira Carvalho. 19517 - Nucleo-L452RE: Fix TIMx clock configuration. This is cloned from 19518 similar change to the Nucleo-L422KC. Also fixes DAC build 19519 failure. From Juha Niskanen. 19520 - B-L475E-IOT01A: Fix copy paste errors in names: 19521 stm32_bringup->stm32l4_bringup. Noted by Freemans Goden. From 19522 Gregory Nutt. 19523 - STM32VL-Discovery: Changed the status LED to be the green one as 19524 mentioned in the README file. Removed the global array for buttons 19525 and replace it with the only button. Improve defconfig for the nsh 19526 configuration. From Ouss4. 19527 19528 * C Library/Header Files: 19529 19530 - libc audio: Call nxsem_destroy in apb_free. From Xiang Xiao. 19531 - libc netdb: The 'port' argument to the static alloc_ai() function 19532 is always in network byte order. However, that static function was 19533 still calling HTONS() on the port, incorrectly converting it back 19534 to host byte order. From Gregory Nutt. 19535 - libc netdb: Fix a link error in lib_gethostbynamer.c with protected 19536 build. NOTE: g_lo_ipv4addr also exists in 19537 net/loopback/lo_globals.c which can be linked with kernel build 19538 only. From Masayuki Ishikawa. 19539 - libc unistd : Fix backward conditional logic in Kconfig. From 19540 Gregory Nutt. 19541 - include/nuttx/compiler.h: Fix warning: __cplusplus is not defined. 19542 Some gcc derived compiler do not define __cplusplus From Xiang 19543 Xiao. 19544 - include/nuttx/fs/binfs.h: Fix warning: Type defaults to 'int' in 19545 declaration of 'mountpt_operations' From Xiang Xiao. 19546 - include/nuttx/net/ethernet.h: Remove CONFIG_NET_ETHERNET guard 19547 From Xiang Xiao. 19548 - include/nuttx/semaphore.h: don't include nuttx/fs/fs.h. (1) Avoid 19549 nested loops if CONFIG_SIG_EVTHREAD enabled, (2) semaphore.h 19550 doesn't depends on fs.h. From Gregory Nutt. 19551 - include/crc64.h: Fix warning: integer constant is too large for 19552 its type From Xiang Xiao. 19553 - include/limits.h and include/sys/types.h: Fix warning about 19554 'SIZE_MAX' redefined. include/nuttx/usb/audio.h: Fix warnings due 19555 to '-' used whete '_' intended. From Xiang Xiao. 19556 - include/spawn.h: Fix posix_spawnattr_destroy warning: 'the 19557 address of attr will always evaluate as true' From Xiang Xiao. 19558 - include/sys/types: Move wint_t and wctype_t from wchar.h to 19559 types.h. This change is compatible as before since wchar.h 19560 include types.h indirectly. This fixes a compilation error with 19561 newlib's math.h: 'unknown type name wint_t' From Xiang Xiao. 19562 - apps/include/netutils/netlib.h: Eliminate a warning about 19563 AF_UNSPEC and AF_INET not defined. From Gregory Nutt. 19564 19565 * Build System: 19566 19567 - Build System: Fix parallel build in making context. This change 19568 avoids running $(MKSYSCALL) and .context in parallel and ensures 19569 that tools/mksyscall is built before it is actually used. From 19570 Masayuki Ishikawa. 19571 - Kconfig files: Fix several errors noted by Alex Denisov in 19572 Bitbucket issue 115. From Gregory Nutt. 19573 - apps Build System: Fix an error when building apps/ without 19574 nuttx/, using only the NuttX export package and assuming that the 19575 nuttx/ directory in not even present. In this case, the problem 19576 fixed where the apps/Make.defs file was selecting tools from the 19577 /tools directory which does not exist because TOPDIR=apps/import. 19578 Instead, for this build case, I have not thought of any option but 19579 to duplicate scripts as necessary in the apps/tools directory. 19580 Also added a top-level target to compile the symbol table. Misc 19581 fixes: quoting in scripts, some errors in script syntax. From 19582 Gregory Nutt. 19583 - apps/Application.mk: If a loadable module is generated the we 19584 need to add logic to remove the loadable module in the 'make 19585 clean' logic. From Gregory Nutt. 19586 19587 * Tools: 19588 19589 - nuttx/tools/Makefile.unix: Was not cleaning up export directory 19590 if it was left from a failed export. From Gregory Nutt. 19591 - apps/tools: Fix an error in mksymtab.sh From Masayuki Ishikawa. 19592 19593 * NSH Library: apps/nshlib: 19594 19595 - apps/nshlib: Fix 'while' and 'until' loop condition The loop 19596 condition logic was inverted: 'while true; do echo "test"; done' 19597 would exit immediately, while using 'until' would stay in the 19598 loop. This is the opposite of how it is supposed to work. The 19599 reason is that 'state' was set wrong because 'whilematch' is a 19600 bool. From Beat Küng. 19601 - apps/nshlib: I was able to cause an assertion with some typos in 19602 testing the 'fi' command. Not an important thing, but this will 19603 protect against the assertion. From Gregory Nutt. 19604 - apps/nshlib: Increase the default configuration for the maximum 19605 number of command line arguments to 7 (CONFIG_NSH_MAXARGUMENTS). 19606 This is needed for 'mount' with the -o option. From Xiang Xiao. 19607 - apps/nshlib: Do not dereference NULL 'pstate' in nsh_console.c. 19608 From Juha Niskanen. 19609 19610 * Examples/Tests: apps/examples: 19611 19612 - apps/examples: Remove illegal calls into OS to initialize BINFMT 19613 support. This must be moved to the board initialization logic 19614 within the OS. From anchao. 19615 - apps/examples/nettest: Fix typo: NET_LOOPBACK -> 19616 CONFIG_NET_LOOPBACK nettest: Fix compilation error. Should enable 19617 NET_SETSOCKOPT for preventing compilation error. From EunBong Song. 19618 - apps/examples/ostest: Signal handling tests should use the same 19619 configurable stack size as used in other tests, not 19620 PTHREAD_STACK_DEFAULT. From Gregory Nutt. 19621 - apps/examples/ostest: Attempt to make the nested signal test 19622 compatible with the suspend/resume test. Some signals cannot be 19623 caught when the suspend/resume configuration is in place. From 19624 Gregory Nutt. 19625 - apps/examples/smps: Fixes in some printf and in Kconfig. From 19626 Mateusz Szafoni. 19627 19628 * System Utilities: apps/system: 19629 19630 - apps/system/cu: (1) Protect from possible re-definition of signal 19631 values, (2) Fix CU ctrl-C hand when remote core hang. From ligd. 19632 - apps/system/i2c: Fix a backward comparison in i2c_main.c. Noted 19633 by Jakob Haufe. From Gregory Nutt. 19634 - apps/system/nsh: Fix compile errors with 19635 CONFIG_EXAMPLES_NSH_SYMTAB=y. From Masayuki Ishikawa. 19636 - apps/system/ping and ping6: Send ID and seqno in network byte 19637 order. From Xiang Xiao. 19638 - apps/system/ping and ping6: Change dependency in ping and ping6 19639 Kconfig. These may be implemented in users sockets and, hence, 19640 may need to be available even if ICMP and ICMPv6 sockets are not 19641 support. From Xiang Xiao. 19642 - apps/system/system: Add 'const' to make function prototype 19643 compatible with OpenGroup.org requirement From Xiang Xiao. 19644 - apps/system/zmodem: Fix error "sz_main.o: No such file or 19645 directory" From Xiang Xiao. 19646 19647 * Network Utilities: apps/netutils: 19648 19649 - apps/netutils/ftpc: Fix handling of url-encoded strings From 19650 Dmitriy Linikov. 19651 - apps/netutils/ping: Remove unsupported ping. netutils/ping is not 19652 supported anymore. It's better to remove this folder for 19653 preventing confusing. ping is supported by system/ping. From 19654 EunBong Song. 19655 19656 * Wireless Utilities: apps/wireless: 19657 19658 - apps/wireless/wapi: Remove dependency on CONFIG_EXPERIMENTAL from 19659 Kconfig From Gregory Nutt. 19660 19661 * GPS Utilities: apps/gpsutils: 19662 19663 - apps/gpsutils/minmea: Include wchar.h in minmea.c file to fix 19664 wint_t error From Alan Carvalho de Assis. 19665 19666 * Interpreters: apps/interpreters: 19667 19668 - Remove apps/interpreters/micropthon. There are several reasons 19669 for this. (1) the current version 1.3.8 is very old and no one is 19670 supporting it. (2) the port only includes the core micropython 19671 logic and none of the Python libraries. As such it is useless in 19672 any real application. (3) There have recently been compile 19673 failures reported. It looks like this is due to changes in newlib 19674 based toolchains that now bring in incompatible newlib header 19675 files. See issue 104 at 19676 https://bitbucket.org/nuttx/nuttx/issues/104/build-micropython-138-error. 19677 With no one dedicated to the support of micropython, it can no 19678 longer be carried in the NuttX apps/ repository. From Gregory Nutt. 19679 19680NuttX-7.27 Release Notes 19681------------------------ 19682 19683The 127th release of NuttX, Version 7.27, was made on November 14, 2018, 19684and is available for download from the Bitbucket.org website. Note 19685that release consists of two tarballs: nuttx-7.27.tar.gz and 19686apps-7.27.tar.gz. These are available from: 19687 19688 https://bitbucket.org/nuttx/nuttx/downloads 19689 https://bitbucket.org/nuttx/apps/downloads 19690 19691Both may be needed (see the top-level nuttx/README.txt file for build 19692information). 19693 19694Additional new features and extended functionality: 19695 19696 * Core OS: 19697 19698 - Assertions: Add 'BOARD_ASSERT_RESET_VALUE' in config/Kconfig and 19699 replace reboot status '0' to 'CONFIG_BOARD_ASSERT_RESET_VALUE'. From 19700 Gregory Nutt. 19701 - Assertions: up_registerdump capture the general register if not yet 19702 saved and up_saveusercontext is implemented, the register dump is very 19703 useful to find the cause of failure. From Xiang Xiao. 19704 - Assertions: up_stackdump() dump the full stack if stack overflow the 19705 stack info is very useful to find the backtrace From Xiang Xiao. 19706 - binfmt/ and libs/libc: Make exepath_*() more common: Move 19707 exepath_*() related code to libc/misc, rename exepath_ to envpath_, 19708 and rename BINFMT_EXEPATH to LIBC_ENVPATH. From nchao. 19709 - CLOCK: Support CLOCK_MONOTONIC in clock_getres.c. From Xiang Xiao. 19710 - Clock Timekeeping: Use clock_basetime() to initialize 19711 g_clock_wall_time to get the best initial RTC value and initialize 19712 g_clock_last_counter too since the hardware may not start counting 19713 from zero. From Xiang Xiao. 19714 - exit(): Add SCHED_EXIT_KILL_CHILDREN option to kill all child threads 19715 when the main thread of a task exits. From nchao. 19716 - IOBs: Add an IOB notifier that will notify any registered threads 19717 that want to known when an IOB has been freed. This is basically just 19718 a wrapper around the generic notifier. Includes a divider that can be 19719 used to reduce the rate of IOB notifications. From Gregory Nutt. 19720 - Memory Manager: In mm_free(), add DEBUGASSERT()'s to catch memory 19721 corruption early. From Petteri Aimonen. 19722 - Memory Manager: Add debug option CONFG_MM_FILL_ALLOCATIONS to fill 19723 all mallocs() with recognizable value. From Petteri Aimonen. 19724 - sched/signal and syscall/: Add support for pselect() and ppoll() 19725 functions From dongjianli. 19726 - Task Groups: group_foreachchild() now iterates in reverse order since 19727 the callback (e.g. group_killchildren) may remove the tcb from list. 19728 From zhangyuan7. 19729 - WDOG Timer: Improve accuracy of wd_gettime() in tickless mode From 19730 ligd. 19731 - Work Queues: Add a generic notification facility that runs on a work 19732 queue. The notification facility can notify a group of subscribers to 19733 an event via callbacks. This API is for use within the OS only. From 19734 Gregory Nutt. 19735 19736 * File Systems/Block and MTD Drivers 19737 19738 - FAT: Add CONFIG_FAT_LFN_ALIAS_HASH to speed up creating long 19739 filenames. Long filenames on FAT file systems have associated 8.3 19740 character alias short filenames. The traditional form of these is 19741 FILENA~1.EXT with a running count of the number of similar names. 19742 However creating this unique count can take several seconds if there 19743 are many similarly named files in the directory. Enabling 19744 FAT_LFN_ALIAS_HASH uses an alternative format of FI0123~1.TXT where 19745 the four digits are a hash of the original filename. This method is 19746 similar to what is used by Windows 2000 and later. From Petteri 19747 Aimonen. 19748 - FAT: Add CONFIG_FAT_LFN_ALIAS_TRAILCHARS alternative format for 8.3 19749 filenames. Traditional format for long filename 8.3 aliases takes 19750 first 6 characters of long filename. If this option is set to N > 0, 19751 NuttX will instead take first 6-N and last N characters to form the 19752 short name. This is useful for filenames like "datafile12.txt" where 19753 the first characters would always remain the same. From Petteri 19754 Aimonen. 19755 - FAT: if block driver wait seems to be a long one, give time for other 19756 threads to run. From Petteri Aimonen. 19757 - file_open(): Add file_open() implementation with some fully-function, 19758 interim, placeholder logic. Change occurrences of open() followed by 19759 file_detach() in the OS to file_open(). From Gregory Nutt. 19760 - MX25LF25635F: Add support to Macronix MX25LF25635F serial NOR flash 19761 From David Sidrane. 19762 - nx_open(): Add nx_open() which is the same as open() except that it 19763 does not create a cancellation point nor does it modify the errno 19764 variable. Change most other, non-controversial calls to open() to 19765 nx_open(). From Gregory Nutt. 19766 - file_ioctl(): Replace calls to ioctl() in the OS to file_ioctl(). 19767 From Gregory Nutt. 19768 - mount: Add mount() support for file systems that require MTD drivers 19769 (vs. block drivers). From Gregory Nutt. 19770 - mount: Add support for mounting a file system with either a block or 19771 an MTD driver. From Xiang Xiao. 19772 - MTD FTL: Support BIOC_FLUSH ioctl From Xiang Xiao. 19773 - MTD FTL: Make READAHEAD and WRITEBUFFER work independently of each 19774 other. There have cases we use writebuffer but not readbuffer, so the 19775 write buffer must be flushed before read. Let rwb driver do it. From 19776 zhuyanlin. 19777 - MTD FTL: Allocate eblock only when it's really needed From Xiang Xiao. 19778 - MTD FTL: Add support support unlink operation to avoid the memory 19779 leak. From Xiang Xiao. 19780 - MTD Partition: Add register_mtdpartition() for MTD partition From 19781 Xiang Xiao. 19782 - MTD Partition: Remove the hard code partition name length From Xiang 19783 Xiao. 19784 - MTD Proxy: Make MTD device accessible via a character driver proxy 19785 like block devices From Xiang Xiao. 19786 - ProcFS: Change output of the ProcFS 'env' file so that it looks more 19787 like output from the 'env' command. From Gregory Nutt. 19788 - ProcFS: Add support to provide MLD statistics at /proc/net/mld. From 19789 Gregory Nutt. 19790 - ProcFS: Remove MTD ProcFS and mtd_procfsoperations() since we can now 19791 get the same information from inode From Xiang Xiao. 19792 - ProcFS: Add /proc/version support to get version info From iuhaitao. 19793 - ProcFS: Add support for named MTD drivers in the pseudo file system. 19794 This will, eventually, allow us to mount file systems that need MTD 19795 drivers without having to fake an intervening block driver. 19796 - R/W Buffer: Don't queue work to flush write buffer if 19797 CONFIG_DRVR_WRDELAY == 0 From Xiang Xiao. 19798 - R/W Buffer: Improve the rwb_read/write overlap performance From 19799 zhuyanlin. 19800 - SIM HOSTFS: Support S_IFSOCK, DT_LNK, O_DIRECT and O_SYNC From Xiang 19801 Xiao. 19802 - SPIFFS: Brings in a NuttX port of version 0.3.7 of Peter Anderson's 19803 SPIFFS flash file system into NuttX. From Gregory Nutt. 19804 19805 * Networking/Network Drivers: 19806 19807 - Network Configuration Add new configuration CONFIG_NET_MCASTGROUP. 19808 This option is selected automatically if either CONFIG_NET_IGMP or 19809 CONFIG_NET_MLD are selected. Most conditional logic based on 19810 CONFIG_NET_IGMP replaced with conditioning on CONFIG_NET_MCASTGROUP. 19811 From Gregory Nutt. 19812 - Network Device: Add notification logic for the case where the network 19813 goes down. From Gregory Nutt. 19814 - Network Device: Rename netdev_dev_lladdrsize() to netdev_lladdrsize() 19815 and move the prototype to include/nuttx/nex/netdev.h, giving is global 19816 scope within the OS. From Xiang Xiao. 19817 - ARP: Redesign ARP table aging to simplify the net initialization 19818 From Xiang Xiao. 19819 - ARP: Check ifname match before sending packet. From Xiang Xiao. 19820 - ARP and ICMPv6: Double the delay time on each iteration for ARP/ICMP 19821 to fight work jitter better. From Xiang Xiao. 19822 - ICMP/ICMPv6: Add NET_ICMP[v6]_NO_STACK for usrsock case From Xiang 19823 Xiao. 19824 - ICMPv6: Encapsulate the link scope address generation into 19825 icmpv6_linkipaddr() From Xiang Xiao. 19826 - ICMPv6: Remove the coupling between ICMPv6 and Ethernet by moving all 19827 Ethernet stuff to neighbor_ethernet_out.c and make the mac address as 19828 first field. From Xiang Xiao. 19829 - ICMPv6 MLD: Implement Multicast Listener Discovery (MLD) protocol based 19830 on RFC 2710 and RFC 3810. From Gregory Nutt. 19831 - ICMPv6 MLD: Implement MLDv1 compatibility mode. From Gregory Nutt. 19832 - ICMPv6 MLD: Implement 'Other Querier Present Timer'. This timer is 19833 used to revert to Querier mode if there is no other querier on the 19834 network. From Gregory Nutt. 19835 - IGMP: Backport some MLD design improvements/fixes. From Gregory Nutt. 19836 - IPv4 setsockopt(): Add implementation for all IPv4 socket options that 19837 have implemented IOCTL command counterparts. From Gregory Nutt. 19838 - IPv4/6 Socket Options: Add framework to support IPv4 and IPv6 19839 protocol socket options (i.e., SOL_IP and SOL_IP6). Handling of these 19840 socket options was a necessary step on the way to ICMPv6 MLD support. 19841 From Gregory Nutt. 19842 - ICMPv6 Autoconfiguration: Don't take the network device down when 19843 reconfiguring only the IP address from within ICMPv6 logic. 19844 Recommended by Xiang Xiao in order to avoid the long delays of 19845 bringing some networks back up. Normally it is required that the 19846 network be in the "down" state when re-configuring the network 19847 interface. This is thought not to be a necessary here because: (1) 19848 The ICMPv6 logic here runs with the network locked so there can be no 19849 outgoing packets with bad source IP addresses from any asynchronous 19850 network activity using the device being reconfigured. And (2) incoming 19851 packets depend only upon the MAC filtering. Network drivers do not 19852 use the IP address; they filter incoming packets using only the MAC 19853 address which is not being changed here. From Gregory Nutt. 19854 - IPv6 Input: Add logic to skip over the variable number of IPv6 19855 extension headers that may be present between the IPv6 header and the 19856 transport layer header. The extension headers are simply ignored. 19857 This is necessary because with MLD, certain incoming messages may 19858 have, at a minimum, a Router Alert Hop-by-hop extension header. 19859 Additional changes to ICMPv6, TCP, and UDP input to handle the offset 19860 protocol headers. From Gregory Nutt. 19861 - IPv6 Neighbor: Simplify the neighbor table aging process From Xiang 19862 Xiao. 19863 - IPv6 Neighbor: Simplify neighbor_dumpentry() implementation From 19864 Xiang Xiao. 19865 - IPv6 Neighbor: neighbor_lookup() checks if the target IP belongs to 19866 one of the local network devices. From Xiang Xiao. 19867 - IPv6 Neighbor: Support neighbor_out() for multiple link layer at the 19868 same time From Xiang Xiao. 19869 - IPv6 setsockopt(): Implement the IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP 19870 socket options. From Gregory Nutt. 19871 - TCP: Extend the TCP notification logic logic so that it will report 19872 loss of connection events. From Gregory Nutt. 19873 - SLIP: Add IPv6 support and fix minor issue From Xiang Xiao. 19874 - TCP: Add TCP poll() logic to receive notifications when IOBs are 19875 freed. From Gregory Nutt. 19876 - TCP: In TCP backlog, add SOMAXCONN definition and implementation per 19877 OpenGroup.org. From zhangyuan7. 19878 - TCP/UDP: Extend send()/sendto() logic it also requires that at least 19879 one IOB is also available to be able to send. From Gregory Nutt. 19880 - TCP/UDP: Add notification logic when TCP or UDP read-ahead data is 19881 buffered. From Gregory Nutt. 19882 - TUN: Call ipv[4|6]_input dynamically by checking packet header and 19883 remove the code duplication From Xiang Xiao. 19884 19885 * Wireless/Wireless Drivers: 19886 19887 - Broadcom IEEE 802.11: Add capability for Broadcom chips to get 19888 firmware and CLM data from a mounted file system vs. in-memory data 19889 structures. From Ramtin Amin. 19890 - XBee IEEE 802.15.4: Add support for setting/getting tx power. From 19891 Anthony Merlino. 19892 19893 * Other Common Device Drivers: 19894 19895 - GPIO: Support multiple registrations of GPIO signal events. From 19896 Xiang Xiao. 19897 - INA226: Add INA226 device driver. From Daniel P. Carvalho. 19898 - MAX7219: Support all digits presented in the MAX7219 datasheet. From 19899 Alan Carvalho de Assis. 19900 - MLX90614: Add support for the Infrared Thermometer MLX90614 From 19901 Alan Carvalho de Assis. 19902 - RTC Driver: up_rtc_set_lowerhalf call clock_synchronize() for 19903 external RTC. From Xiang Xiao. 19904 - SYSLOG: Uncomment the g_syslog_channel->sc_flush call in 19905 syslog_flush(). From Xiang Xiao. 19906 - SYSLOG: syslog_initialize initialize dev/syslog too and call syslog 19907 to add the prefix and timestamp. From Xiang Xiao. 19908 - USB Composite and DFU drivers: Add support for Microsoft OS 19909 descriptors. These Microsoft-only descriptors help in loading the 19910 correct driver on Windows. They are especially helpful to give libusb 19911 access to a custom device without having to manually configure/install 19912 WinUSB driver. With this change DFU interface works automatically on 19913 Windows 10 with dfu-util 0.9 and libusb 1.0.22. On Windows 7 it still 19914 appears to need driver installation. From Petteri Aimonen. 19915 - USB DFU Device: Add DFU Runtime driver for activating boot-loader 19916 through USB command. From Petteri Aimonen. 19917 - USB RNDIS Device: Account for CONFIG_NET_GUARDSIZE in allocation of 19918 packet buffer allocation: Make USB device parameters configurable. 19919 From Sakari Kapanen. 19920 - USB RNDIS Composite Device: Fix strid comparison. Add support for 19921 composite configuration. From Petteri Aimonen. 19922 19923 * Microchip PIC32MX Boards; 19924 19925 - PCBLOGIC-PIC32MX: Remove support for the PCB Logic PIC32MX board. I do 19926 not find any references to PCB Logic on the web and I do not believe 19927 that this breakout board is available any longer. From Gregory Nutt. 19928 19929 * NXP Freescale i.MX RT: 19930 19931 - i.MXRT: Added support for the i.MXRT 106x family. From David Sidrane. 19932 19933 * NXP Freescale i.MX RT Drivers: 19934 19935 - i.MXRT: Add LPI2C driver. From Ivan Ucherdzhiev. 19936 - i.MXRT LPSPI: Add full support for the LPSPI in poll mode; includes a 19937 minor fix for LPI2C. 19938 - i.MXRT USDHC: Initial commit of the i.MXRT SDHC driver working in PIO 19939 mode. From Dave Marples. 19940 - i.MXRT USDHC: Complete the interrupt driven USDHC1 functionality for 19941 the IMXRT EVKB. Improve SD card handling in the DMA case. From Dave 19942 Marples. 19943 19944 * NXP Freescale i.MX RT Boards: 19945 19946 - IMXRT1060-EVK: Add support for the IMXRT1060-EVK. From David Sidrane. 19947 19948 * NXP LPC17xx Boards: 19949 19950 - Olimex-LPC1766STK: Add support to initialize a USB HID keyboard. Add 19951 a configuration for testing the HID keyboard. From Gregory Nutt. 19952 19953 * On Semi LPC23450 Drivers: 19954 19955 - LC823450: MPU support for FLAT build From Masayuki Ishikawa. 19956 19957 * STMicro STM32: 19958 19959 - STM32: Add support for STM32F303xD/E. From Mateusz Szafoni. 19960 - STM32 L4: Add initial support for STM32L412 and STM32L422 chips From 19961 Juha Niskanen. 19962 19963 * STMicro STM32 Drivers: 19964 19965 - STM32 ADC: Major refactor: Use STM32 ADC IP core version and ADC 19966 available functions instead of chip family names in conditional 19967 compilation. Replace family specific ADC headers with STM32 ADC IP 19968 core version headers. Configurable sample time supported for all 19969 chips, not just L1. Enable/disable interrupts supported for all 19970 chips, not just L1. Add ADC resolution configuration. From Mateusz 19971 Szafoni. 19972 - STM32 PWM: Improvements in STM32 PWM low level driver: Support 19973 complementary outputs, dead-time configuration, output polarity and 19974 IDLE state configuration. From Mateusz Szafoni. 19975 - STM32 PWM: Break and lock configuration and some cosmetics From 19976 Mateusz Szafoni. 19977 - STM32 SPI. Enable separate DMA per SPI configuration From Daniel Agar. 19978 - STM32 F7 FLASH: Allow programming OTP blocks through progmem 19979 interface From Jussi Kivilinna. 19980 - STM32 H7 I2C: Add I2C support for STM32H7. From raiden00pl. 19981 - STM32 H7 RCC: Update RCC definitions, add SPI clock configuration and 19982 some fixes in RCC. From raiden00pl. 19983 - STM32 H7 SPI: Add basic SPI support for H7. Enable SYSCFG clock in 19984 RCC. From Mateusz Szafoni. 19985 19986 * STMicro STM32 Boards: 19987 19988 - Nucleo-F302R8: Add support for Nucleo-F302R8 board From raiden00pl. 19989 - Nucleo-F302R8: Add PWM support. From Mateusz Szafoni. 19990 - Nucleo-F303ZE: Add basic support for nucleo-f303ze. From Mateusz 19991 Szafoni. 19992 - Nucleo-F303ZE: Support for ADC and ADC example. From Mateusz Szafoni. 19993 - Nucleo-L432KC: Added support for AT45DB Serial Flash From Daniel P. 19994 Carvalho. 19995 - Nucleo-L432KC: Add support for the INA226. From Daniel P. Carvalho. 19996 - Nucleo-H743ZI: Add NRF24L01 support. From Mateusz Szafoni. 19997 - Olimex-STM32-P407: Add a HID keyboard configuration. From Gregory 19998 Nutt. 19999 - STM32F4-Discovery: Add MLX90614 support for the STM32F4-Discovery 20000 board From Alan Carvalho de Assis. 20001 - STM32F429I-DISCO: Add PWM support. From Mateusz Szafoni. 20002 - STM32F429I-DISCO: Support for ADC and ADC example. From Mateusz 20003 Szafoni. 20004 20005 * MIPS32: 20006 20007 - MIPS32 Toolchain.defs: Add toolchain flags for the pinguino toolchain 20008 under Linux. From Ouss4. 20009 20010 * RISC-V: 20011 20012 - RISC-V GAP: This commit brings in support for the GAP8 architecture. 20013 The GAP8 is a 1+8-core DSP-like RISC-V MCU. Also included is support 20014 for the Gapuino GAP8 evaluation board. From hhuysqt. 20015 20016 * Other Tools: 20017 20018 - tools/tesbuild.sh: No longer installs and builds the NxWidgets 20019 libraries. They are now a port of apps/. From Gregory Nutt. 20020 20021 * Libraries/Header Files: 20022 20023 - include/net and include/sys: Align the constant values with values in 20024 the Linux kernel which makes targeting the usrsock server to Linux 20025 kernel easier. From Xiang Xiao. 20026 - include/netdb.h Add NO_ADDRESS definition From zhangyuan7. 20027 - include/netinet/in.h: Adds definitions for IPPROTO_IPV6 socket 20028 options to netinet/in.h. Adds missing fields to sockaddr_in6. Adds 20029 struct ipv6-mreq. These changes all follow the opengroup standard for 20030 netinet/in.h From Anthony Merlino. 20031 - include/netinet/in.h: Add IPv4 SOL_IP socket options for symmetry 20032 with IPv6 definitions added in a previous commit. Remove some 20033 duplicate types from sys/sockio.h. From Gregory Nutt. 20034 - include/netinet/in.h: Add other definitions required by 20035 OpenGroup.org. From Gregory Nutt. 20036 - include/netinet/in.h: Add Linux IP_PKTINFO and IPV6_PKTINFO 20037 definitions. 20038 - include/nuttx/net/ipv6ext.h: Create header file with all of the 20039 definitions of IPv6 extension headers that I could find. From Gregory 20040 Nutt. 20041 - include/nuttx/net/mld.h: Add MLD header file based on RFC2710 and 20042 RFC3810. From Gregory Nutt. 20043 - include/sys/socket.h: With increased size of struct sockaddr_in6, the 20044 size of struct sockaddr_storage in include/sys/socket.h must also be 20045 increase so that it can contain the new, larger sockaddr_in6. From 20046 Gregory Nutt. 20047 20048 - libs/libc/misc: Add implementation of CRC8-CCITT. From Alan Carvalho 20049 de Assis. 20050 - libs/libc/modlib: Add per-module library symbol table support. From 20051 nchao. 20052 - libs/libc/net: Add basic implementation for recvmsg() and sendmsg() 20053 per OpenGroup.org specification. From ligd. 20054 - libs/libc/netdb: A few improvements to getaddrinfo: (1) Use the 20055 protocol and socktype hints in returned address, (2) Ignore AI_PASSIVE 20056 argument if hostname is not NULL From Anthony Merlino. 20057 - libs/libc/netdb: Make DNS receive timeout configurable. From ligd. 20058 - libs/libc/stdio: Eliminate recursive in conversion functions of 20059 lib_vsprintf(). From Xiang Xiao. 20060 - libs/libc/string: Add some new functions defined in POSIX.1-2017: 20061 stpncpy(), strsignal(), psignal(), psiginfo(). From Gregory Nutt. 20062 - libs/libc/string: Add memrchr() function From Xiang Xiao. 20063 - libs/libc/string: Make strerror() return the string "Success" for 20064 error = 0. From Petteri Aimonen. 20065 20066 * Build System: 20067 20068 - Makefile.unix/win: Remove deletion of Eclipse project files from make 20069 distclean target. From Gregory Nutt. 20070 - apps/Application.mk: Fix some build issues. (1) Unable to found 20071 target 'context' when CONFIG_NSH_BUILTIN_APPS disabled. (2) Unable to 20072 generate multiple programs. From Chao An. 20073 - apps/Directory.mk: Fix distclean targets. Makefiles were not 20074 removing generated Kconfig files. There was then no way to remove 20075 this Kconfig files without manually deleting them one at a time. From 20076 Gregory Nutt. 20077 20078 * NSH: apps/nshlib: 20079 20080 - apps/nshlib/, apps/examples/: Update to show newer file system 20081 object types returned by stat(). From Gregory Nutt. 20082 - apps/nshlib: Add support for the 'env' command. From Gregory 20083 Nutt. 20084 - apps/nshlib: Add support for NSH local variables if 20085 CONFIG_NSH_VARS are set. These are like environment variables but 20086 are local to NSH. The importance of this is that these variables 20087 are *not* inherited when NSH creates a new task. The new command 20088 'export' was added. In this case, the NSH variable will be promoted 20089 to an environment variable and will then be inherited by any tasks 20090 executed by NSH. From Gregory Nutt. 20091 - apps/nshlib: If CONFIG_NSH_VARS=y, the NSH 'set' command with no 20092 argument will list all of the local NSH variables. From Gregory 20093 Nutt. 20094 20095 * Examples/Tests: apps/examples: 20096 20097 - apps/examples/gpio: Align with GPIO driver update From wangyanjiong. 20098 - apps/examples/ina226: Added INA226 example From Daniel P. Carvalho. 20099 - apps/examples/mld: Add a test of MLD. Provides a mechanism for some 20100 low-level bring-up of MLD. From Gregory Nutt. 20101 - apps/examples/mlx90614: Add mlx90614 test example From Alan Carvalho 20102 de Assis. 20103 - apps/examples/mlx90614/: Include support to change device address on 20104 mlx90614 From Alan Carvalho de Assis. 20105 - apps/examples/fstest: Adapt the existing fstest example for SPIFFS: 20106 For SPIFFS, add garbage collection and file system integrity IOCTL 20107 calls. Call statfs() and show state of file system on each loop. Add 20108 logic to dump logic content of SPIFFS. Ignore EINTR errors while 20109 reading or writing. Add configuration option to customize stack 20110 size. Detect when the media is full and stop writing files. Report 20111 total file size. From Gregory Nutt. 20112 - apps/examples/tcpblaster: Add an option to use poll() to pace input 20113 or output. From Gregory Nutt. 20114 - apps/examples/tcpblaster: Select CONFIG_LIBC_FLOATINGPOINT 20115 automatically. Units in output are wrong: Not Kbps bus Kb/Sec. From 20116 Gregory Nutt. 20117 - apps/examples/udpblaster: Add option to use poll() on output (only). 20118 From Gregory Nutt. 20119 20120 * System Utilities: apps/system 20121 20122 - apps/system/ping and apps/system/ping6: Set optind to zero in the 20123 error case/. Move all ping preparation work into icmp_ping. Support 20124 -W <timeout> and -s <size> option. Decouple the output from ping 20125 logic. From Xiang Xiao. 20126 - apps/system/ping and pings and apps/netutils/ping: Extract icmp ping 20127 and icmpv6 ping6 logic from system/ to C-callable library in 20128 netutils/. From ligd. 20129 - apps/system/progmem: Remove this utility. It makes illegal direct 20130 calls into the OS. From Gregory Nutt. 20131 20132 * Network Utilities: apps/netutils: 20133 20134 - apps/netutils/netlib and apps/examples/igmp: Adapt to use the 20135 corrected, semi-standard version of struct ip_msfilter. From Gregory 20136 Nutt. 20137 - apps/netutils/chat and apps/examples/chat: 'constify' chat variables 20138 and parameters From Xiang Xiao. 20139 20140 * Wireless Utilities: apps/wireless: 20141 20142 - apps/wireless/ieee802154/i8sak: Properly shuts down event thread. 20143 From Anthony Merlino. 20144 - apps/wireless/ieee802154/i8sak: Fixes i8sak name. Accidentally renamed 20145 to i8ask in recent changes From Anthony Merlino. 20146 - apps/wireless/ieee802154/i8sak: Adds support for getting/setting 20147 transmit power. From Anthony Merlino. 20148 20149 * Graphic Utilities: apps/graphics: 20150 20151 - apps/graphics/NxWidgets: Move the NxWidgets repository into the apps/ 20152 repository. Remove old apps/NxWidgets directory. Move NxWidgets 20153 files into apps/graphics/NxWidgets. Integrate configuration/build 20154 system. Fix file paths in file headers. Remove some duplicate 20155 tools. Add new NxWidgets Unit Test configuration and build logic. 20156 From Gregory Nutt. 20157 - apps/graphics/NxWidgets: Add CNxString string + operator and 20158 ::format() function. Add CNumericEdit option to include unit name 20159 after the value. Make CNxWidget useWidgetStyle() public. From 20160 Petteri Aimonen. 20161 - apps/graphics/NxWidgets: Add CLabelGrid control for displaying text 20162 in grid format. From Petteri Aimonen. 20163 20164Bugfixes. Only the most critical bugfixes are listed here (see the 20165ChangeLog for the complete list of bugfixes and for additional, more 20166detailed bugfix information): 20167 20168 * Core OS: 20169 20170 - Clock: Remove g_monotonic_basetime and g_clock_monotonic_time since 20171 we don't need ensure monotonic time start from zero as state here: 20172 http://pubs.opengroup.org/onlinepubs/009696899/functions/clock_getres.html 20173 From Xiang Xiao. 20174 - Clock: Don't call up_timer_gettime in clock_gettime() and 20175 clock_systimer() to ensure the return value from them consistent with 20176 clock_systimespec From Xiang Xiao. 20177 - Clock Initialization: clock_inittime() needs to be done with 20178 CONFIG_SCHED_TICKLESS and clock_initialize should skip 20179 clock_inittime() for external RTC case since the RTC isn't ready yet. 20180 From Xiang Xiao. 20181 - IOBs: Work around some issues with the IOB throttle semaphore. It 20182 has some odd behaviors that can cause assertions in sem_post(). Also, 20183 it seems to get outside of its range occasionally. Need to REVISIT 20184 this. From Gregory Nutt. 20185 - IOBs: iob_navail() was returning the number of free IOB chain queue 20186 entries, not the number of free IOBs. Completely misnamed. From 20187 Gregory Nutt. 20188 - PM: Use the start time of state btime to calculate thrcnt; remove the 20189 loop whose count may be very big after the long idle From ligd. 20190 - PM Uninitialization: Fix pm_domain_s.stime un-initialize caused time 20191 error. From ligd. 20192 - sched_kfree() and sched_ufree(): This patch prevent heap corruption 20193 in a corner case where memory is freed while switching contexts. This 20194 change forces all de-allocations via sched_kfree() and sched_ufree() 20195 to be delayed. Eliminating the immediate de-allocation prevents the 20196 problem with the the re-entrant semaphore because the deallocation 20197 always occurs on the worker thread, never on the suspended task. From 20198 EunBong Song. 20199 - sigsuspend(): sigsuspend() shouldn't eat the pending signal but 20200 dispatch all instead From Xiang Xiao. 20201 - task_restart(): Was restarting tasks with all signals set in the 20202 sigprocmask set. Should have restarted with the sigprocmask cleared. 20203 Noted by Jeongchan Kim From Gregory Nutt. 20204 - unsetenv(): Fix and error in unsetenv() when un-setting the last of 20205 the environment variables. From Gregory Nutt. 20206 - waitpid(): Remove a bad error check. From Gregory Nutt. 20207 20208 * File System/Block and MTD Drivers: 20209 20210 - FAT: Fix file data corruption in fat_truncate(). From Petteri Aimonen. 20211 - Partitions: Try MTDIOC_GEOMETRY IOCTL before bops's geometry. 20212 From Xiang Xiao. 20213 - MTD Progmem: Change up_progmem_npages() to up_progmem_neraseblocks(). 20214 page is a unit for read/write operation. eraseblock is a unit for 20215 erase operation. up_progmem_npages() is a little bit confusing 20216 because it returns number of erase blocks in flash memory. This patch 20217 changes up_progmem_npages to up_progmem_neraseblocks. 20218 up_progmem_eraseblock erase a block. so it's better to return the 20219 erase block size than page size. From EunBong Song. 20220 - R/W Buffer: Fix a lock issue From Xiang Xiao. 20221 - SmartFS: Current sector should have a space for next entry size. If 20222 not, we should move to next sector. From EunBong Song. 20223 20224 * Networking/Network Drivers: 20225 20226 - 6LoWPAN: Fixes bug in uncompress_addr handling of odd postfix. This 20227 affected multicast compress/uncompress since it's the only logic that 20228 used an odd postfix. The odd byte needs to be handled first, not 20229 last. From Anthony Merlino. 20230 - ARP and ICMPv6: Don't call d_txavail directly since it may point to 20231 NULL From Xiang Xiao. 20232 - ICMPv6: icmpv6_neighbor() shouldn't use the out of scope 20233 variable(dripaddr) From Xiang Xiao. 20234 - IPv6 input: Fixes logic in ipv6_input to handle more than ff02::/16 20235 multicast addresses. Don't forward mcast packets if scope is not 20236 appropriate From Anthony Merlino. 20237 - IPv6 Input: Fix a logic error when the received IPv6 srcaddr is a 20238 multicast address. Exiting logic only supported UDP multicast. But 20239 MLD and certain other ICMPv6 packets also require acceptance of 20240 multicast packets. From Gregory Nutt. 20241 - TCP: In TCP recv window calculations, in order to receive data we 20242 must not only have IOBs available, but we must also have at least one 20243 IOB chain qentry available. Otherwise, we will advertise that we an 20244 buffer a lot of data when, in fact, we cannot. This is an 20245 experimental fix to a performance problem noted by Masayuki Ishikawa. 20246 From Gregory Nutt. 20247 - TCP: Fix compiler error and warning when CONFIG_NET_SENDFILE=y From 20248 Xiang Xiao. 20249 - TCP Input: Fix recovery when ackseq > unackseq. The comment near 20250 this line says "reset the number of outstanding, unacknowledged 20251 bytes". However, the code actually resets the whole TCP connection. 20252 It was changed to the current form in commit f034d84ea1f with no 20253 explanation of the intent. Recover the line to what it was before that 20254 commit. From Sakari Kapanen. 20255 - TCP Write Buffering: Fix buffer release handling on failed buffer 20256 allocation. Attempt to release write buffer on failed TCP write I/O 20257 buffer alloc and tryalloc failed to wrb->wb_iob assertion. From Harri 20258 Luhtala 20259 - TCP/UDP: In the POLLOUT poll logic, request an immediate Tx poll from 20260 the network device bound to the socket. From Gregory Nutt. 20261 - UDP: On a failure to find the destination device, fallback to 20262 netdev_default device if the device is not found, rather than 20263 arbitrary using the device at the head of the list of devices. From 20264 Xiang Xiao. 20265 - USRSOCK: Revert previous commit to re-allow combination of usrsock 20266 and NuttX TCP/IP stack. For example, in case device has Ethernet and 20267 mobile connectivity and NuttX TCP/IP stack is used when configured to 20268 use Ethernet connection and usrsock when configured to use modem 20269 (modem TCP/IP stack through usrsock). From Jussi Kivilinna. 20270 - USRSOCK accept(): Mark newconn ready before issue accept request to 20271 avoid the case that the request is discarded due to the socket being 20272 in the invalid state From Xiang Xiao. 20273 20274 * Wireless/Wireless Drivers: 20275 20276 - Broadcom 802.11 Driver: There were two functions that have a address 20277 issue. In bcmf_read_sbreg() and bcmf_write_sbreg(): 20278 SBSDIO_SB_OFT_ADDR_MASK should be used before map address space. 20279 Noted by Shao Li in Bitbucket issue #126. From Gregory Nutt. 20280 - Broadcom 802.11 Driver: Remove incorrect OR condition. Always true. 20281 Noted by Shao Li in Issue 127. From Gregory Nutt. 20282 - NRF24L01: Fix compilation errors. From Mateusz Szafoni. 20283 20284 * Other Common Drivers: 20285 20286 - ALARM Upper Half: Fix alarm ISR error when no CONFIG_SCHED_TICKLESS 20287 drivers/timers/arch_alarm.c: Use uint64_t to avoid alarm 32-bit 20288 overflow. From ligd. 20289 - MAX11802: Fix compilation errors and allow setting PULL and SAMPLE 20290 registers. From Petteri Aimonen. 20291 - S25FL1: During a MTDIOC_GEOMETRY ioctl call, the driver was 20292 incorrectly reporting the blocksize to be the same as the erasesize. 20293 The blocksize should be 256 (the page size). This patch fixes that, 20294 and now the SmartFS configuration is working. From Ken Pettit. 20295 - SYSLOG: nx_syslog's return value should include the timestamp length 20296 From Xiang Xiao. 20297 - SYSLOG: syslog_putc() calls sc_force in idle task even if interrupt 20298 buffer enabled. The following cases may hang randomly in the bring up 20299 phase: (1) boot up process and (2) suspend/resume process. Either 20300 case runs in the idle task context, so it's difficult to debug the 20301 hang issue if these output go through the interrupt buffer. From 20302 Xiang Xiao. 20303 - SYSLOG: Ensure interrupt log doesn't interlace in normal log. Don't 20304 call syslog_putc in syslog_default_write because syslog_putc will try 20305 to empty the interrupt buffer every time. From Xiang Xiao. 20306 - UART 16550: Fix UART flow control issue. UART_MCR_RTS need be high 20307 even UART_MCR_AFCE is enabled From zhangyuan7. 20308 - USB RNDIS Device: Fix buffer overrun check in rndis.c. The rndis 20309 driver has been working since 13 Nov 2017. However, I finally found 20310 that it depends on network and buffer configurations. If a receiving 20311 TCP packet is divided into smaller ones based on USB max packet size, 20312 this condition check works correctly. From Masayuki Ishikawa. 20313 20314 * ARMv7-A: 20315 20316 - ARMv7-A: Replicate the same fix was previously committed for the 20317 ARMv7-R. From Gregory Nutt. 20318 20319 * ARMv7-R: 20320 20321 - ARMv7-R: Fix error in cp15_flash_dcache. Change mcrne to mcr for 20322 unconditional dcache. From EunBong Song. 20323 20324 * ARMv7-M: 20325 20326 - ARMv7-M Interrupts: Correct all ARMv7-M architectures. Interrupts 20327 were not be disabled correctly on power up. Writing zero to the NVIC 20328 SET-ENABLE registers has no effect. In order to disable interrupts, 20329 it is necessary to write all ones to the NVIC CLEAR-ENABLE register. 20330 Noted by David Sidrane. From Gregory Nutt. 20331 20332 * Broadcom BCM2708 Drivers: 20333 20334 - BCM2708 Serial: Juha Niskanen's fix related to STM32 20335 CONFIG_SERIAL_OFLOWCONTROL also applies to cloned logic in BCM2708. 20336 From Gregory Nutt. 20337 20338 * Intel x86: 20339 20340 - Qemu i486: Correct .bss, IDLE stack, heap organization. From Gregory 20341 Nutt. 20342 20343 * NXP/Freescale LPC43xx Drivers: 20344 20345 - LPC43 Ethernet: Fix Ethernet TX_EN pin definitions. TX_EN on LPC43xx 20346 can be routed via P0.1 and PC.4 in both MII and RMII mode. Before, 20347 P0.1 was hard-coded for MII and PC.4 was hard-coded for RMII. Also, 20348 the definitions used inconsistent naming (TXEN vs. TX_EN). From Jakob 20349 Haufe. 20350 - LPC43 Serial: Fix copy-paste error: g_usart1port->g_uart1port. From 20351 Dave Marples. 20352 - LPC43 SDMMC: Fix the LPC43 family SDMMC card access: Clocks were 20353 wrongly configured, way too fast because there is no primary divider 20354 on LPC4330, the LPC43_SDMMC_DELAY register was not being set, the 20355 LPC43_SDMMC_BLKSIZ and LPC43_SDMMC_BYTECNT registers had the wrong 20356 values. From Dave Marples. 20357 - LPC43 SDMMC: Corrected a problem in lpc43_dmasendsetup(). There was 20358 no linked DMA descriptor code on the send side. The end result was 20359 stalls while sending multiple sectors. This commit adds that in and 20360 the send code is working much better. From Dave Marples. 20361 - LPC43 SDMMC: With these changes the SDMMC card for LPC43 is now 20362 working properly: Timing was dependent on CPU speed rather than 20363 absolute time, end of transfer handling was a bit mixed up. It is 20364 possible for data to still be in the FIFO (i.e. not have reached the 20365 card) when a next write is requested, so we need to wait for that to 20366 complete. Interrupt Status could be carried over from one transfer 20367 episode to the next, corrupting progress. Multi-descriptor DMA 20368 writing simply wasn't implemented. From Dave Marples. 20369 20370 * NXP/Freescale LPC43xx Boards: 20371 20372 - Bambino-200E: Correct calculation of SDMMC clock configuration. The 20373 LPC43 has no SDMMC source clock divider. Error noted by Dave 20374 Marples. From Gregory Nutt. 20375 20376 * NXP/Freescale Kinetis: 20377 20378 - Kinetis: Remove all attempts to reprioritize interrupts. From Gregory 20379 Nutt. 20380 20381 * NXP/Freescale Kinetis Drivers: 20382 20383 - Kinetis I2C: I2C On failed reset re-initialization I2C and clocking. 20384 If a reset fails, we still must reinitializes the I2C block so that 20385 subsequent transfers will not cause a hard-fault due to the clock 20386 being off. If that transfer fails it can try to reset again. From 20387 David Sidrane. 20388 - Kinetis Serial: Juha Niskanen's fix related to STM32 20389 CONFIG_SERIAL_OFLOWCONTROL also applies to cloned logic in Kinetis. 20390 From Gregory Nutt. 20391 20392 * NXP i.MXRT Drivers: 20393 20394 - i.MXRT Ethernet: The board would not come up if I ran NuttX from cold. 20395 I dumped the PHY registers to see what the differences were and the 20396 PHY was coming up in NANDTree mode. This is a mode for testing 20397 connectivity between the PHY and the MAC. Switching this mode off in 20398 the PHY registers has fixed the problem. From Dave Marples. 20399 - i.MXRT Ethernet: Fix a race condition in setting up the Ethernet Tx 20400 transfer. From Dave Marples. 20401 - i.MXRT Ethernet: Corrections for the i.MXRT Ethernet: (1) Now the 20402 Ethernet is completely re-initialized when an error occurs by means of 20403 taking the interface down and back up but the PHY is _not_ 20404 renegotiated for that case because that is very time consuming and an 20405 error in the Ethernet is no reflection on the state of the PHY 20406 anyway. (2) Explicitly sets the expected PHY address to zero (this 20407 could be moved into the config rather than searching for it which 20408 takes ages, and it's zero anyway for this board (that's the broadcast 20409 address, and anything that cannot respond on that has multiple PHYs, 20410 so that would be a new board). (3) Allows for the renegotiation of 20411 the PHY to be optional when a reset is needed. If a non-renegotiated 20412 reset doesn't result in good comms to the PHY then it'll automatically 20413 be escalated to a renegotiated one. (4) Only performs a reset for 20414 errors that need it (the CRITICAL_ERROR define). The list of errors 20415 that need reset are somewhat arbitrarily chosen based on my prejudices 20416 and might need to be revisited, but certainly the jabber errors don't 20417 need reset, the partial packet is thrown away by the layer above 20418 anyway. (5) Re-loads the multicast table on reset. (6) Adds a bit 20419 more logging into the imxrt Ethernet module. From Dave Marples. 20420 - i.MXRT LPI2C: Fixes 2 bugs in the for IMXRT1050: (1) I2C time out and 20421 did not send STOP condition when sending single byte, (2) I2C could 20422 not receive bytes after repeated start. From Ivan Ucherdzhiev. 20423 - i.MXRT LPSRTC: SVNC LPCR register bits 0 & 1 are NOT reserved and 20424 are, in fact, needed to enabled the SRTC. Now the SRTC is working. 20425 From Ivan Ucherdzhiev. 20426 - LPC54 SDMMC: Add support for and SDMMC errata. It appears that now I 20427 can read the SD card successfully, but I get CRC errors when writing 20428 to the card. From Gregory Nutt. 20429 - LPC54 SDMMC: Ported Dave Marples fixes LPC43 SDMMC to the LPC54. 20430 From Gregory Nutt. 20431 - i.MXRT WDOG: Typos in bit definitions, wdog registers are 16 bits, 20432 wdog update has to be within 255 clocks of unlock, define board 20433 clocking based on divisor and muxes. From David Sidrane. 20434 20435 * NXP i.MXRT: 20436 20437 - i.MXRT: clockconfig bug fix: Fixed logic that was not clearing bits 20438 as ~ was missing in &= mask operations. Use values from the board.h 20439 file so set the Mux that selects the clock sources. Use board 20440 defined PODF values to select clock. Only configure USDHC2 clocks 20441 when board defines clocks. From David Sidrane. 20442 20443 * NXP i.MXRT Boards: 20444 20445 - IMXRT1050-EVK: Previous committed implemented SPI-based MMC/SD card 20446 support conditioned on CONFIG_MMCSD. This interferes with the 20447 implementation of MMC/SD card support using the SDIO-based 20448 peripheral. This commit renames that atypical support to *mmcsd_spi* 20449 and conditions using the SPI-based support on CONFIG_MMCSD_SPI which 20450 will then not interfere with the MMC/SD support that can be 20451 conditioned on CONFIG_MMCSD_SDIO. From Gregory Nutt. 20452 20453 * On Semi LC823450 Boards: 20454 20455 - LC823450: Fix up_allocate_heap() in lc823450_allocateheap2.c. For 20456 lc823450, heap area in flat build mode must start just after 20457 _eronly. Because bss/data area is allocated in lower address than 20458 text area in SRAM. See ld.scripts for details. Also, this change 20459 removes unused up_allocateheap.c From Masayuki Ishikawa. 20460 20461 * Silicon Labs EFM32 Drivers: 20462 20463 - EFM32 Serial: Juha Niskanen's fix related to STM32 20464 CONFIG_SERIAL_OFLOWCONTROL also applies to cloned logic in EFM32. 20465 From Gregory Nutt. 20466 - EFM32 USB Device: The epin_configure() function used the same eptype 20467 as the TxFIFO number for all endpoints. This should probably be the 20468 physical EP number, not the EP type. Suggested by Key Two. From 20469 Gregory Nutt. 20470 20471 * STMicro STM32 Drivers: 20472 20473 - STM32* SPI: Don't rely on SPI_CR1_SPE to determine if peripheral has 20474 been initialized. This change is needed specifically for the case 20475 where a boot loader sets the SPE bit before starting NuttX. In that 20476 case, the test in the SPI driver is wrong. This change fixes that by 20477 assuring that NuttX has booted and initialized at least once (whether 20478 or not SPE is set) before the driver starts refusing to initialize. 20479 From Anthony Merlino. 20480 - STM32 F0, F7, H7, L4 Serial: Fix use of CONFIG_SERIAL_IFLOWCONTROL 20481 where CONFIG_SERIAL_OFLOWCONTROL was intended. From Juha Niskanen. 20482 - STM32 TIM: Don't use hard-coded UIF interrupt in some functions. 20483 From raiden00pl. 20484 - STM32 (FS/HS), STM32F7, and STM32L4 OTGFS/HS Device: The 20485 epin_configure() function used the same eptype as the TxFIFO number 20486 for all endpoints. This should probably be the physical EP number, 20487 not the EP type. Suggested by Key Two. From Gregory Nutt. 20488 - STM32 F2: Fixes Kconfig options to include all STM32F20XX processors, 20489 not just STM32F207. Also removes redundant STM32_STM32F429 depends 20490 from Kconfig. STM32F4XXX already does this. From Anthony Merlino. 20491 - STM32 F4 DAC: STM32F407VG has only one DAC. NDAC=2 causes 20492 compilation error when trying to use e.g. STM32_DAC1_CR macro. From 20493 Petteri Aimonen. 20494 - STM32 F7 Serial: Force invalidation of data cache after DMA re-enable 20495 when returning from low-power mode From Juha Niskanen. 20496 20497 * STMicro STM32 Boards: 20498 20499 - B-L475E-IOT01A: Correct timer source clock frequencies. From Freemans 20500 Goden. 20501 - Nucleo-L432KC: Fix SPI pin definitions in board.h. From Daniel P. 20502 Carvalho. 20503 20504 * MIPS32: 20505 20506 - CP0 Definitions: Fix some copy-paste errors that cause malformed 20507 comments and syntax errors when certain CP0 CONFIG1 bits are 20508 referenced. Note in Issue 123 by Anonymous. From Gregory Nutt. 20509 - microMIPS: Reported by Anonymous in Bitbucket Issue #129: When MIPS 20510 port is built for microMIPS and then loaded as an application, the 20511 __start entry point is entered in microMIPS mode, but the CPU core 20512 initialization code there misses to set the config3ISAOnExc bit to 1. 20513 Subsequently, exceptions are entered in MIPS32 mode, but the code base 20514 was built for microMIPS. 20515 20516 * Microchip PIC32MZ: 20517 20518 - PIC32MZ Startup: In pic32mz-head.S, initialize the global pointer in 20519 all shadow sets. From Ouss4. 20520 20521 * Microchip PIC32MZ Drivers: 20522 20523 - PIC32MZ Serial: Fix a typo in assignment of TTYS0 to UART6 From Ouss4. 20524 20525 * Simulation: 20526 20527 - SIM Network Driver: Fix error 'invalid operands to binary &' From 20528 Xiang Xiao. 20529 20530 * C Library/Header Files: 20531 20532 - Fix typographical error in endian.h and resource.h From anchao. 20533 - include/net/if.h: Adds extern "C" guard in include/net/if.h From 20534 Anthony Merlino. 20535 - include/netinet/in.h: Per OpenGroup.org, type of sin_port in struct 20536 sockaddr_in must be in_port_t vs uint16_t. NOTE: in_port_t is 20537 typdef'ed as uint16_t anyway. From Gregory Nutt. 20538 - include/nuttx: Fix definitions used to access OS functions within the 20539 libraries. In the FLAT build, we must always set the errno and/or 20540 create cancellation points because the same library functions are used 20541 within the OS as are used by applications. This could cause issues 20542 for the OS but corrects some problems at the user interface. Noted by 20543 Federico Braghiroli in Bitbucket issue 121. From Gregory Nutt. 20544 - include/nuttx/clock.h: Fix uptime wrong if DEBUG_FEATURES and 20545 SCHED_TICKLESS enabled. From Xiang Xiao. 20546 - include/nuttx/fs/fs.h: Fix some backward parameters in a new macro 20547 definition. From Gregory Nutt. 20548 - include/nuttx/fs/fs.h: Register_mtddriver should depend on CONFIG_MTD 20549 not CONFIG_MTD_PARTITION From Xiang Xiao. 20550 - include/sys/socket.h: Renumber the socket types. They must begin at 20551 1, not zero. Socket type zero has a special meaning for some 20552 interfaces. For example, getaddrinfo() uses a socket type of zero to 20553 many any type of socket. The is no standard name for the 20554 any-type-socket, but macOS uses SOCK_UNSPEC. NuttX will do the same. 20555 Issue noted by Anthony Merlino. From Gregory Nutt. 20556 20557 - libs/libc: Correct some errors in psignal() and stpncpy(). From 20558 Lokesh B V. 20559 - libs/libc/math: Add variable convergence in log() and logf() to avoid 20560 hangs caused by failure to converge for very specific input values. 20561 Also includes a small change to log() and logf() that improves 20562 accuracy and convergence time. From Rajan Gill. 20563 - libs/libc/stdio: Fix conversion for format specifiers in sscanf() that 20564 appear right after a floating point format specifier. When 20565 performing a floating point conversion the parsing code could consume 20566 more than required characters from the input buffer. This made 20567 impossible to convert input of form "1.1K" using format "%f%c". Fix 20568 the issue by advancing the input buffer with the actual characters 20569 converted as a float point number. From Mihai Serban. 20570 - libs/libc/stdio: Remove CONFIG_NOPRINTF_FIELDWIDTH. That option 20571 does, indeed, make the printf family of functions much smaller. But 20572 it also adds a lot of complexity and makes the functions 20573 non-standard. Removing this might break some of the tinier platforms 20574 but it is the best thing to do for long term maintenance for for 20575 OpenGroup.org compliance. 20576 - libs/libc/stdio: Update to vsprintf(). This resolves the integer 20577 field width problem if Issue 35 for the cases of integer, long and 20578 long long integer types. The output now matches the output form 20579 glibc. From Gregory Nutt. 20580 - libs/libc/string: Correct the return pointer value from stpncpy() for 20581 the case where the NUL terminator is transferred. From Gregory Nutt. 20582 - libs/libc/string: Fix strrchr() so that it considers null terminator 20583 as part of string. From Petteri Aimonen. 20584 - libs/libc/wqueue: Eliminate a race condition noted by Xiang Xiao. 20585 Use sigprocmask() so that we do not lose a signal. From Gregory Nutt. 20586 - libs/libnx/nxfonts: Fix kerning of 'I' in Sans17x22 font. From 20587 Petteri Aimonen. 20588 - libs/libnx/nxfonts: In nxfonts_getfont(), avoid unnecessary warnings 20589 for other whitespace chars also. From Petteri Aimonen. 20590 - libs/libnx/mxmu: NXMU now re-validates window pointer for mouse 20591 events. NXMU caches the previous window pointer so that further mouse 20592 events can be sent to the same window. However, if the window is 20593 destroyed while mouse button is held down, the pointer may become 20594 invalid and cause a crash. This patch revalidates the pointer before 20595 using it. From Petteri Aimonen. 20596 - libs/libnx/nxtk: nxtk_bitmapwindow: Fix warning message when bitmap is 20597 fully off-screen. From Petteri Aimonen. 20598 20599 * Build System: 20600 20601 - Fix issue with libcxx build. This was changed multiple times, but 20602 should be fixed now. From Anthony Merlino. 20603 - configs/Makefile and tools/Config.mk: Move single file copy to the 20604 new function COPYFILE. This fixes the Windows native build case when 20605 there is no cp or cp does not recognize Windows paths. From Anatol 20606 Ivanov. 20607 - tools/Config.mk and tools/Makefile.win: Force use 'cmd' for shell 20608 with windows native build From Anatol Ivanov. 20609 - tools/Directories.mk: Correct the path to the installed libcxx 20610 directory. From Gregory Nutt. 20611 - tools/Makefile.win/unix: Staging directory (and its libraries) should 20612 be removed on 'make clean' (issue noted by Dave Marples). From 20613 Gregory Nutt. 20614 20615 - apps/Directory.mk: If the current directory contains a Kconfig file 20616 and MENUDESC is not defined, then Directory.mk must not trash the 20617 Kconfig in the current directory. From Gregory Nutt. 20618 - apps/Makefile: Fix Windows native build patch extension. From Anatol 20619 Ivanov. 20620 20621 * Other Tools: 20622 20623 - tools/Config.mk: Fix an error in RWILDCARD implementation From 20624 Anthony Merlino. 20625 - tools/configure.c: Add missing '\n' in printf statement 20626 - tools/configure.c: Add missed -g option to getopt() string. From 20627 Anatol Ivanov. 20628 - tools/configure.c and tools/configure.sh: Fix Windows native 20629 pre-build kconfig-conf incompatibility. From Anatol Ivanov. 20630 - tools/csvparser.h: Extend MAX_PARMSIZE to 256. Fixes this issue: 20631 70: Parameter too long: ... From Xiang Xiao. 20632 - tools/link.bat: Fix .fakelink creation. From Anatol Ivanov. 20633 - tools/mkdeps.c: Fix '\0' missing with MinGW. From Anatol Ivanov. 20634 20635 * NSH Library: apps/nshlib: 20636 20637 - apps/nshlib: Correct maximum number of arguments that can be provided 20638 to the mksmartfs command. From Eunbong Song. 20639 - apps/nshlib: Add fflush to nsh_consolewrite(). This resolves this 20640 problem: 'cat /dev/ttyCP &' followed by 'echo ls >/dev/ttyCP'. In 20641 that case we can't get the 'ls' result immediately, because 'cat' cmd 20642 uses nsh_consolewrite() and that uses fwrite with no fflush. We can 20643 get the 'ls' result after type '\n', because nsh will fflush output 20644 when get '\n'. From ligd. 20645 - apps/nshlib: nsh_catfile() should not append '\n' if the last char in 20646 file is already '\n' From Xiang Xiao. 20647 - apps/nshlib: Fix warning g_oldpwd defined but not used 20648 [-Wunused-const-variable] in nsh_envcmds.c. From Xiang Xiao. 20649 20650 * Examples/Tests: apps/examples: 20651 20652 - apps/examples/adc/Kconfig: CONFIG_BOARDCTL_ADCTEST does not exist 20653 anymore and should removed as a dependency. From Eunbong Song. 20654 - apps/examples/webserver/Kconfig: The webserver "app" allows for DHCP 20655 client to be enabled. However, the Kconfig infrastructure does not 20656 contain EXAMPLES_WEBSERVER_DHCPC config. Based on patch from 20657 "Anonymous" attached to Bitbucket Issue #130. From Gregory Nutt. 20658 20659 * System Utilities: apps/system: 20660 20661 - apps/system/hexed: Fix memory leak From zhuyanlin. 20662 - apps/system/i2c: Fix i2c_msg freq initialization problem. Typo 20663 prevented I2C frequency initialization in a struct i2c_msg. From 20664 dongjiuzhu. 20665 - apps/system/system: Fix warning when passing argument 6 of 20666 'task_spawn' from incompatible pointer type 20667 [-Wincompatible-pointer-types] From Xiang Xiao. 20668 20669 * Network Utilities: apps/netutils: 20670 20671 - Correct some network-related configuration variable names. All *_MTU 20672 defines were changes to *_PKTSIZE gut that was not reflected in 20673 apps/ From Gregory Nutt. 20674 - apps/netutils/netlib/netlib_parsehttpurl.c: Correct handling of long 20675 URLs as noted in Bitbucket issue #119 (in the nuttx/ repository, not 20676 the apps/ repository). From Gregory Nutt. 20677 - apps/netutils/codecs: "dst" overflow protection when base64 string 20678 ends with "=" From Aleksandr Vyhovanec. 20679 - apps/include/netutils/ipmsfilter.h: Eliminate error generated by bad 20680 pre-processor logic. From Gregory Nutt. 20681 20682 * GPS Utilities: apps/graphics: 20683 20684 - apps/graphics/NxWidgets: Fix garbage returned when 20685 CCycleButton::getValue() is called after removeAllOptions(). 20686 CScrollingPanel should not draw outside the widget area. From 20687 Petteri Aimonen. 20688 20689NuttX-7.28 Release Notes 20690------------------------ 20691 20692The 128th release of NuttX, Version 7.28, was made on January 19, 2019, 20693and is available for download from the Bitbucket.org website. Note 20694that release consists of two tarballs: nuttx-7.28.tar.gz and 20695apps-7.28.tar.gz. These are available from: 20696 20697 https://bitbucket.org/nuttx/nuttx/downloads 20698 https://bitbucket.org/nuttx/apps/downloads 20699 20700Both may be needed (see the top-level nuttx/README.txt file for build 20701information). 20702 20703Additional new features and extended functionality: 20704 20705 * Core OS: 20706 20707 - Critical Section Monitor: Adds data collection logic in support of 20708 pre-task monitoring critical sections and pre-emption state. From Gregory 20709 Nutt 20710 - Critical Section Monitor: Add support for global pre-emption and 20711 global critical sections to monitor as suggested by Xiang Xaio. From 20712 Gregory Nutt 20713 - Interrupt Time: Measurement of interrupt handler duration used to 20714 be available only in Tickless mode since it used the high resolution 20715 Tickless timer to measure interrupt time. This change adds 20716 CONFIG_SCHED_IRQMONITOR_GETTIME which, if enabled, will force the 20717 interrupt duration calculation to use the same high-resolution, 20718 platform-specific timer as is used with the Critical Section Monitor. 20719 This leads to two improvements: (1) You can now measure interrupt 20720 duration in non-Tickless mode, and (2) in either mode, the interrupt 20721 duration and the critical section measures will use the same 20722 high-resolution timer and should, therefore, never be any discrepancy 20723 due to different clock sources. From Gregory Nutt 20724 - Context Switching Protection: Add debug assertions before each call 20725 to up_block_task() to assure that there is no attempt to block an 20726 IDLE task. From Dave Marples 20727 - init Task: Allow the init task priority to be configurable. From 20728 David Sidrane 20729 - pthreads: Implement pthread_key_delete(). This involves some minor 20730 changes to the group data structure. From Gregory Nutt 20731 20732 * File Systems/Block and MTD Drivers 20733 20734 - ProcFS: Extended the process ID ProcFS output to show per-thread 20735 maximum time for pre-emption disabled and maximum time within a 20736 critical section. From Gregory Nutt 20737 - NXFFS: Pass unrecognized IOCTL commands to the contained MTD 20738 driver. From Daniel P. Carvalho 20739 - LittleFS: Adds an initial port the ARM mbed littlefs to NuttX. This does 20740 not include FLASH formatting utilities. Depends on CONFIG_MTD_BYTE_WRITE. 20741 From lihaichen 20742 - AT25 MTD Driver: Added support for AT25DF081A serial flash chip. 20743 From Marc Rosen 20744 - MTD Configdata Device: Extends the MTD configdata device with the 20745 following features / additions: 20746 1. Configurable option to use named config items instead of enumerated 20747 ID/Instance numbers. 20748 2. Ability to iterate through the existing configdata items in the 20749 /dev/config device. 20750 3. Ability to "unset" a configdata item. 20751 4. Ability to perform "flash_eraseall" on the /dev/config device. 20752 From Ken Pettit 20753 20754 * Networking/Network Drivers: 20755 20756 - Telnet Driver: Add NAWS and poll interface to telnet for screen size 20757 negotiation used with termcurses. From Ken Pettit 20758 20759 * Wireless/Wireless Drivers: 20760 20761 - BLE HIC Core: Add second RX work function From Lwazi Dube 20762 - BLE IOCTL Commands: Add SIOCBTCONNECT and SIOCBTDISCONNECT ioctl 20763 commands From Lwazi Dube 20764 - CC2564: Add cc2564 HCI UART driver. From Lwazi Dube 20765 20766 * Graphics/Display Drivers: 20767 20768 - Sitronix ST7032i: Add support to Alphanumeric Sitronix ST7032i 20769 display From Alan Carvalho de Assis 20770 - NXP TDA19988: This commit brings in a complete, but untested, 20771 implementation of a driver for the TI TDA19988 HDMI Encoder. This encoder 20772 is used on the Beaglebone Black board. Since this driver is untested, it 20773 requires CONFIG_EXPERIMENTAL in the configuration. From Gregory Nutt 20774 20775 * Crypto: 20776 20777 - crypto/aes.c: This change provides an improved AES cipher API in 20778 addition to the existing routines. The reasons for this new API are: 20779 1) better performance, giving the possibility to avoid re-setting-up 20780 the key for each AES block when the same key is used multiple times. 20781 This is important for the current single user of AES, which is 20782 related to storage and FTL. And 2) suitable for simultaneous use of 20783 multiple AES keys, which will be required by the upcoming crypto 20784 framework. It retains compatibility with the previous API, so there 20785 is no need to change anything else right now. From Sebastien Lorquet 20786 20787 * Other Common Device Drivers: 20788 20789 - MMCSD SDIO: The mmcsd_sdio driver makes calls for dcache 20790 invalidation through the chip specific architecture function 20791 SDIO_DMARECVSETUP(). I changed the arch/arm/stm32f7 chips to use 20792 arch_invalidate_dcache_by_addr() instead of arch_invalidate_dcache(). 20793 20794 This commit includes additional changes to mmcsd_sdio.c. I 20795 created SDIO_DMADELYDINVLDT() (DMA delayed invalidate) to 20796 invalidate store-into mode dcaches after the DMA transfer. I 20797 have been using SDIO_DMADELYDINVLDT() for several weeks now and 20798 it has fixed the problems that I previously reported regarding 20799 non-cache aligned buffer invalidation errors (for my store-through 20800 dcache). However, it does not permit use of unaligned DMA buffers 20801 for store-into mode dcaches. 20802 20803 SDIO_DMADELYDINVLDT() is a NoOp unless the chip specific Kconfig 20804 file selects CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT. I have modified 20805 all the stm32f7 chips to select it. From Bob Feretich 20806 - SPI Lower Half Interface: Extend the HW features supported by SPI. 20807 It now supports a deferred DMA trigger hardware configuration. From 20808 Dave Marples 20809 - DS28E17 1-Wire Driver: Optimize I2C write followed by read to same 20810 address. From Juha Niskanen 20811 - LMP92001: Add support for the TI LMP92001 Multi-channle DAC/ADC 20812 device. From Abdelatif Guettouche. 20813 - EEPROM Character Driver: Add support to Microchip AT24CM02 From 20814 Alan Carvalho de Assis 20815 - Microchip MCP73871: Add support to Microchip MPC73871 Battery Charger. 20816 From Alan Carvalho de Assis 20817 - MCP7941x: Add support for the Microchip MCP741x external RTC. From Ouss4 20818 - Sensirion SCD30: Driver for Sensirion SCD30 CO2 sensor. From Jussi 20819 Kivilinna 20820 - Sensirion SGP30: Driver for Sensirion SCD30 gas sensor. From Jussi 20821 Kivilinna 20822 - Sensirion SPS30: Driver for Sensirion SCD30 particulate matter sensor. 20823 From Jussi Kivilinna 20824 - USB CDC/ACM Device: When implemented usb cdc on nrf52840, I found 20825 some issues with cdc driver: 20826 1. Lost data when receiving buffer is full; 20827 2. Low-water mask implement issue; 20828 3. Re-flush cdc buffer when enabling 20829 4. Serial dma is conflict with cdc , modify the serial.h 20830 From Levin Li 20831 20832 * MIPS32: 20833 20834 - Configuration System: Allow Penguino for windows for the Windows 20835 Ubuntu platform as well. 20836 20837 * Maxim Integrated MAX326xx 20838 20839 - MAX32660: Support for the MAX32660 was added (along with partial 20840 support for other members of the MAX326xx family). The initial port 20841 includes Clock configuration, timer, GPIO pin configuration, ICC, 20842 and UART. Additional untested drivers are complete and ready for 20843 testing: DMA, GPIO interrupts, SPI0 Master, TC, WDT. The following 20844 drivers are not yet implemented: I2C and I2S. 20845 20846 * Maxim Integrated MAX326xx boards 20847 20848 - MAX32550-EVSYS: Basic support for the Maxim Integrated MAC3X660 20849 EVSYS is included. A basic NSH configuration is available and is 20850 fully functional. Includes unverified support for an SPI0-based 20851 SD card. 20852 20853 * Microchip/Atmel SAMD21/L21 Drivers: 20854 20855 - SAMD21/L21: Adds a complete ADC header file for SAMD21 and a partially 20856 complete ADC header file for the SAML21. From Alexander Vasiliev 20857 - SAMD21/L21: Export sam_i2c_master_initialize(int bus) to be used by 20858 board config. From Alan Carvalho de Assis 20859 20860 * Microchip PIC32MZ Drivers: 20861 20862 - PIC32MZ I2C: Add support for the I2C bus. From Ouss4 20863 20864 * ARMv7-A 20865 20866 - ARMv7-A MMU: Use TLBIMVA vs TLBIMVAAIS to invalidate the Cortex-A8 20867 cache. From Petro Karashchenko 20868 20869 * ARMv7-M 20870 20871 - Cortex-M7 Cache: This commit adds a new function 20872 arch_invalidate_dcache_by_addr(). It takes the same parameters as 20873 arch_invalidate_dcache(), but performs invalidation of only the lines 20874 in cache that need to be invalidated. This new function could be 20875 used as a a direct replacement for arch_invalidate_dcache(). From 20876 Bob Feretich 20877 - ARMv7-M: In the current implementation we only use very high 20878 priority interrupts (levels 0, 0x10 and 0x20 in CORTEX-M speak) but 20879 that means there are loads of lower priority ones that are 20880 effectively unused. I have *not* changed the semantics of these 20881 levels but have 'shifted' them to be based around the midpoint of the 20882 available interrupts (0x80) rather than at the top end....that allows 20883 for interrupts to be defined above (or, indeed, below) them as needed 20884 by the application. This should have no functional effect on 20885 existing code but adds in a clean capability to define higher 20886 priority interrupts. From Dave Marples 20887 20888 * Broadcom BCM2708: 20889 20890 - BCM2708: Remove all support for the BCM2708/2835. This was added 20891 only for support of the RaspberryPi Zero board which was previously 20892 removed. The support was minimal and unverified. The removed files 20893 can still be found in the Obsoleted directory. From Gregory Nutt 20894 20895 * Broadcom BCM2708 Boards: 20896 20897 - Raspberry Pi Zero: Remove the partial support for the Raspberry Pi 20898 Zero. This port was started with the best of intentions but was 20899 never completed. The board support can still be found in the 20900 Obsoleted repository. From Gregory Nutt 20901 20902 * Nordic NRF52 Boards: 20903 20904 - Improve LED handling #if~#endif in nrf52_autoleds.c and 20905 nrf52_userleds.c 20906 Add Adafruit Feather nRF52 board LED support 20907 Add Adafruit Feather nRF52 board 20908 Add nrf52-generic 20909 Replace 'pca10040' with 'generic' 20910 Copy from nrf52-pca10040 to nrf52-generic 20911 From Zou Hanya 20912 20913 * NXP i.MX RT Drivers: 20914 20915 - i.MXRT: Add PIT, GPT, and QIMER(TMR) header files From David Sidrane 20916 - i.MXRT: Add FLEXPWM. From David Sidrane 20917 - i.MXRT: Add ADC chip header From David Sidrane 20918 - i.MXRT Build: Include up_systemreset and up_stackcheck.c From David Sidrane 20919 - i.MXRT GPIO: Add GPIO Support Input daisy selection. From David Sidrane 20920 - i.MXRT Serial: Support independent input and output flow control. From 20921 David Sidrane 20922 - i.MXRT USB: Use single define for USB pin definitions. From David Sidrane 20923 - IMXRT106X: Add FLEXCAN3 to pinmux header file. From David Sidrane 20924 20925 * NXP Freescale i.MX RT Boards: 20926 20927 - IMXRT1050-EVK: GPIO device driver support added and tested by 20928 Pavlina Koleva and Ivan Ucherdzhiev. From Pavlina Koleva 20929 20930 * On Semi LPC23450: 20931 20932 - LPC23450: Add support for SPI flash boot. Also, remove unnecessary 20933 code for the SPI flash boot. From Masayuki Ishikawa 20934 20935 * On Semi LPC23450 Boards: 20936 20937 - LC823450-XGEVK: Add linker script for SPI flash boot. From 20938 Masayuki Ishikawa 20939 - LC823450-XGEVK: Enable NFS client for RNDIS configuration. Also, some 20940 stack size were adjusted to work with NFS From Masayuki Ishikawa 20941 20942 * Simulation 20943 20944 - Critical Section Monitor: Add low level timer support for simulation. From 20945 Gregory Nutt 20946 20947 * STMicro STM32: 20948 20949 - Configuration: Simplify ARM core selection logic From Mateusz Szafoni 20950 - Configuration: USB Host is an option. From David Sidrane 20951 - STM32 L0: Brings in initial support for the STM23 L0. From Mateusz 20952 Szafoni 20953 20954 * STMicro STM32 Drivers: 20955 20956 - STM32 ADC: Configurable ADC DMA mode (one shot mode, circular 20957 mode). From Mateusz Szafoni 20958 - STM32 ADC: Start conversion on startup is now possible if TIM 20959 triggering selected. This can be useful to start ADC TIM conversion 20960 for ADC IPv2 when opening ADC device. 20961 - STM32 DAC: Unified naming for DAC interfaces From Mateusz Szafoni 20962 - STM32 DMA: Add interfaces to interact with high priority DMA 20963 interrupts. From Mateusz Szafoni 20964 - STM32 DMA: Use STM32 DMA IP core version instead of chip family 20965 names. From Mateusz Szafoni 20966 - STM32 DMA: Add support for DMA v1 CSELR support. From Mateusz Szafoni 20967 - STM32 HRTIM: Do not enable timers on startup if option from Kconfig 20968 selected and add interface to enable/disable timers. From Mateusz 20969 Szafoni 20970 - STM32 PWM: Add timer enable/disable and frequency update to 20971 low-level ops. From Mateusz Szafoni 20972 - STM32 SPI: Implements the new deferred DMA trigger feature. From 20973 Dave Marples 20974 - STM32 F0 Build: Rename the stm32f0 directory to stm32f0l0 to make a 20975 space for STM32 L0. Rename files, functions and defines, removing 20976 the f0_ from the names in order to make them MCU agnostic. From 20977 Gregory Nutt 20978 - STM32 F0 GPIO: Add support for GPIO EXTI. From Mateusz Sfafoni 20979 - STM32 F2 FLASH: stm32_flash_writeprotect() supported the same for 20980 STM32F20XX as STM32F4XXX From Anthony Merlino 20981 - STM34 F7 DMA: stm32f7 enable separate DMA per SPI configuration 20982 From Daniel Agar 20983 - STM32 F7 QEncoder: Ported the QEncoder from F4 to F7. From Eduard 20984 Niesner 20985 - STM32 F7 SPI: Port Dave Marples STM32 deferred trigger enhancement 20986 to the STM32 F7 SPI drivers. From Gregory Nutt 20987 - STM32 H7 SPI: Port Dave Marples STM32 deferred trigger enhancement 20988 to the STM32 H7 SPI drivers. From Gregory Nutt 20989 - STM32 L4 SPI: Port Dave Marples STM32 deferred trigger enhancement 20990 to the STM32 L4 SPI drivers. From Gregory Nutt 20991 20992 * STMicro STM32 Boards: 20993 20994 - B-L072Z-LRWAN1: Add basic support for b-l072z-lrwan1. Nucleo boards 20995 use as default ST LINK MCO as clock input from MCU and for this 20996 HSEBYP must be enabled. From Mateusz Szafoni 20997 - Nucleo-F103RB: Add board support. From Mateusz Szafoni 20998 - Nucleo-F103RB: Add ADC and PWM examples. From Mateusz Szafoni 20999 - Nucleo-F207ZG: Add board support. From Mateusz Szafoni 21000 - Nucleo-F207ZG: Add ADC and PWM examples. From Mateusz Szafoni 21001 - Nucleo-F302R8: Add high priority ADC interrupts example to the 21002 'highpri' configuration. From Mateusz Szafoni 21003 - Nucleo-F334R8: Add support for ADC injected sequence to the 'highpri' 21004 configuration, add triggering from TIM1. From Mateusz Szafoni 21005 - Nucleo-F334R8: Add example for the SPWM generation (custom STM32 PWM 21006 usage). From Mateusz Szafoni 21007 - Nucleo-F767ZI: Use on board USB UART as default console. Board is powered 21008 by USB which can be used as UART link for upload and console. Previously 21009 it was set to use Arduino shield which developer may not have. From Phil 21010 Coval 21011 - Nucleo-F767ZI: Add ethernet config based on nsh configuration plus 21012 stm32f769i-disco/nsh-ethernet. From Phil Coval 21013 - Nucleo-L073RZ: Add basic support for nucleo-l073rz. Nucleo boards 21014 use as default ST LINK MCO as clock input from MCU and for this 21015 HSEBYP must be enabled. From Mateusz Szafoni 21016 - Nucleo-L152RE: Add board support. From Mateusz Szafoni 21017 - STM32F4 Discovery: Add timing support for the critical section 21018 monitor using the DWT CYCNT register. From Gregory Nutt 21019 - STM32F4 Discovery: If the Critical Section Monitor, modify the 21020 ITM_LAR register to assure that the DWT cycle counter is enabled. 21021 Suggested by Dave Marples. From Gregory Nutt 21022 - STM32F4 Discovery: Add board support to display ST7032i From Alan 21023 Carvalho de Assis 21024 - STM32F4 Discovery: Add loadable application build support in 21025 Make.defs From Masayuki Ishikawa 21026 - STM32F4 Discovery: Update RNDIS configuration: (1) Add NFS and adjusted 21027 stack size for usermain and telnetd client. (2) Add support for loadable 21028 application and ping. From Masayuki Ishikawa 21029 - STM32F4 Discovery: Update nsh configuration: (1) Add 21030 CONFIG_BOARD_INITIALIZE=y, (2) Add CONFIG_EXAMPLES_HELLO=y. From Masayuki 21031 Ishikawa 21032 - STM32F429I-DISCO: Add high priority ADC interrupts example to the 21033 'highpri' configuration. From Mateusz Szafoni 21034 - configs/nucleo-l073rz: Support for nrf24l01. From Mateusz Sfafoni 21035 21036 * TI CCxx: 21037 21038 - CC13x0 family and CC13x2/CC26x2: Basic, minimal support was added 21039 for these two chip families. This is a Work-In-Progress: There is 21040 just enough logic in place to support a simple NSH configuration. 21041 However, the port is still missing certain, necessary hooks into the 21042 TI ROM-based 'DriverLib'. As a result, the support is not fully code 21043 complete and is totally untested. Support for the CC26x2, which is 21044 nearly identical to the CC13x2 is fragmentary. Stay tuned. 21045 Hopefully full support will be available in NuttX 7.29. 21046 21047 * TI CCxx Boards: 21048 21049 - LAUNCHL-CC1312R1: Board support is available for the TI 21050 LAUNCHL-CC1312R1. That board support consists only of an unverified 21051 NSH configuration. The primary purpose of this port for the time 21052 being is simply support the core architecture bring-up. 21053 21054 * TI AM335x: 21055 21056 - AM335x: Adds initial support for the TI AM355x family. 21057 - AM335x: Add minimal wdog logic needed to disable the watchdog timer. 21058 Otherwise, the board is rebooted after certain time expires while NuttX is 21059 running. From Petro Karashchenko 21060 - AM335x: Switch to DMTimer2 for system tick generation. U-Boot does not 21061 enable DMTimer1ms clocks hence it is not possible to use it until 21062 implementation in am335x_clockconfig.c is ready. From Petro Karashchenko 21063 21064 * TI AM335x Boards: 21065 21066 - Beaglebone Black: Initial port for BeagleBone Black board support 21067 (TI AM335x family based on Cortex-A8). Includes a basic functional NSH 21068 configuration . From Petro Karashchenko 21069 21070 * TI Tiva: 21071 21072 - LM3S9B92: Add support for LM3S9B92. From Lwazi Dube 21073 21074 * TI Tiva Drivers: 21075 21076 - Tiva HCI UART: Port bluetooth HCI uart interface from stm32 to tiva 21077 From Lwazi Dube 21078 21079 * TI Tiva Boards: 21080 21081 - TM4C1294-Launchpad: Add IRQBUTTONS support to tm4c1294 launchpad. 21082 From Lwazi Dube 21083 21084 * Tools: 21085 21086 - tools/convert-comments.c: Add a tool to convert C++-style comments 21087 to C89 C-style comments. From Gregory Nutt 21088 - tools/detab.c: Add detab.c which will convert all tabs in a file to 21089 spaces. From Gregory Nutt 21090 - tools/lowhex.c: Add lowhex.c that will convert hexadecimal constants 21091 in a file to use lower case representation. From Gregory Nutt 21092 - tools/mkconfig.c: Add definitions to distinguish between tristate 21093 'y' and 'm' options. From Gregory Nutt 21094 - tools/nxstyle.c: Add logic to detect long lines. From Gregory Nutt 21095 - tools/nxstyle.c: Add -h for help. From Gregory Nutt 21096 21097 * Libraries/Header Files: 21098 21099 - include/nuttx/lcd/edid.h: Add EDID definitions From Gregory Nutt 21100 - libs/libc/netdb: Make DNS retries configurable From Juha Niskanen 21101 - libs/libc/netdb: Harden query logic against DNS spoofing. This 21102 commit implements most of the RFC 5452 guidelines for making DNS more 21103 resilient. We now verify response matches against what was queried 21104 and use unpredictable query IDs. It is also checked that response 21105 come from correct DNS server. Also fixes a buffer overflow when 21106 querying hostnames longer than CONFIG_NETDB_DNSCLIENT_NAMESIZE. From 21107 Juha Niskanen 21108 - libs/libc/netdb: Support multiple IP addresses per hostname From 21109 Juha Niskanen 21110 21111 * NSH: apps/nshlib: 21112 21113 - apps/nshlib: Add support to use SLCD as NSH Console From Alan Carvalho de 21114 Assis 21115 - apps/nshlib: Add support for CROMFS start-up script. From David Sidrane 21116 - apps/nshlib: Add var expansion in NSH parse. From Daniel Agar 21117 - apps/nshlib: Display built-in apps using multi-column mode like the NSH 21118 commands. From Ken Pettit 21119 - apps/nshlib: In all multi-column help output, calculate an optimal column 21120 width rather than using a hard-coded width that may or may not be 21121 appropriate. Also make the number of rows presented dependent upon the 21122 maximum width of the widest column. From Gregory Nutt 21123 - apps/nshlib: Adds addroute command options for setting default gateway. 21124 Like 'addroute default <ipaddr> <interface>'. From Anthony Merlino 21125 21126 * Examples/Tests: apps/examples: 21127 21128 - apps/examples/battery: Add Battery Charger Monitor Example From Alan 21129 Carvalho de Assis 21130 21131 * System Utilities: apps/system 21132 21133 - apps/system/configdata: Adds an "cfgdata" command which allows 21134 manipulation of the /dev/config items via the command line. One such use 21135 for this utility would be to set a "macaddr" configdata item, etc. The 21136 utility is sort-of like a u-boot env variable edit function: 21137 21138 For instance, to set a "macaddr" when the new CONFIG_MTD_CONFIG_NAMED 21139 option is selected, you would do: 21140 21141 nsh> cfgdata set macaddr [0xfc 0x01 0x0b 0x45 0xa1 0x12] 21142 (The brackets denotes an array of bytes) 21143 nsh> cfgdata set hostname myboard 21144 21145 or using the old ID,INSTANCE numeric method: 21146 21147 nsh> cfgdata set 0,0 [0xfc 0x01 0x0b 0x45 0xa1 0x12] 21148 (The brackets denotes an array of bytes) 21149 nsh> cfgdata set 1,0 myboard 21150 21151 You can also display all config items: 21152 21153 nsh> cfgdata print all 21154 Name Len Data 21155 macaddr 6 0xFC 0x01 0x0B 0x45 0xA1 0x12 21156 hostname 8 myboard 21157 21158 From Ken Pettit 21159 - apps/system/critmon: Add a daemon to monitor critical section usage. From 21160 Gregory Nutt 21161 - apps/system/nsh: Set NSH priority if the NSH task was scheduled at a 21162 different priority than the configured priority. From Gregory Nutt 21163 - apps/system/nxplayer: Introduce CONFIG_NXPLAYER_MAINTHREAD_STACKSIZE. From 21164 Masayuki Ishikawa 21165 - apps/system/termcurses: Addition of termcurses libraries in 21166 apps/system/termcurses From Ken Pettit 21167 - apps/system/vi: New feature additions 21168 1. Vi startup feature to prepend the current working directory to the 21169 supplied filename if it does not start with '/' absolute path 21170 specifier. This allows editing files in the current directory 21171 without needing to fully qualify the filename. 21172 2. Standard '~' empty screen line characters for proper identification 21173 of empty '\n' only lines at the end of the file. 21174 3. Moving into insert or append mode now prints '--INSERT--' in the 21175 status line and clears it upon exit. 21176 4. Integration with termcurses to detect special keystrokes and to 21177 handle terminal type differences. Haven't yet converted all vt100 21178 print codes to termcurses equivalents. 21179 5. Support for up, down, left, right arrows, page-up, page-down keys in 21180 command mode. 21181 6. Added 'b' command to move cursor 'b'ack to previous word. Honors the 21182 command repeat value for multiple word moves. 21183 7. Added 'w' command to move cursor to next 'w'ord. Honors the command 21184 repeat value for multiple word moves. 21185 8. Added 'f' and 't' commands to find characters on the current line. 21186 Honors the command repeat value. 21187 9. Added the find 'n'ext command to repeat the previous find operation. 21188 10. Added the 'H', 'M', and 'L' commands to move the cursor to top, 21189 middle and bottom of the display. 21190 11. Extended yank/paste to manage a paste buffer with character mode in 21191 addition to line mode. Character mode allows cut / paste of 21192 individual characters or groups of characters vs. full lines. 21193 12. Added support in the 'd'elete and 'y'ank commands for character mode 21194 deletions such as 'dw', 'dfa', '2yw', etc. 21195 13. Added support in paste routine for multiple paste using command value 21196 argument. 21197 14. Added support for the 'D' and 'C' delete and change to end of line 21198 commands. 21199 15. Added support for 's'ubstitute key ('x' followed by insert mode). 21200 16. Modified yank / paste allocation scheme to avoid repeated alloc and 21201 free of paste buffer. Uses a minimum allocation size scheme and only 21202 does free / realloc when paste does not fit. If the paste is smaller 21203 than the current allocation and the current allocation is larger than 21204 the threshold, then the buffer is freed and a smaller buffer 21205 allocated. Otherwise the existing buffer is used. 21206 17. Support for 'P'aste before current cursor position. 21207 18. Support for '?' reverse search mode. 21208 19. Support for 'J'oin next line with current line command. 21209 20. Printing of current row,col in status line of display. 21210 21. Command repeat '.' support for commands that modify text. 21211 22. Support in replace / insert mode for arrow keys, PGUP / PGDN, HOME, 21212 and END. Using these will cause the command repeat buffer to reset 21213 such that only the last text addition after a cursor movement is saved. 21214 23. Added 'X' delete previous command. 21215 24. Added "gg" go to top of document command sequence. 21216 25. Added "ZZ" save and quit command (equivalent to :wq). 21217 26. Implemented '^' goto first non-whitespace on current line, along with 21218 '+' and '-' goto first non-whitespace on next / previous line. 21219 27. Added CR / LF goto first non-whitespace on next line in command 21220 mode. From Ken Pettit ? 21221 21222 * Network Utilities: apps/netutils: 21223 21224 - apps/netutils/webserver: The webserver/httpd app is was broken when script 21225 support was enabled (CONFIG_NETUTILS_HTTPD_SCRIPT_DISABLE). The root cause 21226 has been tracked down to the "Content-length" not being available ahead of 21227 time in this case (length of -1 passed to send_headers() ). On the other 21228 hand, the server closing the socket does not result in FIN being sent to 21229 the browser either (FIN not supported by NuttX yet). 21230 21231 Simple solution: Add support for HTTP Chunked Encoding to webserver/httpd. 21232 The change is simple. It adds a configuration option to enable chunked 21233 encoding. When enabled, the implementation will auto-detect the cases where 21234 content length is not available ahead of time, and will automatically 21235 engage chunked encoding transfers. 21236 21237 Without this patch, the browser/client hangs forever, as it is expecting 21238 more data. With this patch, the browser displays the content. From Vlado 21239 Vidovic 21240 21241 * Wireless Utilities: apps/wireless: 21242 21243 - apps/wireless/bluetooth/btsak: Add connect and disconnect commands to 21244 btsak. From Lwazi Dube 21245 21246 * Graphic Utilities: apps/graphics: 21247 21248 - apps/graphics/pdcurs34: Integration of termcurses into pdcurses, plus 21249 pdcurses updates for multi-thread support From Ken Pettit 21250 - apps/graphics/pdcurs34: Adds a configuration option to pdcurses to enable 21251 line-drawing character (ALTCHARSET) when using the short 16-bit chtype. 21252 This is done by limiting the characters to 7-bit ASCII values and using the 21253 8-th bit as the A_ALTCHARSET bit. This allows a significant RAM savings 4K 21254 - 20K depending on terminal size) while still allowing the nicer 21255 line-graphic characters for border drawing. From Ken Pettit 21256 21257 * Testing: apps/testing: 21258 21259 - apps/testing/ostest: Add test for pthread-specific data. From Gregory 21260 Nutt 21261 21262Bugfixes. Only the most critical bugfixes are listed here (see the 21263ChangeLog for the complete list of bugfixes and for additional, more 21264detailed bugfix information): 21265 21266 * Core OS: 21267 21268 - Assertions: Identify the running task correctly when dumping task 21269 state information. It takes time to switch to the target task after 21270 g_readytorun has been modified. If panic/assert happen during this 21271 period, the dump will contain the incorrect and confusing information 21272 due to the difference between the real running task and the return 21273 value of this_task(). This change resolve this problem by adding 21274 g_running_task to track the real running task through the context 21275 switch. From Xiang Xiao 21276 - Assertions: Correct duplicated logic from commit 21277 dbf01d12b7321d1b48b68d3b69842a853b049376. Checking for PID == zero 21278 is not a valid way to test for the IDLE task in all configurations! 21279 This is only true in the single CPU configuration. In multiple CPU 21280 configurations, there will be a separate IDLE task for each CPU with 21281 a different PID and an alternative check must be used. NOTE: The 21282 logic fixed in some places still lacks sufficient intelligence in SMP 21283 mode to find the right stack for the CPU IDLE thread and could still 21284 show the wrong stack. From Gregory Nutt 21285 - Interrupt Prioritization: Remove all driver-specific logic that may 21286 set the interrupt priority to anything but the default. There is no 21287 good reason to change the interrupt priority unless you just want to 21288 debug a difficult problem. OR if you want to use high priority 21289 interrupts. In that case the specific interrupt priorities will need 21290 to be set by board-specific logic. From Gregory Nutt 21291 - Memory Management: Revert "This patch prevent heap corruption as in 21292 below case." This solution to the problem noted by EunBong Song 21293 results in major memory fragmentation and out-of-memory 21294 conditions on the PX4 platform. On that platform the lower priority 21295 work queue is very low priority and essentially never runs when the 21296 system is busy. As a result, the systems gets slowly starved of 21297 memory until failures and bad behaviors begin to occur. From Gregory Nutt 21298 - Memory Management: This is a replacement for EunBong Song's reverted 21299 change. This change adds (1) logic in getpid() to return an error instead 21300 of the PID if the (apparent) currently executing task is not marked as 21301 RUNNING. Then (2) mm_trysemaphore() (the root implementation of both 21302 kmm_trysemaphore() and umm_trysemaphore()) will know that the (apparent) 21303 running task cannot be the holder of the semaphore. How could the 21304 non-running task be trying to get the MM semaphore? I think only in the 21305 exact scenario that Eunbong Song has described. So this new solution 21306 should provide the same protection as the original change but without the 21307 bad consequences to memory usage. From Gregory Nutt (with corrections 21308 from David Sidrane) 21309 - Memory Management: In implementation of calloc(), verify that the number of 21310 elements times the size of an element will not overflow type size_t. This 21311 is required by the SEI CERT C coding style and resolves anonymous Bitbucket 21312 Issue #139 From Gregory Nutt 21313 - sigtimedwait(): Remove unnecessary disable of pre-emption. From 21314 Gregory Nutt 21315 - _exit(): Update all architecture-specific _exit() implementations 21316 so that they correctly call the scheduler instrumentation layer for 21317 the new task that runs when the old one exits. This missing 21318 instrumentation was confusing the Critical Section Monitor logic with 21319 uses this instrumentation to track the state of critical sections. 21320 From Gregory Nutt 21321 - sched_foreach(): sched_foreach() should not have to hold the 21322 critical section over the entire traversal. It should be acceptable 21323 to simply only the critical section while one entry is being 21324 processed (the caller can always call sched_foreach within a critical 21325 section is greater stability is needed). From Gregory Nutt 21326 - task_spawn(): Correct description of input parameters to 21327 task_spawn_exec(). Noted by: JeongchanKim From Gregory Nutt 21328 21329 * Crypto: 21330 21331 - crtypo/: This change: 21332 21333 Avoids the use of up_aesinitialize() entirely, which resolves 21334 dependency problems, because this function does not make sure that 21335 an actual hardware aes implementation was made available: each SoC 21336 is now responsible to ensure the AES hardware is initialized before 21337 first use. This applies to lpc43xx, stm32 and sam34. 21338 21339 Remove definitions of the NEVER used aes_init and aes_update 21340 operations. The new AES API will be more suitable. 21341 21342 From Sebastien Lorquet 21343 21344 * File System/Block and MTD Drivers: 21345 21346 - opendir(): Corrects a problem with opendir() noted by Petteri 21347 Aimonen in Bitbucket Issue 132: "opendir() fails for FAT filesystem 21348 with trailing slash in path". I see the following behaviour on NuttX 21349 7.26, where I have SD card mounted on /flash and a directory called 21350 "frm" on it: 21351 21352 opendir("/flash") returns (DIR *) 0x1000c580 21353 opendir("/flash/") returns (DIR *) 0x1000c5d0 21354 opendir("/flash/frm") returns (DIR *) 0x1000c620 21355 opendir("/flash/frm/") returns (DIR *) 0x0 21356 21357 From POSIX specs for opendir(): "A pathname ... that ends with one or 21358 more trailing slashes shall be resolved as if a single dot character 21359 ( '.' ) were appended to the pathname." So for mount points, 21360 opendir() works correctly, but for FAT32 filesystem it fails to open 21361 directory if the path has a trailing slash... 21362 21363 NOTE: You would not see this problem if you call opendir() indirectly 21364 in NSH (like 'ls -R /') because NSH contains logic to remove trailing 21365 '/' characters from paths. From Gregory Nutt 21366 - dup()/dup2(): dup() and dup2() were broken some time back. 21367 fs_dupfd() was return returning OK on success, not the file 21368 descriptor of the duplicated fd. From David Sidrane 21369 - ProcFS: Remove the unnecessary critical section From Xiang Xiao 21370 - CROMFS: Fix hardfault. From David Sidrane 21371 - SmartFS MTD Driver: Fix smart_write_alloc_sector sector size mapping. 21372 Was not correctly calculating the encoded sector size for small (256) 21373 byte or large (>= 4096 byte) sectors. Noted by Daniel P. Carvalho. 21374 Fix from Ken Pettit 21375 - AT25 MTD Driver: Fixed missing opening parenthesis. From Marc Rosen 21376 - MTD Configdata MTD Driver: Check return value mtdconfig_readbytes(). 21377 From Jussi Kivilinna 21378 - S25FL1 MTD Driver: Minor change for the s25fl1 QSPI FLASH driver which 21379 fixes additional sectorshift vs. pageshift confusion. From Ken Pettit 21380 21381 * Networking/Network Drivers: 21382 21383 - All network drivers! Change pre-processor logic that selects the 21384 high priority work queue or gives preferential treatment to the high 21385 priority work. All network logic must run on the low priority work 21386 queue! Or suffer the consequences. From Gregory Nutt 21387 - Socket Clone/Dup: On a failure to start the TCP monitor, the cloned 21388 socket is closed but is not properly freed, leaving it attached to a 21389 TCP connection structure with the wrong reference count. From 21390 Gregory Nutt 21391 - ARP: Fix whitespace after ARPHRD_IEEE80211 in ARP header file. From 21392 Daniel Agar 21393 - 6LoWPAN: Fixes decompression of ipaddr from MAC address. The logic 21394 used to populate the IP from the radio address should match 21395 sixlowpan_ipfromsaddr/sixlowpan_ipfromeaddr From Anthony Merlino 21396 - 6LoWPAN: Fixes logic surrounding the Universal/Local bit. This bit 21397 represents whether the IID is locally/globally administered. The U/L 21398 bit is bit 1 of the MSB of the EUI-64. It should only be inverted in 21399 cases where there is a full EUI-64. In cases where the IID is derived 21400 from say, a short address, this bit should be forced to 0, indicating 21401 that it is locally administered. See: 21402 https://tools.ietf.org/html/rfc4291#section-2.5.1 21403 https://tools.ietf.org/html/rfc4944#section-6 21404 https://tools.ietf.org/html/rfc2464#section-4 21405 From Anthony Merlino 21406 - 6LoWPAN: IEEE802.15.4 stores and uses addresses in little endian 21407 order. From Anthony Merlino 21408 - 6LoWPAN: Address comment regarding avoiding double lookup of address 21409 context. From Anthony Merlino 21410 - 6LoWPAN: Record and restore d_buf on entry/exit of sixlowpan_input. 21411 This avoids an issue where d_buf gets set to NULL by 6LoWPAN, and 21412 then is used by forwarding logic from another network interface 21413 before getting set back to the drivers internal buffer. From Anthony 21414 Merlino 21415 - 6LoWPAN: sixlowpan_input should always return 0 if the incoming frame was 21416 consumed. From Anthony Merlino 21417 - TUN Driver: Fixes a problem reported by Masayuki Ishikwawa: Recently I 21418 noticed that ARP response packet is corrupted when I tried to run 21419 bluekitchen with the latest tun.c in TAP mode. If I revert commit 21420 8193c28e9126c9cb89042e80d6ebab7485a831e4, then it works again. From Xiang 21421 Xiao 21422 - Telnet Driver: Add missing logic to set read event flags in poll() 21423 method. From Ken Pettit 21424 21425 * Wireless/Wireless Drivers: 21426 21427 - BLE: Fix uninitialized variables. From Lwazi Dube 21428 - BLE GATT header file: Fix struct name. From Lwazi Dube 21429 - BLE GATT: Remove unnecessary GATT ioctls From Lwazi Dube 21430 21431 * Graphics/Display Drivers: 21432 21433 - ST7032: Fix seek method. Was not taking into account the offset for the 21434 SEEK_END case. Did not account for negative offsets. On errors, it was 21435 clobbering the filep->f_pos setting. From Gregory Nutt 21436 - PCF8574 Backpack: Fix seek method. Had the same problems as noted for 21437 ST7032 driver. From Gregory Nutt 21438 21439 * Common Drivers: 21440 21441 - Button Upper Half: Fix two bad NULL checks From Juha Niskanen 21442 - PWM Interface: Remove dependency on CONFIG_PWM for the upper-half 21443 PWM header. This allows compilation for the lower-level PWM drivers 21444 even if the upper-half PWM logic is not used. From Mateusz Szafoni 21445 - Various I2C Drivers: In most I2C drivers, correct upper index value 21446 in I2C trace dump. Eliminates the extra NONE event from the trace 21447 dump output. From Ouss4 21448 - Battery Gauge: Add missing initialization of semaphore. From Alan 21449 Carvalho de Assis 21450 - Batter Charger: Add missing initialization of semaphore. From Alan 21451 Carvalho de Assis 21452 - MCP73871: Fix Microchip MCP73871 Battery Charger driver to register 21453 correctly as a battery charger. The first element of a 'struct 21454 battery_charger_dev_s' should be a pointer to operations structure. From 21455 Alan Carvalho de Assis 21456 - MCP794xx: Fix MCP794xx driver to wait for OSCRUN and fix tm_year. From 21457 Abdelatif Guettouche 21458 - Numerous files: Fixes usage of CONFIG_BIG_ENDIAN; should be 21459 CONFIG_ENDIAN_BIG From Anthony Merlino 21460 21461 * ARMv7-A: 21462 21463 - ARMv7-A MMU: Fix end address calculation for mmu_invalidate_region() API 21464 From Petro Karashchenko 21465 21466 * ARMv7-M: 21467 21468 - ITM: Fix missing space causing macro issues From Alan Carvalho de 21469 Assis 21470 - Common Exception Handlers: This commit changes the lazy and non-lazy 21471 exception handler to remove a couple of cpsid instructions from them 21472 on ARMv7-m. If my understanding is correct then these interrupt 21473 manipulations aren't doing anything anyway because prioritization 21474 stops secondary interrupts arriving and, even if they did work, they 21475 would have introduced race conditions for the period of time between 21476 the interrupt arriving and further interrupts being disabled. From 21477 Dave Marples 21478 - MPU/Protected Mode Build: Revert "arch/arm/armv7-m: MPU: 21479 mpu_log2regionceil needs take into account the offset too". Masayuki 21480 Ishikawa reports that this commit breaks ALL PROTECTED mode builds. It 21481 violates the basic requirements of the use of the MPU in protected mode. 21482 Those basic requirements are: 21483 1. The MPU region must be aligned to the base address of the memory 21484 region being mapped (it may NEVER extend before the memory region). 21485 That is, the following MUST always be zero: (base & ((1 << l2size) - 1)) 21486 2. The MPU region must never extend beyond the end of the memory region. 21487 That is, the following must be true: size >= (1 << l2size) 21488 From Gregory Nutt 21489 21490 * Microchip PIC32MX Drivers: 21491 21492 - PIC32MX Ethernet: Fix a comparison in a debug assertion. Should be 21493 <= vs <. Noted by Anonymous in Bitbucket Issue 134. From Gregory Nutt 21494 21495 * Microchip PIC32MZ: 21496 21497 - PIC32MZ chip.h Header: Add a missing " in an error message. From Ouss4 21498 21499 * Microchip PIC32MZ Drivers: 21500 21501 - PIC32MZ Ethernet: Fix a comparison in a debug assertion. Should be 21502 <= vs <. Noted by Anonymous in Bitbucket Issue 134. From Gregory Nutt 21503 21504 * Microchip/Atmel SAMD21/L21 21505 21506 - SAMD21/L21: Corrects behavior of the I2C_M_NOSTART flag. Also adds 21507 a release a bus on RXNACK and corrects typo priv->flags to msg->flags 21508 as priv->flags is never set. From Alexander Vasiliev 21509 - SAMD21/L21: Fix SAMD2L2 arch to use calibrated oscillator value. Now 21510 SAMD20 and SAMD21 should work fine without external crystal. Note that 21511 SAML21 Xplained board has an external crystal and doesn't need this change, 21512 unless you don't want to use the crystal. From Alexander Vasiliev 21513 - SAMD21/L21 I2C Master: Adds calculation of a timeout and disables 21514 interrupts in case of error. From Alexander Vasiliev 21515 21516 * Microchip/Atmel SAMD21/L21 Boards 21517 21518 - SAML21-Xplained: Fix removed MAXCOARSESTEP from saml21-xplained board. 21519 From Alan Carvalho de Assis 21520 21521 * Microchip/Atmel SAMD51/Ex 21522 21523 - SAMD51/Ex: Alexander Vasiliev's fix to the SAMD21 I2C Master (commit 21524 b1110ba91c549572e94c24ebed202643233deee3) should probably also be 21525 applied to the SAMD51 I2C Master which is identical. From Gregory Nutt 21526 21527 * Microchip/Atmel SAMV7 21528 21529 - SAMV7 Serial: Fix case where TTYS0 is not defined. From Ken Pettit 21530 21531 * Maxim Integrated MAX326xx 21532 21533 - MAX326xx: WFI instruction in IDLE loop seems to interfere with 21534 stability. Commented out for now. Needs to be investigated further. 21535 From Gregory Nutt 21536 21537 * NXP i.MXRT Drivers: 21538 21539 - i.MXRT FLEXPWM: Correct duplicated definitions From David Sidrane 21540 - i.MXRT SERIAL: Fix TTYS0 defined definitions of higher numbered ports 21541 From David Sidrane 21542 - i.MXRT LPSPI: Removed unused clock, that borked the build. From David 21543 Sidrane 21544 - i.MXRT LPI2C: I2C Reset rework From David Sidrane 21545 21546 * On Semi LC823450: 21547 21548 - LC823450: Fix up_allocate_heap() in lc823450_allocateheap2.c. This 21549 change fixes heap size and also implements up_addregion(). From 21550 Masayuki Ishikawa 21551 - LC823450: Fix go_os_start() in lc823450_start.c. I found a bug in 21552 go_os_start() that it returns immediately because it does not compare 21553 r1 to zero. This commit fixes this bug. Also, this commit fixes its 21554 description. From Masayuki Ishikawa 21555 - Other Architectures: Masayuki Ishikawa's change to go_os_start() was 21556 also to all MCU-specific start-up functions that support 21557 go_os_start(). From Gregory Nutt 21558 21559 * On Semi LC823450 Boards: 21560 21561 - LC823450-XEVK: Fix IOB params in rndis/defconfig. These parameters 21562 work for HTTP audio streaming. From Masayuki Ishikawa 21563 - LC823450-XGEVK: Change RNDIS MAC address assignment in rndis 21564 configuration. In previous implementation, mac[0] was assigned to 21565 0xaa for RNDIS host to avoid MAC address conflicts with RNDIS 21566 device.. However, I noticed that this assignment causes a random MAC 21567 address generation on ubuntu16.04 or later which is inconvenient to 21568 set up network interface. This new assignment scheme fixes this 21569 issue. From Masayuki Ishikawa 21570 - LC823450-XGEVK: Fix overlapped memory settings in memory.ld. From 21571 Masayuki Ishikawa 21572 21573 * STMicro STM32 Drivers: 21574 21575 - STM32: Remove redundant STM32 family definitions from chip.h header 21576 file. It is already done in arch/arm/src/stm32/Kconfig From Mateusz 21577 Szafoni 21578 - STM32 ADC: There is no DMA CFG bit for the basic IPv1 ADC. From 21579 Mateusz Szafoni 21580 - STM32 ADC: Refactor adc_reset. It should be easier to maintain this 21581 code if it's divided into smaller functions From Mateusz Szafoni 21582 - STM32 F0 Clocking: Fixes the problem in GPIO port clocks. Only port 21583 A clock was enabled although the comment states otherwise. From Juha 21584 Paalijärvi 21585 - STM32 F7 I2C: I2C out of bounds access on priv->msgv. Error in if 21586 statement. It was checking for msgc > 0. If message count is 1, only 21587 index 0 is valid on priv->msgv. Therefore random values in memory 21588 were used to set next_norestart. From David Sidrane 21589 - STM32 H7 I2C: Applied David Sidrane's I2C fix to the identical logic 21590 for STM32 H7. From Gregory Nutt 21591 - STM32 L4 I2C: Applied David Sidrane's I2C fix to the identical logic 21592 for STM32 L4. From Gregory Nutt 21593 21594 * STMicro STM32 Drivers: 21595 21596 - STM32 ADC: Fix RCC reset logic. From Mateusz Szafoni 21597 - STM32 ADC: Fix compilation errors for chips with one ADV TIM. From 21598 Mateusz Szafoni 21599 - STM32 DMA: Add missing DMA channel configuration. 21600 - STM32 PWM: STM32 MOE is not being appropriately handled for PWM for 21601 advanced timers. It is only ever reset and so no PWM train is 21602 generated. This change addresses this. Noted by Dave Marples. From 21603 Mateusz Szafoni 21604 - STM32 PWM: Fix compilation errors if the upper-half PWM logic is not 21605 enabled. From Mateusz Szafoni 21606 - STM32 SPI: STM32F446 & STM32F469 correct PC1 SPI assignments From 21607 David Sidrane 21608 - STM32 TIM: Fix compilation error if there is no TIM8. From Mateusz 21609 Szafoni 21610 - STM32 F0: Fix GPIO EXTI lines assignment for STM32 M0. From Mateuz Szafoni 21611 - STM32 F3 I2C: Remove the extra NONE event from the trace dump 21612 output. From Ouss4 21613 - STM32 F4 I2C: Remove the extra NONE event from the trace dump 21614 output. From Ouss4 21615 - STM32 F7 I2C: Use clock_t for ticks instead of uint32_t to hold system 21616 time. From Jussi Kivilinna 21617 - STM32 L4 I2C: Use clock_t for ticks instead of uint32_t to hold system 21618 time. From Jussi Kivilinna 21619 21620 * STMicro STM32 Boards: 21621 21622 - STM32F429I-DISCO: Fix lvgl demo removing STM32_FB_CMAP. From Alan 21623 Carvalho de Assis 21624 - STM32VL Discovery: Fix SRAM and FLASH size in the linker script. 21625 There is STM32F100RB with 8KB RAM and 128KB FLASH on the STM32VL 21626 Discovery kit. Invalid memory size could cause a hard fault. From 21627 Matous Pokorny 21628 - STM32VL Discovery: Fix memory size configuration and documentation. 21629 There is STM32F100RB instead of STM32F100RC on the STM32 VL Discovery 21630 kit. From Matous Pokorny 21631 - Viewtool-STM32F107: Change RNDIS MAC address assignment in rndis 21632 configuration. In previous implementation, mac[0] was assigned to 21633 0xaa for RNDIS host to avoid MAC address conflicts with RNDIS 21634 device.. However, I noticed that this assignment causes a random MAC 21635 address generation on ubuntu16.04 or later which is inconvenient to 21636 set up network interface. This new assignment scheme fixes this 21637 issue. From Masayuki Ishikawa 21638 21639 * TI Tiva: 21640 21641 - Tiva LM/TM4C Start-Up: Remove option CONFIG_TIVA_BOARD_CLOCKCONFIG. It is 21642 not used and unnecessary. Fix some naming. up_clockconfig() is 21643 inappropriate. Change tiva_clockconfig() to tiva_clock_reconfigure() 21644 then we can change up_clockconfig() to tive_clock_configure(). From 21645 Gregory Nutt 21646 - Tiva LM/TM4C GPIO Interrupts: Fix tiva gpio interrupts From Lwazi Dube 21647 - Tiva LM/TM4C: Improve GPIO interrupt support by removing unnecessary, 21648 hard-coded per-MCU defines and using the existing Kconfig configuration 21649 options instead. From Lwazi Dube 21650 21651 * TI Tiva Drivers: 21652 21653 - Tiva TM4C Serial: After commit 21654 51b78034ac8d1fdf598107bf4093f0beccd5b80b, my tiva console does not 21655 work - enter key produces garbage characters. This commit fixes the 21656 problem for me. From Lwazi Dube 21657 21658 * C Library/Header Files: 21659 21660 - include/dsp.h: Fix missing semicolon error in dsp.h From MYAPICI 21661 - include/nuttx/compiler.h: Correct support of C-version-specific features. 21662 Cannot depend on GCC version because -std=c89 may be used on comomand 21663 line. Need instead to use __STDC_VERSION__ to determine if a feature is 21664 supported. Also add conditional support inline, depending on C99. From 21665 Gregory Nutt 21666 - libs/libc/stdio: fread() should always set EOF if fewer than the 21667 requested number of bytes was not read. Per Anthony Merlino. From 21668 Gregory Nutt 21669 21670 * Build System: 21671 21672 - sched/irq/Make.defs: Fix warning about irq_csection.o appearing 21673 multiple times in the same rule. From Gregory Nutt 21674 21675 * Tools: 21676 21677 - tools/gencromfs.c: "gencromfs.c:1171:3: warning: ignoring return 21678 value of 'asprintf'", declared with attribute warn_unused_result 21679 [-Wunused-result]. From David Sidrane 21680 - tools/gencromfs.c: Fix build on macOS. From David Sidrane 21681 21682 * NSH Library: apps/nshlib: 21683 21684 - apps/nshlib: Fixes an error in the NSH parser. There was a bug when 21685 executing an nsh shell script which contains a redirection. When the 21686 command in the script is executed, it sets the vtbl->np.np_redirect flag 21687 (as it should), but then doesn't restore it, leaving it set at the end of 21688 the script execution. Then the vtbl->np.np_redirect flag is set when the 21689 'sh' command completes, causing a restore from un-initialized variables, 21690 thus leading to a crash. See the code snippet below for an example test 21691 case. 21692 21693 Test case: 21694 21695 NuttShell (NSH) 21696 nsh> mkrd -s 1024 40 21697 nsh> mkfatfs /dev/ram0 21698 nsh> mount -t vfat /dev/ram0 /tmp 21699 nsh> echo "echo 1 > /dev/null" > /tmp/test.sh 21700 nsh> cat /tmp/test.sh 21701 echo 1 > /dev/null 21702 nsh> sh /tmp/test.sh 21703 ... 21704 21705 The nsh prompt doesn't get printed. You can type a couple of commands, 21706 but then the system will crash because of bad pointers. From Ken Pettit 21707 - apps/nshlib: Fix buffer overrun when redirected to a file. SAVE_SIZE 21708 must be the same as sizeof(struct serialsave_s). From Masayuki Ishikawa 21709 21710 * System Utilities: apps/system: 21711 21712 - system/system.c: Fixes build error; There is no result variable, use 21713 errcode instead. From Anthony Merlino 21714 - apps/system/vi: Bug fixes: 21715 1. Deletion of last line in file using 'dd' caused infinite loop 21716 searching for 'nextline'. Fixed. 21717 2. Insertion of line above 1st line using 'O' caused line to be 21718 inserted on 2nd line. Fixed. 21719 3. Paste buffer from 'dd' was being free'd after the 'p'aste operation, 21720 preventing multiple paste opportunity. Fixed. 21721 4. The cursor was not being bound to the line end and was allowed to 21722 'hover' over the '\n' EOL character. This caused weird (relative to 21723 standard vi) insertion locations and cursor movement with 'a'ppend 21724 and 'i'nsert. Fixed. 21725 5. The 'vi_shrinkpos' position didn't take the end of file pointer into 21726 account when calculating 'curpos', 'prevpos' variables causing 21727 weirdness when deleting things near the end of the file. Fixed. 21728 6. The 'yy'ank command was improperly deleting the text from the 21729 document instead of simply yanking to the paste buffer. Fixed. 21730 7. The 'dd'elete line function was not copying the deleted line to the 21731 paste buffer as part of the delete operation. Fixed. 21732 8. The bottom line of the screen was sometimes being used for document 21733 text and other times for command / find entry. Fixed by reserving 21734 the bottom the bottom line for status / command only. 21735 9. When scrolling up / down through a file, the cursor position was not 21736 preserved and moved further and further to the left column based on 21737 the line lengths of the lines visited. Fixed. 21738 10. The display was being COMPLETELY redrawn with each keystroke, 21739 causing the responsiveness to be unbearable. Fixed. Added logic to 21740 dynamicall indicated which portions of the screen need to be updated 21741 (full display, current line to end of screen, current line only, 21742 none). 21743 11. The individual display line updates were being performed a character 21744 at a time by calling the vi_putch() function, causing slow 21745 performance, especially in telnet or USBCDC sessions where there is 21746 a lot of overhead per packet. Fixed by calling vi_write() instead 21747 with a block of characters with breaks as needed for TAB exansion. 21748 12. The forward delete 'x' operation allowed deletion through '\n' 21749 characters causing lines to be joined. This is different from 21750 standard vi where 'x' at the end of a line performs a delete 21751 backward operation. Fixed. 21752 13. When in 'ex' or find sub-modes (':' or '/' bottom line modes), 21753 hitting backspace with empty text did not return the operation to 21754 command mode like it does in standard vi. Fixed. 21755 14. Performing a 'find' opertation would only search from the current 21756 cursor position to the end of the file and did not wrap like in 21757 standard vi. Fixed. 21758 15. Loading a file that was larger than the initial text allocation 21759 would force a call to 'vi_extendtext', marking the file as modified 21760 when in fact it hadn't even been loaded yet. Fixed. 21761 16. Combined vi_insert_mode and vi_replace_mode into a single function 21762 to save code space since they are nearly identical routines. 21763 17. In command mode, backspace was deleting characters which is 21764 different from standard vi. Backspace in command mode normally 21765 simply moves the cursor left / to the previous line. Fixed. 21766 18. Added code to handle boundary conditions when the file is new and 21767 commands are applied to an empty file. 21768 19. Fixed vi_shrinktext so it doesn't allocate a zero-length buffer when 21769 the last character in the file is deleted. 21770 20. The 'x' command was not copying to the paste buffer. Fixed. 21771 21. Fixed parsecolon routine to properly deal with ":wq" command sequence. 21772 From Ken Pettit 21773 21774 * Wireless Utilities: apps/wireless: 21775 21776 - apps/wireless/bluetooth/btsak: 'bt bnep0 info' outputs a reversed addr. It 21777 should print BDAddr: aa:bb:cc:dd:ee:ff instead of BDAddr: 21778 ff:ee:dd:cc:bb:aa. From Lwazi 21779 - apps/wireless/bluetooth/btsak: Fix some errors in btsak. From Lwazi Dube 21780 - apps/wireless/bluetooth/btsak/btsak_main.c: Fix address parsing. From 21781 Lwazi Dube 21782 - apps/wireless/bluetooth/btsak: Remove unnecessary gatt get commands. From 21783 Lwazi Dube 21784 - apps/wireless/bluetooth/btsak/btsak_scan.c: Fix reversed address. From 21785 Lwazi Dube 21786 - apps/wireless/ieee802154/i8sak: Fixes issues related to re-running 21787 daemon. Releases lock when releasing daemon. Re-sets daemon_shutdown so 21788 that a subsequent daemon launch does not immediately return. From Anthony 21789 Merlino 21790 21791NuttX-7.29 Release Notes 21792------------------------ 21793 21794The 129th release of NuttX, Version 7.29, was made on March 25, 2019, 21795and is available for download from the Bitbucket.org website. Note 21796that release consists of two tarballs: nuttx-7.29.tar.gz and 21797apps-7.29.tar.gz. These are available from: 21798 21799 https://bitbucket.org/nuttx/nuttx/downloads 21800 https://bitbucket.org/nuttx/apps/downloads 21801 21802Both may be needed (see the top-level nuttx/README.txt file for build 21803information). 21804 21805Additional new features and extended functionality: 21806 21807 * Core OS: 21808 21809 - Configuration: CONFIG_NFILE_DESCRIPTORS=0 can no longer be used to 21810 disable the file system. NuttX with no file system does not make 21811 sense and is no longer supported. From Gregory Nutt. 21812 - Rename most internal OS functions from sched_* to nxsched_* to 21813 indicate that they are NuttX internal functions (some renaming is 21814 still needed). From Gregory Nutt. 21815 - Rename all internal OS functions from task_* to nxtask_* to indicate 21816 that they are NuttX internal functions. From Gregory Nutt. 21817 - Rename sched_process_timer to nxsched_process_timer. Rename 21818 sched_timer_expiration to nxsched_timer_expiration. Rename 21819 sched_alarm_expiration to nxsched_alarm_expiration. Those are the 21820 appropriate names for an internal sched/ function (still many named 21821 incorrectly). From Gregory Nutt. 21822 - Standardize naming: Rename os_start() to nx_start(), rename os_smp* 21823 to nx_smp*, rename os_bringup to nx_bringup, rename all internal 21824 static functions to begin with nx_ vs os_. From Gregory Nutt. 21825 - Initialization: Remove the option CONFIG_BOARD_INITTHREAD. Now, if 21826 CONFIG_BOARD_INITIALIZE is selected, then the board_initialize() 21827 logic will ALWAYS run on an internal kernel thread. This will 21828 prevent the problems people have had doing inappropriate 21829 board_initialization on the IDLE thread. From Gregory Nutt. 21830 - Initialization: Add support for CONFIG_BOARD_EARLY_INITIALIZE. If 21831 this option is selected then nx_start() will call a board-provided 21832 function board_early_initialize() immediately after calling 21833 up_initialize(). Rename board_initialize() to 21834 board_late_initialize(). From Gregory Nutt. 21835 - Signal Delivery: Add a flag to the TCB to indicate that we are in a 21836 signal handler. Use this flag to assure that a there is never 21837 attempts to nest signal handling operations on a thread. This was 21838 guaranteed before but when locking of pre-emption during signal 21839 delivering was eliminated in a previous commit, there was a remote 21840 possibility of an attempt to do nested signal handling. This flag 21841 assures that there is only one signal handled at a time. From 21842 Gregory Nutt. 21843 - Signal Handler Security: The architecture-specific signal handler 21844 return register state is saved and available on the user stack. 21845 This commit reorders some logic so that certain, critical registers 21846 are preserved in the TCB. This eliminates most malicious exploits 21847 which more the return address, for example, but does not make the 21848 logic 100% secure. From Gregory Nutt. 21849 - Timer Interrupt Procssing: Add a configurable call out to a 21850 user-provided function, 'timer hook', on each timer interrupt. From 21851 Gregory Nutt. 21852 - PM Activity: Add pm_staycount() API for get stay numbers. This 21853 function is currently not used and a waste of FLASH space. From ligd. 21854 - Pthreads: Add support for pthread_mutex_timedlock From Leif Jakob. 21855 - Pthread Spinlocks: Add a very preliminary implementation of the new 21856 POSIX pthread_spinlock_* interfaces. From Gregory Nutt. 21857 - Critical Section Monitor: Remove SCHED_IRQMONITOR_GETTIME to 21858 simplify the clock source selection: (1) Use up_critmon_gettime if 21859 SCHED_IRQMONITOR, (2) Call clock_systimespec if SCHED_TICKLESS, (3) 21860 Don't collect timing info for all other cases. From Xiang Xiao. 21861 - Work Queue Notification: Notifier can now work with either lpwork 21862 or hpwork. From Xiang Xiao. 21863 - Protected Build: Add add a new field (us_heapend) to struct 21864 userspace_s that labels the end of the heap. From Xiang Xiao. 21865 21866 * Binary Loader/Kernel Modules/Shared Libraries 21867 21868 - Shared Libraries: Implement dlerror() using strerror(). From Xiang 21869 Xiao. 21870 - Shared Libraries: Add LD_LIBRARY_PATH environment variable 21871 support. From anchao. 21872 - ELF Loaders: Optimize elf load speed: (1) Don't zero out memory, 21873 (2) Reduce the initial buffer size to 32 bytes. From Xiang Xiao. 21874 - ARM ELF Relocation: Add support for the R_ARM_THM_JUMP11 relocation 21875 type. This relocation type may be generated when LTO optimization 21876 is enabled. From anchao. 21877 - ELF Modules: Add relocation buffer table to reduce filesystem 21878 access. From anchao. 21879 - ELF Modules: Add symbol buffer table to reduce filesystem access. 21880 From anchao. 21881 21882 * File Systems/Block and MTD Drivers 21883 21884 - Filesystem Mount: Move the union inode_ops_u i_mtd field into the 21885 mount section of inode_ops_u and remove the guard to simplify fs 21886 which support both block and mtd. From Xiang Xiao. 21887 - ROMFS: Add support to mount a ROMFS volume using an MTD driver 21888 interface using the standard mount() operation. From Xiang Xiao. 21889 - LittleFS: VFS wrapper improvement: (1) Support block device 21890 interface, (2) support ioctl, stat and sync file operation, (3) 21891 support forceformat and autoformat option, (4) update file->f_pos 21892 and dir->fd_position, (5) remove the internal struct from dir, and 21893 (6) remove mtd byte read/write requirement. From Xiang Xiao. 21894 - UnionFS: Support mount of UnionFS from the NSH command line. From 21895 Xiang Xiao. 21896 21897 * Networking/Network Drivers: 21898 21899 - UsrSock: Add mutual exclusion so that only user can perform a 21900 socket request From zhangyuan7. 21901 - UDP: Initialize callback address structure to avoid random values 21902 in padding. From anchao. 21903 21904 * Wireless/Wireless Drivers: 21905 21906 - SX127x: Initial support for SX127x LoRA radio From Mateusz Szafoni. 21907 21908 * Graphics/Display Drivers: 21909 21910 - Graphics: Fix a naming collision: Ye olde nx_start that started 21911 the NX graphics is now nxmu_start(). nxmu_start() is now 21912 prototyped in nxmu.h (instead of nx.h). From Gregory Nutt. 21913 - NX Server Startup: Extend nxmu_start() so that receives a display 21914 number as an argument. This makes it possible to have multiple 21915 instances of the NX server running on boards that support multiple 21916 displays. Also includes updates to boardctl() to accept display 21917 number parameters. From Gregory Nutt. 21918 - Graphics: nx_openwindow() and nxtk_openwindow() now accept an 21919 additional 'flag' parameter. This argument is current used only to 21920 select a RAM backed, per-window framebuffer. From Gregory Nutt. 21921 - Per-Window Framebuffers: Windows may now be optionally created 21922 with a RAM framebuffer backing up the window content. Rending into 21923 the window will result in rending into the backup framebuffer, then 21924 updating the physical display from the framebuffer. The advantage 21925 of this option is that the application that manages window will no 21926 longer receive redraw() callbacks. Those calls normally occur when 21927 a window "above" moves exposing a portion of the window below. If 21928 this option is selected, then the system will redraw the exposed 21929 portion of the window from the backup framebuffer without 21930 intervention of the window applications. This greatly reduces the 21931 complexity of the application and performance of the window at the 21932 expense of increased memory usage. Redraw requests in other cases 21933 are also suppressed: Changes to window position, size, etc. As a 21934 consequence, some manual updates will be required when certain 21935 events occur (like removing a toolbar from a window). NOTE: A 21936 significant amount of RAM, usually external SDRAM, may be required 21937 to use per-window framebuffers. 21938 21939 * Other Common Device Drivers: 21940 21941 - Driver Notifications: Support signal notification through 21942 SIGEV_THREAD in all drivers that provide signal notifications: 21943 RTC, Joysticsks, buttons, Zero-Crossing, wireless, FT80x, Timer, 21944 PHY. From Xiang Xiao. 21945 - Watchdog Driver: Support auto-monitor service From Gregory Nutt. 21946 - Timer and Alarm Drivers: Implement up_critmon_gettime and 21947 up_critmon_convert and remove the critical section from 21948 current_usec to infinite recursion. From Xiang Xiao. 21949 - RTC Driver: Protect the RTC state with a semaphore. From Xiang 21950 Xiao. 21951 - Serial Upper Half: Call pm_activity() when characters are received 21952 on a console device. From Gregory Nutt. 21953 - MPU60x0: Initial support for TDK InvenSense MPU6000 and MPU6050 21954 6-axis gyroscope and accelerometers. This commit supports SPI 21955 media only. From Bill Gatliff. 21956 - EEPROM Driver: Add configurable SPI eeprom frequency. From 21957 Valmantas Paliksa. 21958 - GPIO Driver: Support reading and writing gpio pins using cat and 21959 echo. From Valmantas Paliksa. 21960 - MCP2515: Add MCP2515 clock input config to KConfig. From 21961 Valmantas Paliksa. 21962 - MAX7456: Support for the Maxim MAX7456 on-screen-display chip. 21963 From Bill Gatliff. 21964 21965 * Common Board Logic: 21966 21967 - boardctl(): up_testset() can now be accessed by applications via 21968 the boardctl() interface rather than attempting to call it 21969 directly. pthread Spinlocks are not available unless the 21970 architecture supports the up_testset() operation. From Gregory 21971 Nutt. 21972 - boardctl(): Add support for BOARDIOC_NXTERM which can be used to 21973 create an NxTerm terminal. From Gregory Nutt. 21974 - boardctl(): Add boardctl() commands to replace direct calls to 21975 nxterm_redraw() and nxterm_kbdin(). From Gregory Nutt. 21976 21977 * Microchip PIC32MZ Drivers: 21978 21979 - PIC32MZ Timers: Add support for the PIC32MZ timers (driver, 21980 lowerhalf, freerun and oneshot) From Abdelatif Guettouche. 21981 21982 * Common ARM Options: 21983 21984 - arch/arm: Move FPU options to a common place and unify the usage 21985 by removing ARCH_CORTEXRxF. From Xiang Xiao. 21986 - arch/: Unify the cache interface for all architectures that 21987 support a data cache. From Xiang Xiao. 21988 - ARMv7-M/A/R: Add a architecture-specific new barriers.h header 21989 file that provides the memory barrier definitions that were 21990 previously in the (now unified) cache.h header files. From Gregory 21991 Nutt. 21992 21993 * ARMv7-A 21994 21995 - ARMv7-A: Support thumb mode and fix interworking issue. From 21996 zhangyuan7. 21997 - ARMv7-A: Add weak attribute to arm_data_initialize so platform 21998 could provide the new implementation as needed. From zhangyuan7. 21999 - ARMv7-A: Add SCR bit definitions. From Xiang Xiao. 22000 - ARMv7-A: Add mmu_l1_map_regions() to remove the code duplication. 22001 From Xiang Xiao. 22002 - ARMv7-A: Add the initial cortex-a7 architecture support From 22003 zhangyuan7. 22004 22005 * ARMv7-M 22006 22007 - ARMv7-M: stackcheck allow faulting stack calculation to make it to 22008 the up_assert reg dump From David Sidrane. 22009 22010 * Microchip/Atmel SAMD21/L21 Drivers: 22011 22012 - SAMD2/L2: Add RS485 support to SAMD2L2 serial. From Alan Carvalho 22013 de Assis. 22014 22015 * Misoc: 22016 22017 - Minerva: Add support for the Minerva architecture. From Ramtin 22018 Amin. 22019 22020 * Misoc Boards: 22021 22022 - misoc: Add support for an NSH configuration using the Verilator 22023 board. From Ramtin Amin. 22024 22025 * Nordic NRF52: 22026 22027 - NRF52: 1. Added 52840 family support 2. Use common IRQ and memory 22028 layout header file for 52832 & 52840. From Levin Li. 22029 22030 * Nordic NRF52 Drivers: 22031 22032 - NRF52 RNG: 1. added RNG device driver 2. added errdata to correct 22033 temp which will be used by RNG module 3. use general task_trigger / 22034 event_clear inline api for all driver. From Levin Li. 22035 22036 * NXP i.MX RT Drivers: 22037 22038 - i.MXRT XBAR: Add XBAR Support. From David Sidrane. 22039 - i.MXRT USB: Add USB analog header file. From David Sidrane. 22040 - i.MXRT OCOTP: Added OCOTP Support. From David Sidrane. 22041 - i.MXRT LCD: Adds framebuffer support for the i.MXRT 1050. 22042 Includes DCD initialization for SDRAM to provide space for the 22043 framebuffer. External code I used/ported is from NXP and is BSD 22044 3-clause license. From Johannes. 22045 22046 * NXP i.MX RT Boards: 22047 22048 - IMXRT1050-EVK: Adds framebuffer support for the i.MXRT 1050. 22049 From Johannes. 22050 22051 * NXP LPC17xx 22052 22053 - LPC17xx: Add a configuration option to skip over the framebuffer 22054 when adding DRAM to the heap. From Gregory Nutt. 22055 22056 * NXP LPC17xx Boards 22057 22058 - Open1788: Add a configuration to test NxTerms in the PROTECTED 22059 mode. From Gregory Nutt. 22060 - Open1788: Re-arrange PROTECTED mode link map to make more space 22061 for large kernels with debug enabled. From Gregory Nutt. 22062 - Open1788: Add a configuration for testing per-window frame buffers 22063 using apps/examples/pwfb. From Gregory Nutt. 22064 22065 * NXP LPC54xx Boards 22066 22067 - LPCXpresso-LPC54628/pwfb: Add per-window framebuffer configuration 22068 using apps/examples/pwfb. From Gregory Nutt. 22069 - LPCXpresso-LPC54628: Add a configuration for addition per-window 22070 framebuffer using apps/examples/pwlines. From Gregory Nutt. 22071 22072 * STMicro STM32 Drivers: 22073 22074 - STM32F0/L0 SPI: Add SPI support for F0. From Mateusz Szafoni. 22075 - STM32 ADC, PWM and TIM: (1) configure injected channels external 22076 trigger when ADC enabled, (2) update injected conversion queue of 22077 context after configuration, (3) support for offset configuration, 22078 and (6) support for advanced timers channel 5 and 6. From Mateusz 22079 Szafoni. 22080 - STM32 DFU Mode: Add logic to reboot the STM32 in DFU mode. 22081 Current implementation only works for STM32F2 and F4. From Bill 22082 Gatliff. 22083 - STM32F7 LSE: Add configuration of LSE oscillator drive capability 22084 From Jussi Kivilinna. 22085 - STM32F7 I2C: Fix another memory access issue on a bus error. From 22086 David Sidrane. 22087 - STM32F7 TIM: Add OUTTOGGLE mode for STM32f7 timer From Valmantas 22088 Paliksa. 22089 - STM32F7 Timer Lower Half: Add timer lowerhalf driver for stm32f7. 22090 From Valmantas Paliksa. 22091 - STM32F7 ITM: Add ITM syslog support. From Valmantas Paliksa. 22092 - STM32F7 CAN: Add CAN driver with support for three bxCAN 22093 interfaces. From Valmantas Paliksa. 22094 - STM32F7 QSPI: Add stm32f7 Quad SPI support. From Valmantas Paliksa. 22095 - STM32L4 LSE: Ports Jussi Kivilinna's recent STM32F7 LSE change to 22096 STM32L4. From Juha Niskanen (Haltian). 22097 - STM32H7 I2C: Apply David Sidrane's fix for the STM32F7 to the 22098 STM32H7. From Gregory Nutt. 22099 - STM32H7 DMA: Rename DMA1/2 IRQ names to match those from other 22100 STM32. Add auxiliary definitions. Add DMAMAP definitions for 22101 MDMA, DMA1, DMA2 and BDMA. Add some address blocks. Change RCC 22102 definitions to match other STM32 ports. Enable clock for MDMA and 22103 BDMA. Rename DMA channel definitions. Separated files for MDMA, 22104 DMA, BDMA and DMAMUX. Add missing definitions for MDMA, BDMA and 22105 DMAMUX. SPI DMA mode. Add base addresses for D1, D2 and D3 22106 domain; use 2 bytes to specify memory region. Add D1 domain core 22107 prescaler configuration. From Mateusz Szafoni. 22108 - STM32H7 OTG: Initial OTG support for STM32H7 and some minor 22109 improvements. Add support for HSI48 clock. From Mateusz Szafoni. 22110 - STM32H7 Build: Initial support for protected build mode. From 22111 Mateusz Szafoni. 22112 - STM32L4 I2C: Apply David Sidrane's fix for the STM32F7 to the 22113 STM32L4. From Gregory Nutt. 22114 22115 * STMicro STM32 Boards: 22116 22117 - B-L072Z-LRWAN1: Add SX127x configuration. From Mateusz Szafoni. 22118 - Nucleo-F091RC: Add support for SX127x radio. From Mateusz Szafoni. 22119 - Nucleo-F091RC: Add SX127x configuration. From Mateusz Szafoni. 22120 - Nucleo-F207ZG: Add support for USB and initialize CDCACM if 22121 configured. From Mateusz Szafoni. 22122 - STM32F429I-DISCO: Add an apps/examples/examples/nxhello 22123 configuration. From Gregory Nutt. 22124 - Nucleo-F446RE: Add support for the Nucleo F446RE. From Sebastien 22125 Lorquet. 22126 - B-L072Z-LRWAN1: Use HSI as default clock source. From Mateusz 22127 Szafoni. 22128 - Nucleo-L073RZ: Add SX127x configuration. From Mateusz Szafoni. 22129 - Nucleo-L073RZ: Port button logic from nucleo-f072 which appears to 22130 be the same. From Gregory Nutt. 22131 - Nucleo-L432KC: Add support for I2C driver initialization. From 22132 Nikolay Semenov. 22133 - Nucleo-H743ZI: Add support for USB and initialize CDCACM if 22134 configured. From Mateusz Szafoni. 22135 - OmnibusF4: Initial support for the OmnibusF4 family of flight 22136 management units. "OmnibusF4" is not a product name per se, but 22137 rather a design spec that many product vendors adhere to. The spec 22138 defines the major components, and how those components are wired 22139 into the microcontroller. Airbot is one such vendor, and they 22140 publish a schematic here: http://bit.ly/obf4pro. Other software 22141 that supports the OmnibusF4 family include Betaflight, iNAV, and 22142 many others. PX4 recently added support as well, using their own, 22143 non-upstreamed, bespoke port of NuttX. No code from those resources 22144 is included in this port. From Bill Gatliff. 22145 - OmnibusF4: Add MAX7546 support. From Bill Gatliff. 22146 22147 * TI CCxx: 22148 22149 - CC1312R1: Code complete and builds successfully. Stalled on 22150 further radio development. I planned to integrate the IEEE 802.15.4 22151 radio interface, but the Cortex-M0 interface is not available with 22152 an open license. 22153 22154 * TI CCxx Boards: 22155 22156 - LaunchXL-CC1312R1: Add support for on-board LEDs and buttons. The 22157 LauchXL-CC1312R1 NSH Configuration is now fully functional. From 22158 Gregory Nutt. 22159 - LaunchXL-CC1310: Clone LED and button support from the 22160 LaunchXL-CC1312R1. The number of LEDs and buttons as well as DIO 22161 usage is identical (Still not functional). From Gregory Nutt. 22162 22163 * Tools: 22164 22165 - tools/rmcr.c: Add a tool to remove carriage returns and dangline 22166 whitespace at the end of lines. From Gregory Nutt. 22167 - tools/nxstyle.c: Can now detect if the C comment closing is not on 22168 a separate line. From Gregory Nutt. 22169 - tools/nxstyle.c: Make sure that all files begin with a comment on 22170 line 1 (which should be the file header). From Gregory Nutt. 22171 - tools/nxstyle.c: Add check for multiple definitions of local 22172 variables on a line. From Gregory Nutt. 22173 - tools/nxstyle.c: Beef up logic that detects multiple variable 22174 definitions per line. From Gregory Nutt. 22175 - tools/nxstyle.c: Add capability to detect CamelCase identifiers. 22176 From Gregory Nutt. 22177 - tools/nxstyle.c: Add logic to detect a blank line following a left 22178 brace or a blank line preceding a right brace. From Gregory Nutt. 22179 - tools/nxstyle.c: Don't complain about certain lowercase characters 22180 in otherwise uppercase pre-processor identifiers: IPv6, IPv4, 22181 ICMPv6, IGMPv2, p as a decimal point, d signifying a divisor. It 22182 was a bad idea to let the door open a crack for there. While they 22183 improve readability, the inconsistently also causes other 22184 problems. From Gregory Nutt. 22185 22186 * Build System: 22187 22188 - Makefiles: Modify tools/Makefiles to add a "Do not Edit" warning 22189 on defconfig files From Alan Carvalho de Assis. 22190 22191 * Libraries/Header Files: 22192 22193 - lib_vsprintf() (Nano): Add newlib-nano lib_vsfprintf has been 22194 added and is now the default support for the printf family. This 22195 fprintf code was originally adapted from AVR libc and provides 22196 improved floating point output support, including 'g' mode and 22197 making 'f' mode include digits past the decimal by default. The 22198 newlib version can be found here: 22199 https://salsa.debian.org/electronics-team/toolchains/newlib-nano. 22200 That project is GPL overall, but the newlib-nano printf portions 22201 are BSD licensed as described in the COPYING.NEWLIB file. From 22202 Keith Packard. 22203 - lib_vsprintf() (Nano): Added support for long lont types. From 22204 Johannes. 22205 - lib_vsprintf() (Nano): Added hh type modifier (without extending 22206 the flag variable). From Johannes. 22207 - lib_vsprintf() (Nano): Adds configurable support for numbered 22208 arguments. From Johannes. 22209 - lib_vsprintf() (Nano): Cleaned naming and allow for leading zeros 22210 in argument number (which doesn't make sense but should be). From Johannes. 22211 - lib_vsprintf() (Legacy): Add support for %g format which, for 22212 these purpose, is equivalent to %f except that trailing zeroes are 22213 suppressed. From Gregory Nutt. 22214 - vscanf(): Moved vscanf logic to lib_sscanf.c Switched to stream 22215 interface (tricky, because the old implementation used massive read 22216 ahead, which isn't suitable for streams, chars already read are 22217 gone). Added hh, h, and ll modifiers. From Johannes. 22218 - scanf() and fscanf(): Added scanf and fscanf based on enhanced 22219 vscanf(). From Johannes. 22220 - uname(): Add build date and time to uname output (like Linux). 22221 From Gregory Nutt. 22222 - strsep(): Add strsep BSD/Linux function. From Xiang Xiao. 22223 - netdb: Hostname support no longer depends on CONFIG_NET since the 22224 host name is also useful in the non-network environment. 22225 CONFIG_NET_HOSTNAME changed to CONFIG_LIBC_HOSTNAME. From Xiang Xiao. 22226 - netdb: Support the nameserver change notification then we can pass 22227 DNS info from server to client in usrsock case. From Xiang Xiao. 22228 - include/fixedmath.h: Add macros for conversion between types 22229 b16_t and type double From Gregory Nutt. 22230 - include/limits.h: Define NL_ARGMAX (as well as some of the other 22231 'invariant values' per 22232 http://pubs.opengroup.org/onlinepubs/7908799/xsh/limits.h.html). 22233 From Johannes. 22234 - linclude/limits.h: Add 'range 9 999999' to CONFIG_LIBC_NL_ARGMAX 22235 to Kconfig. Per OpenGroup.org, the minimum value for NL_ARGMAX is 22236 9. From Gregory Nutt. 22237 - include/nuttx/lcd/edid.h: Add extended EDID block IDs From 22238 Gregory Nutt. 22239 22240 * apps/ General: 22241 22242 - apps/: Follow up the kernel signal-related change in various files 22243 under examples/ and graphics/. From Xiang Xiao. 22244 - apps/: Update for corrected name of standard header file. Should 22245 be dlfcn.h, not dllfcn.h. From Gregory Nutt. 22246 - apps/: The file system can no longer be disabled. Remove all 22247 conditional logic based on CONFIG_NFILE_DESCRIPTORS==0 From 22248 Gregory Nutt. 22249 - apps/: Remove/replace all conditional logic based on 22250 CONFIG_NSOCKET_DESCRIPTORS == 0. That value is always greater than 22251 zero now. In places just replace with #ifdef CONFIG_NET. From 22252 Gregory Nutt. 22253 - apps/: Some updates due to NuttX renaming: 22254 CONFIG_BOARD_INITIALIZE is now CONFIG_BOARD_LATE_INITIALIZE; 22255 board_initialize() is now board_late_initialize(). From Gregory 22256 Nutt. 22257 - apps/: Graphics interfaces nx_openwindow() and nxtk_openwindow() 22258 now accept an additional 'flag' parameter. From Gregory Nutt. 22259 22260 * NSH: apps/nshlib: 22261 22262 - apps/nshlib/nsh_netinit.c: Update for changes to signal 22263 notification structures. From Gregory Nutt. 22264 22265 * Examples/Tests: apps/examples: 22266 22267 - apps/examples/ini_dumper: New example program. ini_dumper is 22268 example program that dumps content of ini file in pretty ascii table. 22269 It is using inih ini library in fsutils/inih. From Michal Lyszczek. 22270 - apps/examples/modbusmaster: Add Simple Modbus master example. 22271 This example only supports Read/Write HoldingRegisters, but it is 22272 easy to extend it to support Read/Write Input/Coils/etc. 22273 Originally creatd by Vytautas in 2016 and updated with minor fixes 22274 for this commit. From Alan Carvalho de Assis. 22275 - apps/examples/pwfb: Added a test/example at apps/examples/pwfb 22276 that was used for initial testing of the per-window framebuffer 22277 feature. From Gregory Nutt. 22278 - apps/examples/pwlines: Added another a test/example at 22279 apps/examples/pwlines that was used for further testing of the 22280 per-window framebuffer feature. From Gregory Nutt. 22281 - apps/examples/sx127x: Add sx127x demo From Mateusz Szafoni. 22282 22283 * File System Utilities: apps/system 22284 22285 - apps/fsutils/inih: New package. inih (INI Not Invented Here) is a 22286 simple .INI file parser written in C. 22287 https://github.com/benhoyt/inih. From Michal Lyszczek. 22288 22289 * Network Utilities: apps/netutils: 22290 22291 - apps/netutils/codecs/: Remove the big Base64 stack array. From 22292 Xiang Xiao. 22293 - apps/netutils/codecs/: Add base64_[de|en]code_length() API From 22294 ligd. 22295 22296 * System Utilities: apps/system 22297 22298 - apps/system/cfgdata: Make builtin task stack size and priority 22299 configurable. Set default to 2048 (from 1024) per recommendation 22300 of Ken Pettit. From Gregory Nutt. 22301 - apps/system/embedlog: Update to version 0.4.0. From Michal Lyszczek. 22302 - apps/system/nxplayer and nxrecorder: Change 'int prio' to 22303 'unsigned int prio'. Required by changes to MQ function 22304 prototypes. From Michal Lyszczek. 22305 - apps/system/psmq: New package. psmq is publish subscribe message 22306 queue. It's a set of programs and libraries to implement 22307 publish/subscribe way of inter-process communication on top of 22308 POSIX message queue. From Michal Lyszczek. 22309 - apps/system/zmodem: Switch to the raw mode before transfer and 22310 restore to the original setting after finishing the transfer. From 22311 Xiang Xiao. 22312 22313 * Testing: apps/testing: 22314 22315 - apps/testing/: Move all file system tests from examples/ to 22316 testing/ (cxxtest, fstest, nxffs, smart, smart_test, smp). From 22317 Gregory Nutt. 22318 - apps/testing/cxxtest: Add a README file. From Gregory Nutt. 22319 - apps/testing/ostest: Add test of pthread_mutex_timedlock() From 22320 Gregory Nutt. 22321 - apps/testing/ostest: Fix several errors in the setvbuf() test. 22322 From Gregory Nutt. 22323 - apps/testing/scanftest: Port of Greg King's scanf test 22324 (https://github.com/cc65). From Johannes. 22325 22326 * Tools: apps/tools: 22327 22328 - apps/tools/check-hash.sh: Add a tool check hash on downloaded 22329 packages. From Michal Lyszczek. 22330 22331Bugfixes. Only the most critical bugfixes are listed here (see the 22332ChangeLog for the complete list of bugfixes and for additional, more 22333detailed bugfix information): 22334 22335 * Core OS: 22336 22337 - Signals: Restructure nxsig_deliver() so that the signal handler is 22338 not called with the pre-emption disabled (or, at least no with 22339 pre-emption disabled by nxsig_deliver() itself). From Gregory Nutt. 22340 - Critical Section Monitor: Move up_critmon_* to arch.h avoid the 22341 duplicated declaration. From Xiang Xiao. 22342 - Assertions: Architecture-specific assertion logic should dump CPU0 22343 IDLE stack only when PID equals 0. IDLE threads of other CPUs do 22344 not need this special check. From Xiang Xiao. 22345 - Message Queues: Change 'int prio' to 'unsigned int prio'. 22346 According to open group specification, priority field in mq_* 22347 functions should have unsigned type: 22348 http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/mqueue.h.html. 22349 From Michal Lyszczek. 22350 - Timer Expiration: Fix macro SEC2TICK() 32-bits overflow by using 22351 uint64_t in calculation. From ligd. 22352 - Kernel Memory Manager: In mm/kmm_heap/kmm_kernel.c, remove unused, 22353 duplicated kmm_heapmember(). From Xiang Xiao. 22354 - User Memory Manager: Ensure all user allocation try sbrk before 22355 fail From Xiang Xiao. 22356 - waitid(): Could exit without leaving critical section on some 22357 error conditions. From Gregory Nutt. 22358 - IOBs: iob_allocwait() should decrease semcount manually. From 22359 Xiang Xiao. 22360 - IOBs: iob_copyin() should wait for each buffer and adjust the 22361 return value of iob_copyin_internal return to simplify the code 22362 From Xiang Xiao. 22363 - IOB Notifier: Don't check iob_navail in iob_notifier_setup to 22364 avoid a potential race condition. From Xiang Xiao. 22365 - IOB Debug Dump: Format the whole line before log to avoid the 22366 multiple timestamp prefix in each line. From Xiang Xiao. 22367 - SHM: Convert bytes to pages by MM_NPAGES instead of MM_PGALIGNUP 22368 From Xiang Xiao. 22369 - SHM: shmget() should hould call shm_extend() to allocate the 22370 physical memory. From Xiang Xiao. 22371 - Page Allocator: mm/pgalloc: shouldn't just allocate one page 22372 always. From Xiang Xiao. 22373 - Granule Allocator: Fix the wrong data in g_1bit_info and make the 22374 internal function static. From Xiang Xiao. 22375 - srbk(): Fix a backward conditional test. Should call 22376 mm_initialize() when brkaddr equal zero From Xiang Xiao. 22377 - sbrk(): Pass ARCH_HEAP_VEND as maxbreak argument From Xiang Xiao. 22378 - ELF Headers: Move elf related arch function to include/nuttx/elf.h 22379 because the implementation is located in libs/libc/machine and in 22380 order to avoid the conflict with the 3rd party libraries and clean 22381 up the file inclusion: (1) Remove redundant elf32.h, (2) Remove 22382 nuttx/binfmt/elf.h in libs/libc/machine, (2) Remove 22383 nuttx/binfmt/elf.h in modlib, and (4) Remove nuttx/module.h in 22384 modlib. From Xiang Xiao. 22385 - ELF Executables: If there is an address environment 22386 (CONFIG_ARCH_ADDRENV), binfmt/elf doesn't need to free ctor/dtor 22387 alloc since freeing the address environment releases the heap 22388 automatically. From Xiang Xiao. 22389 - ELF Configuration: Correct libcxx exception handling by 22390 introducing the generic config(CXX_EXCEPTION and CXX_LIBSUPCXX) 22391 From Xiang Xiao. 22392 - ELF Loaders: Call umm_initialize as soon as possible otherwise 22393 elf_loadctors/elf_loaddtors may fail to allocate memory. From 22394 Xiang Xiao. 22395 22396 * Crypto: 22397 22398 - Crypto AES: After NuttX 7.28 crypto/aes.c would no longer 22399 compile. From Gregory Nutt. 22400 22401 * File System/Block and MTD Drivers: 22402 22403 - open(): Fix not returning failure for block_proxy() call. From 22404 David Sidrane. 22405 - AIO: aio_cancel() needs to signal caller after success. Also fix 22406 minor issue in the error handler. From Xiang Xiao. 22407 - HostFS: Remove the unnecessary use of host_stat() in 22408 hostfs_bind() From ligd. 22409 - LittleFS: Fix a minor issue found in code review: (1) Replace 22410 printf to finfo/fwarn/ferr, (2) Replace malloc/free to 22411 kmm_malloc/kmm_free, (3) define LFS_NAME_MAX to NAME_MAX, (4) Check 22412 the big endian using CONFIG_ENDIAN_BIG. From Xiang Xiao. 22413 - LittleFS: VFS Lookahead should use bit unit not byte unit. From 22414 Xiang Xiao. 22415 - NxFLAT: Correct a double free debug assertion. This occurs when 22416 groups are enabled: (1) once via binfmt_exit and unload_module, 22417 and (2) once via sched_releasetcb(). this was corrected by adding 22418 logic to free/unload the memory once and nullify the pointer so 22419 that cannot be freed a second time. This commit resolves Bitbucket 22420 issue #145. From Valmantas Palikša. 22421 - NxFLAT: File descriptor leaks when nxflat loading fails. From 22422 Valmantas Palikša. 22423 - ProcFS: Fix typo in procfs uptime logic. From Sebastien Lorquet. 22424 22425 * Networking/Network Drivers: 22426 22427 - Network Configuration: The setup seems to support a network 22428 without sockets (CONFIG_NSOCKET_DESCRIPTORS == 0). That is not the 22429 case; if the network is enabled, sockets must be provided. From 22430 Gregory Nutt. 22431 - Networking: The value ERROR should never be returned from internal 22432 OS functions. That is reserved for returning values to appliations 22433 with the errno value set. Within the OS, errors are returned with 22434 a negated errno value ALWAYS. From Gregory Nutt. 22435 - Networking: The struct in_addr doesn't have the member sin_addr. 22436 The function lib_lo_ipv6match() is for IPv6. Correct the function 22437 it calls from lib_lo_ipv4matchto() to lib_lo_ipv6match(). Also add 22438 CONFIG_NET_IPv6 for configuration. From Kejun ZHOU. 22439 - TCP (buffered) send: Fix assertion crash when window size is 22440 zero. From Gregory Nutt. 22441 - ICMP/ICMPv6: Bind icmp callback from device to connection. 22442 Resolves the issue that bind() could not be called before send() 22443 From anchao. 22444 - TUN/TAP Driver: Re-order all TUN/TAP driver state data. Not only 22445 was was with wasting memory due to alignment requirements, it was 22446 also causing network packet buffers to be improperly aligned 22447 causing problems because the network requires 16-bit packet buffer 22448 alignment for uint16_t accesses. This alignment problem was 22449 discovered by Alan Carvalho de Assis. From Gregory Nutt. 22450 - TUN/TAP Driver: Packet buffer size should include the configured 22451 GUARD_SIZE. And, given how the buffers are allocated, the 22452 allocation size must be an even number of 16-bit values to preserve 22453 alignment. From Gregory Nutt. 22454 - Local Sockets: In local_connect(), initialize lc_result before 22455 giving lc_waitsem From zhangyuan7. 22456 - Local Sockets: Fixed deadlock issue by replacing nxsem_wait() with 22457 net_lockedwait() so that we do not wait with the network locked. 22458 From zhangyuan7. 22459 22460 * Graphics/Display Drivers: 22461 22462 - NX Graphics: Remove naming associated with the now non-existent 22463 NXFE graphics layer: Rename nxfe_reportposition to 22464 nxmu_reportposition. Rename nxfe_redrawreq to nxmu_redrawreq. 22465 Rename nxfe.h to nxmu.h. Rename nxfe_state_s to nxmu_state_s. 22466 Rename nxfe_conn_s to nxmu_conn_s. From Gregory Nutt. 22467 - NxTERM: Remove the nxterm_unregister interface. The correct way 22468 to unregister a device is to unlink it. From Gregory Nutt. 22469 - NxTerm: Needs to clear display initially. Otherwise, garbage from 22470 previous display may still be present from preceding NxWM window. 22471 From Gregory Nutt. 22472 - Font Cache: Fix a memory leak in the font cache. With a busy 22473 NxTerm display, this could drain off all the memory pretty quickly! 22474 From Gregory Nutt. 22475 - Graphics: Nothing under graphics/ should set the errno. From 22476 Gregory Nutt. 22477 - Graphics: Fix a coordinate system error in nx_filltrapezoid(). 22478 When no clipping rectangle is falls, it falls back to use the 22479 entire window as for the clip. However, that window must then then 22480 be in window relative coordinates, not in absolute device 22481 coordinates. From Gregory Nutt. 22482 22483 * Common Board Logic: 22484 22485 - boardctl(): Fix compiling error when set 22486 CONFIG_BOARDCTL_IOCTL/CONFIG_BOARDCTL_UNIQUEID. From Kevin Liu. 22487 22488 * Common Drivers: 22489 22490 - INA3221: Fix errors in INA3221 register field addresses and 22491 bitfield values. Signed value was losing its signed-ness due to 22492 use of unsigned type for register. From Ken Pettit. 22493 - Serial Upper Half: Initialize OPOST and ONLCR in uart_register. 22494 From Xiang Xiao. 22495 - Serial Upper Half: Don't reset the circular buffer on close since 22496 DMA may still be transferring data in the background if the user 22497 closes the handle too quickly and the handle is opened with 22498 O_NONBLOCK. From Xiang Xiao. 22499 - 16550 UART: Fix error: 'g_uart0port' undeclared. From Xiang Xiao. 22500 - 16550 UART: Fix typo for UART1 flow field initialization From 22501 Gregory Nutt. 22502 - CDC/ACM HCD: Fixes to the IOCTL method in recovery of UART pointer 22503 and in names of Termios-related field. From xhbm. 22504 - USB Device: Fix type for USBDEV_TRACE_INITIALIDSET in Kconfig. 22505 From Mateusz Szafoni. 22506 - TCA64xx: Fix some errors in the TCA64XX driver. From Bruno 22507 Schwander. 22508 - SYSLOG RAMLog: Fix error: Conflicting types for 'ramlog_addchar' 22509 From Xiang Xiao. 22510 - NRF24L01: Fix uninitialized irq_work which was causing a 22511 hard_fault on interrupt handler whenever something was sent from 22512 nrf24l01_term From Petri Ahonen. 22513 - MCP2515: Use kmm_zalloc to allocate device state structure. Fix 22514 some compiler errors. From Valmantas Paliksa. 22515 22516 * Architecture Common: 22517 22518 - arch/ Common: Remove architecture-specific watchdog.h and 22519 arm-elf.h because they are empty. The arm-elf header file was 22520 never used; the empty watchdog.h header file was used in only one 22521 place. From Xiang Xiao. 22522 - arch/ Common: Move up_pminitialize() after timer_initialize() 22523 From ligd. 22524 - arch/ Common: Align semi-hosting call style with other syscalls in 22525 architecture-specific syscall.h. From Xiang Xiao. 22526 - arch/ Common: Every file that uses serial IOCTLs (TIOC*) must 22527 explicitly include nuttx/fs/ioctl.h. This was included previously 22528 via sneak path in the now deleted arch/serial.h. From Gregory Nutt. 22529 - arch/ Interfaces: Rename sched_process_cpuload to 22530 nxsched_process_cpuload. All internal sched_ functions should be 22531 prefixed with nx. From Valmantas Paliksa. 22532 22533 * ARMv7-A: 22534 22535 - ARMv7-A MMU: Updating the cp15_wrttb and cp15_wrdacr functions to 22536 use inline assembly in the correct way. The incorrect method was 22537 generating errors as ARMv7-a expects the MCR/MRC instructions to 22538 provide registers as an argument(MRC p15, 0, <Rt>, c2, c0, 0) and 22539 the code was providing a constant value(and hence the build 22540 error). From Bilal Wasim. 22541 - ARMv7-A: Remove inclusion pg_macros.h for armv7-a since this 22542 header file does not exist. From zhangyuan7. 22543 - ARMv7-A: Guard some assembly files if configuration not selected. 22544 From zhangyuan7. 22545 - ARMv7-A GIC: Fix assemble error when including gic.h From Xiang 22546 Xiao. 22547 - ARMv7-A GIC: Don't use GIC_ICDDCR_ENABLEGRP1 for GIC NONSECURE 22548 since this bit doesn't exist in this mode. From liuzhuang. 22549 22550 * ARMv7-R: 22551 22552 - ARMv7-R Syscall: In arch/arm/include/syscall.h, add missing 22553 inclusion of arch/armv7-r/syscall.h for Cortex-R. From Xiang Xiao. 22554 22555 * ARMv7-M: 22556 22557 - ARMv7-M Initialization: As noted by Roland Takacs in Bitbucket 22558 issue 141, there is a compilation error for STM32 if CONFIG_NET and 22559 CONFIG_NETDEV_LATEINIT are selected. That was due in part to the 22560 commit which extended up_netinitialize() with a 22561 !defined(CONFIG_NETDEV_LATEINIT) guard but did not add the guard to 22562 concrete implementations. I say "in part" because I don't think 22563 that the original intent of commit 19e16cb was to enable an 22564 alternative initialization of MCU internal Ethernet support but 22565 rather to enable support of external Ethernet devices that may have 22566 dependencies on, for example, SPI. However, this is still a proper 22567 fix to avoid the compilation error that can occur with this 22568 combination of configuration options. From Gregory Nutt. 22569 - ARMv7-M Configuration: ARCH_HIPRI_INTERRUPT shouldn't select 22570 ARMV7M_USEBASEPRI. First because that is a violation of the 22571 layered nature of the Kconfig architecture, but also because then 22572 Kconfig will generate errors when high priority interrupts are used 22573 with other architectures. From Xiang Xiao. 22574 - ARMv7-M Vector Table: Make the default NVIC_VECTAB_TBLOFF_MASK 22575 safer. The base address of the new vector table must be aligned to 22576 the size of the vector table extended to the next larger power of 22577 2. From Xiang Xiao. 22578 - ARMv7-M RAM Vectors: Correct bad NVIC_VECTAB_TBLOFF_MASK 22579 definitions in previous commit. Were missing bits in the mask. 22580 Raised DEBUGASSERT in armv7-m/up_ramvec_initialize.c line: 144. 22581 From Mateusz Szafoni. 22582 22583 * Espressif ESP32 Drivers: 22584 22585 - ESP32 Timer ISR: Fix backward comparison. From Gregory Nutt. 22586 - ESP32 Serial: Fix some backward arguments. Correct 2-stop bit 22587 setting. From Gregory Nutt. 22588 22589 * Microchip/Atmel SAMD2x/L2x Drivers: 22590 22591 - SAMD2/L2 Serial: SAMD2/L2 serial driver. It needs 22592 sam_usart_enable(). to work From Alan Carvalho de Assis. 22593 22594 * Microchip/Atmel SAMD3/4 Drivers: 22595 22596 - SAM3/4 Ethernet: Port Anthony Merlino's SAMv7 fix to similar 22597 Ethernet driver for the SAM3/4. From Gregory Nutt. 22598 22599 * Microchip/Atmel SAMV7 Drivers: 22600 22601 - SAMv7 SPI: Fix DMA Tx/Rx timeout issue. From Kevin Liu. 22602 - SAMv7 QSPI: Compile error when set CONFIG_SAMV7_QSPI_DLYBCT. 22603 From Kevin Liu. 22604 - SAMv7 Ethernet: The logic for determining the number of queues for 22605 SAMV71 must be extended. All SAMv7 parts increase the number of 22606 queues from 3 to 6 at revision B, not just the SAMV71. From 22607 Gregory Nutt. 22608 - SAMv7 Ethernet: Fixes rxdesc index logic to handle Buffer Not 22609 Available (BNA) condition. If a SOF is found, but no EOF, don't 22610 move past the frame. Instead, keep the index at the SOF buffer 22611 until the rest of the data is written. This fixes a receiver 22612 lockup condition where the peripheral and this driver get out of 22613 sync with there head pointers. In this case the driver has moved 22614 past buffers it owns, without clearing ownership, which results in 22615 the peripheral and driver in a deadlock with each other. From 22616 Anthony Merlino. 22617 22618 * Microchip/Atmel SAMA5Dx Drivers: 22619 22620 - SAMA5Dx Ethernet: Port Anthony Merlino's SAMv7 fix to similar 22621 Ethernet driver for the SAMA5Dx. From Gregory Nutt. 22622 22623 * Microchip/Atmel SAMA5Dx Board: 22624 22625 - SAMA5D2-XULT: Move console from FLEXCOM4 to UART1. FLEXCOM4 does 22626 not work for the Arduino serial. UART1 is used with the VCOM 22627 provided by the EDBG. From Gregory Nutt. 22628 22629 * NXP i.MXRT: 22630 22631 - i.MXRT Clock Configuration: If SDRAM is activated it was only 22632 running at 40MHz. This was because imxrt_clockconfig.c changed the 22633 SEMC clock divider after the DCD was configured. This commit 22634 corrects that. From Johannes. 22635 22636 * NXP i.MXRT Drivers: 22637 22638 - i.MXRT GPT: Correct register offsets. From David Sidrane. 22639 - i.MXRT TMR: Fix addressing and restructure using common offset. 22640 From David Sidrane. 22641 - i.MXRT ADC: Error in offset. From David Sidrane. 22642 22643 * NXP/Freescacle Kinetis Boards: 22644 22645 - Teensy-3.x: Fix a mismatch in types in defconfig. From Gregory 22646 Nutt. 22647 22648 * NXP LPC17xx: 22649 22650 - LPC176x Clock Configuration: The code preserves undocumented 22651 reserved bits only if board does not set them to keep previous 22652 behavior for boards where developers (hopefully) know what values 22653 should be set into these bits. From Pavel Pisa. 22654 - LPC17xx Clock Configuration: The enable of EMC clocks has to be 22655 preserved when already enabled by loader. EMC and related pins 22656 configuration has to be skipped if the system is run from SDRAM. A 22657 region of SDRAM which is used by system must not be used for heap. 22658 From Pavel Pisa. 22659 22660 * NXP LPC17xx Drivers: 22661 22662 - LPC17xx CAN: The name can_txready clashes with NuttX CAN core 22663 global function. LPC178x has only single LPC17_SYSCON_PCLKSEL with 22664 only single divisor. From Pavel Pisa. 22665 22666 * NXP LPC17xx Boards: 22667 22668 - Open1788: Add missing MPU configuration option. From Gregory Nutt. 22669 22670 * On Semi LC823450 Boards: 22671 22672 - LC823450-XGEVK: Remove -nostdinc to avoid build error From 22673 Masayuki Ishikawa. 22674 22675 * STMicro STM32: 22676 22677 - STM32: Don't try including stm32_gpio.h from within chip/*.h 22678 header files. Not only is bad style for a layered inclusion 22679 system, but it doesn't always work. From Gregory Nutt. 22680 22681 * STMicro STM32 Drivers: 22682 22683 - STM32 PWM: Fix polarity and IDLE state configuration From Mateusz 22684 Szafoni. 22685 - STM32 ADC, PWM and TIM: (1) missing T1TRGO2 for JEXTSEL, (2) fix 22686 sample time configuration for channels. The array index for 22687 channels was missing, (3) fix TRGO/TRGO2 configuration, and (6) 22688 support for advanced timers channel 5 and 6. From Mateusz Szafoni. 22689 - STM32 Heap: Change 'if CONFIG_STM32_HAVE_CCM' to 'ifdef 22690 CONFIG_STM32_HAVE_CCM' to avoid a warning when 22691 CONFIG_STM32_HAVE_CCM is not defined. From Gregory Nutt. 22692 - STM32 Oneshot Timer: Fix an error introduced be a previous timer 22693 commit. From Maximilian Kriegleder 22694 - STM32 Tickless Mode and Free-Running Timer: Apply Max's 22695 stm32_oneshot.c fix to the tickless implementation and to the 22696 freerunning time. From Mateusz Szafoni. 22697 - STM32 PWM: Set CCPxP and CCPxNP bits if polarity is negative. 22698 Missing commas in initializers could break compilation in certain 22699 configurations. From Mateusz Szafoni. 22700 - STM32F7 Interrupts: Add the missing macro STM32_IRQ_NIRQS used by 22701 arch/arm/src/stm32f7/stm32_irq.c. From Kejun ZHOU. 22702 - STM32H7 DMA: Fix AHB1 base addresses memory map. From Mateusz 22703 Szafoni. 22704 - STM32H7 SysTick: H7 appears to ignore the SysTick CLKSOURCE bit 22705 and use the CPU clock in all cases. From Mateusz Szafoni. 22706 22707 * STMicro STM32 Boards: 22708 22709 - B-L072Z-LRWAN1: Fix typo in SPI1 pin definitions. From Mateusz 22710 Szafoni. 22711 - STM32F429I-DISCO: Handle multiple calls to the LCD 22712 up_fbinitialize() function. From Gregory Nutt. 22713 - STM32F769I-DISCO: Florian R. Hölzlwimmer reports that 22714 stm32_appinitialize.c often has missing OK and NULL definitions. 22715 This should be fixed by including sys/types.h where they are 22716 defined. From GregoryN. 22717 - STM32F769I-DISCO: Remove CONFIG_STM32F7_QUADSPI=y from the 22718 configuration. This was apparently set before the implementation 22719 was added. Now that the implementation was added, the configuration 22720 will not build because it requires that QSPI GPIO pin definitions 22721 be provided in the board.h header file. From Gregory Nutt. 22722 22723 * TI AM335x Drivers: 22724 22725 - AM335x Serial: Eliminate an error 'TIOCSBRK undeclared. From 22726 Gregory Nutt. 22727 22728 * C Library/Header Files: 22729 22730 - strto*: In alll strto* function family, did't consume single '-' 22731 or '+', allow sign in strotul(l)). From Johannes. 22732 - getopt(): Add logic to reinitialize the stale context for the 22733 FLAT/PROTECTED builds. In these builds getopt() global variables 22734 may be shared by many tasks. If any task exits the getopt() loop 22735 before all command line arguments have been parsed, then getopt() 22736 global variables will be left in a bad state. The next time 22737 getopt() is called, this logic should detect the bad state and 22738 force the state of getopt() to be re-initialized so that it can be 22739 reused. This logic is not full proof (it would fail, for example, 22740 if you tried to parse the same command line twice) but should catch 22741 the typical misuse cases. From Xiang Xiao. 22742 - sscanf(): Initialized the lastc pointer to avoid the checks for 22743 NULL. Removed a bug in the floating point parsing which allowed 22744 several signs after each other. From Johannes. 22745 - lib_vsprintf() (Legacy): No precision specifier resulted in 22746 precision 0 but should be precision 6. From Johannes. 22747 - lib_vsprintf() (Legacy): Correct justification for alternate forms 22748 of %p and %P From ligd. 22749 - lib_vsprintf() (Nano): Add long long support. 22750 CONFIG_LIBC_LONG_LONG needs at least CONFIG_NANO_PRINTLEVEL 2. 22751 Code size for compile without CONFIG_LIBC_LONG_LONG shouldn't be 22752 affected. From Johannes. 22753 - lib_vsprintf() (Nano): Remove CONFIG_LIBC_PRINT_MINIMAL. The 22754 output in that configuration is unsatisfactory and inappropriate 22755 for use with NuttX. For example, the output from many NSH commands 22756 become corrupted and useless. Doesn't belong in this context. 22757 From Gregory Nutt. 22758 - libs/libc/symtab: Remove unused symtab_findorderedbyvalue(). From 22759 Xiang Xiao. 22760 - libs/libc/machine/arm: Fix the minor issue in libc arm machine 22761 folder; MOVW/MOVT should use zero(not sign) extension. From Xiang 22762 Xiao. 22763 - libs/libc/libc.csv: Should be locale.h not local.h. From Joao 22764 Matos. 22765 - libs/libc/libc.csv: Needed logic for correct compilation if not 22766 using CONFIG_LIBC_WCHAR. From Joao Matos. 22767 - libxx: Always include libxx_cxa_guard.cxx in the build for for 22768 uclibcxx. From zhangyuan7. 22769 22770 - include/stdbool.h: Define bool only when __cplusplus isn't 22771 defined. From Xiang Xiao. 22772 - include/nuttx/list.h: Added a Linux-compatible list 22773 implementation. From zhuyanlin. 22774 - include/nuttx/irq.h: Fix enter_critical_section/spin_lock_irqsave 22775 macro typo error and remove the duplicated inclusion of 22776 arch/irq.h. From Xiang Xiao. 22777 - include/dlfcn.h: Correct naming of standard header file. Should 22778 be dlfcn.h, not dllfcn.h. From Gregory Nutt. 22779 - include/nuttx/nx/nxmu.h: This header file could be lethal; it 22780 declared an #error if CONFIG_DISABLE_MQUEUE=y. From Gregory Nutt. 22781 - include/nuttx/compiler.h: Important fix for C++ users. 22782 compiler.h was using the value of __STDC_VERSION__ to determine if 22783 inline functions are supported or not. If not then the keyword 22784 inline was defined out. Good for C but bad for C++ because C++ 22785 does not define __STDC_VERSION__ at all. C++ applications may 22786 draw in compiler.h indirectly via other head files and this can 22787 result in C++ compiler problems since 'inline' is defined out. 22788 This fix is to ignore the (undefined) __STDC_VERSION__ if 22789 __cplusplus is defined. From Gregory Nutt. 22790 - include/nuttx/elf.h: Adds missing extern "C" __cplusplus guard. 22791 From Anthony Merlino. 22792 - include/poll.h: Remove un-named union from 'struct pollfd'. It 22793 is not required by OpenGroup.org and violates the NuttX C coding 22794 standard because it is not C89 compatible. From Gregory Nutt. 22795 - libs/libc/Makefile, libs/libnx/Makefile, and mm/Makefile: Remove 22796 obj-path MKDEPS option since make dependency target (MT) is not 22797 supported by some toolchains. From anchao. 22798 - include/nuttx/compiler.h: Assume inline support if 22799 __STDC_VERSION__ not defined. From Xiang Xiao. 22800 22801 * Tools: 22802 22803 - tools/convert-comments.c: Fix an error in handling of a blank C++ 22804 comment before a comment block. From Gregory Nutt. 22805 - tools/lowhex.c: Fix an initialization problem that was causing 22806 some odd behavior at the beginning of lines. From Gregory Nutt. 22807 - tools/nxstyle.c: Fix logic that detects if an operator is 22808 correctly delimited with spaces. sched/: Various changes because 22809 sched/ C files were used as Guinea Pigs to test nstyle.c. From 22810 Gregory Nutt. 22811 - tools/nxstyle.c: Was confusing hex constants with strings staring 22812 with 'x'. Added logic to complain about hex constants containing 22813 upper case characters. From Gregory Nutt. 22814 - tools/nxstyle.c: Fix logic error that prevent detecion of '/' and 22815 '/=' as operators. net/: Minor updates resulting from testing 22816 tools/nxstyle. From Gregory Nutt. 22817 22818 * NSH Library: apps/nshlib: 22819 22820 - NSH Console: Fix copy paste errors. Some Kconfig configuration 22821 names needed CONFIG_ prefix. From David Sidrane. 22822 - nshlib/nsh_timcmds.c: Uninitialized struct tm caused 'date -s' to 22823 fail. From Valmantas Palikša. 22824 22825 * Examples: apps/examples: 22826 22827 - apps/examples/nxterm: Replace direct calls to nxtk_register() 22828 with legal, indirect calls via boardctrl(BOARDIOC_NXTERM). 22829 Replace calls to (deleted) nxterm_unregister(). The correct way 22830 to delete a driver is by unlink'ing it. From Gregory Nutt. 22831 - apps/examples/nxterm: Most configuration options were not 22832 available in the Kconfig file. From Gregory Nutt. 22833 - apps/examples/nxterm: Replace illegal direct calls to 22834 nxterm_redraw() and nxterm_kbdin() with new boardctl() calls. 22835 From Gregory Nutt. 22836 - apps/examples/nxterm: NxWM passed the size of the NxTK sub-window 22837 but nxterm example passed the size of the complete NxTK window. 22838 They must be made consistent. From Gregory Nutt. 22839 22840 * Graphics Utilities: apps/graphics: 22841 22842 - apps/graphics/NxWidgets/nxwm: Correct an error in the type of the 22843 return value in CCalibration. From Gregory Nutt. 22844 - apps/graphics/NxWidgets/nxwm: Replace direct calls to 22845 nxtk_register() with legal, indirect calls via 22846 boardctrl(BOARDIOC_NXTERM). Replace calls to (deleted) 22847 nxterm_unregister(). The correct way to delete a driver is by 22848 unlink'ing it. From Gregory Nutt. 22849 - apps/graphics/NxWidgets: Replace illegal direct calls to 22850 nxterm_redraw() and nxterm_kbdin() with new boardctl() calls. 22851 From Gregory Nutt. 22852 22853 * Modbus: apps/modbus: 22854 22855 - apps/modbus/Kconfig: Fix modbus master Kconfig. Modbus Master 22856 ASCII compiles correctly. From Alan Carvalho de Assis. 22857 22858 * Network Utilities: apps/netutils: 22859 22860 - apps/netutils/dhcpc/dhcpc.c: Fix an error for DHCP REQUEST 22861 receiving a NAK.In DHCP Request operation, no need to update 22862 ciaddr to the client address and keep it as 0. From Kevin Liu. 22863 22864 * System Utilities: apps/system: 22865 22866 - apps/system/vi/vi.c: Fix an infinite loop bug that can show up in 22867 some cases (plus a couple of other items). From Ken Pettit. 22868 - apps/system/vi: Condition KEY_CMDMODE_REPEAT with 22869 CONFIG_SYSTEM_VI_INCLUDE_COMMAND_REPEAT to avoid build error when 22870 option is not selected. From Anthony Merlino. 22871 - apps/system/nxplayer/nxplayer.c: Fix build error when only enable 22872 CONFIG_AUDIO_EXCLUDE_VOLUME is enabled. From ZhongAn. 22873 - apps/system/system/system.c: Correct a path name. From anchao. 22874 - apps/system/taskset: Fix command arguments are not passed. From 22875 Masayuki Ishikawa. 22876 22877 * Testing: apps/testing: 22878 22879 - apps/testing/ostest/timedmutex.c: pthread_mutex_timedlock() 22880 returns EDTIMEDOUT on a timedout, not EAGAIN. From Gregory Nutt. 22881 22882 * Tools: apps/tools: 22883 22884 - apps/tools/mksymtab.sh: 'export LC_ALL=C' to get the traditional 22885 sort order From anchao. 22886 22887NuttX-7.30 Release Notes 22888------------------------ 22889 22890The 130th release of NuttX, Version 7.30, was made on May 19, 2019, 22891and is available for download from the Bitbucket.org website. Note 22892that release consists of two tarballs: nuttx-7.30.tar.gz and 22893apps-7.30.tar.gz. These are available from: 22894 22895 https://bitbucket.org/nuttx/nuttx/downloads 22896 https://bitbucket.org/nuttx/apps/downloads 22897 22898Both may be needed (see the top-level nuttx/README.txt file for build 22899information). 22900 22901Additional new features and extended functionality: 22902 22903 * Core OS: 22904 22905 - pthreads: Added non-standard pthread_get_stackaddr_np() and 22906 pthread_get_stacksize_np(). From Joao Matos. 22907 - boardctl(): Add a command to start the VNC server. From Gregory 22908 Nutt. 22909 - Signals: Remove references to CONFIG_DISABLE_SIGNALS in many 22910 files. Signals can no longer be disabled. From Gregory Nutt. 22911 22912 * Wireless/Wireless Drivers: 22913 22914 - NRF24L01: Add support for "multicast" TX mode - no waiting for ACK 22915 (needs to be enabled with fcntl SETTXPAYLOADNOACK) From Leif Jakob. 22916 22917 * Graphics/Display Drivers: 22918 22919 - NX Graphics: Add new server->client callback to notify the window 22920 client of server events. Remove the old 'blocked' callback and just 22921 make it one case of an 'event' callback. From Gregory Nutt. 22922 - NX Graphics: Implement new interfaces nx_synch() and nxtk_synch(). 22923 This are used to synchronize the NX server with the window client. 22924 Currently most of the logic is equivalent to nx_block() and 22925 nxtk_block(), but with slightly different semantics. They are 22926 separate now because they are likely to diverge in the future. 22927 From Gregory Nutt. 22928 - NX Graphics: Add support for modal windows. From Gregory Nutt. 22929 - NX Graphics: Implement a software cursor. The cursor behaves 22930 like a "sprite", always at the top of the display with a 22931 transparent background. Includes new NX interfaces to show/hide 22932 the cursor, set the cursor image, and to move the cursor position. 22933 From Gregory Nutt. 22934 - NX Graphics: Added support for hiding windows. This features is 22935 needed by Twm4Nx: When a window is iconified, the icon should 22936 appear on the background and the window should disappear (i.e., be 22937 hidden). The windows needs to remain healthy and to be updated in 22938 all ways, but it cannot affect the display content. Conversely, 22939 when the icon is clicked, the icon needs to be hidden on the 22940 background and the window needs to be restored in its current 22941 state (which may be different than the state of the window at the 22942 time it was iconified. From Gregory Nutt. 22943 - NX Graphics: Windows can now be created in the hidden state. 22944 This can be used to clean up initial window presentation which may 22945 involve several steps. This makes those steps all invisible until 22946 nx[tk]_setvisibility() is called to make the windows visible. 22947 From Gregory Nutt. 22948 - NX Graphics: Add new NX interfaces to query if a window is hidden 22949 or not. From Gregory Nutt. 22950 - NxTerm IOCTLs: Replace specific interfaces between boardctl and 22951 nxterm with a generalized IOCTL interface. From Gregory Nutt. 22952 - NxTerm: Add a new IOCTL that can be used to inform NxTerm that 22953 the size of a window has changed. From Gregory Nutt. 22954 22955 * Other Common Device Drivers: 22956 22957 - CAN Upper Half: Support multiple readers of the same port From 22958 Valmantas Paliksa. 22959 - MAX7456: Adds a read-only (for now) /dev/osd0/CM interface for 22960 obtaining the chip's onboard NVM character map data. Use seek() 22961 to position the cursor over a desired subset of bytes, or request 22962 a large read to obtain the entire EEPROM memory contents. Values 22963 are returned in binary form. Use hexdump, etc. to format them for 22964 viewing. From Bill Gatliff. 22965 - Serial Upper Half: The upper half serial driver configuration 22966 CONFIG_SERIAL_DMA used to enable DMA on both RX and TX streams. 22967 This was replaced with CONFIG_SERIAL_RXDMA and CONFIG_SERIAKL_TXDMA 22968 which will permit supporting DMA on only one or both streams. 22969 From Gregory Nutt. 22970 - FUSB303: Add FUSB303 driver From Juha Niskanen. 22971 22972 * Microchip PIC32MZ Drivers: 22973 22974 - PIC32MZ GPIO: Adds support for edge detect mode. Slew Rate was 22975 also added for completeness. From Abdelatif Guettouche. 22976 22977 * Microchip/Atmel SAMv7 Boards 22978 22979 - SAME70-xplained: Add a configuration for test Twm4Nx using VNC. 22980 From Gregory Nutt. 22981 22982 * Microchip LPCxx Drivers: 22983 22984 - LPC17xx Ethernet: Added support for KSZ8081RNA PHY to LPC17xx 22985 Ethernet driver. From jjlange. 22986 - LPC17xx Ethernet: Added support for Ethernet PHY ioctl() on 22987 LPC17xx. From jjlange. 22988 22989 * NXP i.MX RT: 22990 22991 - .i.MXRT1020: Gets imx1020 family support started. It is pretty 22992 similar, but subtly different, to 1050/60 (less PLLs, less GPIO 22993 banks, differently numbered ports etc. etc.). 22994 22995 Moved each of the imxrt family-specific files into its own 22996 subdirectory to tidy things up a bit, and remove the vast majority 22997 of ifdefs from the mainline code. 22998 22999 From Dave Marples. 23000 23001 * NXP LPC54xx Drivers 23002 23003 - LPC54xx USB FS Host: Bring in the USB FS OHCI driver from LPC17. 23004 This is a quick'n'dirty port from LPC17 that I hope finish 23005 sometime later. Currently, it is missing hardware clocking setup 23006 and is not even hooked into the build system yet. From Gregory 23007 Nutt. 23008 23009 * NXP LPC54xx Boards 23010 23011 - LPCXpresso-LPC54628: Add a Twm4Nx configuration. From Gregory Nutt. 23012 23013 * Sony CXD56xx 23014 23015 - CXD56xx: Add initial CXD56xx chip driver sources. From Nobuto 23016 Kobayashi. 23017 23018 * Sony CXD56xx Spresense Board 23019 23020 - Spresense: Add Spresense board support. This is not the full 23021 Spresense BSP from Sony, only the barebones logic to present an 23022 NSH console. From Nobuto Kobayashi. 23023 23024 * STMicro STM32: 23025 23026 - STM32F7 Clocking: Add support for using the HSE in bypass mode, 23027 configured by board.h From Anthony Merlino. 23028 - STM32F7 Clocking: Added support for TICKLESS mode. From Valmantas 23029 Paliksa. 23030 - STM32H7 Backup Domain: Add backup domain control registers. From 23031 Jukka Laitinen. 23032 - STM32H7 Clocking: Set the STM32H7 default HSI pre-divider to 4. 23033 The I2C driver currently assumes HSI clock to be 16MHz. From Jukka 23034 Laitinen. 23035 - STM32H7 Memorymap.: Add the STM32H7 SYSTEM_UID and DEBUGMCU_BASE 23036 register definitions. From Jukka Laitinen. 23037 - STM32L071x: Add support for STM32L071x. From Mateusz Szafoni. 23038 23039 * STMicro STM32 Drivers: 23040 23041 - STM32 OTGHS Host: Allow VBUS monitoring for the OTG_HS host 23042 driver. From Jason Harris. 23043 - STM32F0/L0 ADC: Initial ADC support for the STM32 M0 From Mateusz 23044 Szafoni. 23045 - STM32F0/LO I2C: Port STM32F7 I2C to STM32F0/L0, From Mateusz Szafoni. 23046 - STM32F1 FLASH: As noted by Matias N, the FLASH base address used 23047 was incorrect. It was using the address of the FLASH data, not 23048 the address of the FLASH registers. From Gregory Nutt. 23049 - STM32F3 I2C: Port STM32F7 I2C to STM32F3. From Mateusz Szafoni. 23050 - STM32F7 Ethernet.c: Auto-generate Ethernet MAC address from 23051 device unique ID. From Valmantas Paliksa. 23052 - STM32F7 FLASH: Add flash block mapping support for progmem. From 23053 Valmantas Paliksa. 23054 - STM32F7 FMC: Updated stm32_fmc.h with more FMC definitions. From 23055 Joao Matos. 23056 - STM32F7 GPIO: Adds additional pin alternate function for SPI2. 23057 From Anthony Merlino. 23058 - STM32F7 PWM: Ported the PWM from F4 to F7. From Eduard Niesner. 23059 - STM32F7 SDMMC: Support bypassing the input clock divider on the 23060 SDMMC interface. This enables using the full clock speed provided 23061 to the SDMMC interface with no dividing. From Anthony Merlino. 23062 - STM32F7 SPI: Add SPI DMA threshold configuration. From Valmantas 23063 Paliksa. 23064 - STM32F7 UID: Add UID access. From Valmantas Paliksa. 23065 - STM32F7 USB: USB High speed for STM32F7 series From Ramtin Amin. 23066 - STM32H7 Ethernet: Add stm32h7 Ethernet driver. This is the 23067 initial push for the Ethernet driver. The driver has been tested 23068 to be working on a nucleo board. This is still WIP, it doesn't 23069 for example do MAC filtering on HW level, but just receives all 23070 Ethernet packets. From Jukka Laitinen. 23071 - STM32H7 GPIO: Add the GPIO_ETH_RMII_RXD1 pinmap definition for 23072 STM32H7. From Jukka Laitinen. 23073 - STM32H7 SDMMC: Add STM32H7 SDMMC driver. It is mostly copied 23074 from STM32F7, with modified register addresses and bits, and IDMA 23075 dded. This is still WIP; it only works with IDMA. From Jukka 23076 Laitinen. 23077 - STM32H7 Timers: Add timer devices driver for STM32H7. This i 23078 mostly a forklift from stm32f7 with some h7 specific 23079 modifications. From Jukka Laitinen. 23080 - STM32L0 AES: Add support for AES for L0. From Mateusz Szafoni. 23081 - STM32L0 RND: Add support for RND. From Mateusz Szafoni. 23082 - STM32L0 HSI48: Add support for HS148 for L0. Move HSI48 enable 23083 from stm32_usbdev.c to stm32xx_rcc.c From Mateusz Szafoni. 23084 - STM32L4 USB FS Device: Add USB FS device support. From Juha 23085 Niskanen. 23086 - STM32L4 HSI48: Port HSI48 from STM32F0/L0 From Juha Niskanen. 23087 - STM32L4 CRS: Port CRS from STM32F0/L0 From Juha Niskanen. 23088 23089 * STMicro STM32 Boards: 23090 23091 - B-L072Z-LRWAN1: Add ADC example. From Mateusz Szafoni. 23092 - B-L072Z-LRWAN1: Add nxlines_oled example (ssd1306). Add support 23093 for the I2C tool From Mateusz Szafoni. 23094 - Nucleo-144: Added STM32_RCC_DCKCFGR2_DSISRC definition to board.h. 23095 From Joao Matos. 23096 - Nucleo-144: Mount sysfs for ifconfig for f767-netnsh/defconfig. 23097 Even if ifconfig is working to set IP, it will not work to display 23098 NICs (without args) From Phil Coval. 23099 - Nucleo-144: Add basic PWM support to nucleo-144 board. More PWMs 23100 and multi channels support may be investigated and added later. 23101 Tested on Nucleo-F767ZI. From Phil Coval. 23102 - Nucleo-F303ZE: Add nxlines_oled example (ssd1306) From Mateusz 23103 Szafoni. 23104 - Nucleo-H743ZI: Enable the FPU. From Jason Harris. 23105 - Nucleo-H743ZI: Add support for I2C devices: ssd1306, pca9635, 23106 i2ctools From Mateusz Szafoni. 23107 - Nucleo-H743ZI: Add default clock configuration for SDMMC for 23108 Nucleo-H743ZI's board.h. From Jukka Laitinen. 23109 - Nucleo-H743ZI: Add the input clock frequency definitions in 23110 board.h for all the drivers. Assumes internal clock source for 23111 all the timers. From Jukka Laitinen. 23112 - STM32F4 Discovery: Keep c++ global constructor symbols From 23113 Masayuki Ishikawa. 23114 - Nucleo-L073RZ: Add MFRC522 support From Mateusz Szafoni. 23115 - OmnibusF4: Add boardctl() reset logic. From Bill Gatliff. 23116 - OmnibusF4: Add board_ioctl() which is needed only if 23117 CONFIG_BOARDCTL_IOCTL=y is selected; Update NSH configuration 23118 to enable board IOCTLs and DFU mode reset. From Bill Gatliff. 23119 - STM32L Discovery: Add support for board_late_initialize(), Move 23120 common initialization logic out of board_app_initialize() into new 23121 file stm32_bringup.c From Gregory Nutt. 23122 - STM32F103-Minimum: Add PROCFS automount support From Alan 23123 Carvalho de Assis. 23124 23125 * Libraries/Header Files: 23126 23127 - include/alloca.h: Add alloca.h. Included limited implementation 23128 of alloc() that is only available for GCC versions 3 and above. 23129 From Joao Matos. 23130 - include/cxx/cstdlib: Add std::random() From Gregory Nutt. 23131 23132 * apps/ General: 23133 23134 - Many locations: Remove references to CONFIG_DISABLE_SIGNALS. 23135 Signals can no longer be disabled. From Gregory Nutt. 23136 23137 * Examples/Tests: apps/examples: 23138 23139 - apps/examples/fb: Add some awareness of overlays to 23140 apps/examples/fb From Matthew Koch. 23141 - apps/examples/lvgldemo. Update to Littlevgl 5.3. From Matthew 23142 Koch. 23143 - apps/examples/pwfb: Extend example to verify software cursors. 23144 From Gregory Nutt. 23145 - apps/examples/pwfb: Add options to reduce the number of windows. 23146 This is helpful during debug to reduce the complexity. From 23147 Gregory Nutt. 23148 23149 * Network Utilities: apps/netutils: 23150 23151 - apps/netutils/cjson: Support for the current version of cJSON. 23152 From Mateusz Szafoni. 23153 - apps/netutils/libcurl4nx: This is an initial commit libcurl4nx. 23154 It is not complete yet, but I still wish to commit the unfinished 23155 bits to describe the roadmap, and because it is already usable. It 23156 will be updated and fixed in the future weeks and months, certainly 23157 including POST support and later, SSL. From Sebastien Lorquet. 23158 - apps/netutils/netinit. This commit removes the private network 23159 initialization logic from NSH and puts in a common location at 23160 apps/netutils/netinit. Now that netork initialization logic can be 23161 used by applications that do not include NSH. From Gregory Nutt. 23162 - apps/netutils/netlib: Add a more flexible version of 23163 netlib_parsehttpurl(). This one can parse any URL, and is 23164 extensible so future improvements keep the same API. From Sebastien 23165 Lorquet. 23166 23167 * System Utilities: apps/system 23168 23169 - apps/system/spi: I needed a small test tool for spi in the style of 23170 the I2C tool, but I didn't see one so I've hacked one out of the I2C 23171 tool source. From Dave Marples. 23172 23173 * Graphics: apps/graphics: 23174 23175 - apps/graphics/twm4nx. This release introduces Twm4Nx. Twm4Nx is a 23176 "port" of TWM, Tab Window Manager (or Tom's Window Manager) version 23177 1.0.10 to NuttX NX windows server. No, a port is not the right 23178 word. It is are-design of TWM from the inside out to work with the 23179 NuttX NX server and NXWidgets. The name Twm4Nx reflects this 23180 legacy. But Twm4Nx is more a homage to TWM than a port of TWM. 23181 23182 The original TWM was based on X11 which provides a rich set of 23183 features. TWM provided titlebars, shaped windows, several forms of 23184 icon management, user-defined macro functions, click-to-type and 23185 pointer-driven keyboard focus, graphic contexts, and user-specified 23186 key and pointer button bindings, etc. 23187 23188 Twm4Nx, on the other hand is based on the NuttX NX server which 23189 provides comparatively minimal support. Additional drawing support 23190 comes from the NuttX NxWidgets library (which necessitated a 23191 conversion to C++). 23192 23193 Twm4Nx is greatly stripped down and targeted on small embedded systems 23194 with minimal resources. For example, no assumption is made about the 23195 availability of a file system; no .twmrc file is used. 23196 23197 The state of the "port" is available in 23198 apps/graphics/twm4mx/README.txt. To summarize: The port is fully 23199 functional but probably only at an alpha release level. The only 23200 missing critical feature is built-in touchscreen calibration. 23201 23202 - apps/graphics/littlevgl. Update to Littlevgl 5.3. From Matthew 23203 Koch. 23204 - apps/graphics/nxglyphs: Put all NxWidgets and NxWM glyphs into a 23205 common directory where they can eventually be shared. Decouple 23206 from nxwidgets and nxwm so that they can be used elsewhere. 23207 Creates include/graphics/nxglyphs.h From Gregory Nutt. 23208 - apps/graphics/nxglyphs: Add some new cursor bitmap images. From 23209 Gregory Nutt. 23210 - apps/graphics/nxglyphs: Add mkcursor.c. Will auto-generate 23211 cursor image header file from Gimp C output. From Gregory Nutt. 23212 - apps/graphics/nxglyphs: Add 16x16 cursor images. 30x30 are kind 23213 of large on small displays. From Gregory Nutt. 23214 - apps/graphics/nxglyphs: Add a new resize cursor image. From 23215 Gregory Nutt. 23216 - apps/graphics/nxwm: Separate NxWidgets and NxWM into separate 23217 directories. Remove old, common NxWidgets directory. From 23218 Gregory Nutt. 23219 - apps/graphics/nxwm: Move the NxWM unit test main() to apps/nxwm. 23220 It is no longer a unit test, but the main startup entry point for 23221 NxWM. From Gregory Nutt. 23222 - apps/graphics/nxwidgets: Update NX window clients so that they 23223 use the new 'event' callback (vs. the obsoleted 'blocked' callback). 23224 From Gregory Nutt. 23225 - apps/graphics/nxwidgets: Add a synchronize method to every window. 23226 This is a wrapper arounc nx[tk]_sync and permits C++ applications 23227 to synchronize with the NX server. From Gregory Nutt. 23228 - apps/graphics/nxwidgets: Add support for modal windows. From 23229 Gregory Nutt. 23230 - apps/graphics/nxwidgets: Add cursor control methods to the 23231 CNxServer class. From Gregory Nutt. 23232 - apps/graphics/nxwidgets: Add a method to CButtonArray that will 23233 allow us to dynamically resize the array (at the cost of losing all 23234 button labels). From Gregory Nutt. 23235 - apps/graphics/nxwidgets: Fix a possible deadlock condition when 23236 waiting for window geometry data that will never come. Fixed by 23237 re-requesting geometry data if we don't already have it. From 23238 Gregory Nutt. 23239 - apps/graphics/nxwidgets: Add handshake to 23240 CWidgetControl::getWindowHandle() to avoid returning a NULL 23241 handle. From Gregory Nutt. 23242 - apps/graphics/nxwidgets: CNxTkWindow, CNxWindow, CNxServer: Add 23243 support to create RAM backed windows. From Gregory Nutt. 23244 - apps/graphics/nxwidgets: Add methods to all windows to query if a 23245 window is visible or hidden. From Gregory Nutt. 23246 23247Bugfixes. Only the most critical bugfixes are listed here (see the 23248ChangeLog for the complete list of bugfixes and for additional, more 23249detailed bugfix information): 23250 23251 * Core OS: 23252 23253 - Clock Initialization: A recent change broke Tickless mode for all 23254 architectures. The original change was intended to handle the 23255 case where up_timer_gettime may not start from zero case. The 23256 side effect is that this changed to order of initialization of 23257 clocking, breaking Tickless mode:: After this change the tickless 23258 timer structures are used before they are initialized in 23259 clock_inittime(). The commit has been reverted. 23260 - pthread Stack Attribute: Fixed pthread_attr_get/setstacksize 23261 param type to size_t. From Joao Matos. 23262 - Signals: The abnormal termination signal handler was just calling 23263 exit() conditionally when, for example, Ctrl-C is sent to a task. 23264 The abnormal termination handler must obey the rules of cancellation 23265 points: If cancellation is disabled, then the abnormal termination 23266 logic must wait for cancellation to be re-enabled; If cancellation 23267 is deferred then the abnormal termination logic may have to wait 23268 for the victim task to enter or exit a cancellation point. From 23269 Gregory Nutt. 23270 - Syscall: Added support for munmap() syscall. From Joao Matos. 23271 - Syscall: Fix a warning due to inconsistencies in return type in 23272 syscall.csv. From Gregory Nutt. 23273 - Syscall: Correct an error syscall.csv. Error occurred when 23274 creating the munmap() proxy if CONFIG_FS_RAMMAP is not defined. 23275 From Gregory Nutt. 23276 23277 * File System/Block and MTD Drivers: 23278 23279 - fs/littlefs/lfs.c: Fix lfs_format bug. In superblock disk root- 23280 block assignment, the second must be root[1]. From YanLin Zhu. 23281 23282 * Networking/Network Drivers: 23283 23284 - getsockname(): Fix addrlen check in socket debug features. 23285 Getsockname() checked erroneously a pointer against 0, where the 23286 intention was to dereference the pointer and to check the length. 23287 This causes also a compilation failure if the code is compiled 23288 with CONFIG_DEBUG_FEATURES and with -Werror flag set. From Jukka 23289 Laitinen. 23290 - Network Locking: net_lock() and net_restorelock() now return a 23291 value. That values is the standard zero on success; negated errn 23292 value on failure. This return value is only needed for 23293 -ECANCELED. That cancellation indication needs to ripple all the 23294 way back to the highest levels where the cancellation can be acted 23295 on. This commit only adds the return value; it does not add 23296 checking for the return values of net_lock() and net_restorelock() 23297 at higher levels. That is required too. From Gregory Nutt. 23298 - PHY Notification Driver: Change sprintf to strncpy in phy_notify. 23299 On some platforms, the sprintf doesn't accept a const char* as a 23300 format argument. From Jukka Laitinen. 23301 - 6LoWPAN HC06: Correct an endian-ness problem in HC06 decompression. 23302 From Ivan Ucherdzhiev. 23303 23304 * Wireless/Wireless Drivers: 23305 23306 - NRF24L01: Don't block in read if file descriptor is O_NONBLOCK. 23307 From Leif Jakob. 23308 23309 * Graphics/Display Drivers: 23310 23311 - NX Graphics: Fix an error in coordinate system usage. Expected 23312 rectangle in device coordinate frame, but was passing the 23313 rectangle in window-relative coordinate frame. From Gregory Nutt. 23314 - NX Graphics: Fix an oversight in the implementation of per-window 23315 framebuffers. It is true that redraw callbacks can be suppressed 23316 for all cases ... EXCEPT ONE: When the window is resized to a 23317 larger size, then the newly exposed territory must be drawn for 23318 the first time. From Gregory Nutt. 23319 - NxTK: Fix an error in handling mouse events for framed windows. 23320 When drawing, NX may report mouse positions outside of the Window. 23321 The is only for NX windows, but the outside-the-side positions were 23322 being discarded by nxtk_events(). From Gregory Nutt. 23323 - NxTK: Refuse to open a toolbar of height zero or less. From 23324 Gregory Nutt. 23325 - Nxglib: Correct bogus logic in nxgl_interesting(). From Gregory 23326 Nutt. 23327 - VNC Server: Fix an error in color conversion. From Gregory Nutt. 23328 23329 * Common Drivers: 23330 23331 - APDS9960: Initial state of allocated structure was not being set. 23332 Noted by Leif Jacob. From Gregory Nutt. 23333 - MFRC522: In mfrc522_read uid.sak must be different from 0x04 not 23334 as before from 0x00. SAK == 0x00 is a valid PICC type. Add 23335 interface to read MIFARE Ultralight data From Mateusz Szafoni. 23336 - Power: Fix build for battery gauge From Tom Kopriva. 23337 - Syslog: In syslog buffered mode, avoid IOB alloc lock-up with 23338 heavy network activity. This change alters the buffered syslog 23339 logic to use 'iob_tryalloc' instead of blocking 'iob_alloc' to 23340 avoid syslog printing from getting stuck when all IOBs are 23341 depleted by network activity. An issue was seen when large 23342 incoming TCP transfer uses free IOB buffers and processing 23343 threads try to use syslog which then block at iob_alloc. From 23344 Jussi Kivilinna. 23345 - USB CDC/ACM Device: This fixes a problem where the host sent a 23346 "get descriptor" message of type "standard" with a recipient of 23347 type "interface". Since the composite driver would only pass 23348 messages to the child interfaces when a message was not 23349 "standard", this message was not handled. I changed the condition 23350 so that the composite driver checks not only if this is a 23351 "standard" message but if it is also directed to the device. 23352 Otherwise, the handling is delegated to the children of the 23353 composite device. From Matias N. 23354 - USB HID: The usbhid_descriptor_s struct defined in hid.h included 23355 some optional fields that should not be hard-defined as part of 23356 that structure. An arbitrary number of optional entries could be 23357 included in the descriptor, but that is not properly represented. 23358 No code on NuttX currently depends on the structure definition 23359 with an optional descriptor so it is safe to remove. From Matias N. 23360 - USB MSC Device: Correct typo "const const" to "const". 23361 arch/arm/src/stm32/stm32_i2s.c: In debug assertions, it on a 23362 sample rate of 0, but based on other code comments this value 23363 implies disabling the i2s master clock. From Jason Harris. 23364 - Zerocross Driver: Fix some errors when debug assertions are 23365 enabled. From Matous Pokorny. 23366 - User Leds: Fix ledset validity check in ULEDIOC_SETALL ioctl. 23367 From Jussi Kivilinna. 23368 23369 * Architecture Common: 23370 23371 - All board interfaces (those starting with board_) must be defined 23372 in board-specific logic. Otherwise, they cannot be customized for 23373 specialized usage by different boards. The board_reset() 23374 interface was defined in architecture-specific logic that only 23375 called up_systemreset(). That is useless! This change removes 23376 the board_reset() implementation from the architecture-specific 23377 code and re-implements it in the src/ directory of each board that 23378 has CONFIG_BOARDCTL_RESET enabled. That is the correct functional 23379 partitioning. From Gregory Nutt. 23380 - Start-up: Remove dependency on CONFIG_ARCH_FPU for inclusion of 23381 nvic.h in all other *_start.c files. From Gregory Nutt. 23382 - Architecture initialization: up_initialize() needs to know about 23383 ramlog_consoleinit() From Jason Harris. 23384 23385 * Microchip PIC32MZ Drivers: 23386 23387 - PIC32MZ GPIO: Corrects the gpioirq when mismatch mode is 23388 selected. From Abdelatif Guettouche. 23389 23390 * ARMv7-A: 23391 23392 - ARMv7-A Build: Fix 'cc1: warning: switch -mcpu=cortex-a7 conflicts 23393 with -march=armv7-a switch' From Xiang Xiao. 23394 23395 * Nordic NRFxx 23396 23397 - NRF52: Fix compiler error in nrf52832_errdata.c when following 23398 C89. From Erik Englund. 23399 23400 * STMicro STM32: 23401 23402 - STM32 Configuration: It seems one option in the timer configuration 23403 was lost at some point. From Matias N. 23404 - STM32 start-up: Inclusion of nvic.h should not be conditioned on 23405 CONFIG_ARCH_FPU. From Mateusz Szafoni. 23406 - STM32H7 Clocking: Fixes for STM32H7 RCC definitions. From Jukka 23407 Laitinen. 23408 23409 * STMicro STM32 Drivers: 23410 23411 - STM32F0/L USART: A few fixes for USART. From Mateusz Szafoni. 23412 - STM32F1/F30 FLASH: RCC register access should not be offset by 23413 FLASH register base. From Matias N. 23414 - STM32F7 CAN: CAN fixes. From Valmantas Paliksa. 23415 - STM32F7 I2C: I2C Interrupt storm fix. I2C track bad state. Now 23416 we track bad state and so the SW reset only when it occurs. From 23417 David Sidrane. 23418 - STM32F7 OTG: Fixes some macros related to OTGFS/OTGHS preventing 23419 OTGHS from working. From Anthony Merlino. 23420 - STM32F7 OTG Device: Correct hard-coded FIFO size that is wrong 23421 for OTG FS. From Ramtin Amin. 23422 - STM32F7 QSPI: Fix QuadSPI interrupts. This commit essentially 23423 replaces wrongly named configuration variable STM32F7_QSPI_INTERRUPTS 23424 into CONFIG_STM32F7_QSPI_INTERRUPTS. Also fixes some getreg/ 23425 putreg where register addresses were used instead of register 23426 offsets From Pierre-Olivier Vauboin. 23427 - STM32H7 I2C: Fix I2C4 compilation for STM32H7. From Jukka 23428 Laitinen. 23429 - STM32H7 UART: Fix compilation for UART7, UART8 and I2C4s. From 23430 Jukka Laitinen. 23431 - STM32L4 USB Device: Add missing PWR USBV enable, correct two USB 23432 register bits From Juha Niskanen. 23433 23434 * STMicro STM32 Boards: 23435 23436 - STM32F103-Minimum: USB reset was not working appropriately since 23437 the pin connected to D+ was incorrectly defined and the pullup/down 23438 logic was reversed. From Matias N. 23439 - Nucleo-l476RG: Fix some errors in GPIO logic when debug assertions 23440 are enabled. From Matous Pokorny. 23441 - Nucleo-L476RG: Add missing files of BMP180 example for Nucleo-L476RG. 23442 From Fabian Justi. 23443 - STM32F103-Minimum GPIO: Fix some errors when debug assertions are 23444 enabled. From Matous Pokorny. 23445 - STM32L4 PWM: Fix register addr, en_bit and resetbit for pwm timers. 23446 From Fabian Justi. 23447 - STM32F746G-DISCO: I2C1 config on stm32f746g-disco. Typo in 23448 stm32f7/stm32_i2c.c From Matthew Koch. 23449 23450 * C Library/Header Files: 23451 23452 - include/limits.h: Remove the duplicate TMP_MAX definitions. The 23453 standard requires that TMP_MAX defines be in stdio.h. From 23454 Xiang Xiao. 23455 - include/sys/select.h: Fix compiler error when 23456 CONFIG_NSOCKET_DESCRIPTORS is undefined. From Xiang Xiao. 23457 - include/signal.h: Add commented out definition of the si_addr 23458 field. From Joao Matos. 23459 - include/unistd.h: Fixed R_OK/X_OK definitions to match POSIX. 23460 From Joao Matos. 23461 23462 - libs/libc/locale: Improved error handling in setlocale(). From Joao 23463 Matos. 23464 - libs/libc: Fixed return code in uname(). From Joao Matos. 23465 - libs/libc/stdio: Restore support for printing NULL string as 23466 "(null)". Legacy printf supported printing "(null)" in place for 23467 NULL string: printf("null: %s\n", NULL); => null: (null). This 23468 commit restores this functionality for new printf library. From 23469 Jussi Kivilinna. 23470 23471 * Examples: apps/examples: 23472 23473 - apps/examples/pca9635/pca9635_main.c: fix compilation error. From 23474 Mateusz Szafoni. 23475 23476 * Graphics Utilities: apps/graphics: 23477 23478 - Various graphics apps (and apps/examples): If CONFIG_VNCSERVER=y, 23479 don't call vnc_default_fbinitialize() directly. That is a violation 23480 of the portable POSIX interface. Instead, call 23481 boardctl(BOARDIOC_VNC_START);. From Gregory Nutt. 23482 - apps/graphics/nxwidgets: CWidgetControl::handleLeftClick now 23483 returns a value to indicate if the click was actually processed or 23484 not. CWidgetControl::pollMouseEvents: Correct return value. From 23485 Gregory Nutt. 23486 - apps/graphics/nxwidgets/: NXWidgets::CNxWidgets: Fix some issues 23487 with returned values. On setting the widget size or position, it was 23488 returning false if there was no change in size or position. Many 23489 places in the code were treating the false return value as an error. 23490 From Gregory Nutt. 23491 23492 * System Utilities: apps/system: 23493 23494 - apps/system/nxplayer: Fix some logical errors from recent commits. 23495 They broke the build of the nxplayer as a library vs. a task. 23496 23497NuttX-7.31 Release Notes 23498------------------------ 23499 23500The 131st release of NuttX, Version 7.31, was made on July 21, 2019, 23501and is available for download from the Bitbucket.org website. Note 23502that release consists of two tarballs: nuttx-7.31.tar.gz and 23503apps-7.31.tar.gz. These are available from: 23504 23505 https://bitbucket.org/nuttx/nuttx/downloads 23506 https://bitbucket.org/nuttx/apps/downloads 23507 23508Both may be needed (see the top-level nuttx/README.txt file for build 23509information). 23510 23511Additional new features and extended functionality: 23512 23513 * Core OS: 23514 23515 - poll(): Removed all references to CONFIG_DISABLE_POLL. The 23516 standard POSIX poll() can no longer be disabled. From Gregory Nutt. 23517 - LWL console: Add support for OpenOCD 'Lightweight Link' protocol 23518 between a target and debugger for use when you need a console but 23519 the target doesn't have a spare serial port or other available 23520 resource. From Dave Marples. 23521 23522 * Network/Network Drivers: 23523 23524 - Socket Options: Previous change removed some incorrect SO_LINGER 23525 socket option functionality. SO_LINGER was always enabled if 23526 CONFIG_NET_SOLINGER was selected. This change implements a proper 23527 version of SO_LINGER. It is based on new logic to drain the 23528 buffered TX data, integrated with network event notification system. 23529 Supports notification when UDP or TCP write buffer becomes empty. 23530 From Gregory Nutt. 23531 - Telnet Driver: Handle ctrl events (SIGINT, SIGSTP). From 23532 Valmantas Paliksa. 23533 - Telnet Driver: I/O thread now offloads reading from socket 23534 from client thread to the I/O thread. From Valmantas Palikša. 23535 23536 * Wireless/Wireless Drivers: 23537 23538 - GS2200M: Add support for Telit GS2200M Wi-Fi module From Masayuki 23539 Ishikawa. 23540 - GS2200M: Introduce CONFIG_WL_GS2200M_SPI_FREQUENCY. Also, changed 23541 usleep(100) to up_udelay(100) to avoid invalid response. From 23542 Masayuki Ishikawa. 23543 - GS2200M: Add channel parameter for AP mode in gs2200m.c From 23544 Masayuki Ishikawa. 23545 23546 * Graphics/Video/Display Drivers: 23547 23548 - Video Streaming: Add basic Video Stream and Capture implementation 23549 based on the SPresence SDK code release From Alin Jerpelea. 23550 - video/: Create video/ directory to hold non-driver video-related 23551 logic. From Gregory Nutt. 23552 - EDID: Add some initial EDID logic ported from FreeBSD. From 23553 Gregory Nutt. 23554 - EDID: Add logic to sort video modes by how close they are to the 23555 preferred mode. This is part of the logic to pick the best possible 23556 video mode. From Gregory Nutt. 23557 - EDID/Video Modes: Separate EDID and from videomode management. 23558 They really are separate things. From Gregory Nutt. 23559 - EDID/Video Modes: Add debug functions to dump the EDID and 23560 videomode content. From Gregory Nutt. 23561 - VESA GTF: Bring VESA Generalized Timing Formula (GTF) from FreeBSD. 23562 From Gregory Nutt. 23563 - Video Modes: At some additional lookups from FreeBSD. Not 23564 currently used in NuttX so ifdef'ed out for now. From Gregory Nutt. 23565 - tda19988: Now uses the new common videomode structure of 23566 include/nuttx/video/videomode.h as do other video components. From 23567 Gregory Nutt. 23568 - ILI9340: Add ILI9340 LCD Single Chip Driver. Required LCD driver 23569 settings: LCD_MAXCONTRAST should be 255, but any value >0 and <=255 23570 will be accepted. LCD_MAXPOWER should be 1: 0=off, 1=on. From 23571 Alin Jerpelea. 23572 - LPM013M091A: Add JDI LPM013M091A LCD Driver. From Alin Jerpelea. 23573 - ISX012: Add support for ISX012 Image sensor. From Alin Jerpelea. 23574 23575 * Other Common Device Drivers: 23576 23577 - SPI Interface: Added standard definitions for ADC SPI device ID. 23578 From Daniel P. Carvalho. 23579 - AK09911/AK09912: Add Asahi AK09911/AK09912 compass sensor over I2C 23580 bus From Alin Jerpelea. 23581 - AS726X: Add support for AS726X spectral sensor From Fabian Justi. 23582 - BMI160: Add driver support for the Bosch BMI160 Inertial Measurement 23583 sensor. This driver can be used with the BMI160 sensor connected 23584 over SPI or I2C bus. From Alin Jerpelea. 23585 - BMP280: Add Bosch BMP280 Barometic pressure sensor connected over 23586 I2C bus. From Alin Jerpelea. 23587 - INA3221: Adds INA3221_I2C_ADDRx macro helpers. From Anthony 23588 Merlino. 23589 - VL53L1x: Added support for VL53L1x TOF sensor. From Juan Flores. 23590 23591 * Microchip PIC32MZ Drivers: 23592 23593 - PIC32MZ DMA: Add DMA support. From Abdelatif Guettouche. 23594 23595 * NXP i.MXRT Drivers: 23596 23597 - i.MXRT EHCI: Add i.MXRT EHCI driver. From Dave Marples. 23598 - i.MXRT USDHC: Implements SDIO and Multi-card support for i.MXRT. 23599 From Dave Marples. 23600 - i.MXRT USDHC: Implements USDHC1 & 2 selection on the imxrt. If 23601 only one port is active (either 1 or 2) it will always be numbered 23602 as 0, if both are active then USDHC1 will be number 0, USDHC2 will 23603 be 1. From Dave Marples. 23604 - i.MXRT Serial: Add TIOCSINVERT ioctls. From Beat Küng. 23605 - i.MXRT Serial: Implemented RS485 RX/TX switching and RTS/CTS flow 23606 control for the IMXRT family. It has been tested on 1020 but I 23607 don't see any reason for issues on any other family member. From 23608 Dave Marples. 23609 23610 * NXP/Freescale Kinetis Drivers: 23611 23612 - Kinetis Serial: Add UART signal inversion support From Beat Küng. 23613 23614 * NXP LPC11xx: 23615 23616 - LPC11xx: Support for the LPCXpresso-LPC1115 and for the LPC1115 23617 architecture in general was removed after NuttX-7.30. The LPC11 23618 port was never really used (to my knowledge) and was no longer 23619 supported. A snapshot of the port is still available in the 23620 Obsoleted repository. It can be brought back into the main 23621 repository at any time if anyone is willing to provide support 23622 for the architecture. From Gregory Nutt. 23623 23624 * NXP LPC17xx Boards: 23625 23626 - PNEV5180B: Add support for NXP Semiconductors' PN5180 NFC Frontend 23627 Development Kit. This board is based on the NXP LPC1769 MCU. At 23628 the moment there is just support for a minimal nsh configuration via 23629 UART0. From Michael Jung. 23630 - PNEV5180B: Add usbnsh configuration. This is basically the same as 23631 the 'nsh' defconfig, but uses CDC/ACM as the NuttShell console 23632 device. From Michael Jung. 23633 - PNEV5180B: Adds NSH configuration with UART0 and eth0 via CDC/ECM 23634 on USB device. From Michael Jung. 23635 - PNEV5180B: Add new configuration includes a USB Composite Device 23636 with both CDC/ACM and CDC/ECM. NuttShell provides a terminal via 23637 CDC/ACM. A network interface (eth0) is provided via CDC/ECM. From 23638 Michael Jung. 23639 - PNEV5180B ROMFS: Auto-mount baked-in ROMFS image. Includes support 23640 for linking a binary ROMFS image into the nuttx executable and for 23641 mounting it during board bring-up. From Michael Jung. 23642 - PNEV5180B PROTECTED: Add PROTECTED mode configuration with 23643 NuttShell. From Michael Jung. 23644 23645 * NXP LPC40xx: 23646 23647 - LPC40xx: Add support for LPC40xx family chips. Renamed LPC17XX to 23648 LPC17XX_40XX in directory, configuration, file names, etc., as 23649 appropriate. Corrected a few peripheral definitions and pin 23650 functions for the LPC17xx family. Added configuration options, chip 23651 definitions, and additional pin functions for the LPC40xx family. 23652 From jjlange. 23653 23654 * NXP LPC40xx Boards: 23655 23656 - LPC4088-Devkit: Added board configuration for Embedded Artists 23657 LPC4088 Developer's kit. From jjlange. 23658 - LPC4088-Quickstart: Added board configurations for Embedded Artists 23659 LPC4088 Quickstart board. From jjlange. 23660 23661 * NXP LPC54xx Boards 23662 23663 - LPCXpresso-LPC54628: Enable DATE command in twm4nx1 and twm4nx2 23664 configurations. From Gregory Nutt. 23665 23666 * Sony CXD56xx 23667 23668 - CXD56xx: Adds (1) the HW pin configuration, (2) GPIO support for 23669 CXD56xx, (3) GPIO interrupts, (4) clock support, (5) PMIC (Power 23670 management integrated circuit) support (6) add a simple FIFO 23671 scheduler that minimizes overhead, (6) Inter Core Communication. 23672 From Alin Jerpelea. 23673 - CXD56xx: Add Package Configuration. The CXD56xx can come in FCBGA 23674 185 pin or WLCSP 100 pin package. For each package we have to pick 23675 the right pin setup. The default configuration is set to FCBGA 185 23676 pin package From Alin Jerpelea. 23677 - CXD56xx: Add Power Management support From Alin Jerpelea. 23678 - CXD56xx: (1) Add syscontrol, (2) Add the function to change the 23679 clock speed, (3) Add pinctrl and clock ctrl functionality. From 23680 Alin Jerpelea. 23681 23682 * Sony CXD56xx Drivers: 23683 23684 - CXD56xx USB: Add basic support for USB connectivity. From Alin 23685 Jerpelea. 23686 - CXD56xx SDHC: Add SDHCI driver for the CXD56xx. From Alin 23687 Jerpelea. 23688 - CXD56xx SPI: Add SPI support. From Alin Jerpelea. 23689 - CXD56xx DMA: Add DMA support. From Alin Jerpelea. 23690 - CXD56xx RTC: Add RTC support. From Alin Jerpelea. 23691 - CXD56xx PWM: Add support for PWM. From Alin Jerpelea. 23692 - CXD56xx Power Management: Add Power Management PROCFS support. From 23693 Alin Jerpelea. 23694 - CXD56xx Timer: Add Timer driver. From Alin Jerpelea. 23695 - CXD56xx Watchdog Timer: Add watchdog timer support. From Alin 23696 Jerpelea. 23697 - CXD56xx UID: Add support to be able to read the HW UID. From Alin 23698 Jerpelea. 23699 - CXD56xx I2C: Add I2C support. From Alin Jerpelea. 23700 - CXD56xx I2C: Add I2C character driver support. For testing 23701 purposes, we use the CXD56_I2C_DRIVER to register the /dev/i2c[] 23702 character devices. Add battery gauge and battery charger drivers. 23703 Add SPI-based SP card support. From Alin Jerpelea. 23704 - CXD56xx SCU: Add Sensor Control Unit (SCU); Use DMAC for reading 23705 sensing data from SCU on CXD56xx chip. From Alin Jerpelea. 23706 - CXD56xx ADC: Add ADC interface support. From Alin Jerpelea. 23707 - CXD56xx eMMC: Add eMMC support for CXD56xx chip From Alin Jerpelea. 23708 - CXD56xx Camera: Add driver for hardware image processor device to 23709 enable the hardware image processor set CXD56_GE2D=true. From Alin 23710 Jerpelea. 23711 - CXD56xx CISIF: Add CISIF support to be able to use cameras. From 23712 Alin Jerpelea. 23713 - CXD56xx GNSS: Add GNSS device, add Geofence Support, add UART0 23714 interface. UART0 is an interface with hardware flow control in the 23715 application subsystem. From Alin Jerpelea. 23716 23717 * Sony CXD56xx Spresense Board: 23718 23719 - Default Configurations: (1) We are using the framework to 23720 initialize the CPU, (2) Enable PowerManager on SPresence board, (3) 23721 Initialize the UART interfaces, (4) Enable clock management using 23722 the CXD56 framework, (5) Use timerisr on the SPresence board, (6) 23723 Enable USBDEV on Spresense board, (7) Enable SD Card support on 23724 SPresence board, (8) Enable Mass Storage on Spresense board From 23725 Alin Jerpelea. 23726 - Default Configurations: Add support for RNDIS configuration. From 23727 Masayuki Ishikawa. 23728 - RTC: Enable RTC functionality on SPresence board From Alin 23729 Jerpelea. 23730 - SPI FLASH: Enable SPI Flash arch/arm/src/cdx56xx: (1) Group all 23731 CXD56xx Options in one menu, (2) Add Storage Options menu and 23732 Peripheral Support comment, (3) Add SPI Flash support From Alin 23733 Jerpelea. 23734 - Add SPI configuration for SPresence board. Enable PWM support on 23735 SPresence board; The powermanager procfs is disabled by default and 23736 need to be enabled by the CONFIG_CXD56_PM_PROCFS option. Timers can 23737 be used on the SPresence board. Watchdog timer support also added. 23738 From Alin Jerpelea. 23739 - Add USERLED for SPresence board. From Alin Jerpelea. 23740 - Enable I2CDEV for SPresence board. Add useful diagnostic LEDs on 23741 the SPresence board. From Alin Jerpelea. 23742 - Add support for Tilt GS2200M Wi-Fi module. From Masayuki Ishikawa. 23743 - Remove SPI MMC/SD support and enable ADC support for SPresence 23744 board. From Alin Jerpelea. 23745 - Enable BMI160_I2C sensor over I2C on SPresence board. From Alin 23746 Jerpelea. 23747 - Add I2CTOOL support and extend GPIO for future use. Add delay 23748 support for CXD56xx chip. For development is useful to register 23749 I2C buses when the I2CTOOL is built. Enable GPIO interface on 23750 the Spresense board. From Alin Jerpelea. 23751 - Add use o the CXD56_I2C_DRIVER to register the /dev/i2c character 23752 devices. Enable battery gauge and battery charger support. From 23753 Alin Jerpelea. 23754 - Enable UID functionality. To enable the UID functionality for 23755 SPresence board set BOARDCTL_UNIQUEID in menuconfig. From Alin 23756 Jerpelea. 23757 - Add USBDEV_SETNOTIFYSIG signal ID. Set signal ID for notify USB 23758 device connection status and supply current value. From Alin 23759 Jerpelea. 23760 - Register the procfs in the NSH configuration. This is a 23761 configuration change in sync with the other ones. Enable 23762 READLINE_CMD_HISTORY, enable by default SPI 4 and 5, and enable 23763 SPI to keep all configurations in sync. From Alin Jerpelea. 23764 - Add support for MSC and USB Composite device. Adds usbmsc 23765 configuration. Spresense board does not have buttons and but a 23766 template for gpio buttons that can be connected on the external 23767 header From Alin Jerpelea. 23768 - LCD: Add support for LPM013M091A LCD, add support for ILI9340 23769 LCD, add a new configuration to support an LCD. From Alin 23770 Jerpelea. 23771 - WiFi: Improve performance for webserver: (1) Enable SPI DMA for 23772 both TX and RX, (2) Increase SPI clock speed from 4MHz to 10MHz, 23773 (3) Increase buffer size for sendfile() from 512B to 1KBm abd (4) 23774 Enable sendfile() for webserver. From Masayuki Ishikawa. 23775 - MPY: Add MPY defconfig. From Alin Jerpelea. 23776 - Update defconfigs rndis and wifi: Enable RTC and webserver with 23777 directory listing support. Also, changed start year/month/day for 23778 NuttX 2019. From Masayuki Ishikawa. 23779 - Build nuttx.spk images. Enable nuttx.spk binary image that can be 23780 flashed on SPresence board. From Alin Jerpelea. 23781 - configs/SPresence: Add entry point for MPY. The entry point is 23782 needed for the downstream projects based on SPresence. From Alin 23783 Jerpelea. 23784 - Enable internal flash storage for SPresence boards. The SmartFS 23785 flash is mounted under /mnt/spif folder. From Alin Jerpelea. 23786 - For compatibility with SDK we need to change the USER_ENTRYPOINT 23787 in all configurations to spresense_main(). From Alin Jerpelea. 23788 23789 * STMicro STM32: 23790 23791 - STM32 Kconfig: Add MEDIUM_DENSITY selection. From Dave Marples. 23792 - STM32 Kconfig: Add the missing STM32 LCD Clock Source Selections. 23793 From Alan Carvalho de Assis. 23794 - STM32G0: Initial support for STM32G0 family. From Mateusz Szafoni. 23795 - STM32F0L0G0: Renamed directories STM32F0L0 to STM32F0L0G0 since 23796 they now also supports the STM32G0 thanks to Mateusz Szafoni's 23797 contribution From Gregory Nutt. 23798 - STM32H7x3: Added ADC pins to pin map. From David Sidrane. 23799 23800 * STMicro STM32 Drivers: 23801 23802 - STM32 PWM: Add support for all PWM modes. Add an interface to 23803 change PWM mode. Refactor pwm_mode_configure(). STM32_PWM_CHANx 23804 corresponds to the timer channel and STM32_PWM_OUTx corresponds to 23805 the timer channel output. Add CHAN5 and CHAN6 to 23806 PWM_TIMx_NCHANNELS. Calculate thePWM_TIMx_NCHANNELS if 23807 CONFIG_STM32_PWM_MULTICHAN is selected. From Mateusz Szafoni. 23808 - STM32 FSM/FSCM: Split the STM32 FMC/FSMC functionality. Makes FMC 23809 it's own thing rather than piggy backing on the FSMC code. The 23810 peripherals have a few utility functions and this commits lets you 23811 have a common architectural functions rather than having duplicate 23812 functions in each board implementation. From Jason Harris. 23813 - STM32F7 DTCM: Add procfs register From Daniel Agar. 23814 - STM32F7 GPIO: Add GPIO driver. Code is inspired from STM32F3- 23815 Discovery and Nucleo-L476RG platforms. Tested on Nucleo-F767ZI. 23816 From Phil Coval. 23817 - STM32F7 Serial: This adds the ability to invert and swap RX/TX on 23818 STM32F7 UARTs. I added the TIOCGINVERT as well to reserve the IOCTL 23819 number, but did not implement it. This is the same as for 23820 TIOCGSINGLEWIRE. From Beat Küng. 23821 - STM32L4 CRS: Make STM32L4 CRS synchronization source board 23822 configurable. From Juha Niskanen. 23823 - STM32L4 HSI48: Enable CRS_CR_CEN with CRS_CR_AUTOTRIMEN. From 23824 Jussi Kivilinna. 23825 - STM32L4 I2C: Add support for 16 and 120 MHz timings. Board can use 23826 HSI16 clock for I2C From Juha Niskanen. 23827 - STM32L4 PWR: Enable PWR peripheral for setting USV. From Jussi 23828 Kivilinna. 23829 - STM32L4 RCC: Use Range 1 Boost mode if SYSCLK is higher than 80 23830 MHz. From Juha Niskanen. 23831 - STM32L4 Serial: Add TIOCSINVERT and TIOCSSWAP ioctls. From Beat 23832 Küng. 23833 - STM32H7 ADC: Added ADC Driver, ADC clocking. From David Sidrane. 23834 - STM32H7 Ethernet: Fix typo in define. From Pierre-Olivier Vauboin. 23835 - STM32H7 PWM: Port PWM from STM32 From Mateusz Szafoni. 23836 - STM32H7 QEncoder: Ported the QEncoder from F7 to H7. From Eduard 23837 Niesner. 23838 - STM32H7 Serial: Add TIOCSINVERT and TIOCSSWAP ioctls. Ensure 23839 TIOCSSINGLEWIRE is atomic and UE disabled. From Beat Küng. 23840 23841 * STMicro STM32 Boards: 23842 23843 - Olimex-STM32-E407: Added BMP180 initialization and a configuration 23844 to test the BMP180. From Juan Flores. 23845 - Olimex-STM32-E407: Add DAC support, add IN219 support, add timer 23846 driver support. From Juan Flores. 23847 - Olimex-STM32-E407: Add support for MRF24J40 radio. From Gregory 23848 Nutt. 23849 - Axoloti: Adds initial support for the Axoloti sound/music 23850 synthesizer board. Board is based on STM32F427 SoC. See 23851 http://www.axoloti.com/. From Jason Harris. 23852 - Nucleo-G071RB: Initial support for nucleo-g071rb. From Mateusz 23853 Szafoni. 23854 - Nucleo-L432KC: Add new configuration settings for CRS 23855 synchronization to board.h. From Juha Niskanen. 23856 - Nucleo-L432KC: Add support for testing the ina219 current sensor. 23857 From Sebastien Lorquet. 23858 - Nucleo-L452RE: Add new configuration settings for CRS 23859 synchronization to board.h. From Juha Niskanen. 23860 - Nucleo-144: Add ROMFS support. Image was generated using genromfs 23861 tool. Tested on Nucleo-F767ZI. From Phil Coval. 23862 - Nucleo-144: Add reset feature. Code is derives from STM32F4- 23863 Discovery. It can be enabled using CONFIG_BOARDCTL_RESET From Phil 23864 Coval. 23865 - Nucleo-L476RG: (1) Add I2C tool to board init, (2) Add support for 23866 AS726X spectral sensor From Fabian Justi. 23867 - Nucleo-L496ZG: Add new configuration settings for CRS 23868 synchronization to board.h. From Juha Niskanen. 23869 - STM32L476VG-Disco: Add new configuration settings for CRS 23870 synchronization to board.h. From Juha Niskanen. 23871 - STM32L4R9AI-Disco: Add ksh config, some updates for I2C, SPI and 23872 DFSDM support. From Juha Niskanen. 23873 - Nucleo-H743ZI: Add ADC support. From David Sidrane. 23874 - STM32F769I-Disco PWM: Enable PWM support for stm32f769i-disco 23875 board. 23876 - STM32L-Discovery: Add button support for stm32Ldiscovery. Add 23877 chronometer board config. From Alan Carvalho de Assis. 23878 23879 * TI AM335x: 23880 23881 - AM335x Clock Module: Add clock module registers definition. Switch 23882 to DMTIMER1 for systick. From Petro Karashchenko. 23883 23884 * TI AM335x Drivers: 23885 23886 - AM335x CAN, LCD: Add register description files for DCAN and LCD. 23887 From Petro Karashchenko. 23888 - AM355x I2C: Add register description files for I2C (plus various 23889 improvements to the WDOG register definitions) From Petro Karashchenko. 23890 - AM355x MCSPI: Add register description files for MCSPI. From Petro 23891 Karashchenko. 23892 - AM355x LCDC: This change brings in an initial LCD driver into the 23893 AM335x architecture. Ported from FreeBSD. From Gregory Nutt. 23894 - AM335x Framebuffers: Add logic to map the framebuffer to a non-cached, 23895 non-buffered memory region. From Gregory Nutt. 23896 - AM335x LCDC: Add logic to get/set the module reference clock. From 23897 Gregory Nutt. 23898 23899 * TI AM335x Boards: 23900 23901 - Beaglebone-Black LCD: Add a configuration for bringing up the LCDC 23902 driver. From Gregory Nutt. 23903 - Beaglebone-Black LCD: Framework (only) for TDA19988 and LCD support 23904 for Beaglebone Black. Can't use TDA19988 yet because there is no I2C 23905 driver. In the mean time, support LCD initialization using a fixed, 23906 configurable video mode. From Gregory Nutt. 23907 23908 * ZiLOG z16f ZNeo: 23909 23910 - z16f ZNeo: Add support for the latest 5.2.1 version of the ZDS-II 23911 toolchain. From Gregory Nutt. 23912 23913 * ZiLOG eZ80Acclaim!: 23914 23915 - Integrate support for the newest eZ80 ZDSII 5.3.0 toolchain. From 23916 Gregory Nutt. 23917 23918 * ZiLOG eZ80Acclaim! Drivers: 23919 23920 - eZ80 RTC: Integrate and verify the RTC driver From Gregory Nutt. 23921 - eZ80 RTC: Add an RTC lower half driver. From Gregory Nutt. 23922 23923 * ZiLOG eZ80Acclaim! Boards: 23924 23925 - MakerLisp: Add initial support for the MakerLisp eZ80 board. Ref: 23926 https://makerlisp.com/ From Gregory Nutt. 23927 - MakerLisp: Add hooks needed by SPI driver. Move SPI MMC/SD chip 23928 selected configuration from ez80_lowinit.c to here as is done in 23929 other NuttX architectures. This enables support for multiple 23930 devices on the SPI bus. From Gregory Nutt. 23931 - MakerLisp: Add Smart Flash Programmer project. From Gregory Nutt. 23932 - MakerLisp: Enable Procfs, RTC, SPI-based SD support, task name, NSH 23933 data command in NSH configuration.. From Gregory Nutt. 23934 - MakerLisp: Use .ztgt files from MakerLisp SDK. From Gregory Nutt. 23935 - MakerLisp: Add a tiny FLASH-resident loader that will load and 23936 start applications in Intel HEX format from an SD card. From 23937 Gregory Nutt. 23938 - MakerLisp: Bring in a new configuration to support execution 23939 entirely out of external SRAM. From Gregory Nutt. 23940 - MakerLisp: Add an sdboot configuration that will load .hex files 23941 from the SD card. From Gregory Nutt. 23942 - MakerLisp: Add a linker script to support copying the NuttX image 23943 from FLASH into external SRAM. From Gregory Nutt. 23944 - MakerLisp: The VGA display controller and keyboard controller come 23945 up by default emulating a terminal with 'newline mode' on. That is 23946 newlines expance to carriage-return, newline. This change turns that 23947 mode off. From Gregory Nutt. 23948 23949 * Libraries/Header Files: 23950 23951 - include/cxx/cstddef: Add C11++ std::nullptr_t From junmin-kim. 23952 - libc netdb: Implemented the netdb functions getnameinfo(), 23953 getservbyport(), and getservbyport_r(). From Michael Jung. 23954 23955 * Documentation 23956 23957 - Applied a style sheet to static HTML files. Put the TOC of each 23958 document to the side, where it made sense (in some documents the 23959 TOC was actually inside a section so it wasn't possible). In some 23960 cases the TOC is built with a table, in others with a <ul> element, 23961 so I had to accommodate for this. I also didn't go into collapsing, 23962 although this could really help for some long TOCs. From Matias N. 23963 - Coding Standard: Add a brief section summarizing the major 23964 differences between the NuttX C and C++ coding standards. This is a 23965 stop-gap measure in lieu of having a real C++ coding standard. From 23966 Gregory Nutt. 23967 - Coding Standard: Update requirements for indenting C pre-processor 23968 statements. From Gregory Nutt. 23969 - Coding Standard: Small change discouraging the practice of 23970 enclosing the value argument of 'return' statements in parentheses. 23971 From Gregory Nutt. 23972 - COPYING. Tools in the tools/ directory are not intended for binary 23973 redistribution and may not all conform to BSD licensing. From 23974 Gregory Nutt. 23975 23976 * Tools: 23977 23978 - tools/ocdconsole.py: OCD TCL interface changed after version 0.10 23979 of OpenOCD. This change allows the script to work with both the 23980 older and newer TCL interface. From Dave Marples. 23981 - tools/nxstyle.c: Tool depends on the file under test containing 23982 "Private Functions" or "Public Functions" block comments. Emit an 23983 error if neither are present in a C source. From Gregory Nutt. 23984 - tools/nxstyle.c: Bandaid-up logic that detects left brackets on the 23985 same line in global structure/enumeration types and initializers. 23986 From Gregory Nutt. 23987 - tools/nxstyle.c: No warning for declarations that begin in column 1 23988 within 'extern "C"'. This is because the 'extern "C"' is conditioned 23989 on __cplusplus so the declarations are not normally indented. From 23990 Gregory Nutt. 23991 - tools/: Add spk binary format. The .spk binary format is used on 23992 SPresence and other boards based on the CXD56 arch. To enable this 23993 binary format set in your config CONFIG_CXD56_BINARY=y. From Alin 23994 Jerpelea. 23995 - tools/: Add flash_writer for CXD56 boards. This flash writter is 23996 using the xmodem for firmware transfer for flashing please use: 23997 'tools/flash_writer.py -s -c /dev/ttyUSB0 -d -b 115200 -n nuttx.spk'. 23998 From Alin Jerpelea. 23999 24000 * apps/ General: 24001 24002 - Removed all references to CONFIG_DISABLE_POLL. The standard POSIX 24003 poll() can no longer be disabled. From Gregory Nutt. 24004 24005 * Examples/Tests: apps/examples: 24006 24007 - apps/examples/abntcodi: Adds test/demo program for ABNT CODI 24008 library. From Alan Carvalho de Assis. 24009 - apps/examples/webserver: Update to compile with 24010 CONFIG_NETUTILS_HTTPD_SENDFILE=y. Also some configs such as 24011 CONFIG_NETUTILS_HTTPDFILESTATS can be selected by menuconfig. 24012 From Masayuki Ishikawa. 24013 - apps/examples/chrono: Add chronometer apps example. From Alan 24014 Carvalho de Assis. 24015 24016 * Network Utilities: apps/netutils: 24017 24018 - apps/netutils/webserver: Add mp3 mime type to httpd.c. From 24019 Masayuki Ishikawa. 24020 - apps/netutils/webserver: Add directory listing to httpd. From 24021 Masayuki Ishikawa. 24022 - apps/netutils/webserver: Add web server info based on uname(). 24023 From Masayuki Ishikawa. 24024 24025 * Network Utilities: apps/wireless 24026 24027 - apps/wireless/gs2200m: Add usrsock daemon for Tilt GS2200M Wi-Fi 24028 module. From Masayuki Ishikawa. 24029 - apps/wireless/gs2200m: Add channel parameter for AP mode. From 24030 Masayuki Ishikawa. 24031 24032 * Graphics: apps/graphics: 24033 24034 - apps/graphics/nxglyphs: Add more modern looking button images for 24035 the Twm4Nx CONTEMPORARY theme. From Gregory Nutt. 24036 - apps/graphics/slcd: Adds a CSLcd class that will generate graphic 24037 simulated segments of an SLCD display. From Gregory Nutt. 24038 - apps/graphics/twm4nx: This change adds a calibration screen to 24039 Twm4Nx. In addition to the Calibration screen port from NxWM, this 24040 required extensions to the event handling logic to support (1) 24041 receiving raw, uncalibrated touchscreen inputs, (2) shutting down 24042 of externally controlled windows. From Gregory Nutt. 24043 - apps/graphics/twm4nx: Move application-related files into different 24044 directories to separate them from the core Twm4Nx files. From 24045 Gregory Nutt. 24046 - apps/graphics/twm4ndx: Compile out cursor support if we are using a 24047 mouse. From Gregory Nutt. 24048 - apps/graphics/twm4nx: Add an alternative COMPONTEMPORARY theme. 24049 Still has some artifacts on the display. From Gregory Nutt. 24050 - apps/graphics/twm4nx: Use custom CWidgetStyle to force Icon 24051 background to match selected desktop background. From Gregory Nutt. 24052 - apps/graphics/twm4nx: Add some definitions to support Themes. 24053 Background image is now optional. From Gregory Nutt. 24054 - apps/graphics/twm4nx: Add a configuration option to control the 24055 number of buttons in one column of the Icon Manager. The Icon 24056 anager no longer relies the default window width; now it 24057 determines a preferred window width based primarily on the font 24058 size. From Gregory Nutt. 24059 - apps/graphics/tmw4nx: Add a CClock class that implements the 24060 Twm4Nx digital clock based on the CSLcd simulated SLCD segments. 24061 From Gregory Nutt. 24062 - apps/graphics/twm4nx/README.txt: Add an overview of how to create 24063 Twm4Nx applications. From Gregory Nutt. 24064 24065 * Industry: apps/industry: 24066 24067 - apps/industry/abnt_codi: Adds support for ABNT CODI library. This 24068 is an energy meter protocol used in Brazil. From Alan Carvalho de 24069 Assis. 24070 24071Bugfixes. Only the most critical bugfixes are listed here (see the 24072ChangeLog for the complete list of bugfixes and for additional, more 24073detailed bugfix information): 24074 24075 * Core OS: 24076 24077 - Semaphores: Fix a bad assertion in priority inheritance logic. 24078 The comments state correctly that we cannot make any assumptions 24079 about the number of holders of the semaphore, yet the code 24080 asserts if there are any holders. This makes the code behave 24081 closer to what the comments say. From Gregory Nutt. 24082 - Memory Manager: Fix error that occurs when CONFIG_CPP_HAVE_VARARGS 24083 is not defined. In that case, the arguments to the debug macro will 24084 all be evaluated even though they are not used any variables that 24085 are references must at least be defined. From Gregory Nutt. 24086 - System Calls: Adapt the conditional compile logic on when to 24087 include the vfork() syscall proxy and stub to the logic used for 24088 vfork() itself. From Michael Jung. 24089 - System Calls: Fixed SYS_mount syscall define when CONFIG_FS_READABLE 24090 is undefined. From Joao Matos. 24091 - waitpid(): In waitpid, remember to grab the exited child ptr. After 24092 being unblocked in waitpid, the child pointer might be NULL. Modify 24093 to use group_exitchild to get the pointer of recent exited child. 24094 From Yang ChungFan. 24095 24096 * File System/Block and MTD Drivers: 24097 24098 - MMC/SD: Fixes bug where thread gets deadlocked due to recursive call 24099 and addresses comment regarding events. When initializing the 24100 MMCSD, if we are being told there is a card, but we fail to 24101 initialize it, we should not re-register for an insertion event as 24102 this will immediately cause us to call in again. Instead, we should 24103 register for a removal event and wait for the card to be removed and 24104 re-inserted. From Anthony Merlino. 24105 24106 * Networking/Network Drivers: 24107 24108 - UsrSock: Fix debug logs and remove DEBUGASSERT from 24109 usrsockdev_do_request(). In a client mode, socket() will be the 24110 first request for usrsockdev_do_request(). However, in a server 24111 mode, the first request to accepted sockets will be recv() or other 24112 which depend on applications. So I think we should remove thi 24113 DEBUGASSERT from usrsockdev_do_request(). From Masayuki Ishikawa. 24114 - ICMPV6 Autoconfig: Use ntohs() to convert IPv6 address from 24115 network to host order int network debug output. From Bernd Walter. 24116 - TCP Buffering: Fix TCP buffer send deadlock in iob_copyin() when 24117 IOB buffers are exhausted and network lock is taken. From 24118 Valmantas Paliksa. 24119 - TCP Close: Fix TCP active close in inet_close.c. In previous 24120 implementation, FIN packet was not sent when a socket is actively 24121 closed (e.g. telnetd or webserver) without SO_LINGER. This issue 24122 happens because the socket closing sequence waits for the 24123 status.cl_sem only if lingering timeout is set. However, in many 24124 server use-cases, SO_LINGER is not usually set and even in these 24125 cases, FIN packet must be sent correctly. This changes the logic 24126 in inet_close.c so that it can wait for status.cl_sem regardless 24127 of SO_LINGER. Instead, if SO_LINGERis set, it waits for the 24128 semaphore with timeout option. From Masayuki Ishikawa. 24129 - UDP: Fix C89 compatibility problem. Empty initializers are not 24130 permitted. Caused eZ80 build failure. From Gregory Nutt. 24131 - Telnet: Fix a C89 non-compliance that was breaking the eZ80 build. 24132 From Gregory Nutt. 24133 24134 * Wireless/Wireless Drivers: 24135 24136 - NRF24L01: Fix NRF24L01_NCMDS in ioctl.h. The last one in 24137 nrf24l01.h is _WLCIOC(NRF24L01_FIRST + 15) From Masayuki Ishikawa. 24138 - NRF24L01: Fix PIPENO/PKTLEN bitmask in RX FIFO header. In RX FIFO 24139 header, the first byte should use 5 lsb to store PKTLEN and 3 msb 24140 to store PIPENO. However, FIFO_PIPENO_SHIFT was set to 4 which 24141 causes the lsb of pipe number to interfere with the received packet 24142 size stored in the FIFO. This fix RX corruption when using pipe 24143 number > 0. From Federico Braghiroli. 24144 24145 * Graphics/Display Drivers: 24146 24147 - Raising Windows: Fix a critical list handling bug in the graphics 24148 system. When a lower-level window was raised while a model window 24149 was in place, then list corruption could occur. From Gregory Nutt. 24150 24151 * Common Drivers: 24152 24153 - Serial: Limit the number of times that the poll semaphore is 24154 incremented. From Dave Marples. 24155 - USB Host: Remove duplicate const in USB Host files. From Adam 24156 Porter. 24157 - USB Host Composite: Class-specific descriptors were not available 24158 if the interface is part of a composite device, since only interface 24159 and endpoint descriptors are copied by usbhost_copyinterface(). 24160 This change will copy any class-specific interface descriptors for 24161 use in downstream class drivers. The loop was aborting due to 24162 finding two interface descriptors back-to-back. From Adam Porter. 24163 - USB Host Composite: The cfgdesc pointer was initialized after the 24164 buffer had been advanced, so it was not pointing where it should. 24165 The totallen operations at the end of the function ended up 24166 overwriting memory belonging to the first copied interface 24167 descriptor. From Adam Porter. 24168 - USB MSC: Fix usbmsc_exportluns declaration. Fixes the following 24169 error "...undefined reference to `usbmsc_exportluns'". From Alin 24170 Jerpelea. 24171 24172 * Architecture Common: 24173 24174 - Rename all arch/<family>/src/<chip>/chip directories to 24175 arch/<family>/src/<chip>/hardware. This eliminates a name collision 24176 that is usually harmless but does cause problems at the time. The 24177 problem is because the include path includes '.' and 'chip/.', 24178 therefore an inclusion like '#include <chip/mcu_header.h' can be 24179 ambiguous if a file named mcu_header.h exists in both at both 24180 arch/<family>/src/<chip>/chip and at arch/<family>/src/chip/chip. 24181 From Gregory Nutt. 24182 24183 * Board Common: 24184 24185 - Default Configurations: Update configurations for changes to 24186 apps/netutils/netinit configuration. MAC address configuration 24187 was represented by type long long. That is a problem for 24188 architectures that do not support type long long. Replaces by 24189 two long configuration items. From 24190 Gregory Nutt. 24191 - Default Configurations: Change CONFIG_NSH_MACADDR to 24192 CONFIG_NETINIT_MACADDR From Masayuki Ishikawa. 24193 - Default Configurations: Fix mac address settings for RNDIS. 24194 Recently CONFIG_NETINIT_MACADDR_2 and CONFIG_NETINIT_MACADDR_1 were 24195 newly introduced instead of CONFIG_NETINIT_MACADDR. This change 24196 conforms to this change. From Masayuki Ishikawa. 24197 - Default Configurations: Kconfig files should not select 24198 SCHED_WORKQUEUE since that is really only is only the logical OR if 24199 SCHED_LPWORK and SCHED_HPWORK. Selecting it has no effect other 24200 than to produce an erroneous configuration. From Gregory Nutt. 24201 - Linker Scripts: Make sure sections are aligned to 32-bits in all LD 24202 linker scripts. This fixes and issues noted specifically for the 24203 SAMD21 by Bernd Walter, but should be applicable to all other LD 24204 scripts as well. 24205 - Linker Scripts: Add . = ALIGN(4); before every .data section, 24206 add . = ALIGN(4); before every ARM.extab section, add . = ALIGN(4); 24207 before every definition of __exidx_start, add . = ALIGN(4); before 24208 every .init_section. Convert TABs to spaces in all ld linker 24209 scripts. This just makes things easier to modify with scripts 24210 because the files are more consistent. From Gregory Nutt. 24211 - configs/Board.mk: Cannot call $(AR) directly. That works only with 24212 GCC. It must, instead use the ARCHIVE command from Config.mk as do 24213 other Makefiles. From Gregory Nutt. 24214 24215 * MIPS32: 24216 24217 - Fix a copy-paste error. On vfork, the GP register was being set to 24218 the new SP value vs. the context GP value. NOTED in Bitbucket issue 24219 155. From Gregory Nutt. 24220 - An older commit used CP0 register definitions that were not defined 24221 in the NuttX cp0.h header file. Probably these were from the 24222 Microchip hacked up GCC toolchain but are not generally available 24223 outside that toolchain. Fix: Add definitions to NuttX cp0.h header 24224 file. From Gregory Nutt. 24225 24226 * Microchip PIC32MZ Drivers: 24227 24228 - PIC32MZ GPIO: Use LAT instead of PORT when writing. From Ouss4. 24229 24230 * Microchip/Atmal SAM3/SAM4 Drivers: 24231 24232 - SAMD2/L2: Correct TC register bit field definitions used with 24233 TC_CTRLBCLR and TC_CTRLSET registers. From Bernd Walter. 24234 24235 * NXP LPC17xx Boards: 24236 24237 - LPC17xx PROTECTED: On the LPC1769 there are two 16 KiB AHB SRAM 24238 blocks, which are mapped back to back at physical address 0x2007C000 24239 and 0x20080000 (i.e. right below and right above a 512 KiB boundary). 24240 Memory from those two blocks is considered continuous when assigned 24241 to a heap. In the protected build mode, when the memory protection 24242 unit is used, though, it must be split into two MPU regions. This 24243 is because MPU regions must be naturally aligned, and the 32KiB 24244 continuous address space of the two 16KiB AHB SRAM blocks does not 24245 start at an address divisible by 32KiB. The only other 24246 configurations that use protected build mode on lpc17xx are 24247 currently open1788/knsh and open1788/knxterm. The LPC1788 has the 24248 AHB SRAM blocks mapped more sanely (from an MPU region point of 24249 view), which is probably why no problems emerged here. Both still 24250 compile with my change and other than wasting an MPU region (which 24251 would otherwise remain unused) should work fine. That said, I 24252 have no hardware to confirm. From Michael Jung. 24253 24254 * NXP LPC54xx Boards: 24255 24256 - LPCXpresso-LPC54628: Modify the TWM configurations to properly 24257 inject keyboard data. This way, in the case of multiple NxTERMs, 24258 only the NxTerm at the top of the hierarchy gets the keyboard input. 24259 Otherwise, it is not possible to use multiple NxTerms with each the 24260 keyboard input going to a different NxTerm window. From Gregory 24261 Nutt. 24262 24263 * NXP i.MXRT Drivers: 24264 24265 - i.MXRT Serial: Fix serial TIOCSINVERT From David Sidrane. 24266 - i.MXRT USDHC: USDHC Stopgap Fix for build breakage From David 24267 Sidrane. 24268 - i.MXRT USDHC: Fix compiler error for CONFIG_IMXRT_USDHC1 && 24269 !CONFIG_IMXRT_USDHC2 From David Sidrane. 24270 24271 * On Semiconductor LC823450: 24272 24273 - LC823450-XGEVK: Remove CPU assignment for LPWORK. This change will 24274 reduce audio under-run when running dvfs auto mode. From Masayuki 24275 Ishikawa. 24276 24277 * SiLabs EFM32 Drivers: 24278 24279 - EFM32 USB Host: Apply Adam Porter's STM32 fix to EFM32 which has 24280 the same IP. From Gregory Nutt. 24281 24282 * STMicro STM32: 24283 24284 - STM32F1 Pinmap: Fix names for complementary PWM outputs From 24285 Mateusz Szafoni. 24286 - STM32L4: If SRAM3 is used as heap, do not power it off in stop 2 24287 mode. From Juha Niskanen. 24288 24289 * STMicro STM32 Drivers: 24290 24291 - STM32 ADC: Fix a compilation error when verbose analog debugging is 24292 enabled for the STM32 ADC. not all STM32s have an SQR4 register. 24293 From rajan gill. 24294 - STM32 PWM: Fix pulse count for the number of counts greater than 128. 24295 From Mateusz Szafoni. 24296 - STM32 USB OTG FS/HS Host: In stm32_ctrlout() in the HS and FS host 24297 drivers, the data buffer isn't sent. This patch passes the buffer 24298 and buflen to the stm32_ctrl_senddata() function. With this change, 24299 I am able to send MBIM control messages to my USB modem, and read the 24300 response. From Adam Porter. 24301 - STM32L4 USB: Fix USB device PMA accesses. USB PMA accesses are 24302 done as 16-bit words on STM32L4 instead of 32-bit words on STM32L1. 24303 From Jussi Kivilinna. 24304 - STM32L4 OTG FS/HS: Fix constant using in comparison to determine 24305 endpoint is interrupt type. From Adam Porter. 24306 - STM32F7 OTG FS/HS: Fix constant using in comparison to determine 24307 endpoint is interrupt type. From Adam Porter. 24308 - STM32H7 PWM: Fix pulse count for the number of counts greater than 128. 24309 From Mateusz Szafoni. 24310 - STM32H7 Serial: Fix error when SINGLEWIRE or 24311 CONFIG_STM32H7_SERIALBRK_BSDCOMPAT defined. From David Sidrane. 24312 - STM32H7 SPI: Correct a typo in condition compilation. From 24313 Jonathan Richner. 24314 - STM32H7 Timer: Fixed compile errors with TIM13, TIM14, TIM7. From 24315 David Sidrane. 24316 - STM32H7 USB OTG FS/HS: Fix constant using in comparison to determine 24317 endpoint is interrupt type. From Adam Porter. 24318 - STM32G0 Serial: Fix STM32G0 error when SINGLEWIRE or SERIALBRK_BSDCOMPAT 24319 defined (it reflects previous changes in STM32H7). From Mateusz Szafoni. 24320 24321 * STMicro STM32 Boards: 24322 24323 - Nucleo-L432KC: Shorten some long lines, fix i2c pinout. From 24324 Sebastien Lorquet. 24325 - STM32L476VG-Disco: Fix an error in defconfig files because a line 24326 in the rcS file was longer than the configured NSH command line. 24327 From Juha Niskanen. 24328 - STM32L4R9AI-Disco: Fix an error in defconfig files because a line 24329 in the rcS file was longer than the configured NSH command line. 24330 From Juha Niskanen. 24331 - OmnibusF4: Correct naming of a configuration variable for ROMFS. 24332 From Phil Coval. 24333 - Olimex-STM32-E407: Change initialization to match the way it is 24334 done with other boards. From Gregory Nutt. 24335 - Olimex-STM32-E407 SPI: Add SPI initialization logic. From Juan 24336 Flores. 24337 - STM32F4-Discovery ROMFS: Missing colon in declaration of local 24338 variable. From Phil Coval. 24339 - STM32F4-Discovery ROMFS: Correct naming of a configuration variable 24340 for ROMFS. From Phil Coval. 24341 - STM32F4-Discovery Build: Fix .ARM.exidx section overlap Source: 24342 https://stackoverflow.com/questions/30778614/arm-none-eabi-ld-section-arm-exidx-overlaps-section-data. 24343 From Alan Carvalho de Assis. 24344 - STM32F4-Discovery PROTECTED: Fix a problem with undefined symbol 24345 'abort' from GCC library in PROTECTED build. Fix by moving libgcc 24346 into recursive archive group between --start-group and --end-group. 24347 Other kernel/Makefiles suffer from this same issue From Gregory 24348 Nutt. 24349 - Nucleo-H743ZI SPI: Correct typos in function naming. From Jonathan 24350 Richner. 24351 24352 * TI AM335x: 24353 24354 - AM335x SYSCLK: Add a function to return a frequency of the system 24355 clock. From Gregory Nutt. 24356 - AM355x CM: Fix a typo in a macro name. From Gregory Nutt. 24357 - AM355x LCD: Fix a few typos. Add things needed by the LCDC driver. 24358 From Gregory Nutt. 24359 24360 * TI Tiva Drivers: 24361 24362 - Tiva Ethernet: Add a workaround for tiva with qemu. With qemu, 24363 tiva_ifup() hangs because Ethernet link status can not be set 24364 correctly. This change is a workaround to avoid this issue. From 24365 Masayuki Ishikawa. 24366 24367 * TI Tiva Boards: 24368 24369 - TM4C1294-Launchpad: Fix syntax error in oocd.sh script. From 24370 Nathan Hartman. 24371 24372 * ZiLOG Common: 24373 24374 - z80: up_addregion() must be prototyped in nuttx/mm/mm.h, not 24375 up_internal.h. Various name changes to better conform to the coding 24376 standard, naming conventions, and use by other architectures. From 24377 Gregory Nutt. 24378 24379 * ZiLOG Z80 Boards: 24380 24381 - z80sim: Remove unused function up_earlyserialinit() from serial 24382 driver. From Gregory Nutt. 24383 24384 * ZiLOG z16f ZNeo: 24385 24386 - z16f ZNeo: Replicate build changes make for eZ80 and z8 for ZNeo. 24387 From Gregory Nutt. 24388 - ZNeo compile fixes: Fix misuse of FAR which makes a difference on 24389 this platform. Be consistent in use of WDOG_ID type. ZDS-II doesn't 24390 like auto-conversions of struct wdog_s * to WDOG_ID (which is type 24391 struct wdog_s *). From Gregory Nutt. 24392 24393 * ZiLOG eZ80Acclaim!: 24394 24395 - eZ80: Fix eZ80 compile problems due to New ZDS-II toolchain and 24396 ongoing bit rot due to non-C89 code creeping into the core OS. From 24397 Gregory Nutt. 24398 - eZ80: Fix some backward conditional logic in Make.defs. From 24399 Gregory Nutt. 24400 - eZ80: Fix a logic error in vector initialization. From Gregory Nutt. 24401 24402 * C Library/Header Files: 24403 24404 - signal.h: Fix a C89 compliance problem that cause the eZ80 build to 24405 fail. Empty structure and unions are not accepted by the compiler. 24406 From Gregory Nutt. 24407 - wqueue.h: Allow definitions even if work queues are not enabled. 24408 This solves build failures when work queues are not enabled. From 24409 Gregory Nutt. 24410 - fixedmath.h: Regarding the single precision float to/from fixed 24411 point conversions in fixedmath.h, I believe the floating point 24412 literals should be appended with the letter 'f' to avoid (expensive) 24413 conversions from single to double precision, and thereby also avoid 24414 (expensive if done in SW) double point arithmetic (which is what is 24415 happening upon inspection of my disassembly). From rajan gill. 24416 24417 - stdio: Fix long long usage in all of the newer printf-related 24418 logic: The selection CONFIG_LIBC_LONG_LONG must be ignored if the 24419 architecture does not support long long types. From Gregory Nutt. 24420 - gm_time_r(): Spurious reorganization of a loop in gm_time_r() to 24421 work around and ZDD-II internal compiler error. Might be a little 24422 bigger now, but is also probably a more structured use of C. From 24423 Gregory Nutt. 24424 - Debug: For platforms whose CPP tool does not support a variable 24425 number arguments to pre-processor macros, we may still need to build 24426 the debug functions even when CONFIG_DEBUG_FEATURES is not selected. 24427 For example, __alert() may be needed if CONFIG_ARCH_STACKDUMP is 24428 set. From Gregory Nutt. 24429 24430 * Tools: 24431 24432 - tools/nxstyle.c: Fix error in conditional logic that was preventing 24433 detection bad brace alignment. Add logic to handle alignment of 24434 braces in data initializers which following slightly different 24435 indentation rules. From Gregory Nutt. 24436 - tools/mkexport.sh: The mcu sub-directory chip/ was renamed to 24437 hardware/ in late May of 2019. The mkexport.sh script that copies 24438 these files was not updated, however, until now. Noted by Alin 24439 Jerpelea. From Gregory Nutt. 24440 24441 * NSH Library: apps/nshlib: 24442 24443 - apps/nshlib: Fix all places where cle() and readline() are used. 24444 readline() returns EOF on a failure. cle() returns a negated errno 24445 value. Checking only for EOF causes failures to be missed (and 24446 infinite loops ensuing). From Valmantas Paliksa. 24447 - nshlib/nsh_parse.c: Fix a warning about an uninitialized variable 24448 from the ZDS-II compiler. From Gregory Nutt. 24449 - apps/nshlib/nsh_ddcmd.c: Seemingly nonsense change but somehow 24450 works around a compilation error using the ZDS-II toolchain. It 24451 was claiming that vtbl was undefined indd_outfopen(). From Gregory 24452 Nutt. 24453 24454 * Network Utilities: apps/netutils: 24455 24456 - apps/netutils/netinit: MAC address configuration was represented 24457 by type long long. That is a problem for architectures that do not 24458 support type long long. Replaces by two long configuration items. 24459 From Gregory Nutt. 24460 - apps/netutils/telnetd/telnetd_daemon.c: Fix a C89 violation that 24461 caused the eZ80 build to fail. From Gregory Nutt. 24462 - apps/netutils/json: Removed. Replaced with apps/netutils/cjson. 24463 From Gregory Nutt. 24464 24465 * Graphics Utilities: apps/graphics: 24466 24467 - apps/graphics/twm4nx: Fix an uninitialized variable that was 24468 causing toolbar buttons to randomly come up enabled or disabled. 24469 Remove some unused event definitions. From Gregory Nutt. 24470 - apps/graphics/twm4nx: Fix a calibration screen startup issue. 24471 Make an initial calibration screen optional. From Gregory Nutt. 24472 - apps/graphics/twm4nx: Revise logic to detect clicks on the 24473 background image. The original implementation had some side 24474 effects. From Gregory Nutt. 24475 - apps/graphics/twm4nx: Remove some remaining stuff from TWM that 24476 was never used. Menus need to close after the 'terminal' selection 24477 is made. Otherwise, the menu can become buried under a newly open 24478 menu and not easily recovered. From Gregory Nutt. 24479 - apps/graphics/twm4ndx: Add a 'critical' bit to the eventID. While 24480 resizing, all events will be ignore except those marked critical. 24481 From Gregory Nutt 24482 - apps/graphics/twm4nx: CBackground now brings up the main menu if 24483 the background image is clicked. This makes the behavior the same 24484 across all of the background except when an icon is clicked. From 24485 Gregory Nutt. 24486 - apps/graphics/twm4nx: Fix a bug in placement of icons on the 24487 desktop. When many windows are displayed, a bug in the looping logic 24488 could cause an infinite loop. From Gregory Nutt. 24489 - apps/graphics/twm4nx: Fix some errors found when enabling NX 24490 keyboard support. The most important being that the mouse and 24491 keyboard drivers need to be opened non-blocking. From Gregory Nutt. 24492 24493NuttX-8.1 Release Notes 24494------------------------ 24495 24496The 132nd release of NuttX, Version 8.1, was made on September 14, 2019, 24497and is available for download from the Bitbucket.org website. Note 24498that release consists of two tarballs: nuttx-8.1.tar.gz and 24499apps-8.1.tar.gz. These are available from: 24500 24501 https://bitbucket.org/nuttx/nuttx/downloads 24502 https://bitbucket.org/nuttx/apps/downloads 24503 24504Both may be needed (see the top-level nuttx/README.txt file for build 24505information). 24506 24507The major release version number is only incremented when there is a major 24508change to the OS that makes it more-or-less incompatible with preceding 24509versions. This release bumps the major version number from 7 to 8 due 24510primarily to a major reorganization in the what was the configs/ directory 24511in nuttx-7.31. That directory has been renamed boards/ and now has a 24512directory structure that mirrors the organization of the arch/ directory 24513for the most part: 24514 24515 board/ - Holds all board-related information 24516 board/<arch> - Holds board-related information for all boards that use 24517 the same CPU architecture. For example, all ARM-based boards will be 24518 found under board/arm 24519 board/<arch>/<chip> - Holds board-related information for all boards 24520 that use the same MCU chip family. For example, all STM32-based 24521 boards will be found under board/arm/stm32 24522 board/<arch>/<chip>/<board> - Holds board-related information for a 24523 specific board. This is analogous to the configs/<board> directory in 24524 nuttx-7.31. So, for example, the STM32F4-Discovery board support that 24525 was at configs/stm32f4disovery can now be found under 24526 boards/arm/stm32/stm32f4discovery. 24527 boards/<arch>/<chip>/<board>/<configs> - All configurations for a 24528 specific board can now be found together in this configs/ 24529 subdirectory. So, continuing the example, the STM32F4-Discovery NSH 24530 configuration can now be found at 24531 boards/arm/stm32/stm32f4discovery/configs/nsh. 24532 24533In additional, common MCU logic can be found at board/<arch>/<chip>/common 24534and MCU common drivers can be found at board/<arch>/<chip>/common. Related 24535changes include changes to tools/, comments, and documentation that depend 24536on the board directory structure. 24537 24538This re-organization is the work of Alin Jerpelea. Not only did Alin do 24539this major directory re-organization, but he ran the code standard 24540compliance tool and corrected every .c and .h file under boards/ so that 24541they all correctly follow the NuttX coding style. These changes were very 24542extensive and, hence, will not be addressed individually in the ReleaseNotes. 24543 24544You have to give Alin credit for his effort to take on really big jobs and 24545stick with it until it is finished. Kudos! 24546 24547A more constrained re-organization of the drivers/ directory was also 24548contributed by Augusto Fraga Giachero. Augusto reorganized some driver 24549directories to make better functional associations and also to make space 24550for a new set of RF-related drivers. 24551 24552Additional new features and extended functionality: 24553--------------------------------------------------- 24554 24555 * Core OS: 24556 24557 - POSIX Message Queues: Add a test to verify that message queue is 24558 closed by the same task group that opened it. If not, then list 24559 corruption would result. This test is only performed if 24560 CONFIG_DEBUG_FEATURES is enabled since it should not normally be an 24561 issue: It would be a strange programming practice to open a 24562 message queue in open task group, then close it in another. From 24563 ???. 24564 - Signal Notifications: Add configuration option to select either the 24565 high-priority or low-priority work queue for SIG_EVTHREA 24566 notifications. From ligd. 24567 - System Calls: In order to support built-in in function in protected 24568 mode, a task_spawn() system call must be supported. task_spawn() 24569 and posix_spawn() are NuttX OS interfaces. In PROTECTED and KERNEL 24570 build modes, then can be reached from applications only via a system 24571 call. Unfortunately this is overly complex because there is a (soft) 24572 limit of 6 parameters in a system call; task_spawn has seven 24573 parameters. This is a soft limit but still difficult to extend 24574 because it involves assembly language changes to numerous 24575 architectures. Better to get more creative. Rather than extend the 24576 maximum number of parameters across all architectures, I opted 24577 instead to marshal the seven parameters into a structure and pass 24578 only a single parameter: A pointer to the structure containing the 24579 seven marshaled parameters. From Gregory Nutt. 24580 - /etc/passwd and /etc/group: Improve the format of the /etc/passwd 24581 file as used in the sim:nsh configuration. It is now a little 24582 more similar to other systems and includes user and group IDs. Add 24583 also an /etc/group file to support future testing. From Gregory 24584 Nutt. 24585 - User/Group IDs: Implement 'real' setuid, getuid, setgid, and getgid 24586 interfaces is so configured (otherwise fall back to stubs that 24587 support only the 'root' user ID and group. Once set, these IDs will 24588 be inherited by all child task groups. From Gregory Nutt. 24589 - Debug Output: Add debug macros for contactless. The various 24590 contactless device drivers currently define device specific debug 24591 macros within their local header files. This patch adds generic 24592 ctls[info|warn|err] macros for the overall contactless subsystem to 24593 be used in future drivers. Ported the existing contactless device 24594 drivers to use these generic logging macros and fixed some logging 24595 bugs along the way. From Michael Jung. 24596 - IOB instrumentation. Introduces producer/consumer id to every IOB 24597 call. This is so that the calls can be instrumented to monitor the 24598 IOB resources and to collect usage statistics. From Anthony 24599 Merlino. 24600 - IOB ProcFS: Adding ProcFS support at /proc/iobinfo to show the data 24601 collected from the IOB instrumentation. From Anthony Merlino. 24602 - Versioning: Report GIT information via ProcFS. GIT info reported: 24603 branch, version, GIT hash, hostname, user, build date. Integrates 24604 into existing .version and ProcFS. From David Alessio. 24605 24606 * File System/Block and MTD Drivers: 24607 24608 - BinFS: The BinFS file system uses the same built-in library and 24609 built-in arrays as does NSH. The built-in arrays are simple name- 24610 value pairs that map built-in function names with the user-space 24611 entry point. In the FLAT build, the built-in arrays are available 24612 everywhere via the backdoor left open by the FLAT address space. 24613 In the PROTECTED build, however, the kernel must maintain its own 24614 reference to the user-space built-in array. This commit adds those 24615 kernel globals and a new boardctl(BOARDIOC_BUILTINS) that can be 24616 used by applications to the provide the built-in list reference to 24617 the kernel. From Gregory Nutt. 24618 - MMC/SD: Added support for MMC (eMMC) bigger than 2 GB (Tested with 24619 IMXRT1050EVKB and samsung eMMC 16GB). 24620 - AT24CSxx: Register a character driver for UUID of AT24CSxx chips. 24621 Allows the UUID to read as a file or displayed from an nsh prompt with: 24622 nsh> hexdump /dev/eeprom.uuid From David Alessio. 24623 - Macronix FLASH: Add support for 4-byte addressing on >128Mb 24624 Macronix flash parts From jjlange. 24625 - MX25Rxx: Add support for 512B sectors. From Simon Piriou. 24626 - SST26: Accept the 16MBit Flash when reading the JEDEC-ID at 24627 initialization time. From Ouss4. 24628 24629 * Network/Network Drivers: 24630 24631 - IPv4 Options: Now handles reception of IPv4 packets with larger 24632 IPv4 headers containing options. From Gregory Nutt. 24633 - Sockets: Re-order the content of all address-family socket 24634 'connection' structures so that they begin with a common prologue. 24635 This permits better use of logic for different address family 24636 types. From Gregory Nutt. 24637 - TCP: Make RTO and WAIT_TIME configurable. This fix is not really 24638 correct: TCP RTO really should be calculated dynamically for each 24639 TCP connection: http://sgros.blogspot.com/2012/02/calculating-tcp-rto.html. 24640 From zhangyuan7. 24641 - IP Forwarding: Check if interface is up early on when forwarding to 24642 avoid extra work. As noticed in a previous wireless commit, when 24643 forwarding is enabled and a packet comes in, the packet is attempted 24644 to be sent on each other netdev without regard for whether it is in 24645 the UP state. Of course this is eventually caught, but it can be 24646 caught earlier to avoid unnecessary work, especially in the 6LoWPAN 24647 case where a useless packet conversion will occur. From Anthony 24648 Merlino. 24649 - RNDIS: Expose option to change the number of write requests that 24650 can be in flight. From Anthony Merlino. 24651 - GS2200M: Add UDP support. From Masayuki Ishakawa 24652 - GS2200M: Implement GS2200M_IOC_IFREQ IOCTL command. From Masayuki 24653 Ishikawa. 24654 - GS2200M: Enable NuttX's DHCP client instead of GS2200M's DHCP 24655 client. From Masayuki Ishikawa. 24656 - GS2200M: GS2200M now supports SIOCGIFHWADDR From Masayuki 24657 Ishikawa. 24658 24659 * Wireless/Wireless Drivers: 24660 24661 - IEEE802.15.4 Network Driver: Allow 64-bit prefix to be configurable 24662 when auto-configuring the IPv6 address during bring-up. Previously, 24663 only the link-local prefix fe80::/64 was used. Also, put the 24664 network in the DOWN state at the end of initialization. From 24665 Anthony Merlino. 24666 - IEEE 802.15.4 MAC: Adds support for energy detect. Adds support 24667 for energy detect by introducing a new radio call/callback, as the 24668 PHY layer is required to perform the energy detect. From Anthony 24669 Merlino. 24670 - IEEE 802.15.4 MAC: Adds support for getting/setting 24671 macMaxFrameRetries via IOCTL. Add get support for rxonidle 24672 attribute From Anthony Merlino. 24673 - IEEE 802.15.4 MAC: Move the global iobuffer into the macnet struct 24674 so that more than one macnet device can exist. From Anthony 24675 Merlino. 24676 - IEEE 802.15.4 MAC: Defer handling of extracting association 24677 response to LPWORK queue. From Anthony Merlino. 24678 - IEEE 802.15.4 Radios: Support dynamic FCS length. Adds 24679 IEEE802154_ATTR_PHY_FCSLEN. This change introduces 24680 IEEE802154_ATTR_PHY_FCSLEN which the radio layer can support to 24681 set/get the FCS length that's added to the end of the frame. One 24682 use case, in promiscuous mode, is to add back in the FCS of the 24683 received frame by increasing the iob->io_len by the FCS length. 24684 From Anthony Merlino. 24685 - Xbee: Support "WR" AT command for writing parameters to non- 24686 volatile memory. From Anthony Merlino. 24687 - Xbee: Add configuration option for setting the default prefix 24688 to use when bringing up the network and setting the IP address. 24689 From Anthony Merlino. 24690 24691 * Other Common Device Drivers: 24692 24693 - RTC: If the RTC time is successfully set, then update the current 24694 system time to match. From ligd. 24695 - ADT7320: Add support for the ADT7320 temperature sensor. From 24696 Augusto Fraga Giachero. 24697 - DAC7554: Add support to the DAC7554 digital-to-analog converter. 24698 From Augusto Fraga Giachero. 24699 - DAT-31R5-SP+: Add support to the DAT-31R5-SP+ digital attenuator. 24700 Creates a the new device driver directory drivers/rf/ to support 24701 drivers related to RF peripherals. It also adds support for the 24702 DAT-31R5-SP+ digital attenuator. From Augusto Fraga Giachero. 24703 - ISL29023: Add basic driver of ISL29023 ambient light sensor. The 24704 basic driver can set operational mode, range, and resolution. It 24705 can also read lux value in continuous mode. Interrupt and the alarm 24706 is not implemented. From Matous Pokorny. 24707 - SHT3x: Add Sensirion SHT3x driver. From Markus Bernet. 24708 24709 * Simulator: 24710 24711 - Simulator Build: Even though the simulation has no "chips", it 24712 needs to have CONFIG_ARCH_CHIP and chip sub-directories. Otherwise, 24713 we would have to treat it as a special case in the build system 24714 after the changes to the boards/ directory. From Gregory Nutt. 24715 24716 * Microchip PIC32MZ: 24717 24718 - PIC32MZ. Make the PLL input clock configurable. From Ouss4. 24719 24720 * ARMv7-M 24721 24722 - Add ARMv7-M setjmp/longjump functions. From David S. Alessio. 24723 24724 * NXP i.MXRT: 24725 24726 - i.MXRT Clocking: Enable TRACE clocks if the divider has been 24727 defined in the board's board.h file. From Dave Marples. 24728 24729 * NXP i.MXRT Drivers: 24730 24731 - i.MXRT QEncoder: Adds quadrature encoder driver for IMXRT. From 24732 Nicholas Chin. 24733 - i.MXRT uSDHC: This change completes SDIO support for IMXRT, and 24734 also adds support for WiFi using the AP6212A module based on Simon 24735 Piriou's rather excellent work. The patch should also address 24736 DavidS's concern about width setting for USDHC1 and 2. Testing of 24737 the WiFi is minimal so far but functionality is proven. I'm 24738 specifically not happy that the driver doesn't recover elegantly 24739 from a DMA data checksum failure, but that is an issue that can be 24740 dealt with in due course ... I'm trying to get the rest of the 24741 interfaces fleshed out and the hardware proven so it can go for pre- 24742 production build. I _think_ there's only Bluetooth and USB-device 24743 left to implement now. From Dave Marples. 24744 - i.MXRT uSDHC: IMXRT uSDHC driver cmd line reset logic modified. 24745 From Ivan Ucherdzhiev. 24746 24747 * NXP/Freescale Kinetis Drivers: 24748 24749 - Kinetis Serial: Add possibility to specify pull-up instead of 24750 open drain for serial single-wire mode. From Beat Küng. 24751 24752 * NXP LPC17xx/40xx: 24753 24754 - LPC17xx/40xx Build: Cortex-M system reset is applicable to 24755 LPC17xx/40xx too. From Pavel Pisa. 24756 24757 * NXP LPC17xx/40xx Drivers: 24758 24759 - LPC17xx/40xx Ethernet: Follow the procedure listed in the 24760 LPC176x/5x User Manual when reading from and writing to the PHY's 24761 registers (section 10.11.14). I couldn't see any behavioral change 24762 after this commit, but nonetheless is a good practice to follow the 24763 manufacturer's recommended procedure. From Augusto Fraga Giachero. 24764 24765 * NXP S31K1xx: 24766 24767 - Added architecture support for the NXP S32K1xx family. Basic 24768 support includes the boot up logic, clock configuration, LPUART 24769 console, Systick timer, GPIO controls, and eDMA (unverified). 24770 24771 * NXP S31K1xx Drivers: 24772 24773 - S32K1xx eDMA Leverage eDMA logic from i.MXRT to S32K1XX. Appears 24774 to be the same IP but with fewer channels and features than the 24775 i.MXRT implementation. From Gregory Nutt. 24776 - S32K1xx LPUART: Bring in the LPUART from i.MXRT. It is the same 24777 IP. From Gregory Nutt. 24778 - S32K1xx SysTick: Bring in Cortex-M0+ SysTick and interrupt handling 24779 from samd2l2; bring in Cortex-M4F Systick and interrupt handling 24780 from LPC54xx. From Gregory Nutt. 24781 - S32K1xx GPIO: Bring in GPIO logic from Kinetis. Looks like similar 24782 IP. From Gregory Nutt. 24783 - S32K1xx Ethernet: Unverified port of the i.MXRT Ethernet driver to 24784 the S32K1xx. The i.MXRT uses the same IP. From Gregory Nutt. 24785 - S32K1xx LPSPI and LPI2C: Brings in the LPSPI and LPI2C peripheral 24786 drivers from the i.MXRT which used the identical IP. From Gregory 24787 Nutt. 24788 24789 * NXP S31K1xx Boards: 24790 24791 - S32K118EVB. This commit adds initial board support for the NXP 24792 S32K118EVB development board. Currently supports only a minimal 24793 NSH configuration. From Gregory Nutt. 24794 - S32K118EVB: Implement board support for on-board LEDs and buttons. 24795 This is taken from the Freedom-K66f with has the same LED and 24796 button configuration as the S32K116EVB and uses the same GPIO IP. 24797 LEDs, but not buttons, have have been verified. From Gregory Nutt. 24798 - S32K146EVB: Adds initial board support for the S32K146EVB 24799 development board. Currently supports a NSH configuration with a 24800 richer feature set than the minimal configuration of the S32K118EVB. 24801 From Gregory Nutt. 24802 - S32K146EVB: Add support for execution out of SRAM. This is helpful 24803 for bring-up when you want to avoid putting a lethal image in FLASH. 24804 From Gregory Nutt. 24805 - S32K148EVB: Add support for the NXP S32K148EVB development board. 24806 Very similar to the S32K146EVB but with more on-chip memory and 24807 hardware features. 24808 24809 * Sony CXD56xx 24810 24811 - CXD56xx: Migrate CXD56xx common code to the common/ directory: 24812 Boot code, FLASH code, I2C driver, UID. From Alin Jerpelea. 24813 - CXD56xx: Add SPH. The SPH is used by the ASMP implementation from 24814 the SDK. From Alin Jerpelea. 24815 24816 * Sony CXD56xx Drivers: 24817 24818 - CXD56xx: Add sensors connected to the SCU on Spresense board: 24819 o Avago APDS9930 Proximity and Ambient light Sensor. 24820 o Rohm BH1721FVC Ambient Light Sensor. 24821 o Rohm BH1745NUC Color Sensor. 24822 o Rohm BM1383GLV/BM1383AGLV Pressure Sensor. 24823 o Rohm BM1422GMV/BM1422AGMV Magnetic Sensor. 24824 o Bosch BMI160 Sensor support. 24825 o Bosch BMP280 Barometic Pressure Sensor. 24826 o Kionix KX022/KX122 Acceleration Sensor. 24827 o Murata LT1PA01 Proximity and Ambient light Sensor. 24828 o Rohm RPR0521RS Proximity and Ambient light Sensor. 24829 o BMI160: Add optional I2C address. 24830 From Alin Jerpelea. 24831 - CXD56xx: Add the sensor initialization for CXD56xx boards in the 24832 common board folder: 24833 o APDS9930: typo fix 24834 o cxd56_ak09912 initialization. 24835 o cxd56_bmi160 initialization. 24836 o cxd56_apds9960 initialization. 24837 o cxd56_bh1721fvc initialization. 24838 o cxd56_bh1745nuc initialization. 24839 o cxd56_bm1383glv initialization. 24840 o cxd56_bm1422gmv initialization. 24841 o cxd56_bmi160 initialization. 24842 o cxd56_bmp280 initialization. 24843 o cxd56_kx022 initialization. 24844 o cxd56_lt1pa01 initialization. 24845 o cxd56_rpr0521rs initialization. 24846 o cxd56_sensors initialization. 24847 o Backup Log driver. 24848 o crashlog driver. 24849 o Move gs2200m initialization. 24850 o Move ili9340 initialization. 24851 o Move lpm013m091a initialization. 24852 From Alin Jerpelea. 24853 24854 * Sony CXD56xx Spresense Board: 24855 24856 - Spresense: Enable SmartFS and UDP support From Masayuki Ishikawa. 24857 24858 * STMicro STM32: 24859 24860 - STM32F4 PLLI2S: Add support to enable the I2S Phase Locked Loop on 24861 STM32F427 and STM32F437 MCUs. From Michael Jung. 24862 24863 * STMicro STM32 Drivers: 24864 24865 - STM32 ADC: Add ADC calibration procedure for IP_ADC_V1. Tested on 24866 STM32F100, and it magically increased result accuracy. STM32F103 24867 has the same calibration procedure. I am not sure about others. 24868 From Matous Pokorny. 24869 - STM32 SPI: TI Synchronous Serial Frame Format. The SPI macros on 24870 STM32 MCUs now support the Texas Instruments Synchronous Serial 24871 Frame Format protocol (TI protocol). Defined a new SPIDEV_MODETI 24872 and add support for it in stm32_spi.c. From Michael Jung. 24873 - STM32 UART: Serial add HW HS on UART 4 & 5. From David Sidrane. 24874 - STM32 PWM: Configure multi-channel duty only if channel specified. 24875 This allows you to update duty cycle for a single channel. From 24876 Mateusz Szafoni. 24877 - STM32F7 Ethernet: Add a timeout on MAC reset From David Sidrane. 24878 - STM32F7 FLASH: Exposes stm32_flash_xxx functions. From Anthony 24879 Merlino. 24880 - STM32F7 PWM: Configure multi-channel duty only if channel specified. 24881 This allows you to update duty cycle for a single channel. From 24882 Mateusz Szafoni. 24883 - STM32F7 UART: Serial add HW HS on UART 4 & 5. From David Sidrane. 24884 - STM32H7 ADC: Fix internal channel numbers. From Markus Bernet. 24885 - STM32H7 BBSRAM: Add BBSRAM support. From David Sidrane. 24886 - STM32H7 DTCM: Port DTCM from F7 From David Sidrane. 24887 - STM32H7 I2C: Select ARCH_HAVE_I2CRESET in configuration. From 24888 David Sidrane. 24889 - STM32H7 PWM: Configure multi-channel duty only if channel 24890 specified. This allows you to update duty cycle for a single 24891 channel. From Mateusz Szafoni. 24892 - STM32H7 RCC: Fix RCC register definitions and typos for ADC/UART. 24893 From Markus Bernet. 24894 - STM32H7 RTC: Ported over F7 RTC. From David Sidrane. 24895 - STM32H7 SPI: Allow more clock sources. From David Sidrane. 24896 - STM32H7 UART: Serial add HW HS on UART 4 & 5. From David Sidrane. 24897 - STM32H7 UART: Fix typo in UART8 configuration. From Markus Bernet. 24898 - STM32H7 UID: Ported UID from F7 From David Sidrane. 24899 - STM32L4 PWM: Configure multi-channel duty only if channel specified. 24900 This allows you to update duty cycle for a single channel. From 24901 Mateusz Szafoni. 24902 - STM32L4 UART: Serial add HW HS on UART 4 & 5. From David Sidrane. 24903 24904 * STMicro STM32 Boards: 24905 24906 - B-L475E-IOT01A: Add mx25rxx memory chip and smartfs support in NSH 24907 configuration. From Simon Piriou. 24908 - LX_CPU: Add support for the PIKRON LX_CPU board. From Pavel Pisa. 24909 - Nucleo-F303RE: Add basic NSH configuration. From Mateusz Szafoni. 24910 - Nucleo-F303RE: Enable console on UART2 and set entry point to 24911 nsh_main() in the PWM configuration. From Mateusz Szafoni. 24912 - Nucleo-H743ZI: Add RTC support. From David Sidrane. 24913 - Nucleo-L432KC: Added GPIO drivers for use with /apps/examples/gpio. 24914 From Daniel P. Carvalho. 24915 - Nucleo-L432KC: Added Zero Cross sensor to nucleo-l432kc. From 24916 Daniel P. Carvalho. 24917 24918 * TI Tiva: 24919 24920 - Tiva: Add support for Tiva TM4C123AH6PM. From Nathan Hartman. 24921 - Tiva Configuration: Modify preprocessor logic to support 24922 configurations with no UART. Now similar to logic for other 24923 architectures. From Nathan Hartman. 24924 - Tiva Interrupts: Add handling for IRQs 128 through 159. From Nathan 24925 Hartman. 24926 24927 * TI Tiva Drivers: 24928 24929 - TM4C QEncoder: Reinstate TM4C qencoder driver and expand its 24930 ioctls. Add TIVA_HAVE_QEI0, TIVA_HAVE_QEI1 as applicable to each 24931 ARCH_CHIP_TM4C12*. Rewrite tiva_qe_setup(). Replace tiva_qe_ppr() 24932 with tiva_qe_resetatppr(). Add tiva_qe_resetatmaxpos() and 24933 tiva_qe_resetatindex(). Add missing definitions: 24934 SIGMODE_QUADRATURE, SIGMODE_CLK_AND_DIR, SWAP_NO_SWAP, SWAP_PHA_PHB. 24935 Rename TIVA QEI ioctl QEIOC_PPR to QEIOC_RESETATPPR; add TIVA QEI 24936 ioctl identifiers QEIOC_RESETATMAXPOS, QEIOC_RESETATINDEX. From 24937 Nathan Hartman. 24938 24939 * TI Tiva Boards: 24940 24941 - TM4C1294-Launchpad: Enables /dev/userleds in board bring-up for 24942 tm4c1294-launchpad by calling userled_lower_initialize() in 24943 tm4c_bringup(). From Nathan Hartman. 24944 24945 * TI Tiva Drivers: 24946 24947 - Tiva GPTM timers: Implement 16-bit PWM mode. Add 24948 tiva_pwm16_sel_event() to choose GPTMCTL.TnEVENT value. Implement 24949 tiva_pwm_mode16(). This also involved numerous corrections to the 24950 16-bit timer logic. Add tiva_timer16pwm_setperiodduty() to set 24951 initial period, duty cycle, and enable interrupts if requested in 24952 GPTM peripheral. Interrupts are not enabled in NVIC until 24953 tiva_timer16_start() is called. Add tiva_timer16pwm_setduty() to 24954 update duty cycle at any time. Add new TIMER_FLAG_* configuration 24955 flags to enable configuring the 16-bit PWM feature. Extend type of 24956 "flags" in tiva_timer32config_s and tiva_timer16config_s from 8- to 24957 32-bits to allow more flags. From Nathan Hartman. 24958 24959 * Build System: 24960 24961 - Export Build: Export all variables/files to support architecture 24962 independent build against NSH. From Pavel Pisa. 24963 - Application Export: This change too build tools allows to export 24964 built-in applications registry into temporarily created directory 24965 where export archive content is prepared. If the Makefile in apps/ 24966 directory does not define export: target then error is print but 24967 export continues without interruption. It would be more logical to 24968 print warning but there is no way instruct apps make to not print 24969 error. From Pavel Pisa. 24970 - boards/Board.mk: Add support to pass dependency paths. From 24971 Gregory Nutt. 24972 24973 * Libraries/Header Files: 24974 24975 - libs/libc/libc.csv: Add some missing C library functions. From 24976 Pavel Pisa. 24977 - libs/libc/libc.csv: Add ioctl() to fs_ioctl() wrapper for varidic 24978 case. From Pavel Pisa. 24979 - libs/libc/builtin/: Moves shared built-in information out of 24980 binfmt/libbuiltin and into libs/libc/builtin where it can be shared 24981 with applications. This should permit built-in application in the 24982 PROTECTED build where binfmt/libbuiltin was not available in user 24983 space. From Gregory Nutt. 24984 - libs/libc/dirent/: Added alphasort() implementation, scandir() 24985 implementation and DT_* definitions to include/dirent.h. Apparently 24986 those definitions are not required by POSIX, but are part of 24987 4.3BSD and available in glibc as well. From Michael Jung. 24988 - libs/libc/grp/: Added stubbed implementations of getgrgid, 24989 getgrgid_r, getgrnam, getgrnam_r, and initgroups. These functions 24990 are essentially stubs pretending that NuttX supported groups and 24991 that the only configured group in the system was 'root' with gid 0. 24992 The intend is not to provide meaningful new features, but to ease 24993 porting of foreign source code to NuttX. From Michael Jung. 24994 - libs/libc/machine/arm/armv7-m/: Add Cortex M4F machine optimized 24995 fabsf and sqrtf. From David S. Alessio. 24996 - libs/libc/pwd/: Added stubbed implementations. Added stubbed 24997 implementations of getpwuid, getpwuid_r, getpwnam, and getpwnam_r. 24998 These functions are essentially stubs pretending that NuttX 24999 supported users and that the only configured user in the system 25000 was 'root' with uid 0. The intend is not to provide meaningful 25001 new features, but to ease porting of foreign source code to NuttX. 25002 From Michael Jung. 25003 - libs/libc/pwd and libs/libc/grp/: Modify to get user/group data 25004 from /etc/passwd and /etc/group if so configured. From Gregory 25005 Nutt. 25006 - libs/libc/stdio/: Add support for the size_t integer qualifier 'z' 25007 to the printf family. This is kind of tricky due the variety of 25008 sizeof(size_t) on different platforms. From David Sidrane. 25009 - libs/libc/unistd.h: Added stubbed implementations of setuid() and 25010 setgid(). These functions are essentially stubs pretending that 25011 NuttX supported users and groups and that the only configured user 25012 and group in the system were both 'root' with a uid and a gid of 0, 25013 respectively. The intent is not to provide meaningful new features, 25014 but to ease porting of foreign source code to NuttX. From Michael 25015 Jung. 25016 - libs/libc/unistd/: Add getuid() and getgid() stubs to match 25017 MichaelJung's setuid() and setgid(). From Gregory Nutt. 25018 - libc/libc/unistd/: Add stubs for geteuid(), getegid(), seteuid(), 25019 setegid(), setreuid(), and setregid(). NuttX does not currently 25020 support effective user/group IDs, but these stubs will support 25021 linkage of applications that expect these POSIX standard interfaces. 25022 From Gregory Nutt. 25023 25024 * Symbol Tables: 25025 25026 - NuttX provides lists of available syscalls and library functions and 25027 tools to process them. The lists can be used to build symbol table 25028 which allows runtime program loading which can reuse functions 25029 already compiled into NuttX system image. List processing, 25030 compilation and linking to the final system image has been possible 25031 only under manual control until now. Provided changes add option 25032 (CONFIG_EXECFUNCS_GENERATE_SYSTEM_SYMTAB) to build complete list of 25033 available functions and syscalls automatically. The symbolic table 25034 is generated in form libsymtab.a which can be reused by application 25035 or directly pull in when "g_symtab" and "g_nsymbols" variables are 25036 requested by EXECFUNCS configuration. I have tried to follow 25037 mechanisms for library compilation in different kernel protection 25038 modes but tested only flat no-MMU build. The basic assumption is 25039 that this library and libraries providing syscall stubs and C- 25040 library functions are available in user-space context and initial 25041 application (usually NSH) registers the symbol table through IOCTL. 25042 The table can be reused then by another applications in their 25043 address space as kernel allows. Simple for flat or protected mode, 25044 I am not sure if really support in MMU mode. It is highly probable 25045 that I have made some mistake, overlooked something, but the 25046 functionality is optional (should not cause troubles in any mode if 25047 disabled) and main purpose is to lower memory overhead when more 25048 applications are loaded on memory constrained system which usually 25049 use direct kernel calling without protection or address space 25050 separation. If the table should be provided by kernel to 25051 applications then makefiles has to be adjusted. From Pavel Pisa. 25052 25053 * Tools: 25054 25055 - tools/: Change preferred argument of configurations tools to use 25056 ':' as the delimiter between <board-name> and <config-name>. This 25057 is to emphasize that this is not a path; it is configuration 25058 specification. The legacy '/' delimiter is still supported but 25059 not recommend and not advertised. Updated configurations 25060 instructions in README.txt files to show ':' delimiter vs '/' 25061 delimiter. Update all configuration-related tools to accept ':' 25062 separator between board and configuration name. From Gregory Nutt. 25063 25064 * apps/ General: 25065 25066 - Makefile: Added support for application-specific export target. 25067 Used by nuttx/tools/mkexport.sh. From Pavel Pisa. 25068 - apps/builtins: Move apps/builtins/builtin_forindex.c to 25069 nuttx/libs/libc/builtin since it is required by kernel logic as 25070 well. Other changes account for movement of builtin.h from 25071 nuttx/include/nuttx/binfmt/built.h to nuttx/include/lib/builtin.h. 25072 From Gregory Nutt. 25073 25074 * Examples/Tests: apps/examples: 25075 25076 - apps/examples/uid: Demo used to verify PASSWD and GROUP interfaces. 25077 From Gregory Nutt. 25078 - apps/examples/webserver/: Initialilze network and run forever only 25079 if not built-in app. Infer from CONFIG_NSH_BUILTIN_APPS if we are a 25080 NSH built-in app or not. If built-in app (CONFIG_NSH_BUILTIN_APPS 25081 defined) then we assume network is initialized prior to webserver 25082 starting and we exit on webserver failure. If running standalone 25083 (CONFIG_NSH_BUILTIN_APPS is undefined) then behavior is unchanged: 25084 webserver initializes network and runs forever. From Nathan Hartman. 25085 25086 * Network Utilities: apps/fsutils: 25087 25088 - apps/fsutils/passwd: Handle the improved the format of the 25089 /etc/passwd file. It is now a little more similar to other systems. 25090 From Gregory Nutt. 25091 25092 * Network Utilities: apps/netutils: 25093 25094 - apps/netutils/dhcpc: Add host name support to DHCP client. From 25095 Masayuki Ishikawa. 25096 25097 * Network Utilities: apps/wireless 25098 25099 - apps/wireless/ieee802154/i8sak: I8sak improvements: (1) Adds 25100 support for getting/setting maxretries and promsicuous mode from 25101 i8sak, (2) Fixes a build warning and handles a few cases where a 25102 fault can occur due to not catching missing arguments. From 25103 Anthony Merlino. 25104 - apps/wireless/ieee802154/i8sak: Allow setting the endpoint PAN ID. 25105 From Anthony Merlino. 25106 - apps/wireless/ieee802154/i8sak: Adds support for energy scan result 25107 printout. From Anthony Merlino. 25108 - apps/wireless/ieee802154/i8shark: Adds support for intentionally 25109 suppressing passing the FCS so that Wireshark doesn't try to 25110 validate it. From Anthony Merlino. 25111 - apps/wireless/ieee802154/libmac: Adds support for getting/setting 25112 the FCS length From Anthony Merlino. 25113 - apps/wireless/gs2200m: Add UDP support to the GS2200M driver. From 25114 Masayuki Ishikawa. 25115 - apps/wireless/gs2200m: Add DHCP client handling in ioctl_request(). 25116 From Masayuki Ishikawa. 25117 - apps/wireless/gs2200m: ioctl_request() supports SIOCGIFHWADDR. 25118 From Masayuki Ishikawa. 25119 25120Bugfixes: 25121--------- 25122Only the most critical bugfixes are listed here (see the ChangeLog for a 25123more complete list of bugfixes and for additional, more detailed bugfix 25124information): 25125 25126 * Core OS: 25127 25128 - Priority Inheritance: Fix a race in telnet with PRIORITY_INHERITANCE 25129 and SCHED_HPWORK. Sometimes causes an assertion to fire incorrectly. 25130 From David S. Alessio. 25131 - Task Groups: Correct some naming. The NuttX task groups have been 25132 using the acronym 'gid' and also the type 'gid_t' for the the task 25133 group ID. That is incorrect. Than naming is reserved for use with 25134 group permissions. So these were all named to grpid and grpid_t so 25135 that it is clearer that these refer to NuttX task group IDs, and not 25136 to group permissions. From Gregory Nutt. 25137 - Task Termination: nxtask_signalparent() in task_exithook.c may 25138 invalidate the group's parent task ID (tg_ppid) too soon. The 25139 tg_ppid field is use only to remember the parent tasks ID so that it 25140 can send the SIGCHLD signal to it. So it must stay valid until 25141 SIGCHLD has been sent. In nxtask_signalparent(), it calls 25142 nxtask_sigchild() to send SIGCHLD to the parent, then invalidates 25143 tg_ppid. That would be okay, except that the SIGCHLD is only sent 25144 when the last member of the group terminates. That is incorrect; 25145 tg_ppid can be invalidated too soon and, as a consequence, SIGCHLD 25146 would never be sent. Noted by Jeongchan Kim in the Google group: 25147 https://groups.google.com/forum/#!topic/nuttx/SXd8fVwVKBk From 25148 Gregory Nutt. 25149 - sched_get_rr_interval(): sched_get_rr_interval() should return 25150 {0,0} if round-robin scheduling is not selected for the task. From 25151 Gregory Nutt. 25152 - SMP Type Collision: The non-standard, non-portable type cpu_set_t 25153 was created specifically to support the NuttX internal, SMP 25154 implementation. Any resemblance to any other cpu_set_t would be 25155 purely coincidental. However it appears that that coincidence has 25156 occurred. cpu_set_t has an equivalent, non-standard, non-portable 25157 type in the GNU C library. Compilation of libgnat expects this 25158 non-standard type to be defined. Who am I to stand in the way of 25159 progress? This commit removes the conditioning on CONFIG_SMP so 25160 that cpu_set_t is typed (as a uint8_t) even if CONFIG_SMP is not 25161 defined. Reference: Bitbucket issue 164. From Gregory Nutt. 25162 - Binary Loader: Change some debug macros from berr() to binfo() 25163 when dumping module data. The report of problems is important 25164 during development but when it enables complete informative output 25165 about load binaries then the important information can be easily 25166 overlooked. The huge output sent to serial terminal slows loading 25167 significantly as well. From Pavel Pisa. 25168 - Power Management: Fix g_pmcount 16-bits overflow when 25169 CONFIG_PM_XXENTER_COUNT set big value. From ligd. 25170 - Timekeeping: Fix cases in time conversion that must be >= 25171 NSEC_PER_SEC, not > NSEC_PER_SEC. From Gregory Nutt. 25172 25173 * File System/Block and MTD Drivers: 25174 25175 - opendir(): opendir() set errno to a negative value in one error 25176 case. From Michael Jung. 25177 - SmartFS: Update smartfs smart_scan() function. From Simon Piriou. 25178 - ProcFS: Add missing LF to cpuload procfs output From David Alessio. 25179 - MMC/SD: Copy/paste error fix in the SDIO-based block driver for 25180 MMC. From Ivan Ucherdzhiev. 25181 - MMC/SD: Correct a misplaced #endif in the SDIO-based driver. From 25182 Gregory Nutt. 25183 25184 * Networking/Network Drivers: 25185 25186 - Ethernet Configuration: Ethernet packet buffer size cannot be 25187 permitted to go below 1294 if IPv6 is selected. From Gregory Nutt. 25188 - TCP RST: Fix outgoing RST packet with wrong ack number. From 25189 biantao. 25190 - TCP Close: Fix TCP close flow; free the connection after all TCP 25191 close process finished. From zhangyuan7. 25192 - UDP Broadcast: Remove net stack dependency from CONFIG_NET_BROADCAST. 25193 This change allows us to use CONFIG_NET_BROADCAST without network 25194 stack (i.e. usrsock application can use broadcast) From Masayuki 25195 Ishikawa. 25196 - UDP: Fixes a UDP send copy-paste error in the new SO_LINGER code: 25197 CONFIG_TCP_NOTIFIER to CONFIG_UDP_NOTIFIER. From Juha Niskanen. 25198 - TCP and UDP: Fix errors in the new implementation of SO_LINGER. 25199 The tcp_drain() and udp_drain() functions were casting the working 25200 argument to the wrong type, resulting in hangs and abnormal 25201 behavior. There is a complexity in the TCP drain logic when the 25202 remote peer closes the socket before all Tx data has been flushed. 25203 Sometimes we are not notified of this case and wait the entire 25204 timeout unnecessarily. There is a workaround in place in 25205 tcp_txdrain(), but this really should be revisited. From Gregory 25206 Nutt. 25207 - 6LoWPAN: Removes unnecessary conversions that were happening due to 25208 a misunderstanding of byte ordering with EUI-64. From Anthony 25209 Merlino. 25210 - RNDIS: Fix issue with DEBUGASSERT when using composite device and 25211 endpoint numbers not being the default. From Anthony Merlino. 25212 25213 * Wireless/Wireless Drivers: 25214 25215 - wireless network devices: Attach radio to d_buf before registering 25216 device to handle forwarding case. When CONFIG_NET_IPFORWARD is 25217 enabled, and CONFIG_NET_6LOWPAN is being used, a packet that 25218 attempts to get forwarded on the 6LoWPAN interface will require 25219 that the radio's buffer be attached to d_buf. Otherwise an assertion 25220 will fire. The underlying "radio" in this case is the 25221 mac802154_netdev. This behavior has probably not been observed 25222 because the buffer is normally attached in the periodic txpoll 25223 worker. However, in my case, the 6LoWPAN interface was not UP yet, 25224 and therefore the worker hadn't run yet. From Anthony Merlino. 25225 - IEEE 802.15.4 MAC: Fixes issues with extended address. 1) Extended 25226 address should be read-only. 2) Extended address should be placed 25227 in frame in "reverse-canonical" order. The extended address is a 25228 read-only attribute and thus an attempt to write the extended 25229 address should be denied. Instead, the extended address should 25230 really be either set by the PHY/radio itself, or provided at board 25231 bring-up time to the radio layer. The MAC layer now pulls in the 25232 extended address from the radio any time the MAC is reset. The 25233 extended address is also supposed to be sent in the frame in 25234 reverse-canonical order. This is very confusing in the standard and 25235 it wasn't until I realized it was backwards in Wireshark that I 25236 researched this further. Searching online I find documents from the 25237 committee for suggestions/feedback on the future standard. It isn't 25238 in the 2015 standard but a newer version of the standard will 25239 presumably clarify this. It says that the extended address should be 25240 written in reverse-canonical form, meaning the OUI comes last, not 25241 first inside the frame. From Anthony Merlino. 25242 - IEEE 802.15.4 MAC: Frame Version should have been 1, but was being 25243 set to 3 when payload exceeds version 0 capabilities. Adds warning 25244 to build to indicate what is noted in the menu for 25245 CONFIG_MAC802154_NTXDESC From Anthony Merlino. 25246 - IEEE 802.15.4 MAC: Fixes issue where the txdesc's ackreq flag was 25247 not being set, despite the frame containing a Frame Control field 25248 with ACKREQ bit set. From Anthony Merlino. 25249 - Xbee: Fix logic to prevent deadlock scenario when there are no 25250 available IOBs From Anthony Merlino (2018-12-21). 25251 - Xbee: Change assumption about destination address mode for incoming 25252 frames. If a short address has been assigned to our radio, then 25253 assume we were addressed using that. Otherwise we were addressed 25254 using our extended address. From Anthony Merlino. 25255 - Xbee: Initialize the short address to the unspecified address and 25256 query for the extended address on initialization. From Anthony 25257 Merlino. 25258 - Xbee: Adds CONFIG_XBEE_LOCKUP_WORKAROUND option and corresponding 25259 logic to workaround an issue where the XBee locks up and stops 25260 responding. This typically happens when there is a lot of data 25261 being received over the link. When the XBee stops responding, many 25262 times, querying the XBee kicks it out of this state. However, 25263 occasionally the XBee is completely locked up and the XBee has to 25264 be reset. This change handles these conditions by periodically 25265 (if not naturally occurring) querying the XBee. If during any 25266 query, the XBee does not respond within a certain number of 25267 attempts, the XBee is reset. From Anthony Merlino. 25268 - Xbee: Cancel query timeout upon receiving the expected response. 25269 Add protection for race condition that can cause association 25270 timeout to continue firing repeatedly From Anthony Merlino. 25271 - Xbee: Detect lockup and reset XBee in xbee_req_data From Anthony 25272 Merlino. 25273 - Xbee: Fixes one instance of the use of IOBUSER_WIRELESS_MAC802154 25274 which isn't available without the software MAC layer. Instead we 25275 use IOBUSER_WIRELESS_RAD802154 throughout the whole driver since it 25276 is always available when IEEE 802.15.4 support is enable. From 25277 Anthony Merlino. 25278 25279 * Common Drivers: 25280 25281 - pipes: Use inode reference counter instead of device reference 25282 counter to handle dup(). I found that if I dup() a pipe, the 25283 reference counter d_refs is not increased. If I close any of the 25284 fd, backed by the same pipe, the pipe will be freed. This causes 25285 any further usage on the fd referencing a non existent pipe. This 25286 change uses the inode reference counter, which is properly 25287 maintained during dup(). From Yang ChungFan. 25288 - SPI Bitbang: Fix build error when the SPI bitbang variable width 25289 support is enabled. From Augusto Fraga Giachero. 25290 - GPIO Lower Half: Remove limitation when pintype > 25291 GPIO_INTERRUPT_PIN. From ligd. 25292 25293 * ARMv4/ARMv5 25294 25295 - Classic ARM7/ARM9: When performing stability test, the application 25296 would cause kernel crash. When I trace the stack, I find that 25297 register R1 has been changed, and its value is the same as register 25298 CPSR. In up_fullcontextrestore.S, the restoration of R0 and R1 is 25299 not atomic: 'msr cpsr r1 will enable interrupts and the recovery of 25300 r0 and r1 may be interrupted and the value or R1 may be changed. 25301 Fix is to use a single ldmia to restore R0, R1, and return via R15. 25302 From Loyen Wang. 25303 25304 * ARMv7-A 25305 25306 - ARMv7-A: Fix typo and missing quotation for ARMv7-A. From Oki 25307 Minabe. 25308 - ARMv7-A: Fix double increment in armv7-a's 25309 arm_addrenv_destroy_region(). From Oki Minabe. 25310 - ARMv7-A: Fix L2 page table mask for ARMv7-A page allocator. From 25311 Oki Minabe. 25312 25313 * ARMv7-M 25314 25315 - Interrupts. Removes the architecture-common 25316 CONFIG_ARCH_INT_DISABLEALL configuration option (but which was 25317 supported only by ARMv7-M). In the normal course of things, 25318 interrupts must occasionally be disabled using the up_irq_save() 25319 inline function to prevent contention in use of resources that may 25320 be shared between interrupt level and non-interrupt level logic. 25321 Now the question arises, if we are using BASEPRI to disable 25322 interrupts and have high priority interrupts enabled 25323 (CONFIG_ARCH_HIPRI_INTERRUPT=y), do we disable all interrupts except 25324 SVCall (we cannot disable SVCall interrupts). Or do we only disable 25325 the "normal" interrupts? If we are using the BASEPRI register to 25326 disable interrupts, then the answer is that we must disable ONLY the 25327 "normal interrupts". That is because we cannot disable SVCALL 25328 interrupts and we cannot permit SVCAll interrupts running at a 25329 higher priority than the high priority interrupts (otherwise, they 25330 will introduce jitter in the high priority interrupt response time.) 25331 Hence, if you need to disable the high priority interrupt, you will 25332 have to disable the interrupt either at the peripheral that 25333 generates the interrupt or at the NVIC. Disabling global interrupts 25334 via the BASEPRI register cannot effect high priority interrupts. 25335 From Gregory Nutt. 25336 - ARMv7-M Priorities: In the 'normal' case, the priority of the 25337 SVCALL interrupt was the same as the priority of the high priority 25338 interrupt. This means that SVCALL interrupt processing can defer 25339 the high priority interrupt and result in the jitter in that 25340 interrupt response. Fix is to raise the priority of the high 25341 priority interrupt above the priority of the SVCALL interrupt. 25342 Suggested by Nathan Hartman. From Gregory Nutt. 25343 25344 * Microchip i.MXRT Drivers: 25345 25346 - i.MXRT ENC: Fix some errors in register bit definitions. Noted by 25347 Arie de Muijnck. From Gregory Nutt. 25348 - i.MXRT LPI2C: Slave addresses are now correctly shifted when 25349 sending START. TX/RX FIFOs now discarded on error to prevent FIFO 25350 underflow errors. Fixes error checking to use priv structure and 25351 removes checking of BBF flag as it is not an error. From Nicholas 25352 Chin. 25353 25354 * Microchip PIC32MZ Drivers: 25355 25356 - PIC32MZ SPI: Fix SPI Mode selection. CKE is the inversion of the 25357 CPHA. From Ouss4. 25358 25359 * Microchip/Atmel SAMD2x/SAML2x Drivers: 25360 25361 - SAMD2/L2 I2C: Correct time calculation. From Bernd Walter. 25362 25363 * Microchip/Atmel SAM3/SAM4: 25364 25365 - SAM3/4: Add missing DMA configuration Kconfig setting. From Bernd 25366 Walter. 25367 25368 * NXP LPC17xx/40xx Drivers: 25369 25370 - LPC17xx/40xx ADC: Only use PCLKSEL0 for ADC on LPC176x family. 25371 From jjlange. 25372 - LPC17xx/40xx Ethernet: Set speed back to 10Mbps if 10Mmbps link 25373 negotiated. From Augusto Fraga Giachero. 25374 - LPC17xx/40xx I2C: Abort I2C transfers if a timeout has occurred. 25375 If a timeout has occurred in the middle of a I2C transfer, the next 25376 I2C interrupt should abort any transfers and send a stop condition 25377 to the corresponding I2C bus. Failure to do so will result in 25378 memory corruption / undefined behavior as priv->msgs points to a 25379 region of memory it doesn't owns anymore after lpc17_40_i2c_start 25380 returns. From Augusto Fraga Giachero. 25381 - LPC17xx/40xx I2C: Calculate the appropriate timeout for I2C 25382 transfers. Depending on the bus frequency and transfer size, I2C 25383 transactions can take quite a bit, so a fixed timeout is not a 25384 good solution. Calculating the timeout at run time poses some 25385 overhead but still better than aborting long transactions. From 25386 Augusto Fraga Giachero. 25387 25388 * NXP/Freescale Kinetis Drivers: 25389 25390 - Kinetis I2C: i2c transfer ensure correct result returned. 25391 kinetis_i2c_transfer released the mutex then fetched the state, 25392 this resulted in returning the correct results. From David 25393 Sidrane. 25394 25395 * NXP LPC17xx/40xx Drivers: 25396 25397 - LPC17xx/40xx CAN: If BOARD_CCLKSEL_DIVIDER is not equal to 1 on 25398 LPC178x or LPC40xx then base clock rate is calculated incorrectly 25399 because CCLK frequency does not correspond to PLL0 clock which is 25400 used for PCLK. This is partially workaround solution. It would 25401 be probably better to define BOARD_PCLK_FREQUENCY even for LPC176x 25402 targets and use that to replace divisor by base_clock in up_dev_s. 25403 From Pavel Pisa. 25404 25405 * NXP LPC17xx/40xx Boards: 25406 25407 - LPC17xx/40xx Ethernet: Add missing LPC17_40_PHY_CEMENT_DISABLE 25408 variable to the lpc17xx/40xx Kconfig file. For some reason this 25409 setting was not referenced anywhere except in the Ethernet driver. 25410 From Augusto Fraga Giachero. 25411 - LPC17xx/40xx Ethernet: Fix the initialization for DP83848x PHYs. 25412 The DP83848x requires the RMII mode to be manually enabled through 25413 the MII_DP83848C_RBR register. Before querying the speed and mode 25414 it should wait for the link to be established. From Augusto Fraga 25415 Giachero. 25416 25417 * NXP i.MXRT Drivers: 25418 25419 - i.MXRT LPUART: Fix some errors in the LPUART register definition 25420 files. Correct naming of a function: up_earlyserialinit() should 25421 be imxrt_earlyserialinit(). Remove prototypes for non-existent 25422 serial initialization functions. From Gregory Nutt. 25423 - i.MXRT USDHC: uSDHC typo fixes and command transfer error handling 25424 modified. From Ivan Ucherdzhiev. 25425 25426 * SiLabs EFM32 Drivers: 25427 25428 - EFM32 OTG host: Adam Porter's various fixex for STM32 FS/HS 25429 probably should be applied to EFM32 host which which has very 25430 similar IP. From Gregory Nutt. 25431 25432 * STMicro STM32: 25433 25434 - STM327F Configuration: Kconfig add depends on BBSRAM. From David 25435 Sidrane. 25436 - STM32F7 Interrupts: Fix overwritten IRQ enable. System boot order 25437 calls clock_initialize() then up_initialize(). clock_initialize() 25438 was setting up the alarm IRQ up_initialize is initializing the NVIC. 25439 This most likely worked in the past due to a bug in the NVIC 25440 initialization code that failed to clear the Interrupt enables. 25441 - STM32H7: Rix BBSRAM name in memory map. From David Sidrane. 25442 - STM32H7: Removed f7 in file path. From David Sidrane. 25443 25444 * STMicro STM32 Drivers: 25445 25446 - STM32H7 BBSRAM: Fix issues causing no writes and hardfaults. From 25447 David Sidrane. 25448 - STM32H7 BBSRAM: Convince compiler to perform 32 bit write. From 25449 David Sidrane. 25450 - STM32F7 OTGHS: Fixes bad preprocessor logic preventing USB OTG HS 25451 to work when used without external ULPI. From Anthony Merlino. 25452 - STM32 OTGH[FS|HS] Host STM32 host only initiates transfer if 25453 buflenl > 0. From Adam Porter. 25454 - STM32F7/H7/L4 OTG host: Adam Porter's fix for STM32 FS/HS probably 25455 should be applied to STM32 F7, H7, and L4 OTG host which are very 25456 similar. From Gregory Nutt. 25457 - STM32/F7/H7/L4: This change was required to get my devices 25458 (CDC-MBIM) to enumerate. Initially the system timed out retrieving 25459 the USB configuration descriptor. Ctrl IN requests got nothing but 25460 NAKs. I found that the initial SETUP packet and corresponding IN 25461 transfer were fine; it was the Status OUT phase that was getting the 25462 NAK. After receiving a NAK on the Status OUT, the code would loop 25463 back and issue another ctrl IN, which will always fail because the 25464 data was already transferred before. Thus the entire transfer would 25465 'timeout'. The fix I implemented moves the DATANAK timeout loop to 25466 only apply to the Status OUT. Both the ctrl IN and the Status OUT 25467 need their own retry loops. From Adam Porter. 25468 - STM32F7 SDMMC: If there is only one SDMMC it is slot 0 From David 25469 Sidrane. 25470 - STM32F7 USART1: USART1_RXDMA is dependent on STM32F7_DMA2 not 25471 STM32F7_DMA1 From Anthony Merlino. 25472 - STM32H7 DBGMCU: Memory Map DBGMCU is @ 0x5c001000 From David 25473 Sidrane. 25474 - STM32F7 SDMMC: Fix warning when DMA is not enabled. From David 25475 Sidrane. 25476 - STM32H7 Ethernet: Fix some errors in Ethernet MAC configuration. 25477 From Markus Bernet. 25478 - STM32H7 Ethernet: Correct stm32h7 mac address filtering. Correct 25479 the MAC address 0 register definition and remove the 'receive all' 25480 flag. Now the Ethernet driver only receives packets addressed to 25481 correct MAC. From Jukka Laitinen. 25482 - STM32H7 Ethernet: Correct memory corruption error. The Ethernet 25483 driver initialization incorrectly wrote to DMACRXCR instead of 25484 DMACSR when trying to clear the stopped flags. This caused 25485 invalid buffer length in the DMACRXCR, causing DMA to overflow the 25486 RX buffers when large packets are sent to the device. From Jukka 25487 Laitinen. 25488 - STM32H7 PWR: Ensure data is flushed on backup domain access 25489 changes. From David Sidrane. 25490 - STM32H7 Serial: Serial fix undefined with TERMIOS From David 25491 Sidrane. 25492 - STM32H7 UARTs: Fix UART7/8 typos. Fix bug in ETH_MACQTXFCR 25493 configuration. From Markus Bernet. 25494 25495 * STMicro STM32 Boards: 25496 25497 - Multiple STM32 Boards: If CONFIG_SCHED_CRITMONITOR is selected, 25498 then make sure that ITM and DWT resources are enabled before 25499 accessing ITM and DWT registers. By default, these registers are 25500 disabled. Suggested by Juha Niskanen. From Gregory Nutt. 25501 - Nucleo-H743ZI: Correct logic that determines if the RTC driver is 25502 available. Find in build testing. From Gregory Nutt. 25503 - Nucleo-G071RB: Fix linker script to avoid .ARM.exidx section 25504 overlap with .data From Daniel Pereira Volpato. 25505 - Modify all linker scripts (all boards, all architectures) to use 25506 solution from Daniel P. Volpato. From Alan Carvalho de Assis. 25507 - Nucleo-L432KC ADC: Change analog pins definitions and correct DMA 25508 related issue. From Daniel P. Carvalho. 25509 25510 * TI Tiva: 25511 25512 - Tiva Configuration: Rename TM4C123GH6PMI identifiers to 25513 TM4C123GH6PM. Rationale: In terms of firmware programming, there 25514 is no functional difference between these parts: TM4C123GH6PMI7, 25515 TM4C123GH6PMI7R, TM4C123GH6PMT7, and TM4C123GH6PMT7R. From a 25516 programming standpoint, all of the above parts are TM4C123GH6PM, 25517 which means it doesn't make sense to differentiate between PM and 25518 PMI. (The PM means 64-LQFP. The I means temperature range -40C to 25519 +85C. It could be T meaning -40C to +105C. The R means it ships in 25520 Tape and Reel packaging as opposed to Tray.) From Nathan Hartman. 25521 - Tiva Configuration: Rename TM4C1294NC identifiers to TM4C1294NCPDT. 25522 Rationale: TM4C1294NC is ambiguous: TM4C1294NCPDT is a 128-TQFP, 25523 TM4C1294NCZAD is a 212-NFBGA. The TM4C1294NC part currently 25524 supported by NuttX is the TM4C1294NCPDT used on the TI EK-TM4C1294XL 25525 "Connected LaunchPad" (see configs/tm4c1294-launchpad). To ensure 25526 the correct part is fully specified, this commit updates all 25527 TM4C1294NC identifiers to TM4C1294NCPDT. From Nathan Hartman. 25528 - Tiva Configuration: Fix TM4C129XNCZAD part number in Kconfig and 25529 identifiers. Rationale: Fully specify that this is the 212-pin BGA 25530 package (ZAD ending) and for consistency with earlier changes to 25531 other Tiva TM4C12x part numbers in Kconfig names and identifiers. 25532 From Nathan Hartman. 25533 25534 * TI Tiva Drivers: 25535 25536 - Tiva TM4C 1-Wire: Fix wrong description on define TIVA_1WIRE_BASE: 25537 Was "EEPROM and Key Locker" (same as the item above). Now "1-Wire 25538 Master Module." Make DMACTL symbols visible for TM4C123: Remove 25539 "#ifdef CONFIG_ARCH_CHIP_TM4C129" guard around UART DMA Control 25540 (DMACTL) symbols. These bits are valid on TM4C123 devices, as well 25541 as on TM4C129. Also, improve the comment on UART_DMACTL_DMAERR. 25542 From Nathan Hartman. 25543 - Tiva GPIO Interrupts: LM3S, LM4F, TM4C: Fix GPIO IRQ error, ports 25544 R, S, T. Preprocessor logic for CONFIG_TIVA_GPIOx_IRQS was setting/ 25545 clearing port Q defines when it should act on ports R, S, T. 25546 gpioport2irq() was missing handling for port T. From Nathan 25547 Hartman. 25548 - Tiva Timers: Fix minor errors in tiva_timerlib.c. Fix incorrect 25549 preprocessor conditionals related to Kconfig defines: 25550 CONFIG_TIVA_TIMER32_EDGECOUNT -> CONFIG_TIVA_TIMER16_EDGECOUNT, 25551 CONFIG_TIVA_TIMER32_TIMECAP -> CONFIG_TIVA_TIMER16_TIMECAP, 25552 CONFIG_TIVA_TIMER32_PWM -> CONFIG_TIVA_TIMER16_PWM. From Nathan 25553 Hartman. 25554 - Tiva Timers: Fix errors in low-level timer support. 25555 tiva_gptm_configure() and tiva_gptm_release() were calling 25556 tiva_emac_periphrdy() instead of tiva_gptm_periphrdy(). Fix 25557 error in "abcde" description of bit flag defines. From Nathan 25558 Hartman. 25559 - Tiva Timers: Fix one code error and some comment errors. 25560 tiva_timer16_setinterval(): Was DEBUGASSERTing on mode != 25561 TIMER16_MODE. Fixed to DEBUGASSERT on mode == TIMER16_MODE. 25562 From Nathan Hartman. 25563 25564 * ZiLOG Z80 Boards: 25565 25566 - z80sim Serial: Fix uart_dev_t initializer: pollfds[] is a array of 25567 pointers and, hence, the NULL initializer must be included in braces. 25568 Noted by Paul Osmialowski in Issue #160. From Gregory Nutt. 25569 - z80sim Interrupts: Missed a name change up_irqinitialize to 25570 z80_irq_initialize. From Gregory Nutt. 25571 25572 * C Library/Header Files: 25573 25574 - include/netinet/in.h: Rename __pad member to sin_zero in struct 25575 sockaddr_in. Libwebsockets initializes the 'sin_zero' member of 25576 sockaddr_in objects to zeros. Apparently, judging from mailing list 25577 entries, there are platforms on which not doing this causes 25578 undefined behavior. On NuttX compiling respective code is broken, 25579 as the corresponding member variable is called '__pad'. Neither in 25580 the 'nuttx' nor in the 'apps' repository did I find any reference to 25581 this identifier. Thus, I believe its a safe bet to just rename it. 25582 UNIX Network Programming states in this regard: "The POSIX 25583 specification requires only three members in the structure: 25584 sin_family, sin_addr, and sin_port. It is acceptable for a POSIX- 25585 compliant implementation to define additional structure members, and 25586 this is normal for an Internet socket address structure. Almost all 25587 implementations add the sin_zero member so that all socket address 25588 structures are at least 16 bytes in size." From Michael Jung. 25589 25590 - libs/libc/libc.csv: Correct dependency of setlocale on 25591 CONFIG_LIBC_LOCALE. From Pavel Pisa. 25592 - libs/libc/machine/arm/armv7-m: Fix build error for ELF. From 25593 Masayuki Ishikawa. 25594 - libs/libc/math.csv: Correct format of some function entries. From 25595 Pavel Pisa. 25596 25597 * Tools: 25598 25599 - tools/: Change all occurrences of /bin/(ba)sh in shell scripts to 25600 /usr/bin/env bash which appears more portable From Manuel Stühn. 25601 25602 * NSH Library: apps/nshlib: 25603 25604 - apps/nshlib/: As noted by David S. Alessio, 'cat' should not output 25605 any additional newline at the end of the cat'ed file content. This 25606 additional newline was added to assure that the NSH prompt was 25607 presented on a new line. However, that is not the correct behavior 25608 of 'cat' per the IEEE std: "The standard output shall contain the 25609 sequence of bytes read from the input files. Nothing else shall be 25610 written to the standard output." Reference: 25611 https://pubs.opengroup.org/onlinepubs/009695399/utilities/cat.html. 25612 This commit changes the function nsh_catfile() which underlies the 25613 'cat' command and well as other NSH commands. Although this is the 25614 correct behavior for 'cat' it may not be the correct behavior for 25615 other commands implemented via nsh_catfile(). That remains to be 25616 determined. From Gregory Nutt. 25617 25618 * System Utilities: apps/system: 25619 25620 - apps/system/cle/: ASCII DEL should be treated by Delete-Left. From 25621 Dave Marples. 25622 - apps/system/i2ctool: (1) Friendlier I2C "knock-knock" uses only 25623 read request. While many I2C slave devices have multiple indexed 25624 registers, some have only one register and it's not indexed. For 25625 example, the I2C bus switch TCA9548A has only a Control Register, 25626 attempting to index to "Reg[0]" alters its contents to 0x00 25627 disabling all subordinate buses. This patch fixes that problem by 25628 simply trying to read something/anything from the slave. This also 25629 helps coax out slaves with register files that start from a higher 25630 index, i.e. the AT24CS0x, FLASH chips with a UUID that appears as a 25631 2nd I2C slave at (address+8), report their serial number at 25632 Reg[80]-Reg[8F] and will NAK a read of Reg[0]. (2) Modify get/set 25633 to prevent write of reg index if not specified From David Alessio. 25634 25635 * Network Utilities: apps/netutils: 25636 25637 - apps/netutils/dhcpd: Fixes bug where hwaddr was being used instead 25638 of ipaddr in the ARP update. This bug seems to have been introduced 25639 three years ago during a rewrite to remove a direct OS call to arp. 25640 I'm not sure how others have not run into issues with this. The 25641 behavior I was observing was that the DHCPD would go to offer an IP 25642 address, but then send a ARP request for the IP instead because it 25643 didn't know where to send the data. From Anthony Merlino. 25644 - apps/netutils/netinit/: Remove warnings. Unhook PHY notification 25645 signal handler when cleaning up, if an error occurs after the signal 25646 handler is put into place. From Nathan Hartman. 25647 25648 * Wireless Utilities: apps/wireless: 25649 25650 - apps/wireless/ieee802154/i8sak: Fixes conversion from extended 25651 address to IPv6 address. From Anthony Merlino. 25652 25653NuttX-8.2 Release Notes 25654------------------------ 25655 25656The 133rd release of NuttX, Version 8.2, was made on November 16, 2019, 25657and is available for download from the Bitbucket.org website. Note 25658that release consists of two tarballs: nuttx-8.2.tar.gz and 25659apps-8.2.tar.gz. These are available from: 25660 25661 https://bitbucket.org/nuttx/nuttx/downloads 25662 https://bitbucket.org/nuttx/apps/downloads 25663 25664Both may be needed (see the top-level nuttx/README.txt file for build 25665information). 25666 25667Additional new features and extended functionality: 25668--------------------------------------------------- 25669 25670 * Core OS: 25671 25672 - Signals: Add support for SIGPIPE default action. SIGPIPE uses 25673 SIG_SIGPIPE_ACTION which terminates process by default. It also 25674 could be ignored. From liuhaitao. 25675 - Spinlocks: Remove support for re-entrant spinlocks. They seemed 25676 like a good idea, but they are never used. From Xiang Xiao. 25677 - Memory Manager: Remove the assumption that one character equals 25678 eight bits. From Xiang Xiao. 25679 - Power Management: Historically, the NuttX PM subsystem has 25680 consisted of two functional components: (1) an "Upper" part that 25681 detects state changes based on a random walk driven by activity 25682 levels, and (2) and "lower" part that implementst the state changes. 25683 This change decouples that upper activity-based logic from the lower 25684 random walk logic and allows use of other upper state detection 25685 logic (such as a custom, application-specific state machine). From 25686 Matias Nitsche. 25687 - boardctl(): Expose power manager function through boardctl() 25688 interface. From Xiang Xiao. 25689 25690 * File System/Block and MTD Drivers: 25691 25692 - GD25: Add support for a new FLASH vendor. From zhangbo_a. 25693 - GD25: Add support for GD25 device with 256-Mbit capacity. From 25694 YanLin Zhu. 25695 - GD25: Add 4-byte address operation for capacity larger than 25696 128-Mbit. From YanLin Zhu. 25697 - GD25: Add gd25_lock/unlock to case: enable 4-bytes address From 25698 ligd. 25699 - GD5F: Add gigadevice SPI NAND FLASH driver. From YanLin Zhu. 25700 25701 * Networking/Network Drivers: 25702 25703 - Networking: Use ntoh() when printing IPv6 addresses so that the 25704 addresses appear in friendlier host order vs. network order. From 25705 Bernd Walter. 25706 - Netlink: Implement minimal NETLINK_ROUTE socket functionality that 25707 can (for now) be use used to obtain a list of network devices, IPv4 25708 ARP and IPv6 Neighbor tables, and IPv4 and IPv6 routing tables. 25709 From Gregory Nutt. 25710 25711 * Wireless/Wireless Drivers: 25712 25713 - BCM43438A1 Bluetooth: Add support for the BCM43438A1 Bluetooth 25714 capability. From Dave Marples. 25715 - HCIUART Shim: Add a serial 'shim' to allow any regular serial port 25716 to support a Bluetooth H4 interface and to be used to drive a 25717 Bluetooth device. From Dave Marples. 25718 - BCM4343x HCIUART: BCM4343x HCIUART support. From Dave Marples. 25719 - BCM43xxx: Move drivers/wireless/ieee80211/ to 25720 drivers/wireless/ieee80211/bcm43xxx/ since the directory only 25721 contains only BCM43362 and BCM43438 related code. From Xiang Xiao. 25722 - GS2200M: Add reset handler to interface. Add reset and un-reset 25723 sequence in driver. From Masayuki Ishikawa. 25724 25725 * Audio/Audio Drivers: 25726 25727 - Audio: Add message type to support audio trigger. From anchao. 25728 25729 * Other Common Device Drivers: 25730 25731 - Altair: Add support for the altair LTE modem driver. From Alin 25732 Jerpelea. 25733 - MCP2515: MCP2525 SPI STD-EXT ID fixes. From DisruptiveNL. 25734 - OpenAMP: Brings in the drivers needed to support OpenAMP. These 25735 changes were ported from https://github.com/FishsemiCode/nuttx. 25736 This port was effort of a number of people, I rather arbitrarily 25737 gave authorship to Guiding Li because he has the largest number of 25738 fundamental quashed commits from the Xiamoi repository. From 25739 Guiding Li. 25740 25741 * Simulator: 25742 25743 - Simulator: Add stack coloration feature. From ligd. 25744 - Simulator: Report PM activity on simulated UART. From Matias 25745 Nitsche. 25746 - Simulator: Add host ftruncate() support. From chao.an. 25747 - Simulator: Replace all CONFIG_DEV_CONSOLE with USE_DEVCONSOLE for 25748 arch/sim and compile up_devconsole.c conditionally. From Xiang 25749 Xiao. 25750 - Simulator OpenAMP: Support OpenAMP between two simulator 25751 instances. Please read rpserver/rpproxy section in 25752 boards/sim/sim/sim/README.txt for more information. From chao.an. 25753 25754 * ARMv7-M 25755 25756 - ARMv7-M: Add BPIALL register address. From Dave Marples. 25757 - ARMv7-M MPU: Add user peripheral helper 25758 25759 * Atmel SAMD2/L2 Boards: 25760 25761 - Arduino-M0: Add initial board support for the Arduino M0 which is 25762 based on the SAMD21 chip. Include nsh and usbnsh configurations. 25763 From Alan Carvalho de Assis. 25764 25765 * NXP i.MXRT Drivers: 25766 25767 - i.MXRT LCD: Add support for LCD. Clean up some LCD-related 25768 interfaces. From Fabio Balzano. 25769 - i.MXRT Serial: This change improves the performance of UART serial 25770 ports on the IMXRT by enabling the RX & TX FIFOS and transmission on 25771 the holding register being empty (TDRE) rather than transmission 25772 being complete (TC). From Dave Marples. 25773 - i.MXRT Pin Mux: This change separates out the pinmux and iomux 25774 functions cleanly. For ease of conversion default IOMUX definitions 25775 have been added into imxrt_iomux.h. The change effectively does two 25776 things: (1) unifies the iomux definitions - previously some pins 25777 had them, and some didn't. This effectively made it impossible to 25778 use the pinmuxes without editing the header file in the standard 25779 distribution tree. And (2) unifies the pin definitions so that every 25780 pin now has a suffix. This makes it *much* easier to see when a pin 25781 is in use in your code, because it will always have a definition in 25782 your board.h file. From Dave Marples. 25783 - IMXRT1020-EVK: Add support for the MIMXRT1021-EVK board. It 25784 features nsh, netnsh and usdhc sample configurations. From Dave 25785 Marples. 25786 25787 * NXP i.MXRT Boards: 25788 25789 - IMXRT1060-EVK: Add basic LCD support for the board IMXRT1060-EVK. 25790 From Fabio Balzano. 25791 - IMXRT1060-EVK: Added Littlevgl demo configuration into the 25792 IMXRT1060-EVK board directory. From Fabio Balzano. 25793 25794 * NXP/Freescale Kinetis Drivers: 25795 25796 - Kinetis Ethernet: Add support for TJA1100 PHY. From David Sidrane. 25797 25798 * NXP S31K1xx: 25799 25800 - S32K1xx: Support configuration and initialization of the flash 25801 configuration bytes. From Gregory 25802 25803 * NXP S31K1xx Boards: 25804 25805 - S32K1**EVB: Create a special FLASH section to hold the FLASH 25806 configuration bytes. From Gregory Nutt. 25807 - S32K146EVB: Added configuration script and instructions for using 25808 Thread-Aware OpenOCD for the S32K146 with Eclipse. From Han 25809 Raaijmakers. 25810 25811 * Renesas RX65N: 25812 25813 - RX65N: Adds a port of to the Renesas RX65N Micro-controller. This 25814 port includes Serial (UART) driver (13 ports) and Ethernet 25815 driver. From Anjana. 25816 25817 * Renesas RX65N Boards: 25818 25819 - RSK RX65N-2MB: Add support for the RSK RX65N-2MB board. From 25820 Anjana. 25821 - GR-Rose: Add support for the GR-Rose board. From Anjana. 25822 25823 * Sony CXD56xx 25824 25825 - CXD56xx CPU FIFO: Add configurations for CPU FIFO elements. From 25826 Alin Jerpelea. 25827 - CXD56xx Loader: Update loader and gnssfw ver. 17660. From Alin 25828 Jerpelea. 25829 - CXD56xx SMP: Add support for SMP. To run cxd56xx in SMP mode, new 25830 boot loader which will be released later must be used. From 25831 Masayuki Ishikawa. 25832 - CXD56xx SMP: Add IRQ routing for SMP in cxd56_irq.c. In CXD56xx, 25833 each external interrupt controller can be accessed from a local 25834 APP_DSP (Cortex-M4F) only. This change supports IRQ routing for SMP 25835 by calling up_send_irqreq() in both up_enable_irq() and 25836 up_disable_irq(). From Masayuki Ishikawa. 25837 25838 * Sony CXD56xx Drivers: 25839 25840 - CXD56xx I2C: Add ability to set the i2c frequency to other than just 25841 100 or 400 Hz. From Alin Jerpelea. 25842 - CXD56xx SDHCI: Reduce power consumption by stopping SD clock. Re- 25843 enable SD clock during access to SD card. Improve GNSS low 25844 sensitivity with SD card inserted. From Alin Jerpelea. 25845 25846 * Sony CXD56xx Spresense Board: 25847 25848 - CXD56xx Board Common: Add the Altair LTE modem support on the 25849 Spresense board. From Alin Jerpelea. 25850 - CXD56xx Board Common: Add Spresense Image Processor. Enable support 25851 for accelerated format converter, rotation and so on. using the CXD5602 25852 image processing accelerator. 25853 - Spresense: Add board specific pin configurations of CXD5602 pins to 25854 fit Spresense board. From Takayoshi Koizumi. 25855 - Spresense: Add a configuration option to select if an extension 25856 board is attached to the SPresence. If there is no extension board 25857 attached, the SPresense may run in a low-power mode by default (as 25858 determined by the CONFIG_CXD56_CUSTOM_PINCONFIG option). If an 25859 extension board is present, then the SPresense will need to run at a 25860 higher power mode, selected by the new CONFIG_SPRESENSE_EXTENSION 25861 option. From Gregory Nutt. 25862 - Spresense Camera: Add ISX012 camera initialization and 25863 configuration. From Alin Jerpelea. 25864 - Spresense OS test: Enable ostest in rndis/defconfig and 25865 wifi/defconfig. From Masayuki Ishikawa. 25866 - Spresense: Add --gc-sections to LDFLAGS and add -ffunction-sections 25867 and -fdata-sections to ARCHCFLAGS in scripts/Make.defs. From 25868 Masayuki Ishikawa. 25869 - Spresense SMP: Add smp configuration. From Masayuki Ishikawa. 25870 - Spresense SCU: The SCU has to be initialized at bootup on Spresense 25871 board because several functions depend on it. Add audio control 25872 definitions. Add configuration for the audio implementation. From 25873 Alin Jerpelea. 25874 - Spresense: Add audio and board audio control implementation. From 25875 Alin Jerpelea. 25876 - Spresense: Sdd power_control and audio_tone_generator. Add a simple 25877 way to control the audio buzzer with defined frequency for user-space 25878 apps. From Alin Jerpelea. 25879 - Spresense: Add the optional initialization of GNSS and GEOFENCE at 25880 boot if the drivers are enabled From Alin Jerpelea. 25881 - Spresense: Add LTE configuration. From Alin Jerpelea. 25882 - Spresense: Enable high current mode for the Spresense Extension 25883 board on all examples that have SDCARD support. From Alin Jerpelea. 25884 - Spresense: Add lcd examples configuration. This is a configuration 25885 for the basic nx examples From Alin Jerpelea. 25886 25887 * STMicro STM32: 25888 25889 - STM32F0/L0/G0: Add support for STM32G070xx family. From Daniel 25890 Pereira Volpato. 25891 - STM32F0/L0/G0 Power: Scale dynamic voltage and flash wait states 25892 properly on STM32G0 chips. Included preliminary implementation of 25893 PWR module VOS support. From Daniel Pereira Volpato. 25894 - STM32L4R5ZI: Add support for the STM32L4R5ZI chip type. From Jussi 25895 Kivilinna. 25896 - STM32 L4+ DMA: Add DMA support for STM32L4+ series. From Jussi 25897 Kivilinna. 25898 - STM32 L4 Clocking: Enable "Range 1 boost" mode if any PLL freq 25899 above 80 MHz. From Jussi Kivilinna. 25900 - STM32 L4 LPTIM: Add support for LPTIM timers on the STM32L4 as PWM 25901 outputs. From Matias N. 25902 - STM32 H7 Progmem: Add FLASH progmem support. From David Sidrane. 25903 25904 * STMicro STM32 Drivers: 25905 25906 - STM32 Serial: Single Wire add pull{up|down|none} via new IOCTL 25907 command. From David Sidrane. 25908 - STM32 F0/L0/G0 Serial: Single Wire add pull{up|down|none} via 25909 new IOCTL command. From David Sidrane. 25910 - STM32 F0/L0/G0 PWM: Add PWM support. From Daniel Pereira Volpato. 25911 - STM32 G0 TIM: Support timers available on STM32G070. Includes TIM1 25912 PIOs, TIM driver lower-half. From Daniel Pereira Volpato. 25913 - STM32 F7 Serial: Single Wire add pull{up|down|none} via new IOCTL 25914 command. From David Sidrane. 25915 - STM32 H7 BBSRAM: Exclude BBSRAM from cacheable when 25916 CONFIG_ARMV7M_DCACHE. ST placed the STM32H7 BBSRAM in the SRAM 25917 default memory region which is cacheable. This change sets the 25918 BBSRAM memory range to non-cacheable. From David Sidrane. 25919 - STM32 H7 SDMMC: Add SDMMC support and IDMA as well as interrupt 25920 driven transmission. Support pull-ups and SDIO. From David Sidrane. 25921 - STM32 H7 Serial: Single Wire add pull{up|down|none} via new IOCTL 25922 command. From David Sidrane. 25923 - STM32 L4 OTGFS: Enable OTGFS for STM32L4+ series. The OTGFS 25924 peripheral on stm32l4x6 and stm32l4rxxx reference manual is exactly 25925 the same. From Jussi Kivilinna. 25926 - STM32L4 IDLE Loop: (1) Added BEGIN_IDLE()/END_IDLE() to stop call 25927 so that we also get notification via LED of the STOP mode, (2) Added 25928 the stm32l4_clockenable call as previously discussed, and (3) Added 25929 call to pm_changestate() to inform drivers we're back to running 25930 after the call to stm32l4_stop() returns. From Matias N. 25931 - STM32 L4 Serial: Single Wire add pull{up|down|none} via new IOCTL 25932 command. From David Sidrane. 25933 25934 * STMicro STM32 Boards: 25935 25936 - Nucleo-G070RB: Initial support for board STM32 NUCLEO-G070RB, 25937 including NSH config. Enables PWR peripheral and set SYSCLK to 25938 maximum frequency. From Daniel Pereira Volpato. 25939 - Nucleo-G070RB: Enable basic timers. Add TIMx clock frequencies to 25940 board.h. From Daniel Pereira Volpato. 25941 - Nucleo-G070RB: Add PWM support and GPIO_TIM3_* mappings. Add a PWM 25942 configuration. From Daniel Pereira Volpato. 25943 - Nucleo-G070RB: Add button driver support, Add driver support. Add 25944 GPIO configuration. From Daniel Pereira Volpato. 25945 - Nucleo-L476RG: Add required definitions if libcxx is enabled. From 25946 Matias N. 25947 - Nucleo-L476RG: Add support for LPTIM timers as PWM outputs. From 25948 Matias N. 25949 - Nucleo-H743ZI: Added GPIO device driver for user-space apps. From 25950 Heiko Demlang. 25951 - olimex-stm32-e407: Newer Olimex E407 boards are populated with 25952 STM32407ZE chips. From David Alessio. 25953 - STM32F4-Discovery: Add support for external DS1307 module. From 25954 Alan Carvalho de Assis. 25955 - STM32F4-Discovery: Add support for MMCSD_SPI. This change works 25956 with STM32F4 Discovery Shield plus microSD click From Masayuki 25957 Ishikawa. 25958 - STM32F4-Discovery: Add support for gs2200m. Works with mikroe 25959 STM32F4 Discovery Shield (slot3) From Masayuki Ishikawa. 25960 25961 * TI Tiva: 25962 25963 - TM4C129ENCPDT: Add support for Tiva TM4C129ENCPDT. From Nathan 25964 Hartman. 25965 25966 * TI Tiva Boards: 25967 25968 - TM4C123G-Launchpad: SPI CAN functionality on TM4C123GXL. From 25969 DisruptiveNL. 25970 25971 * Build System: 25972 25973 - tools/Config.mk: Eliminate use of the built-in implicit rules. 25974 From anchao. 25975 - tools/Config.mk and Makefile.unix: Support the incremental build 25976 for configuration change. From Xiang Xiao. 25977 - tools/Config.mk: Support the ability to change the CFLAGS for 25978 the compilation of a single file. Set special compiler options as 25979 follows the rule: sourcefile + fixed suffix "_[A|C|CPP|CXX]FLAGS". 25980 For example in apps/examples/hello/Makefile: 25981 $(SRCDIR)/hello_main.c_CFLAGS = -DTEST. From Xiang Xiao. 25982 - Configuration: Auto-select CONFIG_BUILD_LOADABLE when either 25983 CONFIG_BUILD_KERNEL or CONFIG_BINFMT_LOADABLE is selected. From 25984 Xiang Xiao. 25985 25986 * Libraries/Header Files: 25987 25988 - libs/libc: Add CONFIG_MODLIB_SYSTEM_SYMTAB to generate the symbol 25989 table for dlopen/insmod. From Xiang Xiao. 25990 - getdelim() and getline(): Add implementations of the POSIX 25991 functions getdelim() and getline(). Because of how the function is 25992 defined, getline() cannot be used on platforms that use CR-LF lin 25993 terminations. From Gregory Nutt. 25994 - alarm(), setitimer(), and getitimer(): Implement alarm(), 25995 setitimer() and getitimer() APIs. From liuhaitao. 25996 25997 * Tools: 25998 25999 - tools/mkexport.sh: Copy the essential build script files too and 26000 move Make.defs/gnu-elf.ld into scripts like board folder layout. 26001 From Xiang Xiao. 26002 - tools/mkexport.sh: Should export full content for FLAT build even 26003 with CONFIG_BUILD_LOADABLE. From Xiang Xiao. 26004 - tools/testbuild.sh: Add an option to select the number of CPUs to 26005 use with 'make' From Gregory Nutt. 26006 - tools/indent.sh: Add a command line option to suppress reformatting 26007 of comments. This is useful when comments are already correct 26008 and/or contain formatted data such as tables or lists. From Gregory 26009 Nutt. 26010 - tools/nxstyle.c: Add detection of carriage returns. Improve 26011 reporting of TABs. From Gregory Nutt. 26012 - tools/nxstyle.c: Add logic to detect if there is a blank line 26013 following the final right brace. From Gregory Nutt. 26014 - tools/nxstyle.c: Eliminate false alarm errors on comments that are 26015 to the right of code when the comment terminator is on the same 26016 line as the last of the comment. From Gregory Nutt. 26017 - tools/nxstyle.c: Eliminate false alarms when checking for 26018 alignment of comments to the right of code. Fix check for C++ style 26019 comments so that strings like http:// and https:// do not generate 26020 false alarms. From Gregory Nutt. 26021 - tools/nxstyle.c: Eliminate false positive 'Invalid character after 26022 asterisk in comment block'. From Gregory Nutt. 26023 26024 * apps/ Build System: 26025 26026 - apps/ Build System: Numerous changes for improvements and general 26027 clean-up of the apps/ build system. Too many small and individual 26028 changes to list here. Includes many improvements related to loadable 26029 modules and symbol table generation, removal of duplicated logic, 26030 renaming of binary directories, use of cygpath, etc. From Xiang Xiao. 26031 - apps/Application.mk: Support the ability to change the CFLAGS for 26032 the compilation of a single file. Set special compiler options as 26033 follows the rule: sourcefile + fixed suffix "_[A|C|CPP|CXX]FLAGS" 26034 As an example in apps/examples/hello/Makefile: 26035 $(SRCDIR)/hello_main.c_CFLAGS = -DTEST 26036 From Xiang Xiao. 26037 - apps/Application.mk and main.c files: Change builtin's entry point 26038 from main to xxx_main by macro expansion. This change make the 26039 entry point fully compliant with POSIX/ANSI standard. From Xiang 26040 Xiao. 26041 26042 * Examples/Tests: apps/examples: 26043 26044 - apps/examples/audio_rttl: Add a simple RTTL player demo that is 26045 able to play tunes according to an RTTL song. From Alin Jerpelea. 26046 - apps/examples/bmi160: Add bmi160 example app. This app will read 26047 the BM160 data and list it on the NSH console. From Alin Jerpelea. 26048 - apps/examples/charger: Simple charger example that will display on 26049 the console voltage and current values. From Alin Jerpelea. 26050 - apps/examples/netlink_route: Add test/example of NETLINK_ROUTE 26051 'get' operations. From Gregory Nutt. 26052 26053 * NuttShell: apps/nshlib: 26054 26055 - apps/nshlib/: Add rptun cmd for boot remote core. From ligd. 26056 - apps.nshlib/: Add a -t option to the arp command which will enable 26057 printing the entire ARP table. From Gregory Nutt. 26058 - apps/nshlib/: Add new NSH command, 'pmconfig'. From ligd. 26059 26060 * System Utilities: apps/system: 26061 26062 - apps/system/cle: Add basic color support to the CLE editor. 26063 From Dave Marples. 26064 - apps/system/i2c: While many I2C slave devices have multiple 26065 indexed registers, some have only one register and it's not indexed. 26066 For example, the I2C bus switch TCA9548A has only a Control 26067 Register, attempting to index to "Reg[0]" alters its contents to 26068 0x00 disabling all subordinate buses. This change fixes that 26069 problem by simply trying to read something/anything from the slave. 26070 This also helps coax out slaves with register files that start from 26071 a higher index, i.e. the AT24CS0x, FLASH chips with a UUID that 26072 appears as a 2nd I2C slave at (address+8), report their serial 26073 number at Reg[80]-Reg[8F] and will NAK a read of Reg[0]. Modified 26074 get/set to prevent write of reg index if not specified. 26075 - apps/system/i2c: Added a 'dump' command to issue a single 26076 transaction to retrieve multiple bytes from an I2C slave and 26077 register/offset. From David Alessio. 26078 - apps/system/spi: Add options to specify devtype, id for chip 26079 select. From David S. Alessio. 26080 - apps/system/symtab: Remove system/symtab since the same 26081 functionality exist in nuttx now. From Gregory Nutt. 26082 - apps/system/usrsock_rpmsg: Add rpmsg based usrsock implementation. 26083 From Jianli Dong. 26084 26085 * Network Utilities: apps/netutils: 26086 26087 - apps/netutils/cjson/: Update default version to 1.7.12. Previous 26088 releases raise compilation warnings about redefined true/false. 26089 From raiden00pl. 26090 - apps/netutils/netlib/: Add a function to read the entire ARP table 26091 using NETLINK_ROUTE protocol. From Gregory Nutt. 26092 - apps/netutils/netlib/: Add support for retrieving a snapshot of the 26093 IPv6 neighbor table using Netlink sockets. From Gregory Nutt. 26094 - apps/netutils/netlib/: Add a utility function that will return a 26095 list of all network devices in the UP state. From Gregory Nutt. 26096 - apps/netutils/netlib/: Add function to retrieve routing tables 26097 using Netlink. From Gregory Nutt. 26098 26099Bugfixes: 26100--------- 26101Only the most critical bugfixes are listed here (see the ChangeLog for a 26102more complete list of bugfixes and for additional, more detailed bugfix 26103information): 26104 26105 * Core OS: 26106 26107 - Signals: Fix undefined reference from sig_default.c to 26108 sched_suspend() if CONFIG_SIG_SIGSTOP_ACTION is not defined. From 26109 raiden00pl. 26110 - waitpid(): Fix a NULL pointer dereference on race without 26111 DEBUG_ASSERT. From David Alessio. 26112 - WD Timers: Back out a kludge-workaround in wd_start for an SDCC 26113 compiler problem fix back in Feb 2017. That workaround now appears 26114 to conflict with newer GCC versions using (unsupported) warning 26115 options and SDCC no longer needs the work-around. From Gregory 26116 Nutt. 26117 - clock_systimespec(): Fix early timespec overflow if using 32 bit 26118 system timer. From Jens Gräf. 26119 - Spinlocks: spin_trylock handle memory barrier and instrumentation 26120 correctly. From Xiang Xiao. 26121 - Power Management: Fix a problem where a timer cannot start when it 26122 encounters a very small pmtick. From ligd. 26123 - boardctl(BOARDIOC_MKRD): This change corrects a problem with NSH: 26124 NSH was calling the OS internal function ramdisk_register() in 26125 violation of the portable POSIX interface. This change solves the 26126 problem by introducing a new boardctl() function BOARDIOC_MKRD 26127 which moves the RAM disk creation into the OS. From Gregory Nutt. 26128 - boardctl(BOARDIOC_ROMDISK): Add support for the new 26129 BOARDIOC_ROMDISK command. This allows applications to create ROMFS 26130 block drivers without illegal direct calls to romdisk_register. 26131 26132 * File System/Block and MTD Drivers: 26133 26134 - SmartFS: Fix O_CREAT without O_TRUNC truncating existing file. 26135 Also nothing in POSIX says that O_APPEND should prevent O_TRUNC. 26136 From Juha Niskanen. 26137 - SmartFS: Honor O_APPEND on writes. Also document pwrite() bug/ 26138 limitation. From Juha Niskanen. 26139 - GD25: spi_devid argument was not used in initialization. GD25 26140 driver was always using priv->spi_devid initialized to zero by 26141 kmm_zalloc(). This change initializes it from the supplied function 26142 argument. From Juha Niskanen. 26143 - MMC/SD: Set wrbusy after success of all the operations. Any 26144 failure could leave wrbusy set when it should not be if the 26145 operation failed. From David Sidrane. 26146 - MMC/SD: Enter a removed card state On a failure. If we fail to 26147 read cardstatus in mmcsd_transferready consider this a hard error 26148 and set the card to removed. From David Sidrane. 26149 - MMC/SD (SDIO): Align DMA buffer for MBURST size. From David S. 26150 Alessio. 26151 26152 * Networking/Network Drivers: 26153 26154 - Socket close(): Fixed problems noted by Bernd Walter: Eliminate an 26155 incomplete test when a disconnection event happens. When a 26156 disconnection event occurs, the close logic MUST always terminate 26157 the wait. The conditional test was not incorrect, however, it 26158 lacked 'else' logic and would simply ignore that disconnection event 26159 in some cases. That is bad because there may not be another 26160 disconnection event and that can lead to hangs (or at least very, 26161 very long delays). From Gregory Nutt. 26162 - ICMPv6: Dispatch ICMP_POLL to device's callback list too since 26163 icmpv6_neighbor stills append the callback into this list. From 26164 Gregory Nutt. 26165 - ICMPv6: Decouple autoconfig and ICMPv6 socket to avoid an invalid 26166 Kconfig combination. From Xiang Xiao. 26167 - ICMPv6: cmpv6_autoconfig() error handling must not overwrite 26168 overwrite the error code. From Xiang Xiao. 26169 - TCP/UDP: Fix a chicken and egg problem by eliminating the check of 26170 the arp/neighbor tables before packet transmission: 26171 1. For buffered TCP/UDP case, if CONFIG_NET_ARP_SEND / 26172 CONFIG_NET_ARP_IPIN / CONFIG_NET_ICMPv6_NEIGHBOR isn't enabled 26173 and the table doesn't contain the Ethernet address for the 26174 destination IP address yet, then the logic will skip the real 26175 transmission and then ARP/neighbor logic can't steal the final 26176 buffer to generate the ARP/ICMPV6 packet. 26177 2. For all other case, the TCP layer or user program should already 26178 contain the retransmit logic, the check is redundant and may 26179 generate many duplicated packets if ARP/ICMPV6 response is too 26180 slow because the cursor stop forward. If user is still concerned 26181 about the very first packet lost, he could fix the issue by 26182 enabling CONFIG_NET_ARP_SEND / CONFIG_NET_ICMPv6_NEIGHBOR. 26183 From Xiang Xiao. 26184 - UDP sendto(): Add a check for the device that is polling. In the 26185 multiple network device case, this check is necessary to prevent 26186 sending the UDP packet to the wrong device. From Gregory Nutt. 26187 26188 * Wireless/Wireless Drivers: 26189 26190 - MRF24J40: Correct erroneous isolation of address mode field and 26191 subsequent bad comparison. From Gregory Nutt. 26192 - GS2200M: Add SPI_SELECT() to _read/write_data() in gs2200m.c 26193 - BCM43xx Wireless: In the SDIO interface, the behavior of the DMA 26194 setup differs, depending on the hardware capability 26195 SDIO_CAPS_DMABEFOREWRITE. If this capability is set, then the DMA 26196 setup much be done before the transfer setup. Dave Marples 26197 modified this file for the i.MXRT USDHC which does have the 26198 SDIO_CAPS_DMABEFOREWRITE. Xiao Xiang reports that this change 26199 breaks the Wifi on the Photon which does not report the 26200 SDIO_CAPS_DMABEFOREWRITE and suggests reverting the change. In 26201 reality both changes are correct but must be conditioned on the 26202 DMA capability of the underlying SDIO device. From Gregory Nutt. 26203 26204 * Common Drivers: 26205 26206 - Various drivers (Cloned logic): On error, memory was freed, but 26207 the error was not returned. It just continued as though no error 26208 happened. From Petro Karashchenko. 26209 - Serial: Fix data corruption when outputting data in SMP mode From 26210 Masayuki Ishikawa. 26211 - Serial: serial_io.c used signal numbers, but did not include 26212 signal.h. This has no problems but missing signal definitions have 26213 been seen in certain cases. From David Sidrane. 26214 - Serial DMA: Avoid uart_xmitchars_done() move the tail bigger then 26215 head. If ioctl(TCOFLUSH) occurs between uart_xmitchars_dma() and 26216 uart_xmitchars_done(), TCOFLUSH will reset xmit buffer, then 26217 uart_xmitchars_done() will move the 'tail' ahead of 'head', then 26218 sends lots of wrong data. From ligd. 26219 - mkfifo(): mkfifo() should return -1 and set errno on failure From 26220 raiden00pl. 26221 - RAMLog: Fix ramlog readers never awakened up when using ramlog as 26222 syslog or console. We also make an attempt to avoid the thundering 26223 herd problem if there are multiple readers/pollers. This change also 26224 removes forcing CONFIG_RAMLOG_CRLF in nuttx/syslog/ramlog.h as there 26225 is no point of wasting precious RAM for useless characters. From 26226 Juha Niskanen. 26227 - USB CDC/ACM: Fix memory leak of RX failsafe timer. From Juha 26228 Niskanen. 26229 - USB HID Keyboard device: Fix keyboard debounce algorithm used when 26230 CONFIG_HIDKBD_NODEBOUNCE is undefined. From Jeff Theusch. 26231 - USB HID Keyboard: Change default for CONFIG_HIDKBD_POLLUSEC per 26232 recommendation of Jeff Theusch. From Gregory Nutt. 26233 - VL53L1X IOCTLs: IOCTL commands for the VL53L1X did not follow the 26234 sequence. Noted by Daniel Pereira de Carvalho. From Gregory Nutt. 26235 - syslog: syslog_force does not set errno so do not test against it. 26236 From Juha Niskanen. 26237 - syslog: Fix assertion that assumes re-opened syslog file is the 26238 same. Logic in syslog_file_channel() is calling syslog_initialize() 26239 for the default syslog device as a recovery action after failed 26240 syslog_dev_initialize(). From Juha Niskanen. 26241 26242 * Simulator: 26243 26244 - Simulator HostFS: Skip '.' and '..' in readdir' From Xiang Xiao. 26245 - Simulator HostFS: Fix warning: 'mapflags' may be used uninitialized 26246 in this function. From Xiang Xiao. 26247 - Simulator Tickless: Correct the calculation of the Tickless timer 26248 period. Fix some missing initialization of globals and missing 26249 return values. From Matias N. 26250 - Simulator: Add -m32 to HOSTLDFLAGS if enable CONFIG_SIM_M32. From 26251 Xiang Xiao. 26252 - Simulator PM: Fixes compilation for sim target when enabling power 26253 management. From Matias N. 26254 - Simulator Build: Fixes missing recursion into sim board directory 26255 for dependency generation. From Matias N. 26256 - Simulator SIMUART: Remove CONFIG_SIM_UART_DATAPOST for arch/sim. 26257 It's very dangerous to call NuttX API from simuart_thread. From 26258 Xiang Xiao. 26259 26260 * ARMv7-A 26261 26262 - ARMv7-A: Apply Masayuki Ishakawa's change for ARMv7-M to this SMP 26263 architecture as well. From Gregory Nutt. 26264 26265 * ARMv7-M 26266 26267 - ARMv7-M: Fix a deadlock in up_sigdeliver() in SMP mode. In 26268 previous implementation, up_disable_irq() was called before 26269 recovering local context. However, I noticed a deadlock happens in 26270 the following situation. For example, if up_sigdevliver() is in 26271 progress on CPU0 and CPU1 has called up_cpu_paused to CPU0, hence 26272 g_cpu_irqlock has been locked by CPU1, in this case, we would see a 26273 deadlock in later call of enter_critical_section() to restore 26274 irqcount. To avoid this situation, we need to call 26275 enter_critical_section() to break the deadlock. From Masayuki 26276 Ishikawa. 26277 26278 * Atmel SAM3/4 Boards: 26279 26280 - SAM4CM: Fix cpustart() implementation. In Cortex-M, offset 0 in 26281 vector table stores initial stack pointer and offset 4 stores reset 26282 vector. From Masayuki Ishikawa. 26283 26284 * Atmel SAMA5Dx Boards: 26285 26286 - SAMA5D4-EK: Fix bad conditional compilation for 26287 board_app_initialize(). Should depend only on CONFIG_BOARDCTL, 26288 CONFIG_BUILD_KERNEL is irrelevant. From Gregory Nutt. 26289 26290 * Microchip i.MXRT: 26291 26292 - i.MXRT WFI: WFI needs to be disabled on i.MXRT. We found the 26293 reason: The imxrt1050 is configured to use SYSTICK for the kernel 26294 timer, but SYSTICK cannot wake up the MCU from low-power modes. 26295 Disable low-power modes on this MCU until we have support for an 26296 alternative timer. Earlier versions of the board (EVK, not EVKB), 26297 had A0 silicon which by default did not enter low-power mode on a 26298 WFI. With this change in place together with the previous one my 26299 system is stable, just using more power than it should. From Dave 26300 Marples. 26301 26302 * Microchip i.MXRT Drivers: 26303 26304 - i.MXRT Serial: TC (Transmission complete) and TDRE (TX Buffer 26305 Empty) were transposed in imxrt_serial.c. The end result was that 26306 for unoptimized code everything worked fine, but optimized code got 26307 itself into a real mess and continually fired interrupts. From Dave 26308 Marples. 26309 26310 * Microchip i.MXRT Boards: 26311 26312 - IMXRT1020-EVK: Make naming of the LED consistent. In most places 26313 it is referred to as LED1. In board.h it is referred to as 26314 USERLED1. The i.MXRT1020-EVK hardware user guide (HUG) uses the 26315 name USERLED. This command makes all names internally consistent 26316 and consistent with the HUG. Noted by Alin Jerpelea. From Gregory 26317 Nutt. 26318 26319 * NXP/Freescale Kinetis Boards: 26320 26321 - TWR-K60N512: Suppress errors related to card detect GPIO 26322 configuration if SDHC support is not enabled. From Gregory Nutt. 26323 26324 * NXP LPC17xx/40xx Drivers: 26325 26326 - lpc17xx/40xx I2C: Respect the I2C_M_NOSTART flag. Sending a 26327 restart condition when not requested will break other drivers that 26328 depend on this behavior. From Augusto Fraga Giachero. 26329 - LPC17xx/40xx Ethernet: Use usleep() instead of up_delay() for large 26330 wait times. From Augusto Fraga Giachero. 26331 26332 * NXP LPC54xx: 26333 26334 - LPC54 Clocking: Fix PLL settings. For the lpc54628 Rev. E board 26335 the PLL was not configured properly and the board would not boot 26336 correctly. I checked the startup files from the official IDE and 26337 inspected the assembly instructions for the libraries used. From 26338 Andrei Stefanescu. 26339 26340 * NXP i.MXRT Boards: 26341 26342 - IMXRT1060-EVK: Fix FT5X06 CTRSTn pin configuration, increased 26343 number of pollwaiters for the FT5X06, tuned resolution during 26344 pointer dragging. From Fabio Balzano. 26345 26346 * On Semiconductor Boards: 26347 26348 - LC823450: Fix cpustart() implementation. In Cortex-M, offset 0 in 26349 vector table stores initial stack pointer and offset 4 stores reset 26350 vector. From Masayuki Ishikawa. 26351 - LC823450-XGEVK: Fix build error for posix_spawn. From Masayuki 26352 Ishikawa. 26353 26354 * Sony CXD56xx: 26355 26356 - CXD56xx Assertions: Replace some assertions with error return 26357 values. From Alin Jerpelea. 26358 - CXD56xx Interrupts: Fix hang-up when error interrupt occurs. From 26359 Alin Jerpelea. 26360 - CXD56xx Pin Configuration: PIN_AP_CLK is used as a port selector of 26361 SDIO expander on the extension board, and is set output low in 26362 initialization. Therefore, this pin cannot be used by the other 26363 board. To avoid this restriction, remove this initial operation 26364 because this pin is pulled down by default on the extension board. 26365 From Alin Jerpelea. 26366 - CXD56xx: Remove duplicate NVIC_SYSH redefinitions. The NVIC_SYSH 26367 is already defined in nvicpri.h From Alin Jerpelea. 26368 26369 * Sony CXD56xx Drivers: 26370 26371 - CXD56xx SDHCI: Fix initial value of semaphore in sdhci driver. 26372 From Alin Jerpelea. 26373 26374 * Sony CXD56xx Boards: 26375 26376 - Spresense: The SD Card TXS02612 port expander is hosted on the 26377 Extension board and should not be enabled if the extension board is 26378 not present. From Alin Jerpelea. 26379 26380 * STMicro STM32: 26381 26382 - STM32 F4 Pin Multiplex: Ethernet pin ETH_RMII_REF_CLK is an input. 26383 From Gregory Nutt. 26384 - STM32 H7 ADC: Fix typos in ADC register definitions. From Markus 26385 Bernet. 26386 - STM32 H7: Heap allocation, SRAM and SRAM1 are not continuous From 26387 David Sidrane. 26388 - STM32 H7 CRC: Add the CRC option in KConfig. From Eduard Niesner. 26389 - STM32 H7 RCC: Add PLL3 Support and only enable PLLs if used. From 26390 David Sidrane. 26391 - STM32 L4x6xx RCC: This fix is needed if HSI clock is selected. 26392 Otherwise when waking up from STOP mode, the MSI clock is selected 26393 instead of the HSI clock. From Matias N. 26394 26395 * STMicro STM32 Drivers: 26396 26397 - STM32 USB Host: There was no relationship between 26398 CONFIG_STM32_USBHOST and CONFIG_USBHOST, yet they they were used 26399 interchangeably. This means that can (and did) get out of synch 26400 causing link time failures. This change adds logic to select 26401 CONFIG_USBHOST when CONFIG_STM32_USBHOST is selected, keeping the 26402 two settings synchronized. Furthermore, since CONFIG_STM32_USBHOST 26403 is the authoritative setting, all occurrences of CONFIG_USBHOST were 26404 replaced with CONFIG_STM32_USBHOST. From Gregory Nutt. 26405 - STM32 SDIO: SDIO Fix system hang on card eject. From David Sidrane. 26406 - STM32 F7 Ethernet: Large Ethernet packet can leads network halt. 26407 From Bazooka Joe. 26408 - STM32F7 OTGHOST: OTGFS_EPTYPE_INTR should be OTG_EPTYPE_INTR. From 26409 Gregory Nutt. 26410 - STM32 F7 SDMMC: SDMMC Fix system hang on card eject. From David 26411 Sidrane. 26412 - STM32 L4 Firewall: Correct a test to determine if an address lies 26413 in FLASH or not. Improper mask caused test to always fail. From 26414 Gregory Nutt. 26415 - STM32 H7 Ethernet: Bazooka Joe's fix to the STM32 F7 Ethernet 26416 driver should be applied to the H7 as well. The other STM32 26417 Ethernet drivers already have the change. From Gregory Nutt. 26418 - STM32 H7 Ethernet: Fix ETH_MACMDIOAR_CR_MASK bit mask. From Markus 26419 Bernet. 26420 - STM32 H7 SDMMC: SDMMC Fix system hang on card eject. From Gregory 26421 Nutt. 26422 - STM32 H7 FLASH: Flash driver BUG fixes. From David Sidrane. 26423 - STM32 H7 TIM: Correct register bit definitions and alternate 26424 functions. Fix other copy-paste definitions. From Daniel Pereira 26425 Volpato. 26426 - STM32 L4 SDMMC: SDMMC Fix system hang on card eject. From David 26427 Sidrane. 26428 26429 * STMicro STM32 Boards: 26430 26431 - STM32F4-Discovery: Fix build error for posix_spawn. From Masayuki 26432 Ishikawa. 26433 26434 * TI Tiva: 26435 26436 - TIVA IRQs: Fix wrong IRQ vector number. From Nathan Hartman. 26437 - Tiva FLASH: Fix several mistakes in tiva_write(). (1) Fix wrong 26438 use of && when & was intended. (2) Add compile- time warning 26439 directive because according to this function's interface, it is 26440 supposed to support unaligned writes and/or writes of arbitrary 26441 numbers of bytes to FLASH. However, this function does NOT support 26442 that at this time. This needs to be fixed. (3) Fix wrong 26443 preprocessor conditional. Was written to use the 32-word write 26444 buffer only for TM4C1294NCPDT. This buffer is available on all 26445 M4C123 and TM4C129 parts. Now conditioned upon 26446 CONFIG_ARCH_CHIP_TM4C123 or CONFIG_ARCH_CHIP_TM4C129. (4) Add 26447 comments to document the intent of the above preprocessor logic. 26448 From Nathan Hartman. 26449 26450 * Xtensa 26451 26452 - Xtensa: Apply Masayuki Ishakawa's change for ARMv7-M to this SMP 26453 architecture as well. From Gregory Nutt. 26454 26455 * Build System: 26456 26457 - Makefiles: Change ${shell pwd} to $(CURDIR) since pwd doesn't exist 26458 on Windows From Xiang Xiao. 26459 - tools/Makefile.unix: Fix build error when issue 'make -B': "mkdir: 26460 cannot create directory 'staging': File exists: 26461 tools/Makefile.unix:269: recipe for target 'staging' failed". From 26462 Xiang Xiao. 26463 - All ARM linker scripts: Preface all _ebss definitions with '. = 26464 ALIGN(4)'. Otherwise, the following .bss section may not be aligned 26465 properly. From Gregory Nutt. 26466 - MIPS Linker Scripts: The PIC32M* start-up code initializes .bss by 26467 writing 16 bytes at a time in a loop. The start (_sbss) alignment 26468 is only required to be 4 bytes since the write is done with 4 store 26469 instructions. From Gregory Nutt. 26470 - Top-level Kconfig: Add some protection so that you cannot select an 26471 architecture-specific header file if the architecture does not 26472 provide the header file. From Gregory Nutt. 26473 - libc Kconfig: Should select the NuttX float.h file automatically 26474 if the NuttX math library is selected. From Gregory Nutt. 26475 - tools/Makefile.unix: Make COMMON_DIR work with 26476 CONFIG_ARCH_BOARD_CUSTOM. From Xiang Xiao. 26477 - tools/ Make fragments: Fix the various minor issue for NUTTXLIBS / 26478 USERLIBS: (1) Remove libcxx duplication in FlatLibs.mk and from 26479 kernel space, (2) Remove libpass1 from KernelLibs.mk since kernel 26480 build doesn't support the two pass mode, and (3) Remove FSDIR 26481 related comment since file system cannot be disabled now From Xiang 26482 Xiao. 26483 26484 * C Library/Header Files: 26485 26486 - getcwd(): Remove stray sched_unlock(). Also fixes several typos. 26487 From Juha Niskanen. 26488 - date(), hostname(): Fix portability issue with date, hostname From 26489 David Alessio. 26490 - libs/libxx/Kconfig: Automatically select CONFIG_CLOCK_MONOTONIC when 26491 CONFIG_LIBCXX is selected. Removed hardcoded -DCLOCK_MONOTONIC from 26492 CFLAGS in Make.defs of several configurations. That definition is 26493 now automatically adding this define when CONFIG_LIBCXX=y. From 26494 Daniel Pereira Volpato. 26495 - libs/libxx/Kconfig: CONFIG_LIBC_LOCALE is needed to build libcxx. 26496 A math library is also needed, however, there are various ways to 26497 provide a math library so CONFIG_LIBM is not now set. From Matias 26498 N. 26499 - libs/libc/symtab: Move symbol table generation into libc since the 26500 address in symbol table should come from userspace binary for 26501 PROTECTED build, not kernel binary. From Xiang Xiao. 26502 - libs/libc/ Kconfig files: Disable EXECFUNCS_HAVE_SYMTAB for kernel 26503 build. The symbol table doesn't have any meaning for kernel build 26504 since all executable binary should be self contained. From Xiang 26505 Xiao. 26506 26507 - include/sys/time.h: According to earlier standards, usage of 26508 select(), FD_CLR, FD_ISSET, FD_SET and FD_ZERO just need include 26509 headers: sys/time.h, sys/types.h and unistd.h. So include 26510 sys/select.h in time.h to compatible with it. Or mbedtls library 26511 would build break in calling select() and FD_* related functions. 26512 From liuhaitao. 26513 26514 * Tools: 26515 26516 - tools/configure.sh and configure.c: Do not remove CONFIG_SIM_M32 if 26517 host is specified. From anchao. 26518 - tools/Directories.mk: Remove FSDIRS/NOFSDIRS related logic/comments 26519 since the file system can no longer be disabled now. From Xiang 26520 Xiao. 26521 - tools/Makefile.host: Add missing binaries from clean target. From 26522 Gregory Nutt. 26523 - tools/mkromfsimg.sh: Use sed to add const to ROMFS declarations so 26524 that they lie in FLASH not RAM. From Bernd Walter. 26525 - tools/nxstyle.c: Correct detection of missing blank line following 26526 a block comment. From Gregory Nutt. 26527 26528 * apps/ Build System: 26529 26530 - Makefiles: Change ${shell pwd} to $(CURDIR) since pwd doesn't exist 26531 on Windows From Xiang Xiao. 26532 - Makefile: Fix warning: jobserver unavailable: using -j1. Add '+' to 26533 parent make rule. From Xiang Xiao. 26534 - apps/Application.mk: Correct an error in PATH usage. Use of 26535 toolchain path causes make errors. From Gregory Nutt. 26536 26537 * apps/tools: 26538 26539 - tools/mkromfsimg.sh: Use sed to add const to ROMFS declarations so 26540 that they like in FLASH not RAM. From Bernd Walter. 26541 26542 * Examples: apps/examples: 26543 26544 - apps/examples/mount: Replace illegal call to ramdisk_register() 26545 with a call to boardctl(BOARDIOC_MKRD). From Gregory Nutt. 26546 - apps/examples/nxlines/: Correct nxlines example program name. From 26547 Gregory Nutt. 26548 - apps/examples/nxterm/: PROGNAME, PRIORITY, STACKSIZE variable 26549 names did not match declarations in Kconfig file. From Gregory 26550 Nutt. 26551 - apps/examples/romfs: Remove romfs_testdir.h. That file is 26552 regenerated whenever the example is built and so should not be in 26553 the repository. From Gregory Nutt. 26554 26555 * Testing: apps/testing: 26556 26557 - apps/testing/cxxtest/: Fix typo error in testing/cxxtest. From 26558 Xiang Xiao. 26559 - apps/testing/unity/: Fix the error when creating Make.dep. From 26560 raiden00pl. 26561 26562 * NSH Library: apps/nshlib: 26563 26564 - apps/nshlib: Remove the inappropriate NSH_BUILTIN_APPS coupling. 26565 From Xiang Xiao. 26566 - apps/nshlib/: The NSH mkrd command was in violation of the NuttX 26567 portable POSIX interface. It was calling the internal OS function 26568 ramdisk_register() directly. Not only is this a violation of the 26569 interface specification, but also prevents use of mkrd in PROTECTED 26570 or KERNEL builds. With this change, the NSH mkrd command now uses 26571 the BOARDIOC_MKRD boardctl() command. This command is available in 26572 all build modes. The effect of this change is to move the heart of 26573 the NSH mkrd command into to OS and provide user-space access via 26574 boardctl(). From Gregory Nutt. 26575 - apps/nshlib/: Replace direct calls to romdisk_register() with 26576 indirect calls via boardioctl(BOARDIOC_ROMDISK). This not only 26577 fixes the violation of the portable POSIX OS interface, but also 26578 permits use of ROM disks in PROTECTED and KERNEL modes. From 26579 Gregory Nutt. 26580 - apps/nshlib/: Add missing NSH_DISABLE_DMESG from Kconfig. From 26581 Juha Niskanen. 26582 26583 * System Utilities: apps/system: 26584 26585 - apps/system/cle/: This change modifies the cle to use the streams 26586 file interface more consistently and has removed the observed race 26587 conditions. It was previously a mix of streams and fileio. It 26588 also simplifies the VT100 cursor position handling. From Dave 26589 Marples. 26590 - apps/system/composite: Remove usb serial loopback test code we can 26591 achieve the same effect by cat or dd command. From Xiang Xiao. 26592 - apps/system/cu/: (1) Fix early exit. getc(stdin) can return 0 the 26593 first time around. (2) Set optind to zero. getopt() was being 26594 left in a bad state, causing parsing errors on second use. (3) Fix 26595 priority of cu_listen(). (4) Add support for -h. From David 26596 Alessio. 26597 - apps/system/lzf/: Check the protection by CONFIG_SYSTEM_LZF != 26598 CONFIG_m (not elf binary) instead of CONFIG_KERNEL_BUILD. From 26599 Xiang Xiao. 26600 - apps/system/spi: Correctly parse exch txdata args, if any. Should 26601 always call the board's deselect From David Alessio. 26602 26603 * File System Utilities: apps/fsutils: 26604 26605 - apps/fsutils/passwd/: Use named semaphore by checking 26606 CONFIG_FS_NAMED_SEMAPHORES instead of CONFIG_KERNEL_BUILD. From 26607 Xiang Xiao. 26608 26609 * Network Utilities: apps/netutils: 26610 26611 - apps/netutils/cjson/Makefile: Fix the error when creating 26612 Make.dep. From raiden00pl. 26613 26614 * Graphics: apps/graphics: 26615 26616 - apps/graphics/twm4nx/: Fix a recently introduced error that broke 26617 all Twm4Nx configurations. From Gregory Nutt. 26618 - apps/graphics/traveler/: Replace direct calls to romdisk_register() 26619 with indirect calls via boardioctl(BOARDIOC_ROMDISK). This not only 26620 fixes the violation of the portable POSIX OS interface, but also 26621 permits use of ROM disks in PROTECTED and KERNEL modes. From 26622 Gregory Nutt. 26623 26624NuttX-9.0.0 Release Notes 26625------------------------- 26626 26627This is the first release of NuttX as Apache NuttX (Incubating) and represents our first major milestone as a Podling of the Apache Software Foundation's Incubator. This release is the culmination of nearly 6 months of hard work and includes several new architectures and drivers, and numerous improvements and bug fixes to the core RTOS, drivers, and networking subsystems. 26628 26629 * Major Changes to Core OS 26630 * Bugfixes 26631 - nxsem_wait_uninterruptible() now returns if the task is canceled. 26632 - Fix a bug in pthread_condwait() that was improperly re-initializing the mutex. 26633 - In sched_setpriority(), fix functions called inside a DEBUGASSERT that were eliminated when assertions are disable 26634 26635 * Compatibility Concerns 26636 26637 - The configuration option CONFIG_CAN_PASS_STRUCT is now removed. Previously, it was used (at the cost of breaking standards support) to support older versions of the SDCC compiler that couldn't pass structs/unions as functions' parameters. A newer version of the compiler has resolved the issue. 26638 26639 * Major Changes to Build System 26640 - Add a post-build function that allows extending the build with CPU/board-specific logic. 26641 - Add build tools to simplify ZDS-II tool usage. 26642 - mkexport.sh: Deal with ARCHSCRIPT containing multiple files. 26643 - Various nxstyle improvements. 26644 26645 * Architectural Support 26646 * New architecture support 26647 - Add support for RISCV-64 26648 - Add support for x86_64 (tested on QEMU) 26649 - Add support for ELF64 26650 - Add a port to the NUCLEO-F429ZI board 26651 - Add support for the STM32H747I-DISCO board 26652 - Add Z20X board support and bootloader to upload code from the W25 flash to SRAM 26653 - Add initial support for Litex with softcore CPU VexRiscV SoC 26654 - Add support for the Digilent ARTY_A7 board to test the Litex port 26655 - Added initial support for Sipeed Maix Bit board with Kendryte K210 processor 26656 - New architectural support: ez80f92 26657 - Flat address x86_64 port of NuttX 26658 - Support to run NuttX on ESP32 QEMU 26659 - Initial support for Sipeed Maix Bit board with Kendryte K210 processor 26660 - Add initial support for Kendryte K210 processor in SMP mode 26661 - NXP S32K11x (Cortex-M0+) and S32K14x (Cortext-M4F): Add support for NXP automotive boards. 26662 - XMC 4700 (Cortex-M4F) 26663 * Architectures with significant improvements 26664 - ESP32 loadable modules support 26665 - i.MX RT: FLEXIO clock config logic. 26666 - Fix the clock configuration for the i.MX RT family 26667 - i.MX RT: Add ability to run from OCRAM 26668 - SAMA5D27 peripheral support - USB Host working 26669 - z20x: Add W25 bootloader 26670 - i.MX RT: Add USB Device support 26671 - STM32, STM32F7, STM32H7 add SPI DMATHRESHOLD 26672 - Improve the simulator timer 26673 - 64-bit modules on macOS simulator 26674 - z20x: Add XTP2046 SPI support; add timer support 26675 - RX65N RTC Driver added 26676 - NXP Freedom K28F Board SD-Card support 26677 - STM32H7: support SDRAM via FMC peripheral 26678 - LM3S6965-ek: Add PROTECTED build support 26679 - STM32H7: Added IWDG and WWDG, power management (sleep/stop/standby), WKUP pin configuration 26680 - SAMV71: Add read UID implementation and move flash functions to RAM 26681 - i.MX RT: Fix interrupts storm (serial & I2C) 26682 - Various fixes and cosmetic changes to the CxD56xx architecture 26683 - Fix SiFive FE310 related code (comments, improve serial irq handling, initial int status) 26684 - Implement QSPI for STM32H7 26685 - Improvements for the nRF52 port: I2C, SPI, GPIO support 26686 - Updates for LPC17xx/40xx serial 26687 - Adds basic support for Microchip SAM E54 Xplained Pro board 26688 - Adds an Ethernet driver for the SAME5x family (based on the SAMA5 GMAC driver) 26689 - Add CDC ECM Ethernet over USB 2.0 High Speed (tested on SAMA5D36-Xplained board) 26690 - Simulator: Reimplement simulator uart on top of serial driver framework 26691 - NXP S32K1XX peripheral clock fixes 26692 - Fix syscall stack alignment on armv7-m 26693 - Fix flash_erase(page) when page >= 256 for STM32L4 family 26694 - Add partial support for the NETLINK poll() operation. 26695 - Add serial DMA support for STM32F7 26696 - Add AM335x Clock Configuration 26697 - Add I2C support for AM335x 26698 - Add configuration to fine tune LPI2C Timeout for iMXRT 26699 - Add CAN support to AM335x 26700 - Add I2C support to STM32F0/L0/G0 26701 - Kinetis LPC SDCard improvements 26702 - Replace the busy polling with work_queue in the ethernet driver of simulator 26703 - Fix Xtensa's SMP support to follow same logic from other SMP archs 26704 - PIC32MZ: SPI transfers can be configured to use DMA. 26705 - PIC32MZ: Implement cache operations. 26706 * Driver Support 26707 * New drivers 26708 - New driver for the ADS7828 I2C analog to digital converter 26709 - driver/ioexpander: New driver for PCA9538 I2C I/O expander 26710 - New driver type for battery monitor ICs. 26711 - Driver for the BQ769x0 battery monitor IC. 26712 - Add Support for Quectel EC20 4G LTE Module USB CDC/ACM 26713 - Add QSPI-based Winbond NOR FLASH driver 26714 * Drivers with significant improvements 26715 - Update all the drivers to check return value of nxsem_wait_uninterruptible(). 26716 - MCP9844 shutdown mode support 26717 - fcntl: add O_CLOEXEC flag, add O_CLOEXEC/FD_CLOEXEC support 26718 - CDC-ECM Ethernet over USB 2.0 HS 26719 - smartfs improvements: Handling of duplicate sectors, support fsck to check and repair the smartfs file system, and recover SPI Flash from initial error state. 26720 - Various fixes for USBDEV driver: Remove unnecessary reset logic, fix descriptor type mismatch when dual speed is enabled, fix invalid/unsupported command processing, and fix string ID calculation. 26721 - Handle size zero in umm_malloc.c and umm_realloc.c, which causes a system freeze in kernel mode. 26722 - Fixed compilation issue with poll fds notification. 26723 - Report POLLHUP and POLLERR in 'revents' regardless the requested 'events' set. 26724 * Networking 26725 - Telnet: Fix/Refine CTRL+C to work on telnet 26726 - TCP: Fix of faulty TCP sequence increments 26727 - netdb: Fix netdb to query IPv4 and IPv6 addresses regardless the server address type 26728 - Netlink sockets may be set to non-blocking 26729 - Improve TUN and SLIP, refine Control+C Handling in Telnet 26730 - Sockets: Add socket MSG_DONTWAIT support 26731 - Network Loopback Driver: Add a configuration option to control packet size 26732 - Network IOCTLs: Add FIONBIO network IOCTL support 26733 - NFS: Support IPv4 and TCP 26734 - Sockets: Add IP and TCP socket options needed by iperf3 26735 - Netlink: Add support for asynchronous Netlink responses 26736 - TCP: Monitor TCP_POLL/TCP_NEWDATA/TCP_BACKLOG per the request like UDP counterpart 26737 - TCP: Minor design improvement to TCP delayed ACKs 26738 - DNS IPv4/IPv6 Dual Host Support: When IPv4/IPv6 Dual Stack is enabled, queries both types of addresses regardless of whether the DNS server is accessed via IPv4 or IPv6. As a result, getaddrinfo() may return a mixed (IPv4/IPv6) address list. 26739 26740 * Applications 26741 * Improvements 26742 - Extend netutils and netinit to work with only Netlink sockets enabled 26743 - Add getprime program to check multi-thread performance 26744 - Improve zmodem send performance 26745 - Add simple HTS221, LSM303 and LSM6DSL examples 26746 - Improve to gs2200m wiki performance 26747 - Improve telnet server and enable it to listen on both IPv4 and IPv6 26748 - Improve ntpclient logic 26749 - Improve wapi to save configuration to file system 26750 - Improve wapi to skip associate if ssid is invalid 26751 - Improve cmd_nfsmount to use IPv4 and IPv6 26752 - Improve ostest for SMP and non-SMP configurations 26753 - Improve UDP to avoid using standard symbols 26754 - Improve dhcpd to include configurable timeout and retry count 26755 * Bugfixes 26756 - Correct format when printing ARP tablet entries 26757 - Ensure /bin/ping and ping work at the same time 26758 - Correct backward conditional logic in dhcpd_leaseexpired() 26759 - Fix several problems on ftpd 26760 - Fix dhcpd issue reported on Issue #17 26761 - Fix sendmail example to run on a local SMTP server 26762 - Fix buffer overflow on netlib 26763 - Fix compile errors in loopback mode of the tcpblaster 26764 - Fix stack corruption in ELF task test 26765 - Fix errors in NoBlockRecv and BlockRecv tests of usrsocktest 26766 - Fix ipforward IP Header issue for IPv4 26767 - Fix wrongly swapped parity options of CU program 26768 - Fix slcd to avoid using priv->fd before initializing it 26769 - Fix (tcp, udp)blaster to build on macOS 26770 - Correct the buffer type of base64 program 26771 26772NuttX-9.1.0 Release Notes ------------------------- 26773 26774 * Major Changes to Core OS: 26775 * New Features: 26776 - PR-977 PR-987 PR-998 PR-995 PR-997 PR-1007 Thread Local Storage (TLS) 26777 is now a required feature and used by all architectures 26778 There is detailed information on the implementation and how this 26779 impacts errno specifically in the Wiki article: Userspace errno and 26780 TLS 26781 - PR-957 PR-947 PR-963 PR-969 Provide nx_ versions of many functions 26782 that are used internally to avoid disrupting errno in userspace 26783 - PR-965 PR-980 PR-984 ioctl is now always in the variadic form. 26784 Syscalls in KERNEL builds are also more efficient with this as well now. 26785 Previously the ioctl prototype was normally defined as: 26786 26787 int ioctl(int fd, int cmd, unsigned long arg); 26788 26789 unless the CONFIG_LIBC_IOCTL_VARIADIC was enabled in which case it was 26790 26791 int ioctl(int fd, int cmd, ...); This form is now the form defined by 26792 opengroup and is also inline with Linux. Prior to this change there 26793 were issues with making ioctl calls on 64-bit arch since the 26794 implementation assumed that (void *) would be of size long. There is 26795 more discussion of this issue in the GitHub issue ticket here: 26796 26797 https://github.com/apache/incubator-nuttx/issues/959 26798 26799 - PR-962 PR-964 Add new interface sched_get_stackinfo that simplifies 26800 interfaces for things like TLS 26801 There are some security imposed rules for using this interface 26802 Any thread may query its own stack, A kernel thread may query the 26803 stack of any other thread Application threads, however, may query 26804 only the stacks of threads within the same task group, i.e., the 26805 main thread and any of the child pthreads created with the main 26806 thread as a parent or grandparent or great-grandparent. 26807 26808 - PR-1104 Internal function fs_fsopen() no longer affects errno - 26809 - PR-1123 Move task_init() and task_activate() to be internal functions - 26810 - PR-1140 Add nxtask_uninit() interface 26811 This function will undo all operations on a TCB performed by 26812 task_init() and release the TCB by calling kmm_free(). This is 26813 intended primarily to support error recovery operations after a 26814 successful call to task_init() such was when a subsequent call to 26815 task_activate fails. 26816 - PR-1134 Add typedef for max_align_t 26817 - PR-1141 Handle custom stack allocations 26818 sched_releasetcb() will normally free the stack allocated for a task. 26819 However, a task with a custom, user-managed stack may be created using 26820 nxtask_init() followed by nxtask_activate(). If such a custom stack is 26821 used then it must not be freed in this manner or a crash will most 26822 likely result. 26823 26824 This change adds a flag call TCB_FLAG_CUSTOM_STACK that may be passed 26825 in the the pre-allocated TCB to nxtask_init(). This flag is not used 26826 internally anywhere in the OS except that if set, it will prevent 26827 sched_releasetcb() from attempting to free that custom stack. 26828 26829 * Bug Fixes: 26830 - Many private architecture interfaces were using 'up_' instead of the 26831 arch name 'arm_' 26832 This fix is carried over many PRs such as PR-924. Many files also 26833 carried this same error in naming convention and were converted as 26834 well. 26835 26836 - PR-1018 PR-1017 PR-1021 PR-1022 PR-1057 PR-1060 PR-1194 Clean up 26837 internal APIs that were not using the properly naming conventions - 26838 - PR-857 Wrong value for it_interval field in timespec returned by 26839 timer_gettime - PR-902 SMP: On task creation do not clone 26840 uninitialized descriptors 26841 In SMP mode, there is a possibility that a pthread executing one CPU 26842 may create a new task while a pthread on another CPU has allocated 26843 the socket but not yet initialized it. This commit updates the 26844 socket clone test to assure that the socket is both allocated and 26845 initialized before it is cloned. 26846 - PR-911 Use OS signal functions internally to not reset errno that 26847 applications are using 26848 - PR-925 sys/stat.h Change the xtime fields to align with POSIX 26849 standard. Starting from Issue 7 of the POSIX standard the fields 26850 st_atime, st_mtime and st_ctime have a type of strcut timespec instead 26851 of time_t. 26852 - PR-939 openamp: Update to 2020.04.0 - PR-953 lib_vsprintf: Fix issue 26853 where stack would become corrupt on x86_64 26854 This function requires traversing the VA_LIST twice. For some 26855 architectures like x86 and x86_64 this needs to be cloned first. 26856 26857 * Major Changes to the Build System: 26858 Parts of the build system have been refactored to reduce duplication and 26859 simplify Makefile and Make.defs files across many directories. These changes 26860 are particularly beneficial for boards. 26861 26862 Please note that if you develop your own custom boards, you may need to make 26863 some modifications to keep your board's build scripts up-to-date with the 26864 rest of NuttX and avoid a broken or defective build. For details, see 26865 Compatibility Concerns, Changes to Build System, in these release notes. 26866 26867 * New Features: 26868 - PR-894 openamp and libmetal can now be downloaded and configured by 26869 build system - PR-941 Remove 'u' prefix from userspace library in FLAT 26870 Build so it is the same for all build types - PR-1044 ARM: Remove 26871 support for old redundant gcc toolchains 26872 26873 This removes support for the Codesourcery, Atollic, DevKitArm, 26874 Raisonance, and CodeRed toolchains. Not only are these tools old and 26875 no longer used but they are all equivalent to the standard ARM EABI 26876 toolchains. Retaining specific support was not meaningful (and they 26877 are still supported, but now just as generic EABI toolchains). 26878 - PR-1148 PR-1149 Improve build time especially on non-Linux platforms 26879 by providing a C version of incdir.sh 26880 26881 * Bug Fixes: 26882 Many small changes to resolve dependency resolution issues that would 26883 sometimes appear during parallel builds. Parallel builds should be much 26884 more reliable now and bugs filed against any issues found. 26885 26886 - PR-1000 Fix broken support of ZDS-II Toolchain with MSYS 26887 26888 * Architectural Support: 26889 * New Architecture Support: 26890 - PR-879 ARMv8-M support - PR-1051 STM32G474 support 26891 26892 - Initial architectural support for the STM32G474 family of 26893 microcontrollers. In terms of peripherals, currently there is basic 26894 support for the RCC and UART, allowing NuttX to boot to a functional 26895 NSH prompt on this family. Other peripherals on the SoC are not yet 26896 supported and/or not tested yet. Contributions to enable other 26897 peripherals are welcome. This adds support for these variants: 26898 26899 STM32G474C STM32G474M STM32G474R STM32G474Q STM32G474V 26900 26901 * Architectures With Significant Improvements: 26902 - PR-745 The full line of STM32H7 chips are now defined 26903 This adds support for these variants: 26904 26905 STM32H743AG STM32H743AI STM32H743BG STM32H743BI STM32H743IG 26906 STM32H743II STM32H743VG STM32H743VI STM32H743XG STM32H743XI 26907 STM32H743ZG STM32H753AI STM32H753BI STM32H753VI STM32H753XI 26908 STM32H753ZI 26909 26910 - PR-811 i486: Fix corruption of esp register on full context restore 26911 This resolves a long standing issue with running the x86 port under 26912 QEMU where it would crash shortly after boot. 26913 26914 - PR-837 rx65n: Add crashdump support using standby RAM - PR-862 26915 STM32L4: Expose LPTIM timers - PR-868 STM32L4: Extend clock options and 26916 power regulation for based on clock settings 26917 Interface to select the core regulator voltage according to clock 26918 frequency range Usage of this interface during clock configuration 26919 according to chosen clock frequency Option to choose a different 26920 system clock than the main PLL (there is HSI, MSI, HSE and LSE 26921 available to use) Option to not enable the main PLL which allows for 26922 reduced power usage when setting one of the above options as system 26923 clock, to do this you should define STM32L4_BOARD_NOPLL on your 26924 board header. 26925 - PR-960 STM32: Add support for ADC features EXTSEL and JEXTSEL 26926 - PR-1041 STM32H7: Improve IDMA transfer and cache handling 26927 This resolves an issue where the sdmmc driver crashes at boot when 26928 using writeback cache. 26929 26930 This also simplifies the sdmmc driver when the IDMA is in use. There 26931 is no need to mix IDMA and interrupt based transfers; instead, when 26932 making unaligned data tranfers, just make IDMA into an internal 26933 aligned buffer and then copy the data. This method also enables 26934 multiblock transfers, and transfers from/to data buffers which are not 26935 aligned on cache boundary. 26936 - PR-1042 STM32H7: Resolve multiple limitations and bugs with progmem 26937 especailly for partial memory writes 26938 - PR-1045 STM32H7: This gives possibility to send arbitrary number of 26939 bytes from memory to peripheral using DMA also when using write-back 26940 cache 26941 It was not possible to DMA to/from AXI sram if 26942 CONFIG_STM32H7_DMACAPABLE=y When doing TX DMA (e.g. in SPI driver in 26943 simplex-tx mode), it should not be necessary to align the data 26944 buffers to the cache line. 26945 - PR-1103 STM32H7: Resolve clocking and pin configurations bugs that 26946 could cause SDMMC and ETH to fail in some configurations 26947 - PR-1104 STM32H7: Use UUID for Ethernet MAC. This is inline with the 26948 behaviour of STM32F7 26949 - PR-1110 STM32H7: Use FDCANSEL to determin FDCAN clock source if 26950 possible - PR-1165 STM32H7: SPI transaction appears to be completed 26951 before the data has actually been flushed 26952 TX DMA completes before the data has been actually sent out from the 26953 SPI fifo. This is expected, but the exchange should actually wait for 26954 spi tx to finish instead of dma to the fifo to finish. This replaces 26955 the dma completion event with the SPI TXC event for detecting end of 26956 transmission. 26957 26958 - PR-1203 PR-1204 STM32H7: Enable support for BDMA and enable it for 26959 SPI6 26960 - PR-905 x86_64: Resolve linking issue when building with gcc 7 and 9. 26961 - PR-904 x86_64: Resolve compiler aliasing warnings and RNG 26962 pointer cast bug - PR-944 x86_64: Change entrypoint to standard 26963 location 1M 26964 - PR-971 x86_64: Fix bug in rng implementation using intrinsics 26965 - PR-973 x86_64: Fix crash on boot when XSAVE and SSE/AVX is enabled 26966 - PR-974 x86_64: Add support booting NuttX as a Jailhouse Cell 26967 - PR-919 sim: Add host mmap and perror to allow use of LIBC_MODLIB 26968 and BINFMT_LOADABLE 26969 - PR-1198 sim: Use correct errno sign with hostfs interface 26970 - PR-932 z16: Updated toolchain to ZDS-II 5.2.2 26971 - PR-970 K210: Add PLL support 26972 - PR-988 K210: Resolve occasional lock in early boot caused by waiting 26973 forserial driver to initialize 26974 - PR-1205 K210: Add basic GPIOHS support - PR-1112 tiva: Add up_idle 26975 support - PR-1116 NRF52832: Work around chip eratta for SPI Master 1 26976 Byte transfer anomaly - PR-1130 imxrt: Resolve WFI issue by setting 26977 the low power mode to remain in run mode 26978 - PR-1197 cxd56: Fix locking issue in Spresense audio driver causes by 26979 using semaphore in DMA buffer handling code 26980 - PR-1221 Add INTx_C macro defintion 26981 26982 * Driver Support: 26983 * Bug Fixes: 26984 - PR-1206 PR-1207 PR-1210 ioctl function should retun ENOTTY when the 26985 command is not recognized. 26986 26987 * New Driver Support: 26988 - PR-795 PR-1001 Initial NuttX audio driver supporting the Spresense 26989 CXD56 26990 - PR-975 Support for HDC1008 temperature and humidity sensor 26991 - PR-1201 Support for the CS4344 stereo audio DAC 26992 - PR-1145 Support for the FTDI FT232R USB to Serial converter 26993 - PR-1052 gs2200m: Add max payload size to prevent crashing when 26994 sending large packets 26995 - PR-1090 gs2200m: Fix possible packet queue count overflow seen during 26996 streaming - PR-1127 gs2200m: Resolve possible buffer overrun in packet 26997 parsing - PR-1167 pty: Return correct number of bytes when 26998 CONFIG_SERIAL_TERMIOS and OPOST|ONLCR are enabled 26999 27000 * Drivers With Significant Improvements: 27001 - PR-887 PR-888 rptun: Add control for independent control of rx and tx 27002 buffer size 27003 - PR-917 gs2200m: Receive performance improvement for TCP/UDP 27004 - PR-1032 gs2200m: Add SPI-DMA support to spresense 27005 - PR-1046 gs2200m: Add getsockname() support 27006 - PR-1094 PR-1163 gs2200m: Add flow control support to prevent memory 27007 starvation in changing network environments 27008 - PR-1101 gs2200m: Add WPA2-PSK AP mode support, this is now the default 27009 instead of WEP 27010 - PR-1115 SPI slave: Improve interface 27011 Enable enqueue and receive full buffers of data with single call, to 27012 avoid call overhead when sending / receiving large amounts of data. 27013 Enable the slave device to leave received data in the controller 27014 receive buffers and retrieve it from there by polling 27015 - PR-1196 Audio: Add support for using ap_buffer_info without 27016 CONFIG_AUDIO_DRIVER_SPECIFIC_BUFFERS and return ENOTTY if provided ioctl 27017 is not supported 27018 - PR-1222 audio/cxd56: Add audio buffering feature. 27019 27020 * Board Support: 27021 * Significant Improvements: 27022 27023 - PR-1200 The boards_button_initialize and boards_userled_initialize 27024 functions now return the number of buttons and leds, thus their 27025 prototypes have changed from: 27026 void board_button_initialize(void) 27027 void board_userled_initialize(void) 27028 27029 to 27030 27031 uint32_t board_button_initialize(void) 27032 uint32_t board_userled_initialize(void). 27033 27034 * New Board Support: 27035 - PR-1051 ST Micro B-G474E-DPOW1 Discovery Kit 27036 Initial support for the ST Micro B-G474E-DPOW1 Discovery Kit with 27037 STM32G474RE MCU. Currently there is basic support for booting NuttX to 27038 a functional NSH prompt. Other peripherals on the board are not yet 27039 supported or not tested yet. Contributions to enable other peripherals 27040 are welcome. The NSH prompt can be accessed from a host computer via a 27041 Virtual COM Port over the same Micro-USB Type B connection used for 27042 programming/debugging. 27043 - PR-1211 STM32F411-Minimum board (a.k.a. BlackPill) 27044 Initial support for the BlackPill board which is a low cost STM32F411 27045 board. The current support boots NuttX to a functional NSH prompt. 27046 27047 * Boards With Significant Improvements: 27048 - PR-949 qemu-intel64: Add nsh configuration for testing QEMU 27049 virtualization 27050 - PR-966 qemu-i486: Fix issue where console would not accept input 27051 because of wrong IRQ number 27052 - PR-993 stm32h747i-disco: Add support for FMC SDRAM - PR-1029 maix-bit: 27053 Add knsh configuration for testing Kernel mode under QEMU virtualization 27054 - PR-1056 stm32h747i-disco: Add support for FAT and SD Card via SDMMC 27055 - PR-1070 PR-1086 spresense: Add ftpd/ftpc and nxplayer to wifi and rndis 27056 configurations 27057 - PR-1084 imxrt1060-evk: Add dns client and renew command to netnsh 27058 configuration 27059 - PR-1113 lm3s6965ek: Use proper sysclock for QEMU 27060 configuration 27061 - PR-1229 Add support for the inboard joystick 27062 - PR-1232 Architectural re-organization to the initialization of the 27063 video stream driver to comply with other NuttX drivers 27064 27065 * File System: 27066 * Bug Fixes: 27067 - PR-918 tmpfs: Calling statfs could cause files to be removed 27068 recursively - PR-1142 NFS: Use of uint64_t causes issues with gaps in 27069 data since it must be on a 8 byte boundary 27070 - PR-1143 Report correct stats for proxied block and MTD drivers 27071 27072 * Significant Improvements: 27073 - PR-793 Allow use of genromfs to geneate ROMFS 27074 - PR-851 Upgrade littlefs to v2.2.1 27075 - PR-1154 FATFS: Do not rewrite the root directory if it has not been 27076 changed. 27077 - PR-1120 PR-1118 Fill in file size for mtd and block inode 27078 27079 * Networking: 27080 - PR-807 Netlink: Broadcast link status changes to userspace via 27081 RTNLGRP_LINK 27082 - PR-892 Netdb: Multiple DNS Servers 27083 Adds capability to add multiple nameservers on run-time even when not 27084 using resolv.conf and reset the list of nameservers back to default 27085 setting (no nameserver at all or single predefined nameserver in Kconfig). 27086 This is useful for applications that change their cellular network 27087 frequently. 27088 - PR-1015 tcp/conn: Request ARP before 3-way handshake 27089 27090 * Applications: 27091 * Improvements: 27092 - PR-185 PR-828 nshlib 27093 Add the source command. Avoid use of sh where it is not needed since 27094 it pollutes the parent environment including the working directory and 27095 variables. 27096 27097 - PR-236 littlevgl: Add additional config mappings to the library 27098 - PR-264 nxplayer: Add max host and filename for http url 27099 - PR-260 nshlib: Add wget buffer size control with 27100 CONFIG_NSH_WGET_BUFF_SIZE 27101 - PR-243 dhcpd: Add ability for daemon to be cancelled 27102 - PR-238 Remove use the set_errno this is now properly handled by the 27103 libc and OS 27104 - PR-233 hdc1008: Add example application for this driver 27105 27106 * Bug Fixes: 27107 - PR-282 netlib: Fix pathlen computation for netlib_parseurl and 27108 netlib_parsehttpurl 27109 - PR-281 webclient: Check return value of netlib_parseurl correctly 27110 - PR-278 webclient: Handle http/https redirection correctly 27111 - PR-277 webclient: Limit the number of http redirects 27112 - PR-198 webclient: Use getaddrinfo() to get IPv4 address on 27113 dual stack systems 27114 - PR-268 ftpd: Fix EPSV mode for IPv4 27115 - PR-258 nsh: Always try FILE_APPS even if the command is builtin, 27116 this is a regression introduced in 9.0.0 27117 - PR-257 gs2200m: Handle packets over 1500 Bytes, previously would 27118 overflow buffer 27119 - PR-221 gs2200m: Server sockets were not properly being released by 27120 the daemon when close was called 27121 - PR-248 dhcpd: Correct option header check length 27122 - PR-176 cu: Handle NULL character correctly 27123 - PR-287 PR-290 examples: Update nxflat and thttpd Makefile's to fix 27124 a build breakage. 27125 27126 * Compatibility Concerns -- Changes to Build System: 27127 27128 If you are building NuttX for a custom board, you may need to make 27129 some of the following changes in build-related files for your board: 27130 27131 * Rename EXTRADEFINES to EXTRAFLAGS 27132 27133 In your custom board's scripts/Make.defs file, rename EXTRADEFINES to 27134 EXTRAFLAGS. 27135 27136 For example, these lines: 27137 27138 ``` 27139 CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe 27140 ... 27141 CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe 27142 ... 27143 CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) 27144 ``` 27145 27146 would change as follows: 27147 27148 ``` 27149 CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe 27150 ... 27151 CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe 27152 ... 27153 CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) 27154 ``` 27155 27156 See git commit # 459ad9937377a42785692098ff0d73baaa9551e6 in the main 27157 NuttX repository. 27158 27159 If you forget to do this, memory allocations on the heap probably won't 27160 work and your user tasks won't start. 27161 27162 To see why, tools/Config.mk assigns a value to KDEFINE such that the 27163 preprocessor symbol __KERNEL__ will be defined when certain source 27164 files are compiled. KDEFINE is passed to nested invocations of 'make' 27165 as EXTRAFLAGS. If your board's scripts/Make.defs still attempts to use 27166 EXTRADEFINES, the preprocessor symbol __KERNEL__ will not be defined in 27167 some of the places that it should be. Suppose you're building a FLAT 27168 build. In this case, include/nuttx/mm/mm.h will not define 27169 MM_KERNEL_USRHEAP_INIT like it should, which will cause nx_start.c not 27170 to call up_allocate_heap() at startup. Therefore, any attempt to 27171 allocate memory on the heap will fail. 27172 27173 * Rename src/Makefile to src/Make.defs and Modify 27174 27175 This item pertains only to custom boards that are developed in- tree, 27176 meaning under the NuttX boards/ subdirectory. Out-of-tree boards are 27177 not affected. 27178 27179 If your custom board directory is in-tree and in a board family that 27180 uses a 'boards/ARCH/FAMILY/common' directory (such as 27181 boards/arm/stm32/common, boards/arm/cxd56xx/common, etc), then you'll 27182 need to make two minor changes to your custom board's src/Makefile: 27183 27184 (1) Rename it from src/Makefile to src/Make.defs, and 27185 27186 (2) Near the end of that file, replace this line, which usually 27187 appears at the end: 27188 27189 ``` 27190 include $(TOPDIR)/boards/Board.mk 27191 ``` 27192 27193 with these three lines: 27194 27195 ``` 27196 DEPPATH += --dep-path board 27197 VPATH += :board 27198 CFLAGS += $(shell $(INCDIR) $(INCDIROPT) "$(CC)" $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board$(DELIM)board) 27199 ``` 27200 27201 See git commit # 6ca46520df38854bf660f9be54957cceede39ded in the main 27202 NuttX repository. 27203 27204 If you forget to do this, 'make' will report an error, "no rule to make 27205 libboard.a," and the build will fail. 27206 27207 * Rename WINTOOL to CONFIG_CYGWIN_WINTOOL 27208 27209 In your custom board's scripts/Make.defs file, rename any instances of 27210 WINTOOL to CONFIG_CYGWIN_WINTOOL. 27211 27212 For example, change this line: 27213 27214 ``` 27215 ifeq ($(WINTOOL),y) 27216 ``` 27217 27218 to this: 27219 27220 ``` 27221 ifeq ($(CONFIG_CYGWIN_WINTOOL),y) 27222 ``` 27223 27224 See git commit # bd656888f26c92e8832f0e76b395a5ece7704530 in the main 27225 NuttX repository. 27226 27227 * Remove INCDIROPT 27228 27229 In your custom board's src/Make.defs file, remove INCDIROPT from CFLAGS. 27230 27231 For example, change this line: 27232 27233 ``` 27234 CFLAGS += $(shell $(INCDIR) $(INCDIROPT) "$(CC)" $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board$(DELIM)board) 27235 ``` 27236 27237 to this: 27238 27239 ``` 27240 CFLAGS += $(shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board$(DELIM)board) 27241 ``` 27242 27243 This option, which resolves to -w when CONFIG_CYGWIN_WINTOOL is 27244 configured, is now appended to INCDIR in tools/Config.mk. 27245 27246 See git commit # 5eae32577e5d5226e5d3027c169eeb369f83f77d in the main 27247 NuttX repository. 27248 27249 * Remove Unnecessary Variables 27250 27251 In your custom board's scripts/Make.defs file, It is no longer 27252 necessary to define the following variables unless your build requires 27253 that you assign special values to them: 27254 27255 - DIRLINK 27256 - DIRUNLINK 27257 - MKDEP 27258 - ASMEXT 27259 - OBJEXT 27260 - LIBEXT 27261 - EXEEXT 27262 27263 These variables have been refactored into tools/Config.mk. 27264 27265 See these git commits in the main NuttX repository: 27266 9ec9431706fd0eb7c4c4410d84dafff68ff31366 (DIRLINK and DIRUNLINK), 27267 8b42ee421a41214093c0238e479d73a1099b0e82 (MKDEP), and 27268 567962bd6263bf8809fb63c739f6ec668c69c416 (ASMEXT, OBJEXT, LIBEXT, EXEEXT) 27269 27270 * Change ${TOPDIR} to $(TOPDIR) 27271 27272 In your custom board's scripts/Make.defs file, it is recommended to 27273 change ${TOPDIR} to $(TOPDIR) for consistency (change curly braces to 27274 parenthesis). 27275 27276 See git commit # faf3c0254bb63af89f9eb59beefacb4cba26dd9 in the main 27277 NuttX repository. 27278 27279 * Remove Workaround For Missing $(TOPDIR)/Make.defs 27280 27281 In src/Make.defs or src/Makefile for your custom board or custom apps, 27282 the workaround for missing $(TOPDIR)/.config and/or 27283 $(TOPDIR)/Make.defs is no longer needed. To remove the workaround, 27284 delete the minus sign in front of include .config. This is now handled 27285 in the main Makefile and, if those files are missing, will print an 27286 error message with hint to run tools/configure.sh <target>. 27287 27288 Change this line, located near the top of the file: 27289 27290 ``` 27291 -include $(TOPDIR)/Make.defs 27292 ``` 27293 27294 to this: 27295 27296 ``` 27297 include $(TOPDIR)/Make.defs 27298 ``` 27299 27300 See git commit # 1a95cce1a3c3ed8b04d1d86b7bd744352cca45a2 in the main 27301 NuttX repository, and git commit 27302 # ead498a7883a654b1d542da94a5fab3ce163361e in the apps repository. 27303 27304 * Simplify ARCHINCLUDES and ARCHXXINCLUDES 27305 27306 In your custom board's scripts/Make.defs, ARCHINCLUDES and 27307 ARCHXXINCLUDES can be defined without maintaining two different 27308 versions conditioned upon CONFIG_CYGWIN_WINTOOL (renamed from WINTOOL). 27309 Replace syntax similar to the following: 27310 27311 ``` 27312 ifeq ($(CONFIG_CYGWIN_WINTOOL),y) 27313 # Windows-native toolchains 27314 ARCHINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)$(DELIM)include}" 27315 ARCHXXINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)$(DELIM)include}" -isystem "${shell cygpath -w $(TOPDIR)$(DELIM)include$(DELIM)cxx}" 27316 else 27317 # Linux/Cygwin-native toolchain 27318 ARCHINCLUDES = -I. -isystem $(TOPDIR)$(DELIM)include 27319 ARCHXXINCLUDES = -I. -isystem $(TOPDIR)$(DELIM)include -isystem $(TOPDIR)$(DELIM)include$(DELIM)cxx 27320 endif 27321 ``` 27322 27323 with syntax similar to: 27324 27325 ``` 27326 ARCHINCLUDES += ${shell $(INCDIR) -s "$(CC)" $(TOPDIR)$(DELIM)include} 27327 ARCHXXINCLUDES += ${shell $(INCDIR) -s "$(CC)" $(TOPDIR)$(DELIM)include} 27328 ARCHXXINCLUDES += ${shell $(INCDIR) -s "$(CC)" $(TOPDIR)$(DELIM)include$(DELIM)cxx} 27329 INCDIR is defined in tools/Config.mk and resolves to a shell script or batch file that constructs the appropriate command line argument string to specify include directories for your compiler. 27330 ``` 27331 27332 See git commit # 7e5b0f81e93c7e879ce8434d57e8bf4e2319c1c0 in the main 27333 NuttX repository. 27334 27335 * Simplify Board Directory Handling With BOARD_DIR 27336 27337 In your custom board's Make.defs or Makefile, when setting up build 27338 variables containing paths inside your board directory, a new variable 27339 BOARD_DIR has been introduced that simplifies the syntax: 27340 27341 Replace syntax like this: 27342 27343 ``` 27344 $(TOPDIR)$(DELIM)boards$(DELIM)$(CONFIG_ARCH)$(DELIM)$(CONFIG_ARCH_CHIP)$(DELIM)$(CONFIG_ARCH_BOARD) 27345 ``` 27346 27347 with this variable: 27348 27349 ``` 27350 $(BOARD_DIR) 27351 ``` 27352 27353 For example, change this: 27354 27355 ``` 27356 ARCHSCRIPT = -T$(TOPDIR)$(DELIM)boards$(DELIM)$(CONFIG_ARCH)$(DELIM)$(CONFIG_ARCH_CHIP)$(DELIM)$(CONFIG_ARCH_BOARD)$(DELIM)scripts$(DELIM)$(LDSCRIPT) 27357 ``` 27358 27359 to this much simpler syntax: 27360 27361 ``` 27362 ARCHSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT) 27363 ``` 27364 27365 You may find the old syntax being used for variables like ARCHSCRIPT, 27366 LDELFFLAGS, LINKCMDTEMPLATE, SCRIPTDIR, USER_LDSCRIPT, or others. 27367 27368 BOARD_DIR is defined in tools/Config.mk. 27369 27370 See git commit # e83c1400b65c65cbdf59c5abcf2ae368f540faef in the main 27371 NuttX repository. 27372 27373 27374NuttX-10.0.0 Release Notes 27375------------------------ 27376 27377## Major Changes to Core OS 27378 27379### New Features 27380 27381Major changes to the internal, OS timer (wdog) interfaces. The change includes: 27382 27383 * The wdog timer call backs used to support a variable number of arguments. 27384Now they support only a single argument ([PR 27385#1565](https://github.com/apache/incubator-nuttx/pull/1565)). This eliminates 27386(1) the configuration option `CONFIG_MAX_WDOGPARMS` and the OS interfaces 27387`wd_create()` and `wd_delete()` * wdog timer data structures are no longer 27388pre-allocated. Now they are allocated by the caller of `wd_start()`. This (1) 27389eliminates the configuration options `CONFIG_PREALLOC_WDOGS` and 27390`CONFIG_WDOG_INTRESERVE`, (2) eliminates the type `WDOG_ID` which was a pointer 27391type to `struct wdog_s`, and (3) change the type of the first argument of all 27392remaining wdog interfaces functions from `WDOG_ID` to `FAR struct wdog_s *`. 27393 27394Because of these changes, all proprietary drivers maintained by all NuttX users 27395will require modification. The following summaries the required modifications: 27396 27397 * Most drivers have a field in structure like `WDOG_ID wdog`; That must be 27398changed to `struct wdog_s wdog`; That changes the field from a pointer to a 27399`struct wdog_s` to the `struct wdog_s` storage itself. * Eliminate all calls 27400to `wd_create()`. The `WDOG_ID` is not longer managed by the timing subsystem 27401and the `wd_create()` interface has been removed. * The `wd_delete()` 27402interface has also been removed, but more care will need to be exercised: 27403`wd_delete()` also cancels any running timer so, in many case, calls to 27404`wd_delete()` should be replaced with calls to `wd_cancel()`. If you are certain 27405that the timer has never been started, then you must remove the call to 27406`wd_delete()` altogether. Calling `wd_cancel()` with an un-initialized s`truct 27407wdog_s` instance may well cause a fatal crash. * Replace the first parameter 27408of all remaining wdog function calls from. For example, replace a call like `ret 27409= wd_cancel(priv->wdog)` where `priv->wdog` was type `WDOG_ID` with the call 27410`ret = wd_cancel(&priv->wdog)`where `priv->wdog` is now type `struct wdog_s`. 27411 27412 * [PR-1877](https://github.com/apache/incubator-nuttx/pull/1877) libc: 27413 Implement "j" modifier for scanf 27414 27415 * [PR-1864](https://github.com/apache/incubator-nuttx/pull/1864) libc: fs: Add 27416 relative path support 27417 27418 * [PR-1863](https://github.com/apache/incubator-nuttx/pull/1863) libc: 27419 Implement `access()` 27420 27421 * [PR-1866](https://github.com/apache/incubator-nuttx/pull/1866) libc: uio: 27422 enable `writev()` for sockets 27423 27424 * [PR-1853](https://github.com/apache/incubator-nuttx/pull/1853) libc: 27425 Implement `popcount/popcountl/popcountll` 27426 27427 * [PR-1850](https://github.com/apache/incubator-nuttx/pull/1850) Add tool for 27428 parsing the callstack for Trace32 27429 27430 * [PR-1840](https://github.com/apache/incubator-nuttx/pull/1840) Add POLLPRI 27431 for exception condition on the file descriptor 27432 27433 * [PR-1828](https://github.com/apache/incubator-nuttx/pull/1828) Implement 27434 mkdtemp syscall 27435 27436 * [PR-1826](https://github.com/apache/incubator-nuttx/pull/1826) libc: Add 27437 "tm\_zone" member to tm 27438 27439 * [PR-1824](https://github.com/apache/incubator-nuttx/pull/1824) Implement 27440 etpriority syscall 27441 27442 * [PR-1821](https://github.com/apache/incubator-nuttx/pull/1821) Implement 27443 gettid syscall 27444 27445 * [PR-1818](https://github.com/apache/incubator-nuttx/pull/1818) Implement 27446 pipe2 syscall 27447 27448 * [PR-1779](https://github.com/apache/incubator-nuttx/pull/1779) libc: Minimal 27449 umask implementation 27450 27451 * [PR-1758](https://github.com/apache/incubator-nuttx/pull/1758) mm: Add lock 27452 to protect call to mm\_addregion 27453 27454 * [PR-1756](https://github.com/apache/incubator-nuttx/pull/1756) libc: 27455 Implement gethrtime, getrlimit, setrlimit 27456 27457 * [PR-1658](https://github.com/apache/incubator-nuttx/pull/1658) libc: Add 27458 stubs for utimes 27459 27460 * [PR-1615](https://github.com/apache/incubator-nuttx/pull/1615) libc: 27461 Implement tm::tm\_gmtoff field 27462 27463 * [PR-1611](https://github.com/apache/incubator-nuttx/pull/1611) libc: Allocate 27464 file\_struct dynamically 27465 27466 * [PR-1684](https://github.com/apache/incubator-nuttx/pull/1684) Add gdb script 27467 for NuttX thread debugging 27468 27469 * [PR-1607](https://github.com/apache/incubator-nuttx/pull/1607) mm: Implement 27470 malloc\_usable\_size 27471 27472 * [PR-1606](https://github.com/apache/incubator-nuttx/pull/1606) sched/pthread: 27473 Implement pthread\_attr\_detachstate 27474 27475 * [PR-1600](https://github.com/apache/incubator-nuttx/pull/1600) Implement 27476 epol\_pwait and EPOLLONESHOT flag 27477 27478 * [PR-1597](https://github.com/apache/incubator-nuttx/pull/1597) sched: Support 27479 passing non empty argument to init task 27480 27481 * [PR-1596](https://github.com/apache/incubator-nuttx/pull/1596) libc: Replace 27482 all sem\_xxx with \_SEM\_XXX. This insures the correct semaphore interface is 27483 used by userspace and the kernel. 27484 27485 * [PR-1517](https://github.com/apache/incubator-nuttx/pull/1517) sched/wdog: 27486 Change the default value of MAX\_WDOGPARMS from 4 to 2 as wd\_start is two every 27487 where in the code base. Also bump CONFIG\_MAX\_WDOGPARAMS from 1 to 2 in 27488 defconfigs to support pthread\_condclockwait() 27489 27490 * [PR-1486](https://github.com/apache/incubator-nuttx/pull/1486) libc: 27491 Implement ftw and nftw functions 27492 27493 * [PR-1567](https://github.com/apache/incubator-nuttx/pull/1567) libc: 27494 Implement proposed POSIX \_clockwait variants of \_timedwait functions 27495 27496 * [PR-1411](https://github.com/apache/incubator-nuttx/pull/1411) libxx: 27497 Integrate latest uclibcxx 0.2.5 27498 27499 * [PR-1586](https://github.com/apache/incubator-nuttx/pull/1586) libc: Add open 27500 for text (translated) access support 27501 27502 * [PR-1584](https://github.com/apache/incubator-nuttx/pull/1584) libc: 27503 Implement strlcpy function 27504 27505 * [PR-1580](https://github.com/apache/incubator-nuttx/pull/1580) libc: 27506 Implement pthread\_conattr\_etclock 27507 27508 * [PR-1545](https://github.com/apache/incubator-nuttx/pull/1545) sched/wdog: Do 27509 not dynamically allocate wdog\_s. Reduces overhead and brings it inline with 27510 work\_s 27511 27512 * [PR-1534](https://github.com/apache/incubator-nuttx/pull/1534) sched/wdog: 27513 Replace all callback arguments from uint32\_t to wdparm\_t 27514 27515 * [PR-1420](https://github.com/apache/incubator-nuttx/pull/1420) libc: Do not 27516 define localtime\[\_r\] to macro with CONFIG\_LIBC\_LOCALTIME is not defined. 27517 27518 * [PR-1375](https://github.com/apache/incubator-nuttx/pull/1375) libc: Always 27519 declare getenv, link/symlink and atexist/on\_exit. Many C++ libraries reference 27520 these but dont use them 27521 27522 * [PR-1371](https://github.com/apache/incubator-nuttx/pull/1371) libc: Improve 27523 stat/readdir to be more POSIX compliant with S\_xxx macro definition as with 27524 Linux 27525 27526 * [PR-1369](https://github.com/apache/incubator-nuttx/pull/1369) Initialize the 27527 idle stack at the arch layer to better support stack coloring and also make it 27528 compatible with new TLS implementation 27529 27530 * [PR-1292](https://github.com/apache/incubator-nuttx/pull/1292) pthread/mutex: 27531 Add PTHREAD\_RECURSIVE\_MUTEX\_INITIALIZER\_NP support 27532 27533 * [PR-1280](https://github.com/apache/incubator-nuttx/pull/1280) libc: 27534 Implement fseeko and ftello 27535 27536 * [PR-1279](https://github.com/apache/incubator-nuttx/pull/1279) libc: 27537 Implement lstat and realpath 27538 27539 * [PR-1278](https://github.com/apache/incubator-nuttx/pull/1278) libc: 27540 Implement pathconf and fpathconf 27541 27542 * [PR-1269](https://github.com/apache/incubator-nuttx/pull/1269) cstdlib: Add 27543 missing atox to std namespace 27544 27545 * [PR-1264](https://github.com/apache/incubator-nuttx/pull/1264) sched/pthread: 27546 Prohibit the use of pthread\_cleanup API's by kernel threads 27547 27548 * [PR-1440](https://github.com/apache/incubator-nuttx/pull/1440) libc: Add the 27549 UUID libc functions 27550 27551 * [PR-1308](https://github.com/apache/incubator-nuttx/pull/1308) libc: Add 27552 support for \_SC\_NPROCESSORS\_CONF/\_SC\_NPROCESSORS\_ONLN to sysconf 27553 27554 * [PR-1305](https://github.com/apache/incubator-nuttx/pull/1305) libc: 27555 Implement WNOHANG for waitpid and waitid 27556 27557 * [PR-1237](https://github.com/apache/incubator-nuttx/pull/1237) libc: Add 27558 minimal support for locale\_t operation: suplocale, freelocale, newlocale, 27559 userlocale 27560 27561 * [PR-1317](https://github.com/apache/incubator-nuttx/pull/1317) sched/task: 27562 Unify task initialization 27563 27564 * [PR-1187](https://github.com/apache/incubator-nuttx/pull/1187) sched: Unify 27565 main thread and pthread behavior 27566 27567 * [PR-2263](https://github.com/apache/incubator-nuttx/pull/2263) libc/stdio: 27568 Preallocate stdin, stdout, stderr 27569 27570 * [PR-2053](https://github.com/apache/incubator-nuttx/pull/2053) * 27571 [PR-2040](https://github.com/apache/incubator-nuttx/pull/2040) serial/termios: 27572 Support custom baudrate setting 27573 27574### Bug Fixes 27575 27576 * [PR-1911](https://github.com/apache/incubator-nuttx/pull/1911) init\_section 27577 was not being emitted resulting in C++ static constructors not being called. 27578 27579 * [PR-1889](https://github.com/apache/incubator-nuttx/pull/1889) Fix build 27580 error for ::setbuf if CONFIG\_STDIO\_DISABLE\_BUFFERING is set 27581 27582 * [PR-1619](https://github.com/apache/incubator-nuttx/pull/1619) Fix inverted 27583 errno in mq\_open 27584 27585 * [PR-1595](https://github.com/apache/incubator-nuttx/pull/1595) epoll\_wait() 27586 must loop until "maxevents" to fille output evs array 27587 27588 * [PR-1519](https://github.com/apache/incubator-nuttx/pull/1519) libc: Replace 27589 index/rindex from macro to function to protect against side effects with 27590 conflicting local variables 27591 27592 * [PR-1514](https://github.com/apache/incubator-nuttx/pull/1514) Remove usage 27593 for user-space memalign() from kernel/driver code. Instead use the proper 27594 kernel memory interface. 27595 27596 * [PR-1512](https://github.com/apache/incubator-nuttx/pull/1512) / * 27597 [PR-1510](https://github.com/apache/incubator-nuttx/pull/1510) / * 27598 [PR-1507](https://github.com/apache/incubator-nuttx/pull/1507) Remove usage for 27599 user-space malloc()/zalloc()/free() from kernel/driver code. Instead use the 27600 proper kernel memory interface. 27601 27602 * [PR-1496](https://github.com/apache/incubator-nuttx/pull/1496) libc: Change 27603 ctype macro to normal function to resolve macro evaluation side effects 27604 27605 * [PR-1463](https://github.com/apache/incubator-nuttx/pull/146) libc: Replace 27606 all malloc/free with lib\_malloc/lib\_free inside libc 27607 27608 * [PR-1365](https://github.com/apache/incubator-nuttx/pull/1365) up\_assert 27609 should not call exit() directly because it is only callable from userspace 27610 27611 * [PR-1336](https://github.com/apache/incubator-nuttx/pull/1336) syscall: Fix 27612 prctl PR\_SET\_NAME failure if called without pid argument 27613 27614 * [PR-1289](https://github.com/apache/incubator-nuttx/pull/1289) Clear the 27615 error indicator with rewind() 27616 27617 * [PR-1254](https://github.com/apache/incubator-nuttx/pull/1254) libc: mkstemp 27618 only look at the trailing X's instead of the first X 27619 27620 * [PR-1311](https://github.com/apache/incubator-nuttx/pull/1311) libc: Move 27621 double\_t typedef from sys/types.h to math.h 27622 27623 * [PR-1328](https://github.com/apache/incubator-nuttx/pull/1328) Make sure that 27624 pthread\_cleanup functions are only called from userspace 27625 27626 * [PR-1318](https://github.com/apache/incubator-nuttx/pull/1318) 27627 nxsched\_release\_tcb should release stack in kernel build, fixes memory leak 27628 27629 * [PR-2951](https://github.com/apache/incubator-nuttx/pull/2951) sched: Fix 27630 deadlock in nxtask\_exit() for SMP 27631 27632 * [PR-2229](https://github.com/apache/incubator-nuttx/pulls/2229) * 27633 [PR-2298](https://github.com/apache/incubator-nuttx/pulls/2298) * 27634 [PR-2279](https://github.com/apache/incubator-nuttx/pulls/2279) * 27635 [PR-2272](https://github.com/apache/incubator-nuttx/pulls/2272) * 27636 [PR-2264](https://github.com/apache/incubator-nuttx/pulls/2264) * 27637 [PR-1992](https://github.com/apache/incubator-nuttx/pulls/1992) * 27638 [PR-2022](https://github.com/apache/incubator-nuttx/pulls/2022) sched: SMP 27639 fixups that caused locking and removal of some no longer required workarounds 27640 27641 * [PR-1993](https://github.com/apache/incubator-nuttx/pull/1993) libc: Skip 27642 close stdin/stdout/stderr in fclose 27643 27644 * [PR-1997](https://github.com/apache/incubator-nuttx/pull/1997) libc: Remove 27645 all calls to fclose with stdin/stdout/stderr with fclose 27646 27647 27648 27649## Major Changes to Documentation 27650 27651 * [PR-1763](https://github.com/apache/incubator-nuttx/pulls/1763) Add 27652 quickstart documentation 27653 27654 * [PR-1677](https://github.com/apache/incubator-nuttx/pull/1677) Add simulator, 27655 drivers, and contributing instructions for new users 27656 27657 * [PR-1675](https://github.com/apache/incubator-nuttx/pull/1675) Add quickstart 27658 documentation from NuttX Companion 27659 27660 * [PR-1673](https://github.com/apache/incubator-nuttx/pull/1673) Update all the 27661 links in the documentation to point to nuttx.apache.org or the Apache NuttX 27662 wiki instead of old nuttx.org resources 27663 27664 * [PR-1501](https://github.com/apache/incubator-nuttx/pull/1501) Port all the 27665 existing documentation from HTML files to Sphinx based documentation along with 27666 a bunch of updates and improvments 27667 27668 * [PR-1433](https://github.com/apache/incubator-nuttx/pull/1433) Convert README 27669 documentation to Markdown 27670 27671## Major Changes to the Build System 27672 27673### New Features 27674 27675 * [PR-1786](https://github.com/apache/incubator-nuttx/pull/1786) Support 27676 building external code into the OS 27677 27678 * [PR-1396](https://github.com/apache/incubator-nuttx/pull/1396) Make C/C++ 27679 search path common so all boards support uClibc++/libc++ automatically 27680 27681 * [PR-1682](https://github.com/apache/incubator-nuttx/pull/1682) configure.sh 27682 can now list configurations with "-L" option 27683 27684 * [PR-2023](https://github.com/apache/incubator-nuttx/pull/2023) tools: Remove 27685 WSL configuration. This is just Linux now. 27686 27687### Bug Fixes 27688 27689 * [PR-1713](https://github.com/apache/incubator-nuttx/pull/1713) Fix export 27690 target: libboard was missing KERNEL flag. 27691 27692 * [PR-1470](https://github.com/apache/incubator-nuttx/pull/1470) Fix Make.dep 27693 not updated by .config changes 27694 27695 * [PR-1345](https://github.com/apache/incubator-nuttx/pull/1786) Enhance export 27696 target: make BIN directory configurable, export post build script, use LDNAME 27697 instead of LDSCRIPT 27698 27699 * [PR-1332](https://github.com/apache/incubator-nuttx/pull/1332) Include 27700 incdir.c in the export target 27701 27702 * [PR-1995](https://github.com/apache/incubator-nuttx/pull/1995) Fix issue 27703 where wrong extension was generated for mkconfig in WSL builds 27704 27705 * [PR-1949](https://github.com/apache/incubator-nuttx/pull/1949) Fix issue in 27706 make export where nuttx-names.dat was not being generated 27707 27708 * [PR-1682](https://github.com/apache/incubator-nuttx/pull/1682): Fix issue 27709 where windows style paths might not be handled correctly breaking Cygwin builds 27710 27711## Architectural Support 27712 27713### New Architecture Support 27714 27715 * [PR-1847](https://github.com/apache/incubator-nuttx/pull/1847) ARM: Initial 27716 support for ARMV6M to support CortexM0+ 27717 27718 * [PR-1397](https://github.com/apache/incubator-nuttx/pull/1379): EOSS3: 27719 Initial support for the QuickLogic EOS S3 SoC 27720 27721### Architectures With Significant Improvements 27722 27723#### cxd56xx 27724 27725 * [PR-1753](https://github.com/apache/incubator-nuttx/pull/1753) cxd56xx: Use 27726 spinlock in gpioint to improve SMP performance 27727 27728 * [PR-1650](https://github.com/apache/incubator-nuttx/pull/1650) cxd56xx: Use 27729 spinlock in rtc to improve SMP performance 27730 27731 * [PR-1621](https://github.com/apache/incubator-nuttx/pull/1621) cxd56xx: Use 27732 spinlock in serial to improve SMP performance 27733 27734 * [PR-1569](https://github.com/apache/incubator-nuttx/pull/1569) cxd56xx: Add 27735 SMP support to cxd56\_farapi.c 27736 27737 * [PR-1689](https://github.com/apache/incubator-nuttx/pull/1689) cxd56xx: Use 27738 spinlock in uart to improve SMP performance 27739 27740#### ESP32 27741 27742 * [PR-1422](https://github.com/apache/incubator-nuttx/pull/1422) ESP32: Add SPI 27743 driver (Master & Slave) 27744 27745 * [PR-1435](https://github.com/apache/incubator-nuttx/pull/1435) ESP32: Add I2C 27746 driver 27747 27748 * [PR-1491](https://github.com/apache/incubator-nuttx/pull/1491) ESP32: Add SPI 27749 Flash driver 27750 27751 * [PR-1525](https://github.com/apache/incubator-nuttx/pull/1525) ESP32: Add 27752 Ethernet driver 27753 27754 * [PR-1610](https://github.com/apache/incubator-nuttx/pull/1610) ESP32: Improve 27755 SPI transmision (DMA, IOMUX, software CS) 27756 27757 * [PR-1630](https://github.com/apache/incubator-nuttx/pull/1630) ESP32: Add 27758 support for HW RNG 27759 27760 * [PR-1830](https://github.com/apache/incubator-nuttx/pull/1830) ESP32: Add 27761 Power Management of Force-Sleep 27762 27763 * [PR-1754](https://github.com/apache/incubator-nuttx/pull/1754) ESP32: Add 27764 support for external SPIFLASH 27765 27766 * [PR-1613](https://github.com/apache/incubator-nuttx/pull/1613) ESP32: Add 27767 function for switching CPU from 80MHz to 240MHz 27768 27769PR-1712 ESP32: Add support for external MMCSD card over SPI 27770 27771#### IMXRT 27772 27773 * [PR-1868](https://github.com/apache/incubator-nuttx/pull/1868) IMXRT: Add ADC 27774 driver 27775 27776#### Kinetis 27777 27778 * [PR-1624](https://github.com/apache/incubator-nuttx/pull/1624) Kinetis: 27779 USBHOST improvements to avoid race condition durring freeing for queue head 27780 structure by using Async Advance Doorbell. 27781 27782PR-1516 Kinetis K28: Add support for USB High Speed Host 27783 27784PR-1531 Kinetis K28: Add USB state change notifiers in notifier work queue 27785 27786PR-1456 Kinetis K28: Reworked USB driver for setup out data phase 27787 27788 27789 27790#### NRF52 27791 27792 * [PR-1418](https://github.com/apache/incubator-nuttx/pull/1418) NRF52: Add 27793 Timer and RTC drivers 27794 27795 * [PR-1432](https://github.com/apache/incubator-nuttx/pull/1422) NRF52: Add 27796 timer lowerhalf 27797 27798 * [PR-1635](https://github.com/apache/incubator-nuttx/pull/1635) NRF52: Add 27799 support for RTC event handling 27800 27801 * [PR-1636](https://github.com/apache/incubator-nuttx/pull/1636) NRF52: Add 27802 support for PPI peripheral 27803 27804 * [PR-1681](https://github.com/apache/incubator-nuttx/pull/1681) NRF52: Add 27805 support for GPIOTE task mode 27806 27807 * [PR-1726](https://github.com/apache/incubator-nuttx/pull/1726) NRF52: Extend 27808 systimer support 27809 27810 * [PR-1773](https://github.com/apache/incubator-nuttx/pull/1773) NRF52: Add ADC 27811 and PWM support 27812 27813 * [PR-1915](https://github.com/apache/incubator-nuttx/pull/1915) NRF52: Add 27814 serial termios support (no flow control) 27815 27816 * [PR-1907](https://github.com/apache/incubator-nuttx/pull/1907) NRF52: Add 27817 basic error handing for i2c in polling mode to support i2ctool. Still not 27818 handled in DMA mode. 27819 27820 * [PR-1839](https://github.com/apache/incubator-nuttx/pull/1839) NRF52: Add 27821 missing SPI callback register hooks to support drivers like mmcsd 27822 27823 * [PR-1646](https://github.com/apache/incubator-nuttx/pull/1646) NRF52: Better 27824 differentiation between NRF52840 and NRF52832 27825 27826PR-1685 NRF52: Add ARM system reset support. Add UID support. 27827 27828PR-1674 NRF52: Add LFCLK/HFCLK support for selecting oscillator sources. 27829 27830#### RISCV 27831 27832 * [PR-1858](https://github.com/apache/incubator-nuttx/pull/1858) RISCV: Add 27833 missing CSR macros listed in RISC-V spec V1.10. 27834 27835PR-1314 rv32im: Add schedulesigaction.c, SYS\_save\_context handling, skip ECALL 27836instruction when calling up\_swint() 27837 27838#### RX65N 27839 27840 * [PR-1622](https://github.com/apache/incubator-nuttx/pull/1622) RX65N: Add 27841 I2C(RIIC) support 27842 27843 * [PR-1894](https://github.com/apache/incubator-nuttx/pull/1894) RX65N: Add USB 27844 device support 27845 27846 * [PR-1899](https://github.com/apache/incubator-nuttx/pull/1899) RX65N: Add DTC 27847 driver 27848 27849PR-1910 RX65N: Add SPI driver support 27850 27851#### SAMD5E5 27852 27853 * [PR-1515](https://github.com/apache/incubator-nuttx/pull/1515) SAMD5E5: Add 27854 Watchdog timer support 27855 27856 * [PR-1574](https://github.com/apache/incubator-nuttx/pull/1574) SAMD5E5: Add 27857 USB host support 27858 27859 * [PR-1594](https://github.com/apache/incubator-nuttx/pull/1594) SAMD5E5: 27860 Freerun timer, oneshot timer and tickless support 27861 27862 * [PR-1816](https://github.com/apache/incubator-nuttx/pull/1816) SAMD5E5: Add 27863 MTD progmem support and NVM USER PAGE IOTCLs 27864 27865#### SAMA5D2 27866 27867PR-1412 SAMA5D27: Implement system reset to support nsh reboot command 27868 27869PR-1393 SAMA5D2x: Implement SDMMC peripheral support 27870 27871#### S32K 27872 27873PR-1339 S32K: Extend FlexTimer support and add support for PWM 27874 27875PR-1337 S32K: Allow FlexCAN to use to NETDEV\_LATEINIT to handle the case where 27876both FlexCAN and ENET are used 27877 27878#### SIM 27879 * [PR-1914](https://github.com/apache/incubator-nuttx/pull/1914) SIM: SIGUSR1 27880 handling now uses NuttX interrupt logic 27881 27882 * [PR-1859](https://github.com/apache/incubator-nuttx/pull/1859) ESIM: Add 27883 host timer and improve the oneshot timer logic 27884 27885 * [PR-1767](https://github.com/apache/incubator-nuttx/pull/1767) SIM: Allow 27886 access to tty interfaces for better termios support 27887 27888 * [PR-1655](https://github.com/apache/incubator-nuttx/pull/1655) SIM: Add 27889 support for Linux HCI Socket as a NuttX BLE adapter. Full NuttX BLE stack can 27890 be run against any Linux Bluetooth adapter in sim. 27891 27892 * [PR-1558](https://github.com/apache/incubator-nuttx/pull/1558) SIM: Add 27893 support for Stack Smashing Protector. 27894 27895 * [PR-1392](https://github.com/apache/incubator-nuttx/pull/1392) SIM: Make 27896 uClibc++ and libcxx work on sim platform 27897 27898 * [PR-1460](https://github.com/apache/incubator-nuttx/pull/1460) SIM: Call 27899 sched\_note\_cpu\_\* when scheduler instrumentation is enabled 27900 27901#### STM32 27902 27903 * [PR-1865](https://github.com/apache/incubator-nuttx/pull/1865) STM32F4: Add 27904 support for STM32F412CE fixing I2C2/I2C3 and USART1 alt 27905 27906 * [PR-1506](https://github.com/apache/incubator-nuttx/pull/1506) STM32: Add 27907 support for single wire UART push/pull mode 27908 27909 * [PR-1572](https://github.com/apache/incubator-nuttx/pull/1572) STM32F2/F4: 27910 Add options for I-Cache and D-Cache to be enabled/disable. Previously they were 27911 always enabled. 27912 27913 * [PR-1287](https://github.com/apache/incubator-nuttx/pull/1286) STM32F7: 27914 Refactor the FMC driver to support STM32F7 family and add support to the 27915 STM32F46G-DISCO board 27916 27917 * [PR-1275](https://github.com/apache/incubator-nuttx/pull/1275) STM32: Allow 27918 SysTick to be a tickless clock source option 27919 27920 * [PR-1268](https://github.com/apache/incubator-nuttx/pull/1268) STM32: Add 27921 support for STM32F412 with UART / SPI / CAN / I2C / DMA 27922 27923 * [PR-1250](https://github.com/apache/incubator-nuttx/pull/1250) STM32L4: Add 27924 support for booting into DFU mode 27925 27926### Bug Fixes 27927 27928#### ARM 27929 27930 * [PR-1562](https://github.com/apache/incubator-nuttx/pull/1562) ARM: Save 27931 tcb-adj\_stack\_size should be saved without tls overhead 27932 27933 * [PR-1900](https://github.com/apache/incubator-nuttx/pull/1900) ARM: Fix false 27934 reporting for stack usage for unaligned stacks 27935 27936#### AVR 27937 27938 * [PR-1410](https://github.com/apache/incubator-nuttx/pull/1410) avr: Implement 27939 missing double\_t type, CONFIG\_STACK\_ALIGNMENT, linker emulation flags 27940 27941#### CXD56xx 27942 27943 * [PR-1930](https://github.com/apache/incubator-nuttx/pull/1930) cxd56xx: Fix 27944 handle\_irqreq() in cxd56\_cpupause.c 27945 27946 * [PR-1789](https://github.com/apache/incubator-nuttx/pull/1789) cxd56xx: Fix 27947 deadlock issue in up\_txinit() in SMP mode. 27948 27949 * [PR-1620](https://github.com/apache/incubator-nuttx/pull/1620) cxd56xx: Fix 27950 IRQ control in cxd56\_dmac.c 27951 27952 * [PR-1253](https://github.com/apache/incubator-nuttx/pull/1253) cxd56xx: Fix 27953 audio cxd56\_stop where a deadlock could be hit if the worker thread took too 27954 long to turn on AMP 27955 27956 * [PR-1950](https://github.com/apache/incubator-nuttx/pull/1950) cxd56xx: Fix 27957 deadlock and tcb corruption in SMP mode 27958 27959#### ESP32 27960 27961 * [PR-1908](https://github.com/apache/incubator-nuttx/pull/1908) ESP32: Fix 27962 task signal process preemption 27963 27964 * [PR-1941](https://github.com/apache/incubator-nuttx/pull/1941) ESP32: Fix 27965 interrupt clearing of edge interrupt due to issuing in masking interrupt state 27966 27967#### IMXRT 27968 27969 * [PR-1527](https://github.com/apache/incubator-nuttx/pull/1527) IMXRT: Fix 27970 kconfig so that IMXRT\_ENET\_NRXBUFFERS can be set 27971 27972 * [PR-1455](https://github.com/apache/incubator-nuttx/pull/1455) IMXRT: Fix 27973 auto-negotiation for KSZ8081 PHY 27974 27975#### Kinetis 27976 27977 * [PR-1273](https://github.com/apache/incubator-nuttx/pull/1273) Kinetis: Fix 27978 issue in ethernet driver where buffers were blindly initialized and could cause 27979 the TX of the MAC to be in a bad state. Also resolves an issue with interrupts 27980 being throttled in the NVIC. 27981 27982#### NRF52 27983 27984 * [PR-1928](https://github.com/apache/incubator-nuttx/pull/1928) NRF52: Fix PPI 27985 group disable and add group clear 27986 27987 * [PR-1885](https://github.com/apache/incubator-nuttx/pull/1885) NRF52: Fix SPI 27988 driver structures when SPI\_EXCHANGE is not set 27989 27990 * [PR-1799](https://github.com/apache/incubator-nuttx/pull/1799) NRF52: Fix 27991 SPI\_MASTER entry in kconfig 27992 27993 * [PR-1787](https://github.com/apache/incubator-nuttx/pull/1787) NRF52: Fix 27994 base address for SPIM{1,2,3} 27995 27996 * [PR-1777](https://github.com/apache/incubator-nuttx/pull/1777) NRF52: Handle 27997 case where rx or tx buffer could be 0 but data would still be transferred. Also 27998 error if more than max data is requested. 27999 28000 * [PR-1770](https://github.com/apache/incubator-nuttx/pull/1770) NRF52: Fix bug 28001 where SPI cmddata was not properly mapped for SPIM 0,2,3 28002 28003#### RISC-V 28004 28005 * [PR-1909](https://github.com/apache/incubator-nuttx/pull/1909) RISC-V: MIE 28006 instead of MPIE register was being used in up\_schedule\_sigaction for storing 28007 interrupt state 28008 28009#### SIM 28010 28011 * [PR-1903](https://github.com/apache/incubator-nuttx/pull/1903) SIM: Fix 28012 complication issue for WPCAP in Cygwin build 28013 28014 * [PR-1888](https://github.com/apache/incubator-nuttx/pull/1888) SIM: Fix 28015 EOVERFLOW returned when CONFIG\_SIM\_M32 is set 28016 28017 * [PR-1709](https://github.com/apache/incubator-nuttx/pull/1709) SIM: Fix 28018 up\_cpu\_start initialization for macOS with SMP enabled 28019 28020#### STM32 28021 28022 * [PR-1898](https://github.com/apache/incubator-nuttx/pull/1898) STM32F7: Fixes 28023 data loss bug in UART5 with TX DMA 28024 28025 * [PR-1841](https://github.com/apache/incubator-nuttx/pull/1841) STM32: Remove 28026 broken overdriver support 28027 28028 * [PR-1719](https://github.com/apache/incubator-nuttx/pull/1719) STM32: 28029 Lowputc: Ensure USART is disabled before attempting to configuring it 28030 28031 * [PR-1714](https://github.com/apache/incubator-nuttx/pull/1714) STM32H7: Fix 28032 I2C driver interrupt storm 28033 28034 * [PR-1556](https://github.com/apache/incubator-nuttx/pull/1556) STM32: Fix IO 28035 compentation support in STM32F7 and remove incorrect reference in STM32F0/L0/G0 28036 28037 * [PR-1529](https://github.com/apache/incubator-nuttx/pull/1529) STM32: Fix 28038 initialization bug in ADC that prevented adc\_reset() from working correctly 28039 28040 * [PR-1561](https://github.com/apache/incubator-nuttx/pull/1561) STM32: Make 28041 sure that core over-drive is enabled for all chips that support it and operating 28042 at 180MHz. Some were enabled at 180MHz but may have not been stable without 28043 over-drive not configured. 28044 28045 * [PR-1553](https://github.com/apache/incubator-nuttx/pull/1553) STM32F7: Fix 28046 possible interrupt blocking in serial TXDMA ISR 28047 28048 * [PR-1544](https://github.com/apache/incubator-nuttx/pull/1544) STM32: Make 28049 sure IO compensation cell is configured prior to call to 28050 rcc\_enableperipherals() causing syscfg is accessed before it is enabled 28051 28052 * [PR-1380](https://github.com/apache/incubator-nuttx/pull/1380) STM32F7: Fix 28053 tickless driver where th compare register could be set to a value that has 28054 just passed preventing expiration 28055 28056 * [PR-1252](https://github.com/apache/incubator-nuttx/pull/1252) STM32L4: Fix 28057 48MHz MSI clock selection that could cause boot to hang 28058 28059 * [PR-1310](https://github.com/apache/incubator-nuttx/pull/1310) STM32L4: 28060 Configure flash wait states earlier to prevent corruption of execution state 28061 28062 * [PR-1248](https://github.com/apache/incubator-nuttx/pull/1248) STM32L4: Fix 28063 oneshot timer so that a minimum period is set otherwise it will never be 28064 triggered. 28065 28066 * [PR-1247](https://github.com/apache/incubator-nuttx/pull/1247) STM32L47x/8x: 28067 Set additional registers required to place a pin in analog mode 28068 28069 * [PR-1246](https://github.com/apache/incubator-nuttx/pull/1246) STM32L4: Fix 28070 issue where clock divider for serial baud rate was not set correctly 28071 28072#### Miscellaneous 28073 28074 * [PR-1912](https://github.com/apache/incubator-nuttx/pull/1912) Fix 28075 up\_interrupt\_contex() in case of SMP - Make sure the operation is atomic in 28076 case of SMP 28077 28078## Driver Support 28079 28080### Bug Fixes 28081 28082 * [PR-1896](https://github.com/apache/incubator-nuttx/pull/1896) spi\_xx25xx 28083 EEPROM: return the number of bytes written instead of 0 or error 28084 28085 * [PR-1891](https://github.com/apache/incubator-nuttx/pull/1891) serial: Don't 28086 mangle PID when ISIG is changed 28087 28088 * [PR-1856](https://github.com/apache/incubator-nuttx/pull/1856) pipe: In case 28089 of empty pipe with no writers, return EOF instead of EAGAIN 28090 28091 * [PR-1836](https://github.com/apache/incubator-nuttx/pull/1836) stmpe811: Fix 28092 incorrect GPIO interrupt register logic 28093 28094 * [PR-1741](https://github.com/apache/incubator-nuttx/pull/1741) mmcsd\_sdio: 28095 Properly arm the write completion detection 28096 28097 * [PR-1370](https://github.com/apache/incubator-nuttx/pull/1370) can: Fix 28098 incorrect usage of nxsem\_getvalue which caused fifo->rx\_sem to increase with 28099 teach received msg 28100 28101 * [PR-1452](https://github.com/apache/incubator-nuttx/pull/1452) lcd: Fix 28102 memory leak when board\_graphics\_setup fail 28103 28104 28105 28106### New Driver Support 28107 28108 * [PR-1797](https://github.com/apache/incubator-nuttx/pull/1797) leds: WS2812 28109 LED controller (aka Adafruit NeoPixel) 28110 28111 * [PR-1851](https://github.com/apache/incubator-nuttx/pull/1851) kbd: Add 28112 support for SolderParty BlackBerry Q10 Keyboard 28113 28114 * [PR-1618](https://github.com/apache/incubator-nuttx/pull/1618) BQ27426 fuel 28115 gauge 28116 28117 * [PR-1276](https://github.com/apache/incubator-nuttx/pull/1276) Add support 28118 for the ST7735 TFT Controller 28119 28120 * [PR-1233](https://github.com/apache/incubator-nuttx/pull/1233) usbhost: Add 28121 support for CDC-MBIM USB host driver 28122 28123### Drivers With Significant Improvements 28124 28125 * [PR-1816](https://github.com/apache/incubator-nuttx/pull/1816) stmpe811: Add 28126 SPI support for touch screen controller 28127 28128 * [PR-1800](https://github.com/apache/incubator-nuttx/pull/1800) vfs: Add 28129 `FIOCLEX/FIONCLEX` ioctl support 28130 28131 * [PR-1798](https://github.com/apache/incubator-nuttx/pull/1798) mmcsd: Allow 28132 setting `IDMODE_CLOCK` via kconfig 28133 28134 * [PR-1587](https://github.com/apache/incubator-nuttx/pull/1587) BCH: Delay the 28135 sector flush to avoid multiple erase/write operations in sequence write 28136 28137 * [PR-1577](https://github.com/apache/incubator-nuttx/pull/1577) rwbuffer: 28138 Avoid allocating memory for the temporary erase buffer by the FTL driver 28139 28140 * [PR-1466](https://github.com/apache/incubator-nuttx/pull/1466) Altair Modem: 28141 Add board specific logic, Fix issue that SPI4 RX frequency violated AC Spec, 28142 Fix priority of SPI transfer task is too low, Modify timeout value for RX ready 28143 28144 * [PR-1471](https://github.com/apache/incubator-nuttx/pull/1471) ramlog: Add 28145 option to overwrite buffer 28146 28147 * [PR-1547](https://github.com/apache/incubator-nuttx/pull/1547) usbhub: Make 28148 sure to enumerate hubs that report protocol = 1 (High Speed Hub) 28149 28150 * [PR-1374](https://github.com/apache/incubator-nuttx/pull/1374) gpio: Extend 28151 gpio\_pintype\_e for pulldown/up and opendrain 28152 28153 * [PR-1249](https://github.com/apache/incubator-nuttx/pull/1249) bmp280: Add 28154 support for reading temperature 28155 28156 * [PR-1299](https://github.com/apache/incubator-nuttx/pull/1299) mpu60x0: Add 28157 I2C support for the MPU60x0 sensor driver 28158 28159 * [PR-1325](https://github.com/apache/incubator-nuttx/pull/1325) can: expose 28160 NART/ABOM and RTR settings via ioctls 28161 28162 * [PR-1520](https://github.com/apache/incubator-nuttx/pull/1520) note: Move 28163 note driver from syslog to drivers/note 28164 28165 * [PR-1288](https://github.com/apache/incubator-nuttx/pull/1288) / PR-1449 28166 note: Add sched\_note\_syscall\_enter/leave hooks for syscall instrumentation 28167 28168 * [PR-1259](https://github.com/apache/incubator-nuttx/pull/1259) note: Add 28169 buffering support for syscall instrumentation 28170 28171 * [PR-1256](https://github.com/apache/incubator-nuttx/pull/1256) note: Add 28172 hooks for note driver for interrupt instrumentation 28173 28174Board Support ------------- 28175 28176### **Significant Improvements** 28177 28178 * [PR-1618](https://github.com/apache/incubator-nuttx/pull/1618) metro-m4: Add 28179 support for: SmartFS initialization, AT24 EEPROM, GPIO dev, BQ27426 gauge 28180 initialization 28181 28182 * [PR-1727](https://github.com/apache/incubator-nuttx/pull/1729) b-g474e-dpow1: 28183 Add support for FLASH bootloader 28184 28185 * [PR-1683](https://github.com/apache/incubator-nuttx/pull/1683) cxd56xx: Add 28186 wifi\_smp configuration 28187 28188 * [PR-1668](https://github.com/apache/incubator-nuttx/pull/1668) sim: Add new 28189 configuration for SMP 28190 28191 * [PR-1644](https://github.com/apache/incubator-nuttx/pull/1644) 28192 stm32f746g-disco: Move serial console from USART6 to USART1 which is attached 28193 to the USB virtual COM port. 28194 28195 * [PR-1464](https://github.com/apache/incubator-nuttx/pull/1464) cxd56xx: Add 28196 new GNSS functions, support for lower PWM frequency, 28197 CONFIG\_CPUFREQ\_RELEASE\_LOCK, high speed ADC, HPADC input gain configuration, 28198 eMMC device, frame buffer support 28199 28200 * [PR-1405](https://github.com/apache/incubator-nuttx/pull/1405) 28201 stm32f4discovery: Add ELF support to wifi configuration 28202 28203 * [PR-1402](https://github.com/apache/incubator-nuttx/pull/1402) imxrt1060: Add 28204 buttons support to iMXRT1060 28205 28206 * [PR-1590](https://github.com/apache/incubator-nuttx/pull/1590) sim: Add 28207 duktape configuration 28208 28209 * [PR-1532](https://github.com/apache/incubator-nuttx/pull/1532) sim: Add 28210 cromfs configuration 28211 28212 * [PR-1335](https://github.com/apache/incubator-nuttx/pull/1335) cxd56xx: 28213 Enable basic snapshop camera example 28214 28215### New Board Support 28216 28217 * [PR-1664](https://github.com/apache/incubator-nuttx/pull/1664) NRF52: Add 28218 support for NRF52832 MakerDiary MDK board 28219 28220 * [PR-1633](https://github.com/apache/incubator-nuttx/pull/1633) NRF52: Add 28221 support for Sparkfun NRF52832 Breakout Board 28222 28223 * [PR-1728](https://github.com/apache/incubator-nuttx/pull/1728) SAMA5D27: Add 28224 support for Giant Board 28225 28226 * [PR-1397](https://github.com/apache/incubator-nuttx/pull/1397) EOSS3: Initial 28227 support for the QuickLogic EOS S3 SoC QuickFeather board 28228 28229 * [PR-1268](https://github.com/apache/incubator-nuttx/pull/1268) STM32: Add 28230 support for nucleo-f412zg board 28231 28232File System ----------- 28233 28234### **Bug Fixes** 28235 28236 * [PR-1796](https://github.com/apache/incubator-nuttx/pull/1796) vfs: Fix 28237 memory leak calling `pseudorename` 28238 28239 * [PR-1794](https://github.com/apache/incubator-nuttx/pull/1794) vfs: Fix issue 28240 where opendir would remove the trailing whitespace or / 28241 28242 * [PR-1793](https://github.com/apache/incubator-nuttx/pull/1793) vfs: Make sure 28243 that rename of mount point uses pseudorename. Previously mv on a mountpoint 28244 would return err 88. 28245 28246 * [PR-1737](https://github.com/apache/incubator-nuttx/pull/1737) vfs: reuse 28247 file\_dup2 direction in file\_dup to prevent segfault issue 28248 28249 * [PR-1490](https://github.com/apache/incubator-nuttx/pull/1490) Ensure that 28250 filesystems can all support paths that end with '/' 28251 28252 * [PR-1546](https://github.com/apache/incubator-nuttx/pull/1546) ROMFS: Fix 28253 issue with how hard links are followed for ROMFS 28254 28255 * [PR-1442](https://github.com/apache/incubator-nuttx/pull/1442) SmartFS: Fix 28256 file size corruption when opening with overwriting mode 28257 28258 * [PR-1431](https://github.com/apache/incubator-nuttx/pull/1431) nxffs: Fix 28259 scan good block slowly and scan an invalid block 28260 28261PR-1295 fs: for setfd correct the return value 28262 28263### **Significant Improvements** 28264 28265 * [PR-1554](https://github.com/apache/incubator-nuttx/pull/1554) CROMFS: Add 28266 support for hard links 28267 28268 * [PR-1499](https://github.com/apache/incubator-nuttx/pull/1499) FAT: Add 28269 support for UTF8 long filename 28270 28271 * [PR-1479](https://github.com/apache/incubator-nuttx/pull/1479) vfs: Add file 28272 descriptor based events support eventfd() 28273 28274 * [PR-1582](https://github.com/apache/incubator-nuttx/pull/1482) vfs: Add 28275 epoll\_create1() support 28276 28277 * [PR-1579](https://github.com/apache/incubator-nuttx/pull/1579) vfs: Do not 28278 check CONFIG\_NFILE\_STREAMS for mkdir/rename/rmdir/fs\_unlink 28279 28280 * [PR-1355](https://github.com/apache/incubator-nuttx/pull/1355) vfs: Implement 28281 statvfs and fstatvfs 28282 28283 * [PR-1323](https://github.com/apache/incubator-nuttx/pull/1323) vfs: Add 28284 chmod/fchmod/utimes function prototypes 28285 28286Networking ---------- 28287 28288### **Bug Fixes** 28289 28290 * [PR-1267](https://github.com/apache/incubator-nuttx/pull/1267) SocketCAN: 28291 When timestamped frame was received while in CAN2.0B mode the frame got dropped. 28292 28293 * [PR-1446](https://github.com/apache/incubator-nuttx/pull/1446) usrsock: Fix 28294 recv() cannot peek data 28295 28296### **Significant Improvements** 28297 28298 * [PR-1666](https://github.com/apache/incubator-nuttx/pull/1666) Bluetooth: 28299 Bluetooth sockets now use Linux sockaddr types of sockaddr\_l2 sockaddr\_hci 28300 sockaddr\_rc. There are slight breaking changes here that may require 28301 applications to be updated, but this brings the interface inline with Linux. 28302 28303 * [PR-1581](https://github.com/apache/incubator-nuttx/pull/1581) Socket: Add 28304 SOCK\_CLOEXEC/SOCK\_NONBLOCK support 28305 28306 * [PR-1443](https://github.com/apache/incubator-nuttx/pull/1443) usrsock: Add 28307 flag argument to sendto/recvfrom interface in usrsock 28308 28309 * [PR-1238](https://github.com/apache/incubator-nuttx/pull/1238) SocketCAN: Add 28310 support for SocketCAN interface API 28311 28312Applications ------------ 28313 28314### **Significant Improvements** 28315 28316 * [PR-409](https://github.com/apache/incubator-nuttx-apps/pull/409) wamr: 28317 Update version to 09-29-2020 that supports NuttX directly and remove patches 28318 28319 * [PR-407](https://github.com/apache/incubator-nuttx-apps/pull/407) ipcfg: Add 28320 IPv4 configuration file access helper 28321 28322 * [PR-406](https://github.com/apache/incubator-nuttx-apps/pull/406) wamr: Add 28323 configs for heap pool and custom name sections 28324 28325 * [PR-404](https://github.com/apache/incubator-nuttx-apps/pull/404) timer: Add 28326 supplying timer dev path to example 28327 28328 * [PR-403](https://github.com/apache/incubator-nuttx-apps/pull/402) 28329 nxplayer/nxrecorder: Add channel map support 28330 28331 * [PR-396](https://github.com/apache/incubator-nuttx-apps/pull/396) wamr: Add 28332 missing options to kconfig 28333 28334 * [PR-395](https://github.com/apache/incubator-nuttx-apps/pull/395) dhcpc: Try 28335 to get hostname via syscall first 28336 28337 * [PR-391](https://github.com/apache/incubator-nuttx-apps/pull/391) wapi: Add 28338 option to assocated directly via bssid 28339 28340 * [PR-390](https://github.com/apache/incubator-nuttx-apps/pull/390) wapi: App 28341 option to scan partial channel 28342 28343 * [PR-387](https://github.com/apache/incubator-nuttx-apps/pull/387) wamr: Add 28344 support for WAMR web assembly interpreter 28345 28346 * [PR-337](https://github.com/apache/incubator-nuttx-apps/pull/337) docs: 28347 Convert all README files to markdown 28348 28349 * [PR-333](https://github.com/apache/incubator-nuttx-apps/pull/333) webclient: 28350 Add hooks for TLS, extra request headers, PUT method, report status code, 28351 improved error handling 28352 28353 * [PR-329](https://github.com/apache/incubator-nuttx-apps/pull/329) gpio: Add 28354 support for new GPIO pin types 28355 28356 * [PR-317](https://github.com/apache/incubator-nuttx-apps/pull/317) nshlib: 28357 Call symlink if user pass -s for ln command 28358 28359 * [PR-315](https://github.com/apache/incubator-nuttx-apps/pull/315) c++: 28360 Support uClibc++ and libcxx in examples/testing 28361 28362 * [PR-314](https://github.com/apache/incubator-nuttx-apps/pull/314) camera: Add 28363 a simple camera snapshot example 28364 28365 * [PR-378](https://github.com/apache/incubator-nuttx-apps/pull/378) wasm3: 28366 Initial WebAssembly runtime support 28367 28368 * [PR-374](https://github.com/apache/incubator-nuttx-apps/pull/374) bluetooth: 28369 Use the new l2cap socket address type 28370 28371 * [PR-373](https://github.com/apache/incubator-nuttx-apps/pull/373) duktape: 28372 Add duktape to global search path so it can be used as a library 28373 28374 * [PR-372](https://github.com/apache/incubator-nuttx-apps/pull/372) quickjs: 28375 Add support for QuickJS interpreter 28376 28377 * [PR-367](https://github.com/apache/incubator-nuttx-apps/pull/367) nsh: Accept 28378 the command line arguments like sh 28379 28380 * [PR-365](https://github.com/apache/incubator-nuttx-apps/pull/365) duktape: 28381 Add console, print, alert support 28382 28383 * [PR-364](https://github.com/apache/incubator-nuttx-apps/pull/364) cu: 28384 Refactor cu and add support for "-c" to disable \\n to \\r\\n conversion 28385 28386 * [PR-362](https://github.com/apache/incubator-nuttx-apps/pull/362) libuv: Add 28387 support for libuv library 28388 28389 * [PR-352](https://github.com/apache/incubator-nuttx-apps/pull/352) duktape: 28390 Add initial support for duktape 28391 28392 * [PR-346](https://github.com/apache/incubator-nuttx-apps/pull/364) wget: 28393 Enable URL from command line, can be used with ifup, hooks for HTTPS 28394 28395 * [PR-302](https://github.com/apache/incubator-nuttx-apps/pull/302) lvgl: Use 28396 the latest version 7.0.2 28397 28398 * [PR-300](https://github.com/apache/incubator-nuttx-apps/pull/300) note: Add 28399 support for decoding interrupt and syscall instrumentation 28400 28401 * [PR-299](https://github.com/apache/incubator-nuttx-apps/pull/299) nxrecorder: 28402 Add O\_TRUNC when creating a file 28403 28404 * [PR-296](https://github.com/apache/incubator-nuttx-apps/pull/296) bmp280: Add 28405 support for BMP180 to BMP280 application 28406 28407 * [PR-294](https://github.com/apache/incubator-nuttx-apps/pull/294) can: Add 28408 cansend and candump utilities for interacting with SocketCAN 28409 28410### Bug Fixes 28411 28412 * [PR-411](https://github.com/apache/incubator-nuttx-apps/pull/411) wgetjson: 28413 Fix build breakage 28414 28415 * [PR-405](https://github.com/apache/incubator-nuttx-apps/pull/405) nxplayer: 28416 Fix missing "%d" in a sscanf call 28417 28418 * [PR-400](https://github.com/apache/incubator-nuttx-apps/pull/400) dhcpc: 28419 Handle case where gethostname() might be empty 28420 28421 * [PR-399](https://github.com/apache/incubator-nuttx-apps/pull/399) build: Fix 28422 build system issue where compiler would only compile first assembly file 28423 28424 * [PR-393](https://github.com/apache/incubator-nuttx-apps/pull/393) build: Fix 28425 build system issue where ARCHCPUFLAGS in cxx command was lost 28426 28427 * [PR-392](https://github.com/apache/incubator-nuttx-apps/pull/392) wapi: Make 28428 wapi more robust in failure cases 28429 28430 * [PR-383](https://github.com/apache/incubator-nuttx-apps/pull/383) ntpclient: 28431 Fix NTP daemon state in case of DNS failure 28432 28433 * [PR-344](https://github.com/apache/incubator-nuttx-apps/pull/344) gs2200m: 28434 Fix freeing of uninitialized memory 28435 28436 * [PR-335](https://github.com/apache/incubator-nuttx-apps/pull/335) ntp: Fix 28437 malformated authentication headers in NTP packet 28438 28439 * [PR-331](https://github.com/apache/incubator-nuttx-apps/pull/331) telnetd: 28440 Fix buffer overflow issue clearing socket address 28441 28442 * [PR-312](https://github.com/apache/incubator-nuttx-apps/pull/312) build: Make 28443 sure to include incdir when running make export 28444 28445 * [PR-377](https://github.com/apache/incubator-nuttx-apps/pull/377) readline: 28446 Fix stack overflow when application name is too long 28447 28448 * [PR-359](https://github.com/apache/incubator-nuttx-apps/pull/259) nshlib: Fix 28449 memory corrupt in nsh\_parse if pthread\_create() failed 28450 28451 * [PR-354](https://github.com/apache/incubator-nuttx-apps/pull/354) dhcpd: Fix 28452 member name for "ds\_pid" 28453 28454## Security Issues Fixed In This Release 28455 28456## Compatibility Concerns 28457 28458## Changes to Build System 28459 28460### In Apps, Change `$(TOPDIR)` to `$(APPDIR)` 28461 28462In the 'apps' repo, Makefiles are now using `$(APPDIR)` instead of `$(TOPDIR)`. 28463 28464In your custom app's Makefile, it is recommended to change `$(TOPDIR)` to 28465`$(APPDIR)`. 28466 28467Replace this line: 28468 28469include $(TOPDIR)/Make.defs 28470 28471With this: 28472 28473include $(APPDIR)/Make.defs 28474 28475See * [PR-326](https://github.com/apache/incubator-nuttx-apps/pull/326), git 28476commit # 28477`[deaa6c5b7bf8445b4a300691525f60aa506be0d7](https://github.com/apache/incubator-nuttx-apps/commit/deaa6c5b7bf8445b4a300691525f60aa506be0d7)` 28478in the NuttX 'apps' repository. 28479 28480### Custom Boards Don't Need `ARCHINCLUDES` and `ARCHXXINCLUDES` Definitions 28481 28482As part of an effort to unify support for uClibc++ and libc++, the C/C++ include 28483search path definitions `ARCHINCLUDES` and `ARCHXXINCLUDES` are now defined in 28484one central place in `tools/Config.mk`. It is no longer necessary to define 28485these in every board's `scripts/Make.defs`. Boards included in the NuttX 28486repository have been updated, but if you are building NuttX for a custom board 28487and are using C++, you may want to make the following changes: 28488 28489In your board's configuration, ensure that you have enabled either 28490`CONFIG_UCLIBCXX` or `CONFIG_LIBCXX` as appropriate. 28491 28492In your custom board's `scripts/Make.defs` file, remove lines like these: 28493 28494CINCPATH := ${shell $(INCDIR) -s "$(CC)" $(TOPDIR)$(DELIM)include} CXXINCPATH := 28495${shell $(INCDIR) -s "$(CC)" $(TOPDIR)$(DELIM)include$(DELIM)cxx} ARCHINCLUDES 28496+= $(CINCPATH) ARCHXXINCLUDES += $(CINCPATH) $(CXXINCPATH) 28497 28498In case your `scripts/Make.defs` uses different names, such as `ARCHINCLUDESXX` 28499instead of `ARCHXXINCLUDES`, you'll need to find all uses of that variable and 28500update them to use `ARCHXXINCLUDES`. 28501 28502See * [PR-1396](https://github.com/apache/incubator-nuttx/pull/1396), git 28503commit 28504#[d32e9c38dfb0659a7f3c0cf586ba1584cd7eb3d6](https://github.com/apache/incubator-nuttx/commit/d32e9c38dfb0659a7f3c0cf586ba1584cd7eb3d6) 28505in the main NuttX repository. 28506 28507See also * [PR-1399](https://github.com/apache/incubator-nuttx/pull/1399), git 28508commit 28509#[6abd03d53ff9164fb17ea4aca701a49fbbf751c0](https://github.com/apache/incubator-nuttx/commit/6abd03d53ff9164fb17ea4aca701a49fbbf751c0). 28510 28511### Custom Boards Don't Need `HOSTCC` and `HOSTCFLAGS` Definitions 28512 28513The NuttX build system uses several binary utilities that it compiles and runs 28514on the host computer. To build these binaries, it needs to know the host C 28515compiler and C flags. Previously, every board's `scripts/Make.defs` file had to 28516provide this information via `HOSTCC` and `HOSTCFLAGS` Definitions. As part of 28517an effort to simplify the build system, these definitions are now automatically 28518provided by logic in `tools/Config.mk`. Boards included in the NuttX repository 28519have been updated, but if you are building NuttX for a custom board, you may 28520want to make the following changes: 28521 28522In your custom board's `scripts/Make.defs` file, remove lines like these: 28523 28524HOSTCC = gcc HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -g -pipe 28525 28526Sometimes they may look like this: 28527 28528ifeq ($(CONFIG\_WINDOWS\_NATIVE),y) 28529 HOSTCC = mingw32-gcc.exe 28530else 28531 HOSTCC = gcc 28532endif 28533 28534Note: These changes are OPTIONAL. 28535 28536You may still set these definitions in your board's scripts/Make.defs, and your 28537definitions will override the ones in tools/Config.mk. 28538 28539Also, you may override these definitions for a single run by providing them on 28540the make command line. This is useful if, for example, you wish to build debug 28541versions of these host binaries: define HOSTCFLAGS with -g on the command line. 28542 28543See * [PR-1398](https://github.com/apache/incubator-nuttx/pull/1398), git 28544commit 28545#[ee875b2a260cb4cc532b8ca303c2515e24c39b4e](https://github.com/apache/incubator-nuttx/commit/ee875b2a260cb4cc532b8ca303c2515e24c39b4e) 28546in the main NuttX repository. 28547 28548### Removal of Unused `ARCHCCVERSION` and `ARCHCCMAJOR` 28549 28550The ARCHCCVERSION and ARCHCCMAJOR variables are unused. Historically they were 28551defined in many boards' scripts/Make.defs. These were removed from all boards in 28552the NuttX repository, but if you are building NuttX for a custom board, you may 28553want to remove this unnecessary boilerplate. 28554 28555In your custom board's `scripts/Make.defs` file, remove lines like these: 28556 28557 28558 28559ARCHCCVERSION = ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 28560's/^gcc version \\(\[0-9\\.\]\\)/\\1/g' -e 's/\[-\\ \].\*//g' -e '1q'} 28561ARCHCCMAJOR = ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1} 28562 28563See * [PR-1344](https://github.com/apache/incubator-nuttx/pull/1344), git 28564commit 28565#[f5311de6b42466ab5c6ef299dab0ecc417131bbe](https://github.com/apache/incubator-nuttx/commit/f5311de6b42466ab5c6ef299dab0ecc417131bbe) 28566in the main NuttX repository. 28567 28568### Custom Boards May Not Need `EXTRA_LIBS` and `EXTRA_LIBPATHS` Definitions 28569 28570The `EXTRA_LIBS` and `EXTRA_LIBPATHS` make variables were previously defined in 28571many boards' `scripts/Make.defs` files. These are now defined in a more central 28572location: `arch/*/src/*/Toolchain.defs`. Your board's `scripts/Make.defs` 28573usually includes this file. Boards included in NuttX have been updated, but if 28574you are building NuttX for a custom board, you may need to update your board's 28575`scripts/Make.defs` file to ensure you build with the correct definitions. 28576 28577If you have lines like these: 28578 28579EXTRA\_LIBPATHS = -L "${shell dirname "$(LIBSUPXX)"}" EXTRA\_LIBS = -lsupc++ 28580 28581You may want to do one of the following: 28582 28583* If they are redundant to the definitions provided in the included 28584`arch/*/src/*/Toolchain.defs`, remove these lines, or * If they contain 28585additional needed libraries and paths not present in 28586`arch/*/src/*/Toolchain.defs`, remove any redundant definitions and change the 28587assignment '`=`' to '`+=`'. 28588 28589See * [PR-1404](https://github.com/apache/incubator-nuttx/pull/1404), git 28590commit 28591#[4910d43ab0fc360dbddb1f8a31db2a3ee383b46d](https://github.com/apache/incubator-nuttx/commit/4910d43ab0fc360dbddb1f8a31db2a3ee383b46d) 28592in the main NuttX repository. 28593 28594### Custom Boards May Not Need CC, CXX, CPP, LD, STRIP, AR, NM, OBJCOPY, and 28595OBJDUMP Definitions 28596 28597These `make` variables were previously defined in many boards' scripts/Make.defs 28598files with copy-paste duplication spanning many hundreds of files. These are now 28599defined in a more central location: `arch/*/src/*/Toolchain.defs`. Your board's 28600`scripts/Make.defs` usually includes this file. Boards included in NuttX have 28601been updated, but if you are building NuttX for a custom board, you may need to 28602update your board's `scripts/Make.defs` file to ensure you build with the 28603correct definitions. 28604 28605If you have lines that define `CC`, `CXX`, `CPP`, `LD`, `STRIP`, `AR`, `NM`, 28606`OBJCOPY`, and `OBJDUMP`, such as these: 28607 28608CC = $(CROSSDEV)gcc CXX = $(CROSSDEV)g++ CPP = $(CROSSDEV)gcc -E -P -x c LD = 28609$(CROSSDEV)ld STRIP = $(CROSSDEV)strip --strip-unneeded AR = $(ARCROSSDEV)ar rcs 28610NM = $(ARCROSSDEV)nm OBJCOPY = $(CROSSDEV)objcopy OBJDUMP = $(CROSSDEV)objdump 28611 28612 28613 28614You may want to do one of the following: 28615 28616* If they are redundant to the definitions provided in the included 28617`arch/*/src/*/Toolchain.defs`, remove these lines, or * If they are different 28618from the definitions in `arch/*/src/*/Toolchain.defs`, leave them as-is and they 28619will take precedence. 28620 28621See * [PR-1426](https://github.com/apache/incubator-nuttx/pull/1426), git 28622commit 28623#[b329e2377dd8816f37ad0408279926829efdf85d](https://github.com/apache/incubator-nuttx/commit/b329e2377dd8816f37ad0408279926829efdf85d) 28624in the main NuttX repository. 28625 28626### Consolidated ARCROSSDEV and CROSSDEV 28627 28628The `ARCROSSDEV` and `CROSSDEV` variables always had identical values. Therefore 28629`ARCROSSDEV` has been removed and `CROSSDEV` is used instead. Boards included in 28630NuttX have been updated, but if you are building NuttX for a custom board, you 28631may need to update your board's build scripts to use the `CROSSDEV` variable. 28632 28633See * [PR-1439](https://github.com/apache/incubator-nuttx/pull/1439), git 28634commit 28635#[5efa93ec26fd8a3fd85b24a2008bb743f96027fb](https://github.com/apache/incubator-nuttx/commit/5efa93ec26fd8a3fd85b24a2008bb743f96027fb) 28636in the main NuttX repository. 28637 28638NuttX-10.1.0 Release Notes 28639------------------------ 28640 28641# What's New In This Release 28642 28643## Highlights 28644 28645* Better separation between kernel and userspace. 28646* Heap and stack management improvements. 28647* More closely follow POSIX and Linux interfaces. 28648* Symmetric Multi-Processing (SMP) performance improvements and bug fixes. 28649* Networking improvements and bug fixes. 28650* Added support for many microcontrollers and boards, and improved support for many existing ones. 28651* Many added and improved drivers. 28652* Build system improvements to deliver faster builds. 28653* Thousands of NuttX files converted to Apache 2.0 License with permission of their authors. 28654* Improved listing of 3rd party licenses used in NuttX (see LICENSE, NOTICE, and DISCLAIMER-WIP files). 28655 28656## Major Changes to Core OS 28657 28658### New Features 28659* [#2324](https://github.com/apache/incubator-nuttx/pull/2324) audio: libsamplerate: add initial audio Sample Rate Converter 28660* [#2820](https://github.com/apache/incubator-nuttx/pull/2820) arch, boards, drivers, include, sched, wireless: Change spinlock APIs. 28661* [#2885](https://github.com/apache/incubator-nuttx/pull/2885) Ensure the kernel component don't call userspace API 28662 28663### Bug Fixes 28664* [#1852](https://github.com/apache/incubator-nuttx/pull/1852) sysconf: add _SC_PAGESIZE sysconf support 28665* [#1922](https://github.com/apache/incubator-nuttx/pull/1922) sched: nxtask_start should call entry point directly for kernel thread 28666* [#1994](https://github.com/apache/incubator-nuttx/pull/1994) libc: Don't fclose and fopen file in freopen 28667* [#2005](https://github.com/apache/incubator-nuttx/pull/2005) Fix note_syscall_leave_s to avoid unaligned access 28668* [#2043](https://github.com/apache/incubator-nuttx/pull/2043) sched: Add SCHED_INSTRUMENTATION_HIRES support 28669* [#2044](https://github.com/apache/incubator-nuttx/pull/2044) sched: Add note_syscall args support 28670* [#2071](https://github.com/apache/incubator-nuttx/pull/2071) pollnotify: we should send poll events before semaphore incrementes. 28671* [#2076](https://github.com/apache/incubator-nuttx/pull/2076) libc: math: Make this friendly with libcxx 28672* [#2111](https://github.com/apache/incubator-nuttx/pull/2111) LIBCXX related fixes 28673* [#2147](https://github.com/apache/incubator-nuttx/pull/2147) sched: Use nx_close() inside OS 28674* [#2176](https://github.com/apache/incubator-nuttx/pull/2176) syscall/syscall.csv: Increase number of arguments for prctl() 28675* [#2204](https://github.com/apache/incubator-nuttx/pull/2204) sched: irq: Fix enter_critical_section() in an irq handler for SMP 28676* [#2218](https://github.com/apache/incubator-nuttx/pull/2218) sched: signal.h: fix compile failed when open TTY_SIGINT 28677* [#2229](https://github.com/apache/incubator-nuttx/pull/2229) sched/sched/sched_waitid.c: Allow WNOHANG 28678* [#2236](https://github.com/apache/incubator-nuttx/pull/2236) sched/task/task_exithook.c: Remove a redundant assignment 28679* [#2243](https://github.com/apache/incubator-nuttx/pull/2243) libcxx: Update [0001-libcxx-Port-to-NuttX-https-nuttx.apache.org](http://0001-libcxx-Port-to-NuttX-https-nuttx.apache.org)-RTOS.patch 28680* [#2255](https://github.com/apache/incubator-nuttx/pull/2255) sys/epoll: sync the epoll define with linux 28681* [#2256](https://github.com/apache/incubator-nuttx/pull/2256) unistd/sched_sporadic: correct the disable value 28682* [#2261](https://github.com/apache/incubator-nuttx/pull/2261) sched/timer: add support of CLOCK_MONOTONIC 28683* [#2262](https://github.com/apache/incubator-nuttx/pull/2262) sched/init: init the default home directory to environment 28684* [#2285](https://github.com/apache/incubator-nuttx/pull/2285) libc/stdlib: Fix range check in strtoul(l) 28685* [#2326](https://github.com/apache/incubator-nuttx/pull/2326) libc: Enhance getopt function 28686* [#2407](https://github.com/apache/incubator-nuttx/pull/2407) libc: machine: arch: Support armv8-m relocation 28687* [#2418](https://github.com/apache/incubator-nuttx/pull/3447) libc: Change OK/ERROR from macro to enum 28688* [#2420](https://github.com/apache/incubator-nuttx/pull/2420) sched/signal: Remove redundant checks 28689* [#2437](https://github.com/apache/incubator-nuttx/pull/2765) sched/sched/sched_waitpid.c: Fix return value 28690* [#2449](https://github.com/apache/incubator-nuttx/pull/2449) mm/circbuf: fix the problem of dividing by zero 28691* [#2450](https://github.com/apache/incubator-nuttx/pull/2450) unistd/getopt: remove number of arguments limit 28692* [#2451](https://github.com/apache/incubator-nuttx/pull/2451) libc: pthread_mutexattr_getprotocol: modify prototype 28693* [#2455](https://github.com/apache/incubator-nuttx/pull/2455) sched/sched/sched_waitpid.c: Discard the correct child entry 28694* [#2475](https://github.com/apache/incubator-nuttx/pull/2475) sched/sched_waitid.c: Fix two bugs when CONFIG_SCHED_CHILD_STATUS is enabled 28695* [#2487](https://github.com/apache/incubator-nuttx/pull/2487) sched: clock/time: add CLOCK_BOOTTIME definition 28696* [#2492](https://github.com/apache/incubator-nuttx/pull/2492) procfs: make array const to reduce memory use 28697* [#2494](https://github.com/apache/incubator-nuttx/pull/2494) sched: Fix SMP 28698* [#2509](https://github.com/apache/incubator-nuttx/pull/2509) libc: net: implement ether_aton/ether_aton_r 28699* [#2517](https://github.com/apache/incubator-nuttx/pull/2517) sched: spinlock: Introduce SP_WFE() and SP_SEV() 28700* [#2518](https://github.com/apache/incubator-nuttx/pull/2518) sched: Don't forward gettid to getpid directly 28701* [#2530](https://github.com/apache/incubator-nuttx/pull/2530) libc: Implement posix_fallocate 28702* [#2533](https://github.com/apache/incubator-nuttx/pull/2533) sched: Make the number of queue/signal used by irq handler configurable 28703* [#2534](https://github.com/apache/incubator-nuttx/pull/2534) libc: Implement getppid 28704* [#2538](https://github.com/apache/incubator-nuttx/pull/2538) sched: pthread: Fix potential bugs in pthread_condclockwait.c 28705* [#2574](https://github.com/apache/incubator-nuttx/pull/2574) libc: dumpbuffer: dump buffer enhancement 28706* [#2580](https://github.com/apache/incubator-nuttx/pull/2580) sched: arch & sched: task: Fix up_exit() and nxtask_exit() for SMP 28707* [#2585](https://github.com/apache/incubator-nuttx/pull/2585) libc: netdb: Move hostbuffer out of the stack 28708* [#2602](https://github.com/apache/incubator-nuttx/pull/2740) sched: Add include/sys/poll.h 28709* [#2604](https://github.com/apache/incubator-nuttx/pull/2604) libc: Add b64_ntop and b64_pton implementation 28710* [#2616](https://github.com/apache/incubator-nuttx/pull/2616) libc/dumpvbuffer: update the vector ptr correctly 28711* [#2624](https://github.com/apache/incubator-nuttx/pull/2624) sched: implement the default test-and-set semantics 28712* [#2627](https://github.com/apache/incubator-nuttx/pull/2627) OS internal function should indicate the error by return negative value 28713* [#2630](https://github.com/apache/incubator-nuttx/pull/2630) libc: net: implement socketpair 28714* [#2631](https://github.com/apache/incubator-nuttx/pull/2631) sched: mqueue: simplify the mqueue reailize 28715* [#2650](https://github.com/apache/incubator-nuttx/pull/2650) libc: ctype/iscntrl: correct the control character function 28716* [#2653](https://github.com/apache/incubator-nuttx/pull/2653) sched: Don't call sched_lock()/unlock() in nx_waitid()/waitpid() for SMP 28717* [#2668](https://github.com/apache/incubator-nuttx/pull/2668) Kernel module should prefer functions with nx/kmm prefix 28718* [#2675](https://github.com/apache/incubator-nuttx/pull/2675) libc: Add placement new and new[] function 28719* [#2693](https://github.com/apache/incubator-nuttx/pull/2693) libxx: use built-in __aeabi_atexit() if LIBSUPCXX is enabled 28720* [#2694](https://github.com/apache/incubator-nuttx/pull/2694) libc/machine/arch: fix build break if enable armv8 ELF 28721* [#2719](https://github.com/apache/incubator-nuttx/pull/2719) sched/task: setup the scheduling policy to task 28722* [#2726](https://github.com/apache/incubator-nuttx/pull/2726) sched: sched: Remove sched_lock/unlock from nxsched_set_affinity() 28723* [#2737](https://github.com/apache/incubator-nuttx/pull/2737) sched: task: Fix a potential bug in nxtask_assign_pid() 28724* [#2740](https://github.com/apache/incubator-nuttx/pull/2740) sched/timer: get the previous reload value correctly 28725* [#2741](https://github.com/apache/incubator-nuttx/pull/2741) libc: unistd/fpathconf: enhance fpathconf 28726* [#2742](https://github.com/apache/incubator-nuttx/pull/2742) libc: pthread/cond: enhance pthread_cond_destroy 28727* [#2744](https://github.com/apache/incubator-nuttx/pull/2744) sched: task: Fix comments and label in nxtask_assign_pid() 28728* [#2765](https://github.com/apache/incubator-nuttx/pull/2765) sched: pthread: Return get_errno instead the hardcode value 28729* [#2767](https://github.com/apache/incubator-nuttx/pull/2767) sched/wqueue/notifier: protect the work notifier with critical section 28730* [#2797](https://github.com/apache/incubator-nuttx/pull/2797) sched: group: Fix group_kill_children() for SMP 28731* [#2849](https://github.com/apache/incubator-nuttx/pull/2849) mqueue: Add _MQ_OPEN, _MQ_CLOSE and _MQ_UNLINK macro 28732* [#2855](https://github.com/apache/incubator-nuttx/pull/2855) libs: Remove the duplicated _NX_ and _MQ_ macro 28733* [#2865](https://github.com/apache/incubator-nuttx/pull/2865) libc: :machine:risc-v:unifying elf relocation code 28734* [#2872](https://github.com/apache/incubator-nuttx/pull/2872) sched: pthread: Fix pthread cmdline issue 28735* [#2881](https://github.com/apache/incubator-nuttx/pull/2881) libc: Move stack check stuff from libc/stdlib/ to libc/assert/ 28736* [#2904](https://github.com/apache/incubator-nuttx/pull/2904) libc: unistd/getcwd: enhance getcwd when buf is NULL 28737* [#2906](https://github.com/apache/incubator-nuttx/pull/2906) mm: umm_heap: valloc: support valloc (LEGACY) 28738* [#2910](https://github.com/apache/incubator-nuttx/pull/2910) libc/hex2bin: fix handling of segment offsets 28739* [#2919](https://github.com/apache/incubator-nuttx/pull/2919) sched: fix fd leak in dlopen 28740* [#2938](https://github.com/apache/incubator-nuttx/pull/2938) libs: misc: Remove critical section in lib_filesem.c for SMP 28741* [#2942](https://github.com/apache/incubator-nuttx/pull/2492) mtd: progmem: Add up_progmem_read callback guarded by ARCH_HAVE_PROGMEM_READ 28742* [#2946](https://github.com/apache/incubator-nuttx/pull/2946) sched: task: Call nxtask_flushstreams() without critical section 28743* [#2960](https://github.com/apache/incubator-nuttx/pull/2960) sched: signal: sigdeliver: fix system block when kill signal to idle in SMP 28744* [#2980](https://github.com/apache/incubator-nuttx/pull/2980) include: Add iso646.h for alternative spellings 28745* [#2981](https://github.com/apache/incubator-nuttx/pull/2981) sched: Remove all group id related stuff 28746* [#3033](https://github.com/apache/incubator-nuttx/pull/3033) unistd: Fix getpriority not handling invalid input value 28747* [#3080](https://github.com/apache/incubator-nuttx/pull/3080) sched: semaphore: Remove a redundant critical section in nxsem 28748* [#3083](https://github.com/apache/incubator-nuttx/pull/3083) libc: stdio/lib_clearerr: Did not clear stream buffer flags in clearerr 28749* [#3086](https://github.com/apache/incubator-nuttx/pull/3086) mm: improve the memory manager modularity and reduce the information explosion 28750* [#3111](https://github.com/apache/incubator-nuttx/pull/3111) sched: Sporadic scheduler: Fix time calculation and compile errors when assertions are enabled: 28751* [#3115](https://github.com/apache/incubator-nuttx/pull/3115) libc: time: localtime: fix race condition 28752* [#3121](https://github.com/apache/incubator-nuttx/pull/3121) mm/heap: Move semaphore related declaration to private header 28753* [#3123](https://github.com/apache/incubator-nuttx/pull/3123) sched: pthread: Remove a redundant critical section in pthread_condclockwait.c 28754* [#3131](https://github.com/apache/incubator-nuttx/pull/3131) mm: Minor fix for heap manager 28755* [#3159](https://github.com/apache/incubator-nuttx/pull/3159) mm: mm_heap: Remove critical section in mm_sem.c 28756* [#3170](https://github.com/apache/incubator-nuttx/pull/3170) libc: Move getopt() variables into TLS 28757* [#3196](https://github.com/apache/incubator-nuttx/pull/3196) sched/signal: Implement SA_NODEFER 28758* [#3228](https://github.com/apache/incubator-nuttx/pull/3228) mm/mm_heap: fix compile failed when open DEBUG_MM 28759* [#3244](https://github.com/apache/incubator-nuttx/pull/3244) libdsp: Improvements for libdsp and support for fixed16 libdsp implementation 28760* [#3247](https://github.com/apache/incubator-nuttx/pull/3247) sched: Move the default Task Stack size to Stack menu 28761* [#3251](https://github.com/apache/incubator-nuttx/pull/3251) libc: update pthread_once according to the specification 28762* [#3253](https://github.com/apache/incubator-nuttx/pull/3253) libc pthread: Fix pthread_rwlock_init return error 28763* [#3268](https://github.com/apache/incubator-nuttx/pull/3268) libdsp/fixed16: add open-loop handler 28764* [#3272](https://github.com/apache/incubator-nuttx/pull/3272) libc: Implement getopt_long() and getopt_long_only() 28765* [#3280](https://github.com/apache/incubator-nuttx/pull/3280) libc: Correct some getopt() logic 28766* [#3289](https://github.com/apache/incubator-nuttx/pull/3289) sched: task: Fix to initialize the task-specific data 28767* [#3294](https://github.com/apache/incubator-nuttx/pull/2418) libc: getopt(): Fix Use of Pointer before NULL check 28768* [#3299](https://github.com/apache/incubator-nuttx/pull/3299) libc: getopt_common(): Correct handling of unsupported long options. 28769* [#3308](https://github.com/apache/incubator-nuttx/pull/3308) libc: getopt_long(): Add support for required argument format 28770* [#3445](https://github.com/apache/incubator-nuttx/pull/3445) libc: update stream getoffset to handle write case 28771* [#3447](https://github.com/apache/incubator-nuttx/pull/2450) libc: correct zoneinfo genromfs source directory 28772 28773## Major Changes to the Build System 28774 28775### New Features 28776* [#1834](https://github.com/apache/incubator-nuttx/pull/1834) License/authorship handling scripts 28777* [#2107](https://github.com/apache/incubator-nuttx/pull/2107) build: Makefile should reference CONFIG_HOST_xxx 28778* [#2392](https://github.com/apache/incubator-nuttx/pull/2392) configure.sh: support custom board build config with absolute path 28779* [#2824](https://github.com/apache/incubator-nuttx/pull/2824) build/esp32: Create Flash size configuration and a new DOWNLOAD make target 28780* [#3317](https://github.com/apache/incubator-nuttx/pull/3317) tols: Update python scripts to py3 and lint all of them againt Black 28781 28782### Bug Fixes 28783* [#1890](https://github.com/apache/incubator-nuttx/pull/1890) make/expression: improving up asm/C/C++ compile times(make with multi-jobs only) 28784* [#1940](https://github.com/apache/incubator-nuttx/pull/1940) cygwin build - path issue fix for Renesas arch 28785* [#2032](https://github.com/apache/incubator-nuttx/pull/2032) build: Change .external_dummy to dummy 28786* [#2101](https://github.com/apache/incubator-nuttx/pull/2101) build: Add $(OBJS) and $(BIN) to CLEAN macro to clean objects also in subdirectories 28787* [#2192](https://github.com/apache/incubator-nuttx/pull/2192) build: Move __NuttX__ definition to tools/[Config.mk](http://Config.mk) 28788* [#2221](https://github.com/apache/incubator-nuttx/pull/2221) tools: Avoid messing the final binary nuttx.(bin,hex,...) compilation msg 28789* [#2335](https://github.com/apache/incubator-nuttx/pull/2335) build: Parallelize depend file generation 28790* [#2380](https://github.com/apache/incubator-nuttx/pull/2380) tools: Fix nuttx-gdbinit for armv7-m with FPU 28791* [#2404](https://github.com/apache/incubator-nuttx/pull/2404) Update checkrelease script to check [readme.md](http://readme.md) instead of .txt 28792* [#2411](https://github.com/apache/incubator-nuttx/pull/2411) tools: Add 'handle SIGUSR1' to nuttx-gdbinit for the NuttX sim SMP 28793* [#2432](https://github.com/apache/incubator-nuttx/pull/2432) build system: add missing --obj-path to MKDEP 28794* [#2557](https://github.com/apache/incubator-nuttx/pull/2557) tools/version.sh: Fix the version retrieved from GIT 28795* [#2561](https://github.com/apache/incubator-nuttx/pull/2561) tools: Fix version.sh 28796* [#2642](https://github.com/apache/incubator-nuttx/pull/2642) tools/version.sh: Fix the version retrieved from git-tag 28797* [#2673](https://github.com/apache/incubator-nuttx/pull/2673) tools: esp32: add a gdb script to show backtrace 28798* [#2679](https://github.com/apache/incubator-nuttx/pull/2679) tools: esp32: btdecode.sh: Script to decode the Xtensa backtrace. 28799* [#2701](https://github.com/apache/incubator-nuttx/pull/2701) tools: gdbinit: add support for reporting total and used stack size 28800* [#2729](https://github.com/apache/incubator-nuttx/pull/2729) tools: esp32: backtrace.gdbscript: Add comments 28801* [#2803](https://github.com/apache/incubator-nuttx/pull/2803) tools: esp32: Remove some duplicated output 28802* [#2882](https://github.com/apache/incubator-nuttx/pull/2882) tools: esp32: refine the QEMU image generation. 28803* [#2895](https://github.com/apache/incubator-nuttx/pull/2895) tools: esp32: fix warnings from ShellCheck 28804* [#2930](https://github.com/apache/incubator-nuttx/pull/2930) tools: version.sh: If the version is not available, use 0.0.0 28805* [#2982](https://github.com/apache/incubator-nuttx/pull/2982) tools: nxstyle: Verify relative path in the file header 28806* [#3004](https://github.com/apache/incubator-nuttx/pull/3004) tools: esp32XX: Delete the Makefile that downloads IDF. 28807* [#3012](https://github.com/apache/incubator-nuttx/pull/3012) tools: esp32xx: Few fixes/improvements to the post build scripts 28808* [#3017](https://github.com/apache/incubator-nuttx/pull/3017) tools: esp32: [Config.mk](http://Config.mk): Revert part of "Don't abort make when QEMU script fails" 28809* [#3094](https://github.com/apache/incubator-nuttx/pull/3094) tools: version.sh: Fix PATCH including extra version 28810 28811## Architectural Support 28812 28813### New Architectures 28814* [#1995](https://github.com/apache/incubator-nuttx/pull/1995) arch: Add custom arch chip build support 28815* [#2161](https://github.com/apache/incubator-nuttx/pull/2161) Added Support for more TI Tiva Microcontrollers: TM4C123GH6PZ, TM4C123GH6PGE, TM4C129ENCPDT, and TM4C129ENCZAD. 28816* [#2566](https://github.com/apache/incubator-nuttx/pull/2566) arch/risc-v: Add BL602 support 28817* [#2974](https://github.com/apache/incubator-nuttx/pull/2974) STM32L5 Architecture Support 28818* [#3001](https://github.com/apache/incubator-nuttx/pull/3001) arch:riscv64:basic porting for C906 28819* [#3023](https://github.com/apache/incubator-nuttx/pull/3023) Remove nr5m100 and gap8 support 28820 28821### Architectures with significant improvements 28822 28823#### ARM 28824* [#2042](https://github.com/apache/incubator-nuttx/pull/2042) Fix interrupt stack handlings for ARM SMP 28825* [#2061](https://github.com/apache/incubator-nuttx/pull/2061) Refactor arm interrupt stack related code 28826* [#2309](https://github.com/apache/incubator-nuttx/pull/2309) Fix armv7-a L2CC and apply the code to the sabre-6quad board 28827* [#2876](https://github.com/apache/incubator-nuttx/pull/2876) arm: ARMv6-M vector table offset register support 28828* [#2932](https://github.com/apache/incubator-nuttx/pull/2932) arch: armv6-m: Apply armv7-m signal handling logic 28829* [#2944](https://github.com/apache/incubator-nuttx/pull/2944) armv8-m: Fix EXC_RETURN for non-secure usage 28830* [#2990](https://github.com/apache/incubator-nuttx/pull/2990) arch/armv7-m: Adds dwt helper functions for controlling watchpoints i… 28831 28832#### BL602 28833* [#2614](https://github.com/apache/incubator-nuttx/pull/2614) bl602: Update register maps and lower half drivers 28834* [#2633](https://github.com/apache/incubator-nuttx/pull/2633) BL602: Add support for system reset modes 28835* [#2655](https://github.com/apache/incubator-nuttx/pull/2655) arch/risc-v/bl602 : add pwm onshot watchdog driver 28836* [#2659](https://github.com/apache/incubator-nuttx/pull/2659) arch/risc-v/bl602 : add spiflash(hardware sf controller) 28837* [#2669](https://github.com/apache/incubator-nuttx/pull/2669) risc-v/bl602 : add gpioirq、 i2c(master) driver. 28838* [#2804](https://github.com/apache/incubator-nuttx/pull/2804) arch/risc-v/bl602: spi_master support. 28839* [#2809](https://github.com/apache/incubator-nuttx/pull/2809) arch:risc-v:bl602: enable FPU for this target. 28840* [#2836](https://github.com/apache/incubator-nuttx/pull/2836) :risc-v:bl602:add support for elf file apps 28841* [#2991](https://github.com/apache/incubator-nuttx/pull/2991) risc-v/bl602: Add wifi and ble support 28842 28843#### CXD56XX 28844* [#2750](https://github.com/apache/incubator-nuttx/pull/2750) arch: cxd56xx: Add i2c bitbang lower driver 28845* [#2830](https://github.com/apache/incubator-nuttx/pull/2830) Driver-specific spinlock for cxd56_serial.c 28846 28847#### ESP32 28848* [#1893](https://github.com/apache/incubator-nuttx/pull/1893) Add ESP32 WiFi adapter and driver 28849* [#1942](https://github.com/apache/incubator-nuttx/pull/1942) Implement BASIC reset logic 28850* [#1945](https://github.com/apache/incubator-nuttx/pull/1945) Added Timer Support 28851* [#1958](https://github.com/apache/incubator-nuttx/pull/1958) When PSRAM is enabled allow drivers and tasks to allocate memory from a separate internal memory 28852* [#1978](https://github.com/apache/incubator-nuttx/pull/1978) Add power management of deep-sleep 28853* [#2074](https://github.com/apache/incubator-nuttx/pull/2074) Add real-time timer support for WiFi 28854* [#2138](https://github.com/apache/incubator-nuttx/pull/2138) Add Partition and OTA device 28855* [#2199](https://github.com/apache/incubator-nuttx/pull/2199) SPI Flash driver uses global sem for all MTD 28856* [#2224](https://github.com/apache/incubator-nuttx/pull/2224) Add SPI Flash hardware encryption I/O support 28857* [#2234](https://github.com/apache/incubator-nuttx/pull/2234) Include cache workaround to PSRAM 28858* [#2242](https://github.com/apache/incubator-nuttx/pull/2242) Watchdog support (MWDTs) 28859* [#2269](https://github.com/apache/incubator-nuttx/pull/2269) Add high memory support to work with PSRAM 28860* [#2294](https://github.com/apache/incubator-nuttx/pull/2294) Refactor ESP32 Wi-Fi driver 28861* [#2296](https://github.com/apache/incubator-nuttx/pull/2296) added support to automonitor by capture 28862* [#2474](https://github.com/apache/incubator-nuttx/pull/2474) Optimize IRAM usage based on esp-idf 28863* [#2514](https://github.com/apache/incubator-nuttx/pull/2514) allows the rtc wdt to be configured in bootloader and used later 28864* [#2515](https://github.com/apache/incubator-nuttx/pull/2515) Added support for RTC WDT 28865* [#2550](https://github.com/apache/incubator-nuttx/pull/2550) enables started flag if the wdt was turned on in bootloader 28866* [#2613](https://github.com/apache/incubator-nuttx/pull/2613) Added driver api to reload counter instantly 28867* [#2716](https://github.com/apache/incubator-nuttx/pull/2716) Add AES hardware accelerator driver 28868* [#2721](https://github.com/apache/incubator-nuttx/pull/2613) Add efuse driver 28869* [#2831](https://github.com/apache/incubator-nuttx/pull/2831) Writeback PSRAM data when mapping SPI Flash address to ESP32's address bus 28870* [#2840](https://github.com/apache/incubator-nuttx/pull/2840) Add esp32_gpio_matrix_in/out to replace ROM functions 28871* [#2858](https://github.com/apache/incubator-nuttx/pull/2858) Fix a memory leak when discarding a large packet. 28872* [#2939](https://github.com/apache/incubator-nuttx/pull/2939) Refactor ESP32 WiFi driver to support station and softAP coexistence 28873* [#2947](https://github.com/apache/incubator-nuttx/pull/2947) esp32_ummap: write back spiram cache before calling Cache_Flush 28874* [#2965](https://github.com/apache/incubator-nuttx/pull/2965) Add more flash options to esptool 28875* [#2979](https://github.com/apache/incubator-nuttx/pull/2979) Add support for I2C tracing 28876* [#2983](https://github.com/apache/incubator-nuttx/pull/2983) Extract memory layout definitions to a separate header 28877* [#2999](https://github.com/apache/incubator-nuttx/pull/2999) Add WPA2 Enterprise and WPA3 support 28878* [#3003](https://github.com/apache/incubator-nuttx/pull/3003) Re-organise the different heap regions 28879* [#3048](https://github.com/apache/incubator-nuttx/pull/3048) timer driver refactor 28880* [#3233](https://github.com/apache/incubator-nuttx/pull/3233) Bugfixes and Improvements for SPI DMA Exchange function 28881 28882#### ESP32C3 28883* [#2870](https://github.com/apache/incubator-nuttx/pull/2870) Support for ESP32-C3 GPIO Driver 28884* [#2875](https://github.com/apache/incubator-nuttx/pull/2875) risc-v/esp32c3: Add support for Main System Watchdog Timer 28885* [#2901](https://github.com/apache/incubator-nuttx/pull/2901) esp32c3: Add system reset. 28886* [#2965](https://github.com/apache/incubator-nuttx/pull/2965) ESP32XX: Add more flash options to esptool 28887* [#3006](https://github.com/apache/incubator-nuttx/pull/3006) esp32-c3: Adds timer driver 28888* [#3007](https://github.com/apache/incubator-nuttx/pull/3007) risc-v/esp32-c3: complements serial driver 28889* [#3028](https://github.com/apache/incubator-nuttx/pull/3028) ESP32-C3: Add I2C drive 28890* [#3029](https://github.com/apache/incubator-nuttx/pull/3029) esp32-c3: Adds termios support 28891* [#3040](https://github.com/apache/incubator-nuttx/pull/3040) riscv/esp32c3: Add ESP32-C3 WLAN netcard driver 28892* [#3126](https://github.com/apache/incubator-nuttx/pull/3126) risc-v/esp32-c3: Add support to SPI Flash 28893* [#3160](https://github.com/apache/incubator-nuttx/pull/3160) riscv/esp32c3: Add standard C atomic function 28894 28895#### IMX6 28896* [#2595](https://github.com/apache/incubator-nuttx/pull/2595) Add imx_enet driver 28897 28898#### IMXRT 28899* [#2212](https://github.com/apache/incubator-nuttx/pull/2212) imxrt: adds support for WDOG1 28900* [#2354](https://github.com/apache/incubator-nuttx/pull/2354) imxrt: Added support for DP83825I PHY 28901* [#2461](https://github.com/apache/incubator-nuttx/pull/2461) imxrt: Added NETDEV_LATEINIT option for Ethernet 28902* [#2471](https://github.com/apache/incubator-nuttx/pull/2471) imxrt: Support serial single-wire mode and fix parity settings 28903* [#2929](https://github.com/apache/incubator-nuttx/pull/2929) imxrt: changes to FlexCAN driver support 28904 28905#### NRF52 28906* [#2148](https://github.com/apache/incubator-nuttx/pull/2148) nrf52_wdt: split into low-level API and watchdog driver lower-half 28907* [#2149](https://github.com/apache/incubator-nuttx/pull/2149) nrf52832: add errata mitigation code for various RADIO issues 28908* [#2182](https://github.com/apache/incubator-nuttx/pull/2182) nrf52: support configuring no console/serial 28909* [#2189](https://github.com/apache/incubator-nuttx/pull/2189) nrf52_spi: support unconnected MISO/MOSI pins 28910* [#2207](https://github.com/apache/incubator-nuttx/pull/2207) nrf52: add POWER register definitions; support enabling DC/DC regulator 28911* [#2270](https://github.com/apache/incubator-nuttx/pull/2270) nRF52 SPI improvements 28912* [#2440](https://github.com/apache/incubator-nuttx/pull/2440) nrf52 ADC: minor fixes 28913* [#2674](https://github.com/apache/incubator-nuttx/pull/2674) nrf52_i2c: add support for I2C_M_NOSTOP and I2C_M_NOSTART flags 28914* [#2705](https://github.com/apache/incubator-nuttx/pull/2705) nrf52: Add a static copy buffer for i2c NOSTART transfers 28915* [#2712](https://github.com/apache/incubator-nuttx/pull/2712) nRF52: support stack coloration 28916* [#2717](https://github.com/apache/incubator-nuttx/pull/2717) I2C bitbang driver (and nRF52 implementation) 28917* [#2735](https://github.com/apache/incubator-nuttx/pull/2735) nRF52: add support for building SoftDevice BLE controller 28918* [#2756](https://github.com/apache/incubator-nuttx/pull/2756) nrf52: add stackcheck support 28919 28920#### RP2040 28921* [#2916](https://github.com/apache/incubator-nuttx/pull/2916) rp2040: Raspberry Pi Pico SMP support 28922* [#2927](https://github.com/apache/incubator-nuttx/pull/2927) rp2040: Fix LDFLAGS for boot stage2 28923* [#2952](https://github.com/apache/incubator-nuttx/pull/2952) rp2040: Add I2C driver support 28924* [#2986](https://github.com/apache/incubator-nuttx/pull/2986) rp2040: Add SPI driver support 28925* [#3002](https://github.com/apache/incubator-nuttx/pull/3002) rp2040: SPI driver DMA transfer support 28926* [#3057](https://github.com/apache/incubator-nuttx/pull/3057) rp2040: Fix SPI halfword DMA transfer 28927 28928#### S32K1XX 28929* [#2900](https://github.com/apache/incubator-nuttx/pull/2900) s32k1xx: Support ramfunc 28930 28931#### STM32 28932* [#2010](https://github.com/apache/incubator-nuttx/pull/2010) arch/arm/src/stm32h7/stm32_spi.c: fixed build issue when SPI is configured 28933* [#2095](https://github.com/apache/incubator-nuttx/pull/2095) arch: stm32: fix otghs logic to support interface requests 28934* [#2177](https://github.com/apache/incubator-nuttx/pull/2177) FLASH waiting cycles are configured based on HCLK. 28935* [#2180](https://github.com/apache/incubator-nuttx/pull/2180) stm32 - Add register mappings for STM32G474 VREFBUF 28936* [#2194](https://github.com/apache/incubator-nuttx/pull/2194) stm32 - Add register mappings for STM32Gxxxxx-family DAC 28937* [#2273](https://github.com/apache/incubator-nuttx/pull/2273) stm32/stm32_spi: Add SPI register definitions for STM32G47xxx 28938* [#2288](https://github.com/apache/incubator-nuttx/pull/2288) stm32: Add DMAMUX register mappings and request IDs 28939* [#2325](https://github.com/apache/incubator-nuttx/pull/2325) arch/arm/src/stm32/stm32_serial.c: for flowcontrol use common idiom for enabling/disabling RX interrupts 28940* [#2473](https://github.com/apache/incubator-nuttx/pull/2473) STM32 - Add ADC register definitions for STM32G4 family 28941* [#2477](https://github.com/apache/incubator-nuttx/pull/2477) STM32 FLASH latency is calculated based on Vin 28942* [#2985](https://github.com/apache/incubator-nuttx/pull/2985) stm32 Ethernet hardening 28943 28944#### STM32F7 28945* [#2209](https://github.com/apache/incubator-nuttx/pull/2209) stm32f7/stm32_serial.c: fix console re-initialisation if DMA enabled 28946* [#3489](https://github.com/apache/incubator-nuttx/pull/3489) stm32f7: Freeze tickless timer during debug halt. 28947 28948#### STM32H7 28949* [#2880](https://github.com/apache/incubator-nuttx/pull/2880) stm32h7: add definitions for DAC 28950* [#2955](https://github.com/apache/incubator-nuttx/pull/2955) stm32h7:Add DBGMCU missing from master 28951* [#2994](https://github.com/apache/incubator-nuttx/pull/2994) stm32h7: Allow custom clock configuration to use stdclockconfig 28952* [#3143](https://github.com/apache/incubator-nuttx/pull/3143) stm32h7: DMA BDMA does not auto disabled on completion 28953* [#3207](https://github.com/apache/incubator-nuttx/pull/3207) usbhost: Add usb host tracing strings to stm32h7 28954* [#3458](https://github.com/apache/incubator-nuttx/pull/3458) stm32h7: Adds stm32_dbgmcu.h to match stm32f7 port 28955* [#3461](https://github.com/apache/incubator-nuttx/pull/3461) stm32h7: Expose flash lock, unlock, and write protect functions to boards 28956 28957#### STM32L4 28958* [#2068](https://github.com/apache/incubator-nuttx/pull/2068) STM32L4: Improvements on ADC driver 28959* [#2178](https://github.com/apache/incubator-nuttx/pull/2178) STM32L4 ADC driver: extenal event configuration 28960* [#2220](https://github.com/apache/incubator-nuttx/pull/2220) STM32L4 TIMER: Add some helper functions 28961* [#2232](https://github.com/apache/incubator-nuttx/pull/2232) STM32L4 ADC: Add injected channel support. 28962 28963#### STM32L5 28964* [#3090](https://github.com/apache/incubator-nuttx/pull/3090) stm32l5: Optional LSE xtal drive strength ramp-up 28965 28966#### Renesas RX65N 28967* [#2469](https://github.com/apache/incubator-nuttx/pull/2469) USB Host Driver Support 28968 28969#### Risc-V 28970* [#2470](https://github.com/apache/incubator-nuttx/pull/2470) risc-v: Introduce basic setjmp support 28971* [#2918](https://github.com/apache/incubator-nuttx/pull/2918) risc-v: up_sigdeliver missing fpu contexts. 28972 28973#### RV64 28974* [#2928](https://github.com/apache/incubator-nuttx/pull/2928) rv64:add API up_copyfullstate for later FPU support 28975* [#3018](https://github.com/apache/incubator-nuttx/pull/3018) rv64:c906:enable DP FPU support 28976* [#3073](https://github.com/apache/incubator-nuttx/pull/3073) rv64:c906:demo protect build without the PMP 28977* [#3087](https://github.com/apache/incubator-nuttx/pull/3087) rv64: keep the stack to be 16bytes aligned 28978* [#3098](https://github.com/apache/incubator-nuttx/pull/3098) rv64:fix 64bit data type and instruction for FPU handlers 28979* [#3203](https://github.com/apache/incubator-nuttx/pull/3203) rv64:c906:add risc-v PMP and change mem map for protect build. 28980 28981#### Xtensa 28982* [#1933](https://github.com/apache/incubator-nuttx/pull/1933) Add support to PSRAM using SPIRAM interface 28983* [#2014](https://github.com/apache/incubator-nuttx/pull/2014) Add the optional interrupt stack to the Xtensa architecture 28984* [#2352](https://github.com/apache/incubator-nuttx/pull/2352) Print the bakctrace on assertions 28985* [#2504](https://github.com/apache/incubator-nuttx/pull/2504) Get full backtrace from interrupts. 28986* [#3015](https://github.com/apache/incubator-nuttx/pull/3015) hostfs: Make host_stat populate st_size 28987 28988### Minor changes 28989 28990* [#1904](https://github.com/apache/incubator-nuttx/pull/1904) xtensa: ESP32: Fixed the type of cpuint variables in esp32_emac.c 28991* [#1943](https://github.com/apache/incubator-nuttx/pull/1943) xtensa: ESP32: Fix and clean some corners of GPIOs configuration. 28992* [#1947](https://github.com/apache/incubator-nuttx/pull/1947) xtensa: esp32: Fix crash on startup 28993* [#1948](https://github.com/apache/incubator-nuttx/pull/1948) xtensa: ESP32: Fixes the GPIO's function mask test 28994* [#1960](https://github.com/apache/incubator-nuttx/pull/1960) xtensa: xtensa.h: Include sys/types.h needed if STACK_COLORATON is enabled 28995* [#1968](https://github.com/apache/incubator-nuttx/pull/1968) arm: kinetis: freedom-k64f: Declare missing NUM_BUTTONS 28996* [#1990](https://github.com/apache/incubator-nuttx/pull/1990) arm: kinetis: flexcan fixed compile error 28997* [#2120](https://github.com/apache/incubator-nuttx/pull/2120) arm: stm32h7: Fix missing 'ret' reported by Frank-Christian Kruegel 28998* [#2159](https://github.com/apache/incubator-nuttx/pull/2159) xtensa: esp32: Fix SPI master DMA RX buffer memcpy size erro 28999* [#2160](https://github.com/apache/incubator-nuttx/pull/2160) arm: stm32l4/stm32l4_adc.c: fix copy-paste mistake with CONFI 29000* [#2210](https://github.com/apache/incubator-nuttx/pull/2210) arm: stm32/stm32_adc.c: do not allow negative ref count 29001* [#2214](https://github.com/apache/incubator-nuttx/pull/2214) xtensa: esp32: Fix rt-timer issues 29002* [#2233](https://github.com/apache/incubator-nuttx/pull/2233) xtensa: esp32: Fix the memory regions with regards to the range used by the ROM 29003* [#2240](https://github.com/apache/incubator-nuttx/pull/2240) arm: nrf52 GPIO/GPIOTE: better expose pin interrupt capability 29004* [#2284](https://github.com/apache/incubator-nuttx/pull/2284) arm: stm32h7/stm32_dmamux.h: Fix errors in bitfield definitions 29005* [#2286](https://github.com/apache/incubator-nuttx/pull/2286) arm: stm32f0l0g0/stm32_dmamux.h: Fix errors in bitfield definitions 29006* [#2287](https://github.com/apache/incubator-nuttx/pull/2287) arm: stm32h7/stm32_dmamux.h: Add missing CCR SPOL defines 29007* [#2300](https://github.com/apache/incubator-nuttx/pull/2300) arm: sam34: compile error on SAM34 TWI 29008* [#2316](https://github.com/apache/incubator-nuttx/pull/2844) risc-v: minor fix 29009* [#2330](https://github.com/apache/incubator-nuttx/pull/2330) xtensa: esp32/esp32_tim.c: Fix build when debug is enabled. 29010* [#2336](https://github.com/apache/incubator-nuttx/pull/2336) arm: stm32l4: correct macros STM32L4_CAN_MCR_OFFSET, etc... to match defines 29011* [#2344](https://github.com/apache/incubator-nuttx/pull/2344) xtensa: esp32/esp32_gpio.c: Fix GPIO IRQ assert condition 29012* [#2351](https://github.com/apache/incubator-nuttx/pull/2351) xtensa: esp32: Fix issues of force-sleep 29013* [#2355](https://github.com/apache/incubator-nuttx/pull/2355) xtensa: esp32_himem: Fix issue that was preventing to map all free memory 29014* [#2361](https://github.com/apache/incubator-nuttx/pull/2361) arm: nrf52 GPIO: minor fixes 29015* [#2364](https://github.com/apache/incubator-nuttx/pull/2364) arm: stm32h7: Fix bug where more than CONFIG_MM_REGIONS would be allocated 29016* [#2372](https://github.com/apache/incubator-nuttx/pull/2372) rv64: Fix SCN/PRI.PTR definitions 29017* [#2373](https://github.com/apache/incubator-nuttx/pull/2373) risc-v: Don't use non existent "saved_status" 29018* [#2423](https://github.com/apache/incubator-nuttx/pull/2423) xetnsa: Couple of Xtensa fixes 29019* [#2448](https://github.com/apache/incubator-nuttx/pull/2448) arm: stm32/stm32h7: fix the configuration of PWM outputs when subsequent channels are not enabled 29020* [#2454](https://github.com/apache/incubator-nuttx/pull/2454) xtensa: esp32/esp32-core: Fix #ifdef warning and update MM_SECTIONS 29021* [#2483](https://github.com/apache/incubator-nuttx/pull/2483) arm: stm32: convert all STM32G47X specific code to generic STM32G4 series code 29022* [#2519](https://github.com/apache/incubator-nuttx/pull/2519) arm: imxrt: replace clock_systimespec with clock_systime_timespec 29023* [#2536](https://github.com/apache/incubator-nuttx/pull/2536) xtensa: esp32: fixes enable int function and gets apb clk frequency through function 29024* [#2546](https://github.com/apache/incubator-nuttx/pull/2546) arm: imxrt: imxrt_usdhc.c: fixed no DMA build error 29025* [#2551](https://github.com/apache/incubator-nuttx/pull/2551) arm: stm32h7x3xx_memorymap.h invalid address map for fdcan 29026* [#2554](https://github.com/apache/incubator-nuttx/pull/2554) xtensa: Esp32 wifi fixes 29027* [#2555](https://github.com/apache/incubator-nuttx/pull/2555) xtensa: esp32/esp32_spiflash.c: Writeback PSRAM data before invalidating the cache 29028* [#2559](https://github.com/apache/incubator-nuttx/pull/2559) risc-v: Remove duplicated declaration for up_irq_save and up_irq_restore 29029* [#2560](https://github.com/apache/incubator-nuttx/pull/2560) risc-v: Move csr.h to common place 29030* [#2568](https://github.com/apache/incubator-nuttx/pull/2568) risc-v: Move CSR register bit definition to csr.h 29031* [#2569](https://github.com/apache/incubator-nuttx/pull/2569) risc-v: Reuse the common up_schedule_sigaction implementation 29032* [#2570](https://github.com/apache/incubator-nuttx/pull/2570) arm: stm32g4: Fix incorrect FLASH wait states 29033* [#2573](https://github.com/apache/incubator-nuttx/pull/2573) xtensa: esp32: Bump NAME_MAX where CONFIG_ESP32_WIFI_SAVE_PARAM=y 29034* [#2584](https://github.com/apache/incubator-nuttx/pull/2584) xtensa: esp32_wifi_adapter.c: file mode for open doesn't make sense for O_RDONLY 29035* [#2589](https://github.com/apache/incubator-nuttx/pull/2589) risc-v: fix redefined CSR_INSTRET 29036* [#2612](https://github.com/apache/incubator-nuttx/pull/2612) arm: kinetis: S32K/Kinetis: Fix RTC settime prescaler 29037* [#2612](https://github.com/apache/incubator-nuttx/pull/2612) arm: S32K/Kinetis: Fix RTC settime prescaler 29038* [#2647](https://github.com/apache/incubator-nuttx/pull/2647) xtensa: esp32: Fix ESP32 serial UART tx ready check error 29039* [#2666](https://github.com/apache/incubator-nuttx/pull/2666) xtensa: esp32: Fix ESP32 SPI3 slave ops data error 29040* [#2676](https://github.com/apache/incubator-nuttx/pull/2676) arm: stm32412: Fixes pinmap CAN1 29041* [#2689](https://github.com/apache/incubator-nuttx/pull/2689) arm: tiva: Fix lm3s_ethernet.c with DEBUGASSERT 29042* [#2700](https://github.com/apache/incubator-nuttx/pull/2700) arm: nRF52 various minor fixes 29043* [#2708](https://github.com/apache/incubator-nuttx/pull/2708) xtensa: esp32: Fix ESP32 I2C driver issues 29044* [#2709](https://github.com/apache/incubator-nuttx/pull/2709) xtensa: esp32: Fix ESP32 SPI driver issues 29045* [#2722](https://github.com/apache/incubator-nuttx/pull/2722) arm: stm32f412:Replaced Kludged pinmap with one for SoC. 29046* [#2725](https://github.com/apache/incubator-nuttx/pull/2725) arm: nRF52: FIX wrong bitmask for DRIVE setting 29047* [#2727](https://github.com/apache/incubator-nuttx/pull/2727) xtensa: esp32_free_cpuint: Fix an assertion 29048* [#2728](https://github.com/apache/incubator-nuttx/pull/2728) xtensa: esp32_dma_init: Fix a dubious assertion 29049* [#2731](https://github.com/apache/incubator-nuttx/pull/2731) xtensa: esp_allocateheap.c: Correct ROM memory boundaries in SMP case 29050* [#2752](https://github.com/apache/incubator-nuttx/pull/2752) xtensa: esp32/esp32_spiflash.c: Fix the value of the page start address when invalidating the cache 29051* [#2755](https://github.com/apache/incubator-nuttx/pull/2755) xtensa: esp32: Fix compile errors with CONFIG_SMP=y 29052* [#2757](https://github.com/apache/incubator-nuttx/pull/2757) xtensa: esp32/esp32_wifi_adapter.c: Print debug output only when DEBUG_WIRLESS* are enabled 29053* [#2758](https://github.com/apache/incubator-nuttx/pull/2758) xtensa: Kconfig: Reduce the default value of the internal memory 29054* [#2759](https://github.com/apache/incubator-nuttx/pull/2759) xtensa: esp32/psram: Fix missing configs 29055* [#2761](https://github.com/apache/incubator-nuttx/pull/2761) risc-v: Remove unused and undefined file section "Public Variables" 29056* [#2763](https://github.com/apache/incubator-nuttx/pull/2763) arm: imx6: Apply the latest imxrt/imxrt_enet.c to imx6/imx_enet.c 29057* [#2771](https://github.com/apache/incubator-nuttx/pull/2771) arm: imx6: Update imx6 enet 29058* [#2772](https://github.com/apache/incubator-nuttx/pull/2771) arm: imx6 enet with TCP_WRITE_BUFFERS 29059* [#2777](https://github.com/apache/incubator-nuttx/pull/2777) arm: imx6: Fix a compile error with CONFIG_DEBUG_ASSERTIONS=y 29060* [#2779](https://github.com/apache/incubator-nuttx/pull/2779) arm: samv7/sam_mcan.c: fix some mismatches caused by renaming 29061* [#2782](https://github.com/apache/incubator-nuttx/pull/2782) arm: nRF52 fixes 29062* [#2788](https://github.com/apache/incubator-nuttx/pull/2788) risc-v: Don't declare riscv_addregion if CONFIG_MM_REGIONS is < 1. 29063* [#2791](https://github.com/apache/incubator-nuttx/pull/2791) arm: stm32f7/stm32_qspi.c: Fix warning of format strings 29064* [#2792](https://github.com/apache/incubator-nuttx/pull/2792) arm: [imxrt] Fix FlexCAN tx dropping frames 29065* [#2793](https://github.com/apache/incubator-nuttx/pull/2316) risc-v: Remove nx_start prototype from riscv_internal.h 29066* [#2795](https://github.com/apache/incubator-nuttx/pull/2795) arm: stm32f412:Corrected Pin count 29067* [#2796](https://github.com/apache/incubator-nuttx/pull/2796) xtensa: esp32: Fix cache issue detected by DEBUG_ASSERTION 29068* [#2799](https://github.com/apache/incubator-nuttx/pull/2799) RV64: handle relocation type R_RISCV_CALL_PLT in PIC build. 29069* [#2805](https://github.com/apache/incubator-nuttx/pull/2805) arm: imxrt1060 iperf 29070* [#2812](https://github.com/apache/incubator-nuttx/pull/2812) xtensa: esp32_spiflash.c: Fix preprocessor condition 29071* [#2813](https://github.com/apache/incubator-nuttx/pull/2813) xtensa: esp32: Add extern modifier to ROM function declaration 29072* [#2815](https://github.com/apache/incubator-nuttx/pull/2815) riscv: Fix files names in headers that were still using the old 'up_' prefix 29073* [#2832](https://github.com/apache/incubator-nuttx/pull/2832) xtensa: esp32: Fix the issue of WiFi internal malloc from PSRAM 29074* [#2844](https://github.com/apache/incubator-nuttx/pull/2844) risc-v: LiteX: Make Arty-A7 example work 29075* [#2867](https://github.com/apache/incubator-nuttx/pull/2867) arm: lpc17xx_40xx/lpc17_40_i2c.c: Propagate I2C I/O errors 29076* [#2886](https://github.com/apache/incubator-nuttx/pull/2886) arm: pic32mz: Chip does not have ANSEL register on port K 29077* [#2889](https://github.com/apache/incubator-nuttx/pull/2889) arm: pic32mx7 cannot perform context switch 29078* [#2892](https://github.com/apache/incubator-nuttx/pull/2892) risc-v: esp32-c3: Don't reserve any vectors for any special use. 29079* [#2893](https://github.com/apache/incubator-nuttx/pull/2893) risc-v: esp32-c3: Build serial driver only when selected 29080* [#2903](https://github.com/apache/incubator-nuttx/pull/2903) xtensa: esp32: xtensa_user: Implement a few more instructions 29081* [#2912](https://github.com/apache/incubator-nuttx/pull/2912) risc-v: esp32-c3: Fix CPU interrupts freeing on WDT driver 29082* [#2917](https://github.com/apache/incubator-nuttx/pull/2917) arm: Add 'select ARM_HAVE_WFE_SEV' to ARCH_CHIP_RP2040 29083* [#2920](https://github.com/apache/incubator-nuttx/pull/2920) risc-v: esp32-c3: Configure clock and call board initialize at startup 29084* [#2923](https://github.com/apache/incubator-nuttx/pull/2923) ez80: fix several bugs in emac driver 29085* [#2931](https://github.com/apache/incubator-nuttx/pull/2931) arm: kinetis: [FlexCAN] Fix TX drop #2792 and correctly set CAN timings to non-zero 29086* [#2931](https://github.com/apache/incubator-nuttx/pull/2931) arm: s32k1xx: [FlexCAN] Fix TX drop #2792 and correctly set CAN timings to non-zero 29087* [#2943](https://github.com/apache/incubator-nuttx/pull/2943) arm: stm32x7:lse ensure it is started 29088* [#2951](https://github.com/apache/incubator-nuttx/pull/2951) arm: stm32_wwdg debug log formatting 29089* [#2967](https://github.com/apache/incubator-nuttx/pull/2967) arm: STM32F7 lse static values directly from Kconfig 29090* [#2968](https://github.com/apache/incubator-nuttx/pull/2968) xtensa: esp32: Change I2C SCL default pin to a valid one 29091* [#2972](https://github.com/apache/incubator-nuttx/pull/2972) risc-v: esp32-c3: Fix GPIO pin function configuration 29092* [#2976](https://github.com/apache/incubator-nuttx/pull/2976) xtensa: ESP32: Fix I2C Kconfig bringing the character driver as a dependency 29093* [#2977](https://github.com/apache/incubator-nuttx/pull/2977) xtensa: ESP32: Fix GPIO pin function configuration 29094* [#2996](https://github.com/apache/incubator-nuttx/pull/2996) arm: stm32h747xi: Fix missing IO_CONFIG setting 29095* [#3008](https://github.com/apache/incubator-nuttx/pull/3008) risc-v: esp32-c3: free cpu in case it was preallocated in wdt driver 29096* [#3013](https://github.com/apache/incubator-nuttx/pull/3013) risc-v: bl602:fix bl602_flash_erase to erase the wrong block 29097* [#3034](https://github.com/apache/incubator-nuttx/pull/3034) arm: imx6: Fix an error message in imx_enet.c 29098* [#3051](https://github.com/apache/incubator-nuttx/pull/3051) risc-v: Internal functions should be prefixed with riscv_ not up 29099* [#3075](https://github.com/apache/incubator-nuttx/pull/3075) arm: Fix syscall number out of swi range in thumb mode 29100* [#3079](https://github.com/apache/incubator-nuttx/pull/3079) arm: kinetis: [FlexCAN] Correct reset state for CTRL1 register 29101* [#3079](https://github.com/apache/incubator-nuttx/pull/3079) arm: s32k1xx: [FlexCAN] Correct reset state for CTRL1 register 29102* [#3088](https://github.com/apache/incubator-nuttx/pull/3088) arm: samv7: Fix sam_putreg() parameter type 29103* [#3092](https://github.com/apache/incubator-nuttx/pull/3092) xtensa: xtensa: esp32_allocateheap.c: Don't allocate ROM regions when running in QEMU. 29104* [#3116](https://github.com/apache/incubator-nuttx/pull/3116) arm: stm32l5: Enable SPI support and license clearing 29105* [#3119](https://github.com/apache/incubator-nuttx/pull/2976) xtensa: sp32: Fix buffer size word-alignment for DMA transfers 29106* [#3125](https://github.com/apache/incubator-nuttx/pull/3125) risc-v: Internal functions should be prefixed with "riscv_" 29107* [#3130](https://github.com/apache/incubator-nuttx/pull/3145) xtensa: esp32: Fix SPI polling mode when DMA is also enabled. 29108* [#3135](https://github.com/apache/incubator-nuttx/pull/3135) rv64:c906:colorize the idle stack area;minor fixes. 29109* [#3145](https://github.com/apache/incubator-nuttx/pull/3145) xtensa: esp32_part_ioctl: Return -ENOTTY for unknown commands 29110* [#3162](https://github.com/apache/incubator-nuttx/pull/3162) arm: STM32 USB OTGFSDEV: Fix handling of SETUP OUT longer than 64 bytes 29111* [#3167](https://github.com/apache/incubator-nuttx/pull/3167) arm: stm32h7:SPI Fix 16 bit SPI mode 29112* [#3174](https://github.com/apache/incubator-nuttx/pull/3174) arm: Use macro defined swi range in dispatch_syscall 29113* [#3178](https://github.com/apache/incubator-nuttx/pull/3178) arm: tiva:cc13x0_adi3_refsys fix typo 29114* [#3198](https://github.com/apache/incubator-nuttx/pull/3198) arm: Stm32h7 fix heap clobber 29115* [#3199](https://github.com/apache/incubator-nuttx/pull/3199) xtensa: ESP32: Fix math for DMA buffer length rounding 29116* [#3200](https://github.com/apache/incubator-nuttx/pull/3200) xtensa: esp32: Fix DMA burst mode being unintendedly disabled 29117* [#3219](https://github.com/apache/incubator-nuttx/pull/3219) risc-v: bl602: fix _heap_start not word aligned 29118* [#3220](https://github.com/apache/incubator-nuttx/pull/3220) arm: Fix indexing for stm32h7 usbhost tracing 29119* [#3248](https://github.com/apache/incubator-nuttx/pull/3248) xtensa: esp32: remove extra initial newline on syslog call 29120* [#3283](https://github.com/apache/incubator-nuttx/pull/3283) rv64:add memory clobber to inline asm for syscall. 29121* [#3285](https://github.com/apache/incubator-nuttx/pull/3285) arm: Remove .cpu directive from assemble file 29122* [#3293](https://github.com/apache/incubator-nuttx/pull/3293) arm: armv6-m: Remove cpsid and cpsie from exception_common 29123* [#3307](https://github.com/apache/incubator-nuttx/pull/3307) arm: Replace the hardcode syscall number with macro 29124* [#3310](https://github.com/apache/incubator-nuttx/pull/3310) arm: armv8-m: Merge ite instruction to the previous one 29125* [#3311](https://github.com/apache/incubator-nuttx/pull/3311) arm: fix the potential corruption in initialization 29126* [#3313](https://github.com/apache/incubator-nuttx/pull/3313) arm: Replace "b lr" or "mov pc, lr" with "bx lr" 29127* [#3315](https://github.com/apache/incubator-nuttx/pull/3315) arm: Move setjmp/longjmp to libc/machine 29128* [#3326](https://github.com/apache/incubator-nuttx/pull/3326) arm: Update the old arm architecture with the recent fix 29129* [#3440](https://github.com/apache/incubator-nuttx/pull/3440) arm: Change all spsr_cxsf to spsr 29130* [#3448](https://github.com/apache/incubator-nuttx/pull/3448) arm: armv7-a: Remove the special process of the nest level 29131* [#3451](https://github.com/apache/incubator-nuttx/pull/3451) arm: Remove g_irqtmp, g_undeftmp and g_aborttmp 29132* [#3452](https://github.com/apache/incubator-nuttx/pull/3452) risc-v: esp32-c3: Refactors and fixes issues on serial driver. 29133* [#3457](https://github.com/apache/incubator-nuttx/pull/3457) arm: stm32h7: Actually use the AXI SRAM as the main heap as the documentation describes in PROTECTED mode. 29134* [#3459](https://github.com/apache/incubator-nuttx/pull/3459) arm: stm32h7: Fixes build error in stm32_sdmmc.c without DCACHE 29135* [#3473](https://github.com/apache/incubator-nuttx/pull/3473) xtensa: esp32: move common XTAL and RUN_IRAM configs to ESP32 KConfig 29136* [#3486](https://github.com/apache/incubator-nuttx/pull/3486) xtensa: esp32: Improve SPI polling to use the entire HW buffer 29137* [#3492](https://github.com/apache/incubator-nuttx/pull/3492) risc-v: riscv_initialize.c: Add telnet_initialize to riscv's up_initialize 29138* [#2868](https://github.com/apache/incubator-nuttx/pull/2868) xtensa: Fix xtensa stack coloring 29139 29140## Simulator 29141 29142### New Features 29143* [#2129](https://github.com/apache/incubator-nuttx/pull/2129) add "nimble" config, to test nimBLE on top of bthcisock 29144* [#2130](https://github.com/apache/incubator-nuttx/pull/2130) rpproxy/rpserver: force use 'CONFIG_SIM_M32' for 64bit system. 29145* [#2158](https://github.com/apache/incubator-nuttx/pull/2158) linux I2C bus support in sim 29146* [#2164](https://github.com/apache/incubator-nuttx/pull/2164) add LVGL configuration which uses the X11 framebuffer and mouse 29147* [#2198](https://github.com/apache/incubator-nuttx/pull/2198) support LCD emulation over X11; correctly decouple LCD/FB from X11/NX 29148* [#2579](https://github.com/apache/incubator-nuttx/pull/2579) make it conditional with FS_FAT 29149* [#2599](https://github.com/apache/incubator-nuttx/pull/2599) names: add writev/readv into name list 29150* [#2619](https://github.com/apache/incubator-nuttx/pull/2619) hci: reuse the reserved fields of hci buffer 29151* [#2690](https://github.com/apache/incubator-nuttx/pull/2690) support sim vfork 29152* [#2696](https://github.com/apache/incubator-nuttx/pull/2696) hcitty: add hcitty adapter 29153* [#2720](https://github.com/apache/incubator-nuttx/pull/2720) board/sim: Support NuttX BLE stack through uart shim driver 29154* [#3093](https://github.com/apache/incubator-nuttx/pull/3093) add heap policy and asan logic to support mm debug on sim platform 29155* [#3152](https://github.com/apache/incubator-nuttx/pull/3152) add dlsym to [nuttx-names.in](http://nuttx-names.in) 29156* [#3224](https://github.com/apache/incubator-nuttx/pull/3224) boards/sim: remove dsptest configuration 29157* [#3231](https://github.com/apache/incubator-nuttx/pull/3231) add the simulated lower-half FOC device 29158* [#3478](https://github.com/apache/incubator-nuttx/pull/3478) refactor signal handling 29159 29160### Bug Fixes 29161* [#2109](https://github.com/apache/incubator-nuttx/pull/2109) Revert "arch/sim: Make the SIGUSR1 host signal use the NuttX irq logic" 29162* [#2246](https://github.com/apache/incubator-nuttx/pull/2246) boards/sim/sim/sim/src/sim_touchscreen.c: add missing nx_disconnect 29163* [#2259](https://github.com/apache/incubator-nuttx/pull/2259) boards/sim: add atexit(2) into naming list 29164* [#2441](https://github.com/apache/incubator-nuttx/pull/2441) sim: fix input handling and add simulated buttons support from mouse 29165* [#2597](https://github.com/apache/incubator-nuttx/pull/2597) Revert "board/sim: Remove the too strict warning" 29166* [#3176](https://github.com/apache/incubator-nuttx/pull/3176) sim: fix signal deliver calling error on sim platform 29167* [#3205](https://github.com/apache/incubator-nuttx/pull/3205) sim: do not exit simulator on up_assert (just let the task exit) 29168 29169## Documentation 29170 29171### New Features 29172* [#1955](https://github.com/apache/incubator-nuttx/pull/1955) Add documentation for note filters and task trace guides 29173* [#1959](https://github.com/apache/incubator-nuttx/pull/1959) Documentation for the Timer Driver 29174* [#2268](https://github.com/apache/incubator-nuttx/pull/2268) Documentation for Watchdog Timer Driver 29175* [#2334](https://github.com/apache/incubator-nuttx/pull/2334) [CONTRIBUTING.md](http://CONTRIBUTING.md): talk about preferred commit message format 29176* [#2408](https://github.com/apache/incubator-nuttx/pull/2408) Documentation: support versioned docs 29177* [#2543](https://github.com/apache/incubator-nuttx/pull/2543) Documentation: how to use auto monitor feature to keep the chip alive 29178* [#2818](https://github.com/apache/incubator-nuttx/pull/2818) Documentation: introduce hardware platforms documentation 29179* [#2819](https://github.com/apache/incubator-nuttx/pull/2819) Documentation: document nRF52832 Sparkfun board (improve MDK board a bit) 29180* [#3022](https://github.com/apache/incubator-nuttx/pull/3022) hostfs: Document the backends and restrictions 29181* [#3127](https://github.com/apache/incubator-nuttx/pull/3127) Documentation: add ESP32 and DevKitC docs 29182* [#3138](https://github.com/apache/incubator-nuttx/pull/3138) Addind CMake based C++ project example in documentation 29183* [#3490](https://github.com/apache/incubator-nuttx/pull/3490) Documentation/esp32: Add supported peripherals 29184 29185### Improvements 29186* [#2021](https://github.com/apache/incubator-nuttx/pull/2021) Correct the links in Documentation folder 29187* [#2024](https://github.com/apache/incubator-nuttx/pull/2024) Fix broken documentation links 29188* [#2026](https://github.com/apache/incubator-nuttx/pull/2026) Documentation: Remove all tail spaces from *.rst and *.html 29189* [#2027](https://github.com/apache/incubator-nuttx/pull/2027) Documentation: Reorganize some section 29190* [#2031](https://github.com/apache/incubator-nuttx/pull/2031) Documentation/quickstart/debugging.rst: rewrite JTAG/OpenOCD section 29191* [#2045](https://github.com/apache/incubator-nuttx/pull/2045) Documentation: Misc fixups for broken links, errors, warnings 29192* [#2051](https://github.com/apache/incubator-nuttx/pull/2051) Documentation/quickstart/debugging: rewrite SWD sentence 29193* [#2106](https://github.com/apache/incubator-nuttx/pull/2106) documentation: change non-working URL 29194* [#2329](https://github.com/apache/incubator-nuttx/pull/2329) Documentation/components/drivers/character/pwm: fix pwm.c location 29195* [#2362](https://github.com/apache/incubator-nuttx/pull/2362) Documentation improvements 29196* [#2390](https://github.com/apache/incubator-nuttx/pull/2390) Documentation: improve debugging section 29197* [#2485](https://github.com/apache/incubator-nuttx/pull/2485) Documentaiton: merge quickstart to getting started 29198* [#2563](https://github.com/apache/incubator-nuttx/pull/2563) update Documentation/components/drivers/character/watchdog.rst 29199* [#3144](https://github.com/apache/incubator-nuttx/pull/3144) CI: remove linkcheck when building docs 29200* [#3180](https://github.com/apache/incubator-nuttx/pull/3180) documentation: improve boardctl() docs 29201* [#3194](https://github.com/apache/incubator-nuttx/pull/3194) Documentation: add syslog user API and other minor improvements 29202* [#3271](https://github.com/apache/incubator-nuttx/pull/3271) docs and comments: Update stale references to COPYING 29203* [#3470](https://github.com/apache/incubator-nuttx/pull/3470) Documentation: migrate ESP32 README to docs 29204 29205## Driver Support 29206 29207### New Driver Support 29208* [#1936](https://github.com/apache/incubator-nuttx/pull/1936) note: Add task trace support 29209* [#1989](https://github.com/apache/incubator-nuttx/pull/1989) sensors: Support fxos8700cq motion I2C sensor 29210* [#2091](https://github.com/apache/incubator-nuttx/pull/2091) usbdev: add Android Debug Bridge driver 29211* [#2166](https://github.com/apache/incubator-nuttx/pull/2166) lcd: Add LCD character driver: allows interacting with LCD directly from userspace 29212* [#2216](https://github.com/apache/incubator-nuttx/pull/2216) rc: support infrared remote control 29213* [#2282](https://github.com/apache/incubator-nuttx/pull/2282) audio: cxd56: add initial audio SRC implementation 29214* [#2301](https://github.com/apache/incubator-nuttx/pull/2301) analog: support for MAX1161X family of I2C 12 bit ADC chips 29215* [#2429](https://github.com/apache/incubator-nuttx/pull/2429) audio: add simple wm8994 codec driver 29216* [#2628](https://github.com/apache/incubator-nuttx/pull/2628) efuse: Add generic efuse driver for NuttX 29217* [#2736](https://github.com/apache/incubator-nuttx/pull/2736) console: Add generic support to LWL Console 29218* [#2829](https://github.com/apache/incubator-nuttx/pull/2829) sensor: add fakesensor driver 29219* [#3230](https://github.com/apache/incubator-nuttx/pull/3230) motor: add generic upper-half driver for Field Oriented Control (FOC) 29220* [#3474](https://github.com/apache/incubator-nuttx/pull/3474) sensors: Adds driver for hyt271 sensore module 29221 29222### Bug Fixes 29223* [#2036](https://github.com/apache/incubator-nuttx/pull/2036) serial: break from read after closing 29224* [#2039](https://github.com/apache/incubator-nuttx/pull/2039) sensors: add unified management for sensor 29225* [#2070](https://github.com/apache/incubator-nuttx/pull/2070) bluetooth: support HCI/L2CAP sockets, support HCI RAW channel 29226* [#2139](https://github.com/apache/incubator-nuttx/pull/2139) lcd: Ssd1306 cleanup 29227* [#2142](https://github.com/apache/incubator-nuttx/pull/2776) note: Add task name record for task trace 29228* [#2146](https://github.com/apache/incubator-nuttx/pull/2146) pipes: nx_pipe syscall takes three params, also use nx_close 29229* [#2175](https://github.com/apache/incubator-nuttx/pull/2175) wireless: gs2200m: Check disassociation from AP and enable rejoin 29230* [#2188](https://github.com/apache/incubator-nuttx/pull/2200) lcd_dev: put header in correct location; fix missing const 29231* [#2200](https://github.com/apache/incubator-nuttx/pull/2200) lcd: Minor fixes to ssd1306 i2c driver 29232* [#2201](https://github.com/apache/incubator-nuttx/pull/2512) wireless: gs2200m: Add function to get IWNWID / IWFREQ / IWSENS information 29233* [#2208](https://github.com/apache/incubator-nuttx/pull/2208) lcd: add optional putarea()/getarea() operations 29234* [#2215](https://github.com/apache/incubator-nuttx/pull/2215) sensors: add new feature about sensor driver model 29235* [#2223](https://github.com/apache/incubator-nuttx/pull/2223) audio: cxd56: cleanup for the spresense audio implementation 29236* [#2315](https://github.com/apache/incubator-nuttx/pull/2370) sensors: add common circular buffer management 29237* [#2318](https://github.com/apache/incubator-nuttx/pull/2318) sensors: update l3gd20 sensor driver with new sensor driver model 29238* [#2343](https://github.com/apache/incubator-nuttx/pull/2343) serial: Prevent RX stall 29239* [#2345](https://github.com/apache/incubator-nuttx/pull/2345) mtd/mtd_progmem.c: fix progmem_log2 parameter type to match prototype 29240* [#2369](https://github.com/apache/incubator-nuttx/pull/2369) sensors: support custom types of sensor 29241* [#2370](https://github.com/apache/incubator-nuttx/pull/2370) rc: fix bug about lirc_read 29242* [#2383](https://github.com/apache/incubator-nuttx/pull/2383) USB: Do not try to print NULL format strings for verbose trace messages when disabled 29243* [#2398](https://github.com/apache/incubator-nuttx/pull/2398) rptun: fix rptun rpmsg_unregister_callback fault 29244* [#2445](https://github.com/apache/incubator-nuttx/pull/2445) audio: Make audio_null play at real speed 29245* [#2488](https://github.com/apache/incubator-nuttx/pull/2488) crypto/arc4random: rename getrandom to arc4random_buf 29246* [#2490](https://github.com/apache/incubator-nuttx/pull/3482) leds: ws2812: make frequency selection more flexible 29247* [#2497](https://github.com/apache/incubator-nuttx/pull/2497) crypto/random_pool.c: fix getrandom() when thread calling it gets can… 29248* [#2508](https://github.com/apache/incubator-nuttx/pull/2508) leds/ws2812: optimize reset bytes 29249* [#2512](https://github.com/apache/incubator-nuttx/pull/2488) wireless/bluetooth: change the tx thread stack size to DEFAULT_TASK_STACKSIZE 29250* [#2564](https://github.com/apache/incubator-nuttx/pull/2564) audio: uninitialize usermq to NULL when the device has not 29251* [#2571](https://github.com/apache/incubator-nuttx/pull/2571) bluetooth: Fix bt_buff lifecycle 29252* [#2607](https://github.com/apache/incubator-nuttx/pull/2607) wireless: bluetooth: minor fix to bluetooth stack 29253* [#2609](https://github.com/apache/incubator-nuttx/pull/2609) wireless: bluetooth: fix minor issue in bt uart driver 29254* [#2611](https://github.com/apache/incubator-nuttx/pull/2611) wireless/bluetooth: Fix vairous issues found in bt uart shim driver 29255* [#2617](https://github.com/apache/incubator-nuttx/pull/2617) serial: should include <signal.h> explicitly 29256* [#2621](https://github.com/apache/incubator-nuttx/pull/2621) syslog: Added formatted timestamps in syslog. 29257* [#2636](https://github.com/apache/incubator-nuttx/pull/2636) pipes: pty shouldn't call nx_pipe and then file_detach in kernel space 29258* [#2664](https://github.com/apache/incubator-nuttx/pull/2664) can: fix RTR ioctl and support timeout 29259* [#2691](https://github.com/apache/incubator-nuttx/pull/2383) wireless: bluetooth: add more hci event definitions 29260* [#2692](https://github.com/apache/incubator-nuttx/pull/2692) syslog: Prepend Process ID to syslog message 29261* [#2697](https://github.com/apache/incubator-nuttx/pull/2697) syslog: Added printing of log priority in syslog 29262* [#2698](https://github.com/apache/incubator-nuttx/pull/2698) syslog: Added color output to syslog. 29263* [#2704](https://github.com/apache/incubator-nuttx/pull/2704) wireless: bluetooth: minor fix for bluetooth driver 29264* [#2707](https://github.com/apache/incubator-nuttx/pull/2707) drivers: wireless: Fix ASSERT() in _read_data_len() in gs2200m.c 29265* [#2710](https://github.com/apache/incubator-nuttx/pull/2710) syslog: Re-arranged syslog fields. 29266* [#2711](https://github.com/apache/incubator-nuttx/pull/2711) sensors: bmp280: minor fixes 29267* [#2715](https://github.com/apache/incubator-nuttx/pull/2715) sensors: bmp280: convert to sensor interface (and minor sensor change) 29268* [#2738](https://github.com/apache/incubator-nuttx/pull/2738) wireless: gs2200m: Print error massages with wlerr() 29269* [#2747](https://github.com/apache/incubator-nuttx/pull/2747) wireless: gs2200m: Fix _read_data() 29270* [#2775](https://github.com/apache/incubator-nuttx/pull/2775) mtd: w25qxxxjv.c : W25Q256's sector count is 8192 29271* [#2776](https://github.com/apache/incubator-nuttx/pull/2776) net/encx24j600.c: Correct setting of ifstate 29272* [#2798](https://github.com/apache/incubator-nuttx/pull/2798) wireless: gs2200m: Change retry condition in gs2200m_hal_write() 29273* [#2801](https://github.com/apache/incubator-nuttx/pull/2801) mtd:w25qxxxjv.c: use different protect bits and address lengts 29274* [#2850](https://github.com/apache/incubator-nuttx/pull/2850) audio: Introduce a driver-specific spinlock to cxd56.c 29275* [#2907](https://github.com/apache/incubator-nuttx/pull/2711) sensors: driver model update 29276* [#2950](https://github.com/apache/incubator-nuttx/pull/2950) audio: pcm_decode: add RAW format support 29277* [#2961](https://github.com/apache/incubator-nuttx/pull/2961) syslog_rpmsg: fix system crash when open CONFIG_SCHED_HAVE_PARENT 29278* [#2989](https://github.com/apache/incubator-nuttx/pull/2989) mmcsd: Fixes race condition in event wait logic of SDMMC driver 29279* [#3000](https://github.com/apache/incubator-nuttx/pull/3000) sensors: fakesensor support batch 29280* [#3020](https://github.com/apache/incubator-nuttx/pull/3020) syslog: add option to prefix process name 29281* [#3047](https://github.com/apache/incubator-nuttx/pull/3047) mmcsd: Stuck in 1-bit mode, Removed CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT 29282* [#3050](https://github.com/apache/incubator-nuttx/pull/3050) syslog: Added support for multiple syslog channels. 29283* [#3110](https://github.com/apache/incubator-nuttx/pull/3110) can: Add CAN FD flags to CAN header 29284* [#3118](https://github.com/apache/incubator-nuttx/pull/3118) sensors: qencoder.c - Remove bad sninfo() format string 29285* [#3163](https://github.com/apache/incubator-nuttx/pull/3163) USBDEV: RNDIS: Fix occasional disconnections due to race condition 29286* [#3185](https://github.com/apache/incubator-nuttx/pull/3185) USBDEV RNDIS: Fix unaligned access caused by 4f66624 29287* [#3195](https://github.com/apache/incubator-nuttx/pull/3195) serial: Don't comment out ws_[x|y]pixel field from winsize struct 29288* [#3201](https://github.com/apache/incubator-nuttx/pull/3201) timers: rtc/rpmsg: support server and client to set time each other 29289* [#3214](https://github.com/apache/incubator-nuttx/pull/3214) can: Fix TX ID bits 18-20 of mcp2515 can driver 29290* [#3215](https://github.com/apache/incubator-nuttx/pull/3215) syslog: Drop extra carriage return from syslog calls 29291* [#3226](https://github.com/apache/incubator-nuttx/pull/3226) syslog: Added multi device support in syslog_device. 29292* [#3269](https://github.com/apache/incubator-nuttx/pull/3269) motor: Add support for motor debug messages 29293* [#3453](https://github.com/apache/incubator-nuttx/pull/3453) syslog: Fix in syslog_intbuffer flushing 29294* [#3454](https://github.com/apache/incubator-nuttx/pull/3454) syslog: Proper uninit of syslog_device. 29295* [#3475](https://github.com/apache/incubator-nuttx/pull/3214) input: Add INPUT_TOUCHSCREEN config 29296* [#3482](https://github.com/apache/incubator-nuttx/pull/3482) input: Rename config from INPUT classes 29297 29298## Board Support 29299 29300### New Board Support 29301* [#2054](https://github.com/apache/incubator-nuttx/pull/2054) configure.sh: update custom board config build support 29302* [#2463](https://github.com/apache/incubator-nuttx/pull/2463) boards: Added Teensy-4.x BSP 29303* [#2503](https://github.com/apache/incubator-nuttx/pull/2503) Re-organise ESP32 boards and introduce two more(ESP-WROVER-KIT and the ESP32-Ethernet-Kit) 29304* [#2506](https://github.com/apache/incubator-nuttx/pull/2506) stm32: add stm32g43x support and nucleo-g431rb board 29305* [#2838](https://github.com/apache/incubator-nuttx/pull/2838) Add initial support for ESP32-C3 and ESP32-C3 DevKit board 29306* [#2877](https://github.com/apache/incubator-nuttx/pull/2877) Support for Raspberry Pi Pico 29307* [#3129](https://github.com/apache/incubator-nuttx/pull/3129) boards/stm32: add initial support for b-g431b-esc1 board 29308* [#3217](https://github.com/apache/incubator-nuttx/pull/3217) board: Add support for nucleo-h743i2 29309* [#3234](https://github.com/apache/incubator-nuttx/pull/3234) boards/stm32/common: add support for IHM07M1 and IHM08M1 boards 29310 29311### Boards With Significant Improvements 29312 29313#### ARM 29314 29315#### BL602 29316* [#2764](https://github.com/apache/incubator-nuttx/pull/2764) boards: bl602evb flash and debug notes 29317 29318#### C906 29319* [#3027](https://github.com/apache/incubator-nuttx/pull/3027) board:rv64:c906:support the ELF apps 29320 29321#### CXD56 29322* [#1939](https://github.com/apache/incubator-nuttx/pull/1939) Add cxd56xx intstack for SMP 29323* [#3016](https://github.com/apache/incubator-nuttx/pull/3016) spresense:rndis_smp 29324* [#3024](https://github.com/apache/incubator-nuttx/pull/3024) Spesense CPU activity LED support 29325* [#3084](https://github.com/apache/incubator-nuttx/pull/3084) cxd56_gnss: Add missing include header for cxd56_gnss.c 29326* [#3085](https://github.com/apache/incubator-nuttx/pull/3085) cxd56_cpu1signal: Fix an issue that gnss does not work 29327 29328#### ESP32 29329* [#2507](https://github.com/apache/incubator-nuttx/pull/2507) boards/arm/stm32: add common and stm32f103-minimum support for WS2812 29330* [#2753](https://github.com/apache/incubator-nuttx/pull/2753) esp32: Enable renew for "wapi" configs 29331* [#2864](https://github.com/apache/incubator-nuttx/pull/2864) Add wapi_smp to test Wi-Fi in SMP mode 29332* [#2883](https://github.com/apache/incubator-nuttx/pull/2883) This commit implements I2C support for ESP32 (wrover kit) 29333* [#2888](https://github.com/apache/incubator-nuttx/pull/2888) This commit enables BMP180 suport for ESP32 29334* [#2971](https://github.com/apache/incubator-nuttx/pull/2971) esp32: Add board config to support MCP2515 29335* [#3071](https://github.com/apache/incubator-nuttx/pull/3071) ESP32: Mount TMPFS on board bring up 29336* [#3095](https://github.com/apache/incubator-nuttx/pull/3095) ESP32: Allow a BSS section to reside in external memory 29337* [#3117](https://github.com/apache/incubator-nuttx/pull/3117) xtensa/esp32: Use Polling instead of DMA for transfers below threshold 29338* [#3139](https://github.com/apache/incubator-nuttx/pull/3139) xtensa/esp32: Support esp32 wireless ioctl cmd 29339* [#3154](https://github.com/apache/incubator-nuttx/pull/3154) ESP32: Add Button support via BOOT button on GPIO0 29340* [#3164](https://github.com/apache/incubator-nuttx/pull/3164) xtensa/esp32: Adds oneshot timer driver. 29341* [#3190](https://github.com/apache/incubator-nuttx/pull/3190) risc-v/esp32c3: Support ESP32-C3 wireless ioctl cmd 29342* [#3192](https://github.com/apache/incubator-nuttx/pull/3192) esp32-devkitc: Make nsh the entry-point of the ostest config 29343* [#3211](https://github.com/apache/incubator-nuttx/pull/3211) esp32-devkitc: Add GPIO board support 29344* [#3270](https://github.com/apache/incubator-nuttx/pull/3270) xtensa/esp32: Refactor register access functions on SPI driver 29345* [#3303](https://github.com/apache/incubator-nuttx/pull/3303) esp32-devkitc: Add BMP180 sensor support 29346 29347#### ESP32C3 29348* [#2879](https://github.com/apache/incubator-nuttx/pull/2879) risc-v/esp32c3: Enable stdio buffering for esp32c3-devkit NSH config 29349* [#2897](https://github.com/apache/incubator-nuttx/pull/2897) boards/esp32c3: Add tmpfs mounting when bringing up 29350* [#3074](https://github.com/apache/incubator-nuttx/pull/3074) esp32c3-devkit: Use nx_mount to avoid overriding errno 29351* [#3261](https://github.com/apache/incubator-nuttx/pull/3261) esp32-c3: Add support to RNG peripheral 29352 29353#### IMX6 29354* [#2997](https://github.com/apache/incubator-nuttx/pull/2997) boards: sabre-6quad: Add netnsh_smp configuration 29355 29356#### IMXRT 29357* [#2004](https://github.com/apache/incubator-nuttx/pull/2004) FlexCAN driver for i.MX RT1060 MCU 29358* [#2526](https://github.com/apache/incubator-nuttx/pull/2526) boards/arm/imxrt/teensy-4.x: CDC-ACM console support 29359* [#2588](https://github.com/apache/incubator-nuttx/pull/2588) teensy-4.x Support for ST7789 controller 29360 29361#### KINETIS 29362* [#1969](https://github.com/apache/incubator-nuttx/pull/1969) freedom-k64f: Init PWM only if enabled 29363* [#1977](https://github.com/apache/incubator-nuttx/pull/1977) freedom-k64f: Support raw binary firmware format 29364* [#1980](https://github.com/apache/incubator-nuttx/pull/1980) freedom-k64f: Add renew DHCP client for netnsh 29365* [#1982](https://github.com/apache/incubator-nuttx/pull/1982) freedom-k64f: Add I2C initial support 29366* [#1999](https://github.com/apache/incubator-nuttx/pull/1999) freedom-k64f: Register on board sensor driver 29367* [#2020](https://github.com/apache/incubator-nuttx/pull/2020) freedom-k64f: Declare k64_i2cdev_initialize function 29368* [#2030](https://github.com/apache/incubator-nuttx/pull/2030) freedom-k64f: Fix k64_buttons.c 29369* [#2037](https://github.com/apache/incubator-nuttx/pull/2037) freedom-k64f: Add demo configuration 29370* [#2047](https://github.com/apache/incubator-nuttx/pull/2047) freedom-k64f: Add I2C to demo image 29371* [#2847](https://github.com/apache/incubator-nuttx/pull/2847) board/freedom-k64f: Add usbdev support with cdcacm example 29372 29373#### LPC17XX_40XX 29374* [#3239](https://github.com/apache/incubator-nuttx/pull/3239) board/arm/lpc17xx_40xx/mbed: Add userleds driver support 29375 29376#### NRF52 29377* [#2706](https://github.com/apache/incubator-nuttx/pull/2706) board/nrf52-feather: Add simple i2c test configuration 29378 29379#### RP2040 29380* [#2884](https://github.com/apache/incubator-nuttx/pull/2884) Update raspi-pico 29381* [#2894](https://github.com/apache/incubator-nuttx/pull/2894) boards: raspberrypi-pico: Add nshsram defconfig for SRAM build 29382* [#3014](https://github.com/apache/incubator-nuttx/pull/3014) BMP180 sensor support to RP2040 29383* [#3021](https://github.com/apache/incubator-nuttx/pull/3021) add INA219 support 29384* [#3030](https://github.com/apache/incubator-nuttx/pull/3030) boards/raspberrypi-pico: Support ENC28J60 SPI ethernet board 29385* [#3067](https://github.com/apache/incubator-nuttx/pull/3067) boards/raspberrypi-pico: Pico Display Pack (ST7789 LCD) support 29386 29387#### SAM34 29388* [#2464](https://github.com/apache/incubator-nuttx/pull/2464) Added: MT29F2G Nand Flash block driver for sam4s-xplained-pro 29389 29390#### STM32 29391* [#2433](https://github.com/apache/incubator-nuttx/pull/2433) Add 2.4 Inch TFT LCD Shield ILI9341 for nucleo-l152re, 8080 MCU 8-bit 29392* [#2505](https://github.com/apache/incubator-nuttx/pull/2505) boards/arm/stm32/stm32f103-minimum: cleanup 29393* [#3053](https://github.com/apache/incubator-nuttx/pull/3053) Nucleo-F446RE: added support for CAN driver 29394* [#3064](https://github.com/apache/incubator-nuttx/pull/3064) boards: refactor for nucleo-f446re and nucleo-f302r8 boards 29395* [#3097](https://github.com/apache/incubator-nuttx/pull/3097) Add configuration for testing the Sporadic Scheduler. 29396* [#3222](https://github.com/apache/incubator-nuttx/pull/3222) stm32/stm32_serial: add support for TX DMA and some improvements 29397* [#3223](https://github.com/apache/incubator-nuttx/pull/3223) stm32/stm32_pwm: add interfaces to access RCR register and TRGO 29398* [#3225](https://github.com/apache/incubator-nuttx/pull/3225) stm32/stm32_adc: various improvements for ADC 29399* [#3232](https://github.com/apache/incubator-nuttx/pull/3232) stm32/stm32_foc.c: add the lower-half FOC device support 29400 29401#### STM32F4 29402* [#2553](https://github.com/apache/incubator-nuttx/pull/2553) boards: stm32f4discovery: Add adb configuration 29403* [#2699](https://github.com/apache/incubator-nuttx/pull/2699) boards/stm32f4discovery: Add a LWL board profile and improve the README.txt 29404* [#3052](https://github.com/apache/incubator-nuttx/pull/3052) Add support to LCD ST7789 on STM32F4Discovery 29405* [#3056](https://github.com/apache/incubator-nuttx/pull/3056) Add LCD1602 Backpack to common board 29406 29407#### STM32F7 29408* [#3218](https://github.com/apache/incubator-nuttx/pull/3218) Integration of pysimCoder with NUTTX 29409 29410#### STM32H7 29411* [#2353](https://github.com/apache/incubator-nuttx/pull/2353) Fix of the OTG FS HOST for nucleo-h743zi 29412 29413#### STM32L4 29414* [#2009](https://github.com/apache/incubator-nuttx/pull/2842) Added STM32L432KC DAC support 29415* [#2837](https://github.com/apache/incubator-nuttx/pull/2837) Add missing I2C3 support on nucleo-l432kc board 29416* [#2842](https://github.com/apache/incubator-nuttx/pull/2842) board: nucleo-l432kc: Add missing i2c_master_s definition 29417 29418#### TIVA 29419* [#2684](https://github.com/apache/incubator-nuttx/pull/2684) boards: lm3s6965-ek: Add iperf to discover/defconfig 29420 29421#### XTENSA 29422 29423### **Minor Board Changes** 29424* [#2558](https://github.com/apache/incubator-nuttx/pull/2558) boards: Remove CINCPATH and CXXINCPATH 29425 29426#### ARM 29427* [#2079](https://github.com/apache/incubator-nuttx/pull/2079) Stm32 oled fixes pr 29428* [#2360](https://github.com/apache/incubator-nuttx/pull/2360) stm32/stm32ldiscovery: modernize board init little bit 29429* [#2500](https://github.com/apache/incubator-nuttx/pull/2500) stm32/common: devpath not long enough for apa102 and veml6070 29430 29431#### CXD56 29432* [#2193](https://github.com/apache/incubator-nuttx/pull/2193) cxd56xx: Remove HOSTCC and HOSTCFLAGS from Make.defs 29433 29434#### Xtensa 29435* [#2127](https://github.com/apache/incubator-nuttx/pull/2127) esp32: Added Userled support 29436* [#2802](https://github.com/apache/incubator-nuttx/pull/2802) ESP32: Refactor of POSTBUILD action 29437* [#3263](https://github.com/apache/incubator-nuttx/pull/3263) esp32: Move the WLAN initialisation to the common directory. 29438* [#3288](https://github.com/apache/incubator-nuttx/pull/3288) esp32-wrover-kit: Don't use User GPIO Subsystem to control LED 29439* [#3442](https://github.com/apache/incubator-nuttx/pull/3442) esp32 boards: BUTTON_BOOT should use PULLUP instead PULLDOWN 29440 29441## File System 29442 29443### Significant Improvements 29444* [#2598](https://github.com/apache/incubator-nuttx/pull/2598) fs/epoll: add asynchronous epoll control support 29445* [#2841](https://github.com/apache/incubator-nuttx/pull/2841) fs: procfs meminfo improvements 29446* [#2957](https://github.com/apache/incubator-nuttx/pull/2957) fs: mqueue: add poll support 29447* [#3045](https://github.com/apache/incubator-nuttx/pull/3045) fs: Allocate file/socket dynamically 29448* [#3212](https://github.com/apache/incubator-nuttx/pull/3212) fs/lfs: Update version to 2.4.0 29449 29450### Bug Fixes 29451* [#2073](https://github.com/apache/incubator-nuttx/pull/2073) fs: epoll_create: modify return value for epoll_create1 29452* [#2260](https://github.com/apache/incubator-nuttx/pull/2260) fs: eventfd: remove the unique minor limit 29453* [#2317](https://github.com/apache/incubator-nuttx/pull/2317) fs: flashback to release all file descriptors in group to increase debugging time. 29454* [#2339](https://github.com/apache/incubator-nuttx/pull/2339) Revert "fs/nxffs: Fix scan good block slowly and scan an invalid block" 29455* [#2532](https://github.com/apache/incubator-nuttx/pull/2532) fs/unionfs: remove excessive protection to avoid deadlock 29456* [#2540](https://github.com/apache/incubator-nuttx/pull/2540) fs: Skip call fs_checkfd if fd < 3 in fs_fdopen 29457* [#2572](https://github.com/apache/incubator-nuttx/pull/2572) fs: spiffs fixes 29458* [#2606](https://github.com/apache/incubator-nuttx/pull/2606) fs: Fix inode lock at umount2 29459* [#2618](https://github.com/apache/incubator-nuttx/pull/2618) fs: remove INODE_IS_SPECIAL() use INODE_IS_PSEUDODIR instead 29460* [#2638](https://github.com/apache/incubator-nuttx/pull/2618) fs: fs_dupfd2 should return OK if fd1 equals fd2 29461* [#2639](https://github.com/apache/incubator-nuttx/pull/2639) fs: Let files_allocate return -EMFILE instead ERROR 29462* [#2640](https://github.com/apache/incubator-nuttx/pull/2640) fs: Remove _files_close and reuse file_close 29463* [#2643](https://github.com/apache/incubator-nuttx/pull/2643) fs: Fix the race condition in file_dup 29464* [#2648](https://github.com/apache/incubator-nuttx/pull/2648) fs: Remove the special hack for pty in nx_vopen 29465* [#2660](https://github.com/apache/incubator-nuttx/pull/2660) fs: Reimplement file_open to not depend on nx_open 29466* [#2661](https://github.com/apache/incubator-nuttx/pull/2661) fs: file_dup2 shouldn't hold the file list lock 29467* [#2662](https://github.com/apache/incubator-nuttx/pull/2662) fs/inode/fs_files.c: fix DEBUGASSERT in romfs 29468* [#2667](https://github.com/apache/incubator-nuttx/pull/2667) fs: Make nx_vxxx and file_vxxx as internal functions 29469* [#2724](https://github.com/apache/incubator-nuttx/pull/2724) fs/tmpfs: Iterate the entry reversely in readdir 29470* [#2739](https://github.com/apache/incubator-nuttx/pull/2739) fs/readdir: Must reserve a byte for the NUL terminator 29471* [#2810](https://github.com/apache/incubator-nuttx/pull/2810) fs: eventfd: Convert the indent under EVENT_FD_VFS_PATH option to tab 29472* [#2852](https://github.com/apache/incubator-nuttx/pull/2852) fs: Merge fs_poll into poll_fdsetup 29473* [#2854](https://github.com/apache/incubator-nuttx/pull/2854) fs: Don't call _NX_SETERRNO in fopen and fdopen 29474* [#2861](https://github.com/apache/incubator-nuttx/pull/2861) fs: change geometry sizes from size_t to uint32_t 29475* [#2913](https://github.com/apache/incubator-nuttx/pull/2913) fs/lfs: lfs_file_sync() when littlefs_open 29476* [#2956](https://github.com/apache/incubator-nuttx/pull/2956) fs/mount: fix mount cmd break out when meet stat error 29477* [#3042](https://github.com/apache/incubator-nuttx/pull/3042) fs: vfs : Do some adjustments for epoll 29478* [#3060](https://github.com/apache/incubator-nuttx/pull/3060) fs: find_blockdriver: Don't ferr() on MTDs 29479* [#3069](https://github.com/apache/incubator-nuttx/pull/3069) fs/mmap: Clarify MAP_PRIVATE dependency on CONFIG_FS_RAMMAP 29480* [#3070](https://github.com/apache/incubator-nuttx/pull/3070) fs/mmap: Return EACCES for incompatible file descriptors 29481* [#3105](https://github.com/apache/incubator-nuttx/pull/3105) fs/epoll: correct the return value of epoll_ctl(2) 29482* [#3137](https://github.com/apache/incubator-nuttx/pull/3137) fs/littlefs: Suppport the duplication function 29483* [#3444](https://github.com/apache/incubator-nuttx/pull/3444) fs/romfs: fix open zero-byte file fail issue 29484* [#3491](https://github.com/apache/incubator-nuttx/pull/3491) fs: vfs: adjust the error code of write to be consistent with read 29485 29486## Networking 29487 29488### Significant Improvements 29489* [#2414](https://github.com/apache/incubator-nuttx/pull/2414) net: tcp: implement the fast retransmit 29490* [#2415](https://github.com/apache/incubator-nuttx/pull/2415) net: gmp: add MULTICAST_TTL support 29491* [#2417](https://github.com/apache/incubator-nuttx/pull/2417) net: wireless: add country code control support 29492* [#2548](https://github.com/apache/incubator-nuttx/pull/2548) net: tcp: optimize TCP handshake performance 29493* [#2695](https://github.com/apache/incubator-nuttx/pull/2695) netpacket: if_addr: add interface address header 29494* [#2899](https://github.com/apache/incubator-nuttx/pull/2899) net: socket: Unify socket into file system to avoid the code duplication 29495* [#2964](https://github.com/apache/incubator-nuttx/pull/2964) net: socket_rpmsg: add socket rpmsg support 29496* [#3025](https://github.com/apache/incubator-nuttx/pull/3025) net: Add sendmsg and recvmsg to syscall list 29497* [#3081](https://github.com/apache/incubator-nuttx/pull/3081) tcp_send_buffered.c: improve tcp write buffering 29498* [#3113](https://github.com/apache/incubator-nuttx/pull/3113) net: usrsock: add send multi-elements support 29499* [#3257](https://github.com/apache/incubator-nuttx/pull/3257) net: tcp: support bind the same port with different domain 29500 29501### Bug Fixes 29502* [#1589](https://github.com/apache/incubator-nuttx/pull/1589) net: tcp: fix tcp socket close timeout if loss wireless connection 29503* [#2075](https://github.com/apache/incubator-nuttx/pull/2075) net: TCP-stack fix for stalled tcp sockets due to broken keepalive 29504* [#2121](https://github.com/apache/incubator-nuttx/pull/2121) net: devif: devif_callback.c: remove harmful debug check 29505* [#2257](https://github.com/apache/incubator-nuttx/pull/2257) net: callback: remove the assert check of conn instance 29506* [#2332](https://github.com/apache/incubator-nuttx/pull/2332) net/tcp: Rectified keepalive fix 29507* [#2412](https://github.com/apache/incubator-nuttx/pull/2413) net/icmp: add sanity check to avoid wild data length 29508* [#2413](https://github.com/apache/incubator-nuttx/pull/2413) net/tcp: correct the available iobs count if throttle is enabled 29509* [#2416](https://github.com/apache/incubator-nuttx/pull/2416) net/tcp: fallback to unthrottle pool to avoid deadlock 29510* [#2421](https://github.com/apache/incubator-nuttx/pull/2421) net/neighbor/neighbor_ethernet_out.c: fix build error without ICMPv6 29511* [#2465](https://github.com/apache/incubator-nuttx/pull/2465) net/procfs: handle opendir("/proc/net/") correctly 29512* [#2466](https://github.com/apache/incubator-nuttx/pull/2466) net/igmp: add sanity check to handle allocate fail 29513* [#2467](https://github.com/apache/incubator-nuttx/pull/2467) net/sockopt: Try usrsock further if the protocol not available 29514* [#2489](https://github.com/apache/incubator-nuttx/pull/2489) net: tcp: send the ACK in time after obtain ahead buffer from iobs 29515* [#2688](https://github.com/apache/incubator-nuttx/pull/2688) net: Remove duplicate forward references 29516* [#2774](https://github.com/apache/incubator-nuttx/pull/2774) net/ip: do not drop the udp packet from IP layer 29517* [#2811](https://github.com/apache/incubator-nuttx/pull/2811) net/local: Add an option to specify the prefix of named pipe 29518* [#2869](https://github.com/apache/incubator-nuttx/pull/2869) netdb.h: Add NI_MAXHOST and NI_MAXSERV 29519* [#2911](https://github.com/apache/incubator-nuttx/pull/2911) net: fix a few DP83848C and DP83825I constants 29520* [#2959](https://github.com/apache/incubator-nuttx/pull/2959) net: socket: move si_send/recv into sendmsg/recvmsg 29521* [#2978](https://github.com/apache/incubator-nuttx/pull/2978) telnet: fix crash about telnet client connect 29522* [#3037](https://github.com/apache/incubator-nuttx/pull/3037) Revert "net: tcp: Add DEBUGASSERT() in psock_tcp_send()" 29523* [#3043](https://github.com/apache/incubator-nuttx/pull/3043) net: local: Remove local_send.c since nobody use it now 29524* [#3044](https://github.com/apache/incubator-nuttx/pull/3044) net: fix local_sendmsg return length 29525* [#3062](https://github.com/apache/incubator-nuttx/pull/3062) net: tcp_sendfile.c: Remove an unused copy of CONFIG_NET_TCP_SPLIT_SIZE 29526* [#3099](https://github.com/apache/incubator-nuttx/pull/3099) net: tcp: dup: do not start the tcp monitor if unestablished 29527* [#3100](https://github.com/apache/incubator-nuttx/pull/3100) net: tcp: correct the port byte order 29528* [#3101](https://github.com/apache/incubator-nuttx/pull/3101) net: arp: add timeout to avoid infinite send wait 29529* [#3103](https://github.com/apache/incubator-nuttx/pull/3103) net: tcp: reset the connection ref count before tcp_free() 29530* [#3104](https://github.com/apache/incubator-nuttx/pull/3104) net: dev: check the available address further 29531* [#3106](https://github.com/apache/incubator-nuttx/pull/3106) net: if: remove the macro expansion of the public structure 29532* [#3221](https://github.com/apache/incubator-nuttx/pull/3221) net: tcp: tcp_send_buffered.c: Fix non-blocking I/O 29533* [#3254](https://github.com/apache/incubator-nuttx/pull/3254) net: arp: Fix arp 29534* [#3319](https://github.com/apache/incubator-nuttx/pull/3319) tcp_netpoll.c: Fix a performance issue with CONFIG_NET_TCP_WRITE_BUFFERS 29535 29536# Security Issues Fixed In This Release 29537 29538# Compatibility Concerns 29539 29540## Changes to Build System 29541 29542### Change CFLAGS, CPPFLAGS, CXXFLAGS, and AFLAGS from Recursive to Simple Assignment 29543 29544[PR-1890](https://github.com/apache/incubator-nuttx/pull/1890) 29545(commit [2caf3a69e3d60ec550980f7ba897c732e7a39df7](https://github.com/apache/incubator-nuttx/pull/1890/commits/2caf3a69e3d60ec550980f7ba897c732e7a39df7)) 29546attempts to speed up compilation time for concurrent builds by changing 29547assignment to makefile variables `*CFLAGS*`, `*CPPFLAGS*`, `*CXXFLAGS*`, and 29548`*AFLAGS*` from recursive `=` to simple `:=`. This causes these compile 29549options to be expanded only once during the build. 29550 29551If you are using NuttX on a custom board not in the NuttX repository, you may 29552want to make a similar change to your `Make.defs` files. Change these 29553recursive assignments: 29554 29555``` 29556CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe 29557CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe 29558CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) 29559AFLAGS = $(CFLAGS) -D__ASSEMBLY__ 29560``` 29561 29562to simple assignments: 29563 29564``` 29565CFLAGS := $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe 29566CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe 29567CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) 29568AFLAGS := $(CFLAGS) -D__ASSEMBLY__ 29569``` 29570 29571### Not Necessary to Define `__NuttX__` in Make.defs 29572 29573[PR-2192](https://github.com/apache/incubator-nuttx/pull/2192) 29574(commit [9208176f600d0d04446531909bf05710716a5ee4](https://github.com/apache/incubator-nuttx/commit/9208176f600d0d04446531909bf05710716a5ee4)) 29575refactors definition of the `__NuttX__` preprocessor symbol to 29576`tools/Config.mk`, so it is no longer necessary to define it in each board's 29577`Make.defs` file. 29578 29579If you are using NuttX on a custom board not in the NuttX repository, you may 29580want to make a similar change to your Make.defs files. 29581 29582Remove lines like this: 29583 29584``` 29585ARCHDEFINES = -D__NuttX__ 29586``` 29587 29588Or remove -D__NuttX__ from lines like this: 29589 29590``` 29591CXXFLAGS += $(ARCHDEFINES) $(EXTRAFLAGS) -pipe -std=c++11 -D__NuttX__ 29592``` 29593 29594NuttX-10.2.0 Release Notes 29595 29596# What's new in this release 29597 29598## Major Changes to Core OS 29599 29600### New Features 29601 * [#3708](https://github.com/apache/incubator-nuttx/pull/#3708) openamp: Update to 2020.10.0 official release 29602 * [#3709](https://github.com/apache/incubator-nuttx/pull/#3709) Update libcxx to 12.0.0 release 29603 * [#3674](https://github.com/apache/incubator-nuttx/pull/#3674) libc/termios: Implement TCSADRAIN and TCSAFLUSH for tcsetattr 29604 * [#4595](https://github.com/apache/incubator-nuttx/pull/#4595) libc/misc: add lib_glob 29605 * [#4594](https://github.com/apache/incubator-nuttx/pull/#4594) libc/string: add lib_strchrnul 29606 * [#3672](https://github.com/apache/incubator-nuttx/pull/#3672) include/spawn.h: Add POSIX_SPAWN_SETSID definition 29607 * [#4265](https://github.com/apache/incubator-nuttx/pull/#4265) libc: Support message catalog function 29608 * [#3102](https://github.com/apache/incubator-nuttx/pull/#3102) mm/iob: add iob_free_queue() interface 29609 * [#3893](https://github.com/apache/incubator-nuttx/pull/#3893) libs/libc/netdb: add dns clear interface 29610 * [#3959](https://github.com/apache/incubator-nuttx/pull/#3959) libc/time: Implement timegm function 29611 * [#3963](https://github.com/apache/incubator-nuttx/pull/#3963) libc/sched: Implement nice API 29612 * [#3977](https://github.com/apache/incubator-nuttx/pull/#3977) sched: Add kthread_create_with_stack 29613 * [#4016](https://github.com/apache/incubator-nuttx/pull/#4016) Add heap & stack check to idle thread 29614 * [#4114](https://github.com/apache/incubator-nuttx/pull/#4114) libc/math: Add fmax and fmin functions 29615 * [#4130](https://github.com/apache/incubator-nuttx/pull/#4130) sys/poll: add POLLRDHUP definition 29616 * [#4262](https://github.com/apache/incubator-nuttx/pull/#4262) libc: Add the empty nl_langinfo implementation 29617 * [#4272](https://github.com/apache/incubator-nuttx/pull/#4272) libc: Implement gettext function 29618 * [#4432](https://github.com/apache/incubator-nuttx/pull/#4432) libc:machine: add atomic_load/store/exchange API 29619 * [#4438](https://github.com/apache/incubator-nuttx/pull/#4438) uClibcxx: add weak attribute for new/del ops 29620 * [#3681](https://github.com/apache/incubator-nuttx/pull/#3681) libc: Implement openpty function 29621 * [#4363](https://github.com/apache/incubator-nuttx/pull/#4363) sched/backtrace: add sched_backtrace support 29622 * [#4374](https://github.com/apache/incubator-nuttx/pull/#4374) libxx: add new low level c++ standard library support 29623 * [#4425](https://github.com/apache/incubator-nuttx/pull/#4425) libc: add common machine atomic operation 29624 * [#3687](https://github.com/apache/incubator-nuttx/pull/#3687) libc/pwd: Add NSS_BUFLEN_PASSWD macro 29625 * [#3970](https://github.com/apache/incubator-nuttx/pull/#3970) libc: Implement fesetround & fegetround for arm 29626 * [#4104](https://github.com/apache/incubator-nuttx/pull/#4104) sched/clock: add nsec range check in clock_settime 29627 * [#4518](https://github.com/apache/incubator-nuttx/pull/#4518) getaddrinfo: support AF_LOCAL and AF_RPMSG 29628 * [#4595](https://github.com/apache/incubator-nuttx/pull/#4595) libc/misc: add lib_glob 29629 * [#3985](https://github.com/apache/incubator-nuttx/pull/#3985) mmap: Implement the minial but reasonable mlock/munlock/mprotect 29630 * [#4065](https://github.com/apache/incubator-nuttx/pull/#4065) mm: Add kmm_malloc_size and mm_malloc_size 29631 * [#4096](https://github.com/apache/incubator-nuttx/pull/#4096) mm: Simplify the semaphore handling 29632 * [#4100](https://github.com/apache/incubator-nuttx/pull/#4100) Implement utime and futimes 29633 29634### Bug Fixes 29635 * [#4615](https://github.com/apache/incubator-nuttx/pull/#4615) sched/signal: Correct kill with cancellation 29636 * [#4619](https://github.com/apache/incubator-nuttx/pull/#4619) sched: Fix CPU affinity issues in SMP 29637 * [#3626](https://github.com/apache/incubator-nuttx/pull/#3626) libc: Move pthread stuff to userspace 29638 * [#3673](https://github.com/apache/incubator-nuttx/pull/#3673) libc/pty: Make ptsname[_r] support PSEUDOTERM_BSD config too 29639 * [#4599](https://github.com/apache/incubator-nuttx/pull/#4599) sched:tcb_s:rearrange sched_priority/int_priority to word align 29640 * [#3747](https://github.com/apache/incubator-nuttx/pull/#3747) mm:initialize ensure alignment. 29641 * [#3962](https://github.com/apache/incubator-nuttx/pull/#3962) sched/task/task_spawn.c: initialize variables explicitly 29642 * [#3916](https://github.com/apache/incubator-nuttx/pull/#3916) sched/posix_spawn: Don't insert name at the begin of argv 29643 * [#3858](https://github.com/apache/incubator-nuttx/pull/#3858) tls: Move pthread key destructor to libc 29644 * [#3719](https://github.com/apache/incubator-nuttx/pull/#3719) group/group_signal: cancel dispatch signal when child process doesn't exist 29645 * [#4453](https://github.com/apache/incubator-nuttx/pull/#4453) libs/libxx: Enforce RTTI for building libcxxabi 29646 * [#4450](https://github.com/apache/incubator-nuttx/pull/#4450) libxx:uClibc++: disable new_handler.cpp when use libsupc++ 29647 * [#4456](https://github.com/apache/incubator-nuttx/pull/#4456) libc/gettext: Initialize path field when creating mofile struct. 29648 * [#4466](https://github.com/apache/incubator-nuttx/pull/#4466) sched/wdog/wd_start.c: prevent accessing watch-dog lag if head is NULL 29649 * [#4499](https://github.com/apache/incubator-nuttx/pull/#4499) uClibc++:remove typeinfo.cpp that confict with libsupc++ 29650 * [#3698](https://github.com/apache/incubator-nuttx/pull/#3698) sched/task: Simplify the syscall handling of task_spawn 29651 * [#3813](https://github.com/apache/incubator-nuttx/pull/#3813) syscall/syscall.csv: Correct ordering of entries 29652 * [#4020](https://github.com/apache/incubator-nuttx/pull/#4020) SMP should depends on ARCH_INTERRUPTSTACK 29653 * [#3957](https://github.com/apache/incubator-nuttx/pull/#3957) sched/wdog: Remove flags field from wdog_s to save memory 29654 * [#3967](https://github.com/apache/incubator-nuttx/pull/#3967) libc/dirname: Handle the consecutive '/' correctly 29655 * [#4018](https://github.com/apache/incubator-nuttx/pull/#4018) libs/libc/spawn: fix posix_spawn_file_actions_adddup2 alloc size error 29656 * [#4009](https://github.com/apache/incubator-nuttx/pull/#4009) Move aligned_alloc, posix_memalign and valloc from mm/umm to libs/libc/stdlib 29657 * [#4021](https://github.com/apache/incubator-nuttx/pull/#4021) sched/waitpid: handle waitpid waitting tcb->group is NULL 29658 * [#4026](https://github.com/apache/incubator-nuttx/pull/#4026) sched/idle: disable sched when idle call nx_bringup 29659 * [#4035](https://github.com/apache/incubator-nuttx/pull/#4035) work_queue: schedule the work queue using the timer mechanism 29660 * [#4048](https://github.com/apache/incubator-nuttx/pull/#4048) libc: Move pthread_key_destructor to task_info_s 29661 * [#4057](https://github.com/apache/incubator-nuttx/pull/#4057) libs: libnx: nxfonts: Fix prefix of generated fonts data 29662 * [#4109](https://github.com/apache/incubator-nuttx/pull/#4109) libc: Implement ttyname and ttyname_r 29663 * [#4115](https://github.com/apache/incubator-nuttx/pull/#4115) libc/math: Fix calculation error of log function 29664 * [#4124](https://github.com/apache/incubator-nuttx/pull/#4124) add #undef for some libc function 29665 * [#4125](https://github.com/apache/incubator-nuttx/pull/#4125) libc/sysconf: Add MONOTONIC_CLOCK for consistency 29666 * [#4127](https://github.com/apache/incubator-nuttx/pull/#4127) libc: Increase the function of crc8 to use custom polynomials 29667 * [#4160](https://github.com/apache/incubator-nuttx/pull/#4160) group/child_status: Dynamically expand group child_status 29668 * [#4183](https://github.com/apache/incubator-nuttx/pull/#4183) sched/task: Fix wrong return value from nxspawn_open() 29669 * [#4226](https://github.com/apache/incubator-nuttx/pull/#4226) syslog: reslove crash because vmov.i32 instruction is not ready 29670 * [#4246](https://github.com/apache/incubator-nuttx/pull/#4246) libc/pthread_barrierattr_destory.c: Destroy shouldn't reinitialize the attributes 29671 * [#4270](https://github.com/apache/incubator-nuttx/pull/#4270) tzset: avoid taking semaphore in interrupt for non-kernel mode 29672 * [#4413](https://github.com/apache/incubator-nuttx/pull/#4413) sched/wdog: fix switch_context caused error in wd_start() 29673 * [#3703](https://github.com/apache/incubator-nuttx/pull/#3703) sched/spawn: Support the stack address argument 29674 * [#4287](https://github.com/apache/incubator-nuttx/pull/#4287) signal: Allow SIG_EVTHREAD selectable in protected mode 29675 * [#4296](https://github.com/apache/incubator-nuttx/pull/#4296) sched: Fix crash on early syslog message with prepended process name 29676 * [#4368](https://github.com/apache/incubator-nuttx/pull/#4368) libs/libxx/uClibc++.defs: Download the correct file type. 29677 * [#4369](https://github.com/apache/incubator-nuttx/pull/#4369) libs/libxx: Download C++ libraries during context. 29678 * [#4382](https://github.com/apache/incubator-nuttx/pull/#4382) sched/backtrace: simplify the assign of tcb in case of negative pid 29679 * [#4377](https://github.com/apache/incubator-nuttx/pull/#4377) task_spawn: release g_spawn_parmsem and sched_unlock at the ending 29680 * [#4068](https://github.com/apache/incubator-nuttx/pull/#4068) mm: Remove mm_heap_impl_s struct 29681 * [#4247](https://github.com/apache/incubator-nuttx/pull/#4247) Redirect _l function to non-locale version 29682 * [#4380](https://github.com/apache/incubator-nuttx/pull/#4380) som byteorder modification 29683 * [#4283](https://github.com/apache/incubator-nuttx/pull/#4283) libc/gettext: Change g_domain to array 29684 * [#4512](https://github.com/apache/incubator-nuttx/pull/#4512) lib_vsprintf: Add %pV format support 29685 * [#4513](https://github.com/apache/incubator-nuttx/pull/#4513) libc/rexec/rexec_af: support remote command execution 29686 * [#4516](https://github.com/apache/incubator-nuttx/pull/#4516) lib_fread: return the number of bytes actually read when error occurs. 29687 * [#4520](https://github.com/apache/incubator-nuttx/pull/#4520) debug: allow customize EXTRA_FMT 29688 * [#3978](https://github.com/apache/incubator-nuttx/pull/#3978) Decouple the initialization of the separate heaps from the TEXT_HEAP option. 29689 * [#4029](https://github.com/apache/incubator-nuttx/pull/#4029) mm: fix memory corruption when loop create/exit thread in SMP mode 29690 * [#4055](https://github.com/apache/incubator-nuttx/pull/#4055) mm: Move the real implementation of mm_sbrk to sbrk 29691 * [#4030](https://github.com/apache/incubator-nuttx/pull/#4030) Fix procfs memory corruption when meet long string, add thread run time to procfs 29692 * [#4043](https://github.com/apache/incubator-nuttx/pull/#4043) select: fix asan report error 29693 * [#4519](https://github.com/apache/incubator-nuttx/pull/#4519) errno: use staic errno to replace tl_errno before tls initialization 29694 * [#3992](https://github.com/apache/incubator-nuttx/pull/#3992) Refine tls_info_s and task_info_s 29695 * [#4019](https://github.com/apache/incubator-nuttx/pull/#4019) Fix asan report error 29696 * [#4053](https://github.com/apache/incubator-nuttx/pull/#4053) mm: Move procfs_register_meminfo into common place 29697 * [#4054](https://github.com/apache/incubator-nuttx/pull/#4054) mm: Call memalign in malloc if ARCH_ADDRENV and BUILD_KERNEL are defined 29698 * [#4454](https://github.com/apache/incubator-nuttx/pull/#4454) user/trap: Set MQ_MAXMSGSIZE to 64 to get NX working 29699 * [#3725](https://github.com/apache/incubator-nuttx/pull/#3725) cmd/free: add nused/nfree field in command free 29700 * [#3753](https://github.com/apache/incubator-nuttx/pull/#3753) libelf: fix "nsh: nsh_session: readline failed: 13" error 29701 * [#3767](https://github.com/apache/incubator-nuttx/pull/#3767) binfmt: Move argv copy into exec_module 29702 * [#3764](https://github.com/apache/incubator-nuttx/pull/#3764) binfmt: Rename dump_module to binfmt_dumpmodule 29703 * [#4064](https://github.com/apache/incubator-nuttx/pull/#4064) binfmt: Replace all nx_ API with file_ API 29704 * [#3928](https://github.com/apache/incubator-nuttx/pull/#3928) binfmt: Handle argv/argv[0] == NULL correctly in exec_module 29705 * [#3867](https://github.com/apache/incubator-nuttx/pull/#3867) TLS: Correct handling of returned error values. 29706 * [#4185](https://github.com/apache/incubator-nuttx/pull/#4185) iob_trimhead: fix an integer truncation 29707 * [#4117](https://github.com/apache/incubator-nuttx/pull/#4117) Dynamically extend Pidhash table 29708 * [#4186](https://github.com/apache/incubator-nuttx/pull/#4186) libc: Implement times function 29709 * [#3908](https://github.com/apache/incubator-nuttx/pull/#3908) crypto/random_pool.c: Correct indexing on void pointer 29710 * [#3817](https://github.com/apache/incubator-nuttx/pull/#3817) audio: various fixes 29711 29712## Major Changes to the Build System 29713 29714### New Features 29715 * [#4525](https://github.com/apache/incubator-nuttx/pull/#4525) mkromfsimg: Add optional rcS file path 29716 * [#4491](https://github.com/apache/incubator-nuttx/pull/#4491) checkpatch.sh: add check gerrit Change-Id support 29717 * [#3716](https://github.com/apache/incubator-nuttx/pull/#3716) tools: Add a bash completion script for the configure tool 29718 * [#3819](https://github.com/apache/incubator-nuttx/pull/#3819) docker/linux: Add ESP32-S2 toolchain and binaries. 29719 * [#4203](https://github.com/apache/incubator-nuttx/pull/#4203) tools: Add armv7-a support to nuttx-gdbinit 29720 * [#3705](https://github.com/apache/incubator-nuttx/pull/#3705) docker: add ninja-build 29721 29722### Bug Fixes 29723 * [#4418](https://github.com/apache/incubator-nuttx/pull/#4418) compiler.h: add __builtin_offsetof instead of offsetof 29724 * [#3815](https://github.com/apache/incubator-nuttx/pull/#3815) tools/mksyscall: Fix build break of syscall instrumentation wrapper 29725 * [#4461](https://github.com/apache/incubator-nuttx/pull/#4461) tools/ci: Minor improvements to CI build script 29726 * [#4492](https://github.com/apache/incubator-nuttx/pull/#4492) tools/nxstyle: Fix the check tool incorrectly reported no alignment. 29727 * [#3710](https://github.com/apache/incubator-nuttx/pull/#3710) tools/ci: Rename sim0x.dat to sim-0x.dat to align with arm-xx.dat 29728 * [#4455](https://github.com/apache/incubator-nuttx/pull/#4455) makefile: let clean_context in distclean command 29729 * [#4423](https://github.com/apache/incubator-nuttx/pull/#4423) board: Enable CONFIG_LIBCXXABI when CONFIG_LIBCXX is enabled 29730 * [#4196](https://github.com/apache/incubator-nuttx/pull/#4196) tools: Fix nuttx-gdbinit 29731 29732## Architectural Support 29733 29734### New Architecture 29735 29736#### MIPS 29737 29738##### PIC32 29739 * [#4252](https://github.com/apache/incubator-nuttx/pull/#4252) pic32mz: added support for PIC32MZ2048EFG MCU 29740 29741### Architectures with significant improvements 29742 29743#### ARM 29744 * [#4522](https://github.com/apache/incubator-nuttx/pull/#4522) arch/arm: Add ARCH_CORTEXM55 Kconfig for cortex-m55 29745 * [#3759](https://github.com/apache/incubator-nuttx/pull/#3759) arm/v7-a/fpu: add VFP-v3 D32 support 29746 * [#4536](https://github.com/apache/incubator-nuttx/pull/#4536) arch/arm: correct the function name from arm_getsp() to up_getsp() 29747 * [#4410](https://github.com/apache/incubator-nuttx/pull/#4410) arch/arm/assert: enhance the assert dump 29748 * [#4409](https://github.com/apache/incubator-nuttx/pull/#4409) arch/arm/cortex-m: add up_backtrace support 29749 * [#4405](https://github.com/apache/incubator-nuttx/pull/#4405) arch/armv7: add up_backtrace support based on frame pointer 29750 * [#4385](https://github.com/apache/incubator-nuttx/pull/#4385) arch/armv8-m: Update per the latest architecture reference manual 29751 * [#4354](https://github.com/apache/incubator-nuttx/pull/#4354) arch/arm: correct the frame pointer register declare 29752 * [#4205](https://github.com/apache/incubator-nuttx/pull/#4205) arm: add up_secure_irq support 29753 * [#4176](https://github.com/apache/incubator-nuttx/pull/#4176) ARM: fix CPSR corruption after exception handling 29754 * [#4094](https://github.com/apache/incubator-nuttx/pull/#4094) arch/armv7-a: Remove the special SMP SGI process 29755 * [#4451](https://github.com/apache/incubator-nuttx/pull/#4451) arch: Replace ar, nm and ld with gcc-ar, gcc-nm and gcc 29756 * [#4343](https://github.com/apache/incubator-nuttx/pull/#4343) arch/armv8-m: Add SAU support 29757 * [#4341](https://github.com/apache/incubator-nuttx/pull/#4341) arch/arm: Add NVIC_FPCCR_XXX macro to avoid the hard code value 29758 * [#4279](https://github.com/apache/incubator-nuttx/pull/#4279) arch/cortex-m: replace arm_switchcontext to c-style 29759 * [#4106](https://github.com/apache/incubator-nuttx/pull/#4106) arm/setjmp.h:add c++ support 29760 * [#4013](https://github.com/apache/incubator-nuttx/pull/#4013) arm: fix enable interrupt too earlier caused system crash 29761 * [#4483](https://github.com/apache/incubator-nuttx/pull/#4483) Fix compilation of arm protected build 29762 * [#3879](https://github.com/apache/incubator-nuttx/pull/#3879) arch: Rename xxx_getsp to up_getsp 29763 * [#4227](https://github.com/apache/incubator-nuttx/pull/#4227) pwm: add option to break the loops when using multiple PWM channels 29764 * [#4261](https://github.com/apache/incubator-nuttx/pull/#4261) EXC_SECURE and SECURE_STACK just can clear at TRUSTZONE_NONSECURE 29765 29766#### CXD56XX 29767 * [#4557](https://github.com/apache/incubator-nuttx/pull/#4557) arch: cxd56xx: Replace the critical section with spinlock in cxd56_serial.c 29768 * [#3743](https://github.com/apache/incubator-nuttx/pull/#3743) arch: arm: cxd56xx: Update cxd56xx drivers 29769 * [#3845](https://github.com/apache/incubator-nuttx/pull/#3845) Fix spresense with elf 29770 29771#### LPC17XX_40XX 29772 * [#4072](https://github.com/apache/incubator-nuttx/pull/#4072) lpc17xx: Added WDT driver. 29773 * [#4316](https://github.com/apache/incubator-nuttx/pull/#4316) lpc17_40: Fixed I2C port sanity check. 29774 * [#4148](https://github.com/apache/incubator-nuttx/pull/#4148) lpc17_40: style fix in WDT definitions. 29775 * [#4107](https://github.com/apache/incubator-nuttx/pull/#4107) lpc17_40: Fixed progmem driver. 29776 29777#### STM32 29778 * [#3761](https://github.com/apache/incubator-nuttx/pull/#3761) ET-STM32 Stamp: An STM32F103RET6 target for NuttX 29779 * [#4350](https://github.com/apache/incubator-nuttx/pull/#4350) arch/arm/src/stm32l4/Kconfig: add new STM32L4+ chip types 29780 * [#4310](https://github.com/apache/incubator-nuttx/pull/#4310) arch/stm32: improvements for qencoder 29781 * [#3752](https://github.com/apache/incubator-nuttx/pull/#3752) Use inttypes stm32fx i2c 29782 * [#4090](https://github.com/apache/incubator-nuttx/pull/#4090) STM32G43XX Analog Comparator 29783 * [#3942](https://github.com/apache/incubator-nuttx/pull/#3942) Changed the STM32 Analog Comparator driver. 29784 * [#3729](https://github.com/apache/incubator-nuttx/pull/#3729) stm32 timers: Prefer GTIM macros and make this use more uniform. 29785 * [#4163](https://github.com/apache/incubator-nuttx/pull/#4163) Files for pysimCoder 29786 * [#4151](https://github.com/apache/incubator-nuttx/pull/#4151) Change DAC driver to support STM32G4 DAC 29787 29788#### STM32L4 29789 * [#3668](https://github.com/apache/incubator-nuttx/pull/#3668) arch/arm/src/stm32l4/hardware/stm32l4xrxx: pinmap alternative function for SPI2 29790 * [#4468](https://github.com/apache/incubator-nuttx/pull/#4468) arch/arm/src/stm32l4: fix STM32L4+ option bytes memory address 29791 * [#4501](https://github.com/apache/incubator-nuttx/pull/#4501) arch/arm/src/stm32l4: add control for Vddio2 independent I/Os supply valid 29792 * [#4469](https://github.com/apache/incubator-nuttx/pull/#4469) arch/arm/src/stm32l4/stm32l4_flash.c: fix FLASH_CONFIG_I to use dual-bank access 29793 29794#### STM32L5 29795 29796#### S32K1XX 29797 * [#3850](https://github.com/apache/incubator-nuttx/pull/#3850) UCANS32K146 add support for B revision 29798 * [#4493](https://github.com/apache/incubator-nuttx/pull/#4493) Fix error in s32k118_pinmux.h 29799 * [#3795](https://github.com/apache/incubator-nuttx/pull/#3795) S32K1XX LSPI Double word up to 64 bits support 29800 29801#### IMX6 29802 * [#3777](https://github.com/apache/incubator-nuttx/pull/#3777) arch: imx6: Add termios support to imx6 29803 29804#### IMXRT 29805 * [#3988](https://github.com/apache/incubator-nuttx/pull/#3988) arch/arm/src/imxrt/imxrt_flexpwm.c: fix mistake in submodules address offset 29806 * [#4431](https://github.com/apache/incubator-nuttx/pull/#4431) i.MX RT: Changes to FlexCAN driver and Teensy 4.x CAN configuration 29807 * [#4285](https://github.com/apache/incubator-nuttx/pull/#4285) arch/arm/src/imxrt/imxrt_flexpwm.c: Set LDOK bits after all channels are set 29808 * [#4138](https://github.com/apache/incubator-nuttx/pull/#4138) i.MX RT: added support for Tickless OS 29809 29810#### RP2040 29811 * [#4049](https://github.com/apache/incubator-nuttx/pull/#4049) Raspipico smp 29812 * [#4251](https://github.com/apache/incubator-nuttx/pull/#4251) raspberrypi-pico: add support for lcd_dev 29813 * [#4002](https://github.com/apache/incubator-nuttx/pull/#4002) Kinetis Replace DMA with a proper eDMA driver and use it on SPI and Serial 29814 29815#### RTL8720C 29816 * [#4076](https://github.com/apache/incubator-nuttx/pull/#4076) AmebaZ2: Add soc src code 29817 29818#### NRF52 29819 29820#### STM32H7/STM32F7 29821 * [#4331](https://github.com/apache/incubator-nuttx/pull/#4331) arch/arm/stm32h7: dma and serial: add TRBUFF flag. 29822 * [#4441](https://github.com/apache/incubator-nuttx/pull/#4441) arch/arm/stm32f7/stm32_irq: Fix format strings 29823 * [#4098](https://github.com/apache/incubator-nuttx/pull/#4098) stm32h7 Ethernet add yield and timeout to not hog CPU 29824 * [#3730](https://github.com/apache/incubator-nuttx/pull/#3730) stm32h7 rcc: Sync h7x7xx and h7x3xx. Changes are relevant to both 29825 * [#3892](https://github.com/apache/incubator-nuttx/pull/#3892) arch/arm/src/stm32h7: qspi use indirect write instead of indirect read 29826 * [#3728](https://github.com/apache/incubator-nuttx/pull/#3728) stm32f7: Remove references to BOARD_ENABLE_USBOTG_HSULPI. 29827 * [#3731](https://github.com/apache/incubator-nuttx/pull/#3731) stm32/stm32f7 tickless: Fix up_timer_getmask to be correct for the width of the timer. 29828 * [#3976](https://github.com/apache/incubator-nuttx/pull/#3976) STM32F7 SDMMC fixes 29829 * [#3924](https://github.com/apache/incubator-nuttx/pull/#3924) stm32h7 fix for adc to handle overrun and the DR's fifo 29830 29831#### Renesas 29832 * [#4230](https://github.com/apache/incubator-nuttx/pull/#4230) renesas/rx65n: add long type for all PRI*PTR 29833 * [#3989](https://github.com/apache/incubator-nuttx/pull/#3989) Renesas/RX added setjmp and placeholder ioctl 29834 29835#### Risc-V 29836 * [#3770](https://github.com/apache/incubator-nuttx/pull/#3770) Add support for PolarFire SoC and icicle board 29837 * [#3997](https://github.com/apache/incubator-nuttx/pull/#3997) risc-v/bl602: update wifi firmware version 29838 * [#4381](https://github.com/apache/incubator-nuttx/pull/#4381) arch/riscv/assert: enhance the assert dump 29839 * [#4367](https://github.com/apache/incubator-nuttx/pull/#4367) riscv/backtrace: add up_backtrace support 29840 * [#4365](https://github.com/apache/incubator-nuttx/pull/#4365) riscv/common: add CURRENT_REGS declare in RV32 29841 * [#4342](https://github.com/apache/incubator-nuttx/pull/#4342) riscv/bl602: Fix that AP cannot be start when STA have been started. 29842 * [#4335](https://github.com/apache/incubator-nuttx/pull/#4335) arch/bl602:Add bl602 os adapter layer 29843 * [#4145](https://github.com/apache/incubator-nuttx/pull/#4145) risc-v/bl602: update wifi firmware and some fixup. 29844 * [#3849](https://github.com/apache/incubator-nuttx/pull/#3849) risc-v/mpfs: irq fixes, more register defines and up_systemreset() 29845 * [#3984](https://github.com/apache/incubator-nuttx/pull/#3984) risc-v/bl602: Support AP and STA as independent network interface device 29846 * [#3913](https://github.com/apache/incubator-nuttx/pull/#3913) arch: k210: Fix stack coloring for the idle thread stack 29847 * [#3757](https://github.com/apache/incubator-nuttx/pull/#3757) riscv: Add inline IRQ process functions 29848 * [#4041](https://github.com/apache/incubator-nuttx/pull/#4041) risc-v/bl602: add efuse driver 29849 * [#4384](https://github.com/apache/incubator-nuttx/pull/#4384) Mpfs core pwm 29850 * [#4507](https://github.com/apache/incubator-nuttx/pull/#4507) various MPFS fixes 29851 29852#### ESP32-C3 29853 * [#3853](https://github.com/apache/incubator-nuttx/pull/#3853) arch/risc-v/esp32c3: add esp32c3_modtext to allow ELF loading 29854 29855#### BL602 29856 * [#3784](https://github.com/apache/incubator-nuttx/pull/#3784) risc-v/bl602: Add RTC driver 29857 * [#4607](https://github.com/apache/incubator-nuttx/pull/#4607) Open ble controller adaptation code 29858 29859#### Xtensa 29860 * [#4280](https://github.com/apache/incubator-nuttx/pull/#4280) arch:xtensa: add new GNU toolchain for xtensa. 29861 * [#4478](https://github.com/apache/incubator-nuttx/pull/#4478) arch: xtensa: add xtensa cache support 29862 * [#4547](https://github.com/apache/incubator-nuttx/pull/#4547) arch:xtensa: add full bactrace support 29863 * [#4407](https://github.com/apache/incubator-nuttx/pull/#4407) arch/xtensa/src/common: Use irq_spin APIs in modifyregXX 29864 * [#4403](https://github.com/apache/incubator-nuttx/pull/#4403) Use driver-specific spinlock for ESP32 serial driver. 29865 * [#4458](https://github.com/apache/incubator-nuttx/pull/#4458) arch:xtensa: add xtensa mpu support 29866 * [#3762](https://github.com/apache/incubator-nuttx/pull/#3762) xtensa: #ifdef SYMBOL is always true if SYMBOL defined as 0 29867 29868#### ESP32 29869 * [#4638](https://github.com/apache/incubator-nuttx/pull/#4638) esp32xx_rom.ld: Strongly declare some of the libgcc.a functions that are ROM resident 29870 * [#4417](https://github.com/apache/incubator-nuttx/pull/#4417) arch/esp32: Properly handle GPIO interrupt in SMP. 29871 * [#4234](https://github.com/apache/incubator-nuttx/pull/#4234) espressif/esp32/esp32s2/esp32c3: Disable wdt on initialization. 29872 29873#### X86_64 29874 * [#4447](https://github.com/apache/incubator-nuttx/pull/#4447) Fix x86_64 29875 29876### General changes 29877 * [#4233](https://github.com/apache/incubator-nuttx/pull/#4233) board/ctrl: Add BOARDIOC_BOOT_IMAGE for booting a new application image 29878 * [#4191](https://github.com/apache/incubator-nuttx/pull/#4191) Add BOARDCTL_SWITCH_BOOT to support switch boot system 29879 * [#4089](https://github.com/apache/incubator-nuttx/pull/#4089) board/ctrl: add BOARDCTL_UNIQUEKEY support 29880 29881 ## Simulator 29882 * [#3921](https://github.com/apache/incubator-nuttx/pull/#3921) sim: Use cc as linker, which usually aliases to either GCC or Clang 29883 * [#4108](https://github.com/apache/incubator-nuttx/pull/#4108) boards/sim: enable nxlooper for alsa config 29884 * [#4222](https://github.com/apache/incubator-nuttx/pull/#4222) sim/cmdline: save boot cmdline 29885 * [#4209](https://github.com/apache/incubator-nuttx/pull/#4209) Fix sim smp 29886 * [#4207](https://github.com/apache/incubator-nuttx/pull/#4207) arch: sim: Workaround to make the IPI work on macOS 29887 * [#4167](https://github.com/apache/incubator-nuttx/pull/#4167) arch/sim: The second CPU shouldn't call up_irqinitialize 29888 * [#3904](https://github.com/apache/incubator-nuttx/pull/#3904) boards/sim/sim/sim: correct LDLINKFLAGS after migrating from ld to gcc 29889 * [#4056](https://github.com/apache/incubator-nuttx/pull/#4056) arch/sim: Fix bt and audio simulation stop work in SMP mode 29890 * [#4045](https://github.com/apache/incubator-nuttx/pull/#4045) sim/smp: fix smp can't start, caused by signal too busy 29891 * [#4015](https://github.com/apache/incubator-nuttx/pull/#4015) modify sim clock to PC abs time 29892 * [#3983](https://github.com/apache/incubator-nuttx/pull/#3983) arch/sim: Implement mm_mallinfo and malloc_size for the custom heap 29893 * [#4459](https://github.com/apache/incubator-nuttx/pull/#4459) sim: Inhibit stack protector on stack coloration function 29894 * [#3721](https://github.com/apache/incubator-nuttx/pull/#3721) sim/rptun: support multi(>2) core interactive by share memory 29895 * [#4306](https://github.com/apache/incubator-nuttx/pull/#4306) boards/sim: Add smartfs profile example 29896 * [#4258](https://github.com/apache/incubator-nuttx/pull/#4258) Use exit func iml host_abort. 29897 * [#3689](https://github.com/apache/incubator-nuttx/pull/#3689) Apps Issue #246: Replace romdisk_register() with boardctl(BOARDIOC_ROMDISK) 29898 * [#4465](https://github.com/apache/incubator-nuttx/pull/#4465) feature: driver: Add a Linux SPI into simulator. 29899 29900## Documentation 29901 29902### New Features 29903 * [#3634](https://github.com/apache/incubator-nuttx/pull/#3634) Documentation/platforms: added documentation for imxrt10xx boards 29904 * [#4470](https://github.com/apache/incubator-nuttx/pull/#4470) Doc: Add initial documentation to the simulator 29905 * [#4419](https://github.com/apache/incubator-nuttx/pull/#4419) doc/esp32: Add instructions to use softap 29906 29907 ### Improvements 29908 * [#3782](https://github.com/apache/incubator-nuttx/pull/#3782) spi: Improve SPI Slave interface documentation 29909 * [#4390](https://github.com/apache/incubator-nuttx/pull/#4390) Documentation: Update ESP32-C3 supported peripheral list. 29910 * [#3702](https://github.com/apache/incubator-nuttx/pull/#3702) Documentation/esp32c3: Fix a couple of issues from #3700 29911 * [#4242](https://github.com/apache/incubator-nuttx/pull/#4242) Documentation/bl602: Update some imformation 29912 * [#3662](https://github.com/apache/incubator-nuttx/pull/#3662) Fix some issues on SPI documentation 29913 * [#4375](https://github.com/apache/incubator-nuttx/pull/#4375) Documentation/esp32-wrover-kit: update the name of the GPIO interrupt device. 29914 * [#4298](https://github.com/apache/incubator-nuttx/pull/#4298) Doc/FAQ: Add more entries about board initialization 29915 * [#3899](https://github.com/apache/incubator-nuttx/pull/#3899) Documentation: Update kconfig-frontends install instructions 29916 * [#4235](https://github.com/apache/incubator-nuttx/pull/#4235) Documentation/: Update ESP32 doc. 29917 * [#3802](https://github.com/apache/incubator-nuttx/pull/#3802) Doc: Improve documentation to make clear about the priorities 29918 * [#4564](https://github.com/apache/incubator-nuttx/pull/#4564) Doc: Update download version to 10.1 and fix tar command 29919 * [#3700](https://github.com/apache/incubator-nuttx/pull/#3700) Convert ESP32-C3 README to the new Documentation 29920 * [#4298](https://github.com/apache/incubator-nuttx/pull/#4298) Doc/FAQ: Add more entries about board initialization 29921 * [#4297](https://github.com/apache/incubator-nuttx/pull/#4297) Documentation/FAQ: Why /dev/ttySx is not created 29922 29923### Driver Support 29924 29925### Bug Fixes 29926 * [#3842](https://github.com/apache/incubator-nuttx/pull/#3842) Added automatic log rotation, when log file is opened. 29927 * [#3837](https://github.com/apache/incubator-nuttx/pull/#3837) SYSLOG channel add functions return handle to the channel. 29928 * [#3848](https://github.com/apache/incubator-nuttx/pull/#3848) Syslog file rotations number is configurable. 29929 * [#3808](https://github.com/apache/incubator-nuttx/pull/#3808) Ramlog: recover last crash log from ram buffer. 29930 * [#4614](https://github.com/apache/incubator-nuttx/pull/#4614) input/touch: add io command for touch firmware version 29931 * [#4632](https://github.com/apache/incubator-nuttx/pull/#4632) feat: driver: support double buffer for display 29932 * [#4650](https://github.com/apache/incubator-nuttx/pull/#4650) driver/power: using upper-half structure directly in the lower-half structure. 29933 * [#4370](https://github.com/apache/incubator-nuttx/pull/#4370) drivers/sensors/bmp280.c: Correct bmp280 driver 29934 * [#4243](https://github.com/apache/incubator-nuttx/pull/#4243) drivers/mmcsd:Send cmd0 just once for Increased compatibility 29935 * [#4231](https://github.com/apache/incubator-nuttx/pull/#4231) adc: add ioctl command to get the number of configured channels 29936 * [#4007](https://github.com/apache/incubator-nuttx/pull/#4007) driver/fakesensor: fix bugs. 29937 * [#4177](https://github.com/apache/incubator-nuttx/pull/#4177) serial: use Ctrl+? composite key to force panic" 29938 * [#3851](https://github.com/apache/incubator-nuttx/pull/#3851) spi: Refactor SPI Slave interface prefix to sync with I2C Slave 29939 * [#4095](https://github.com/apache/incubator-nuttx/pull/#4095) drivers/syslog: Avoid prepending process name when no TCB is available 29940 * [#3990](https://github.com/apache/incubator-nuttx/pull/#3990) drivers: wireless: Fix error handling in gs2200m_ioctl_send() 29941 * [#3860](https://github.com/apache/incubator-nuttx/pull/#3860) drivers: serial: Remove an unnecessary critical section (cs) for SMP 29942 * [#3910](https://github.com/apache/incubator-nuttx/pull/#3910) serial/pty: Initialize the terminal setting as a console 29943 * [#4110](https://github.com/apache/incubator-nuttx/pull/#4110) bcm43xxx: supported IW_AUTH_CIPHER_NONE mode 29944 * [#4131](https://github.com/apache/incubator-nuttx/pull/#4131) drivers/rptun: replace the notification mech from signal to semaphore 29945 * [#4132](https://github.com/apache/incubator-nuttx/pull/#4132) serial: add ctrl+@ to force crash system for debugging 29946 * [#4156](https://github.com/apache/incubator-nuttx/pull/#4156) Fakesensor: support gps by read nema csv and delete fakesensor init. 29947 * [#4225](https://github.com/apache/incubator-nuttx/pull/#4225) sensor: directly return -ENOTSUP without the set_interval or batch 29948 * [#4228](https://github.com/apache/incubator-nuttx/pull/#4228) drivers: wireless: Fix to set the address family for recvfrom() in gs2200m 29949 * [#4288](https://github.com/apache/incubator-nuttx/pull/#4288) adc: add IOCTL commands ANIOC_RESET_FIFO and ANIOC_SAMPLES_ON_READ 29950 * [#4312](https://github.com/apache/incubator-nuttx/pull/#4312) drivers/qencoder: add command to set the maximum encoder position 29951 * [#4652](https://github.com/apache/incubator-nuttx/pull/#4652) driver/sensor: support sensor_ops: selftest 29952 * [#3633](https://github.com/apache/incubator-nuttx/pull/#3633) drivers/serial: fix Rx interrupt enable for cdcacm 29953 * [#4504](https://github.com/apache/incubator-nuttx/pull/#4504) add new interface for fb driver and lcd dev driver 29954 * [#4554](https://github.com/apache/incubator-nuttx/pull/#4554) drivers/lcd: Add GC9A01 driver and refine ST7735 29955 * [#3658](https://github.com/apache/incubator-nuttx/pull/#3658) drivers: move the generic upper-half motor driver 29956 * [#4397](https://github.com/apache/incubator-nuttx/pull/#4397) Update lm3s6965 29957 * [#4489](https://github.com/apache/incubator-nuttx/pull/#4489) drivers/mmcsd: Pass the right buffer size to SDIO_DMAPREFLIGHT 29958 * [#4479](https://github.com/apache/incubator-nuttx/pull/#4479) drivers/sdmmc: Remove rwbuffer to avoid panic 29959 * [#4476](https://github.com/apache/incubator-nuttx/pull/#4476) drivers/mmcsd: Change up_udelay to nxsig_usleep if delay >= 1ms 29960 * [#4474](https://github.com/apache/incubator-nuttx/pull/#4474) drivers/mmcsd: Handle the failure correctly in mmcsd_slotinitialize 29961 * [#4473](https://github.com/apache/incubator-nuttx/pull/#4473) drivers/mmcsd: Fix the wrong format argument in mmcsd_dmpcsd 29962 * [#3720](https://github.com/apache/incubator-nuttx/pull/#3720) driver/syslog: add CONFIG_SYSLOG_RPMSG_SERVER_NAME 29963 * [#3864](https://github.com/apache/incubator-nuttx/pull/#3864) Fix ht16k33 driver to support multi-modules 29964 * [#3828](https://github.com/apache/incubator-nuttx/pull/#3828) syslog/emerg: fix bug about printing LOG_EMERG log from iob buffer 29965 * [#3806](https://github.com/apache/incubator-nuttx/pull/#3806) syslog: fix bug about syslog_default_write 29966 * [#3936](https://github.com/apache/incubator-nuttx/pull/#3936) syslog/ramlog: Remove the duplication of \n->\r\n conversion 29967 * [#3907](https://github.com/apache/incubator-nuttx/pull/#3907) serial/pty: Don't return -NOSYS if pollfd::events equals 0 29968 * [#3742](https://github.com/apache/incubator-nuttx/pull/#3742) drivers/modem/altair: Fix behavior when a reset packet conflicts with a send packet 29969 * [#3741](https://github.com/apache/incubator-nuttx/pull/#3741) drivers/mtd/smart.c: Recover the missing link of directory entry 29970 * [#3736](https://github.com/apache/incubator-nuttx/pull/#3736) drivers/syslog: Remove emergstream implementation and caller 29971 * [#3726](https://github.com/apache/incubator-nuttx/pull/#3726) rtc: add config RTC_RPMSG_SERVER, RTC_RPMSG_SERVER_NAME 29972 * [#4113](https://github.com/apache/incubator-nuttx/pull/#4113) syslog/ramlog: optimize code and fix init issue 29973 * [#4111](https://github.com/apache/incubator-nuttx/pull/#4111) syslog/intbuf: force output log when syslog interrupt buffer is full 29974 * [#4042](https://github.com/apache/incubator-nuttx/pull/#4042) serial: add ioctl TIOCNOTTY 29975 * [#4034](https://github.com/apache/incubator-nuttx/pull/#4034) syslog: add CPU id to system when open CONFIG_SMP 29976 * [#4032](https://github.com/apache/incubator-nuttx/pull/#4032) syslog: fix crash when print localtime by syslog 29977 * [#3979](https://github.com/apache/incubator-nuttx/pull/#3979) note: Move up_schednote.c to drivers/note folder 29978 * [#4475](https://github.com/apache/incubator-nuttx/pull/#4475) drivers/mmcsd: Change mmsd_ prefix to mmcsd_ prefix 29979 * [#4415](https://github.com/apache/incubator-nuttx/pull/#4415) Adds driver for msa301 sensore module 29980 * [#4420](https://github.com/apache/incubator-nuttx/pull/#4420) sensor: fix the bug that lsm6dsl selftest is invalid in nuttx. 29981 * [#3787](https://github.com/apache/incubator-nuttx/pull/#3787) drivers/spi: Add SPI Slave character device driver 29982 * [#4566](https://github.com/apache/incubator-nuttx/pull/#4566) drivers/syslog: Call up_puts in syslog_default_write instad up_putc 29983 * [#4580](https://github.com/apache/incubator-nuttx/pull/#4580) drivers/syslog: Ensure the buffer zero terminate 29984 * [#4302](https://github.com/apache/incubator-nuttx/pull/#4302) Compile fixes in MCP23X17 driver. 29985 * [#4299](https://github.com/apache/incubator-nuttx/pull/#4299) bchlib: Improve error handling 29986 * [#4345](https://github.com/apache/incubator-nuttx/pull/#4345) mtd: Implement BIOC_PARTINFO for all drivers 29987 * [#4248](https://github.com/apache/incubator-nuttx/pull/#4248) mtd: Return MTD Partition Information 29988 * [#4166](https://github.com/apache/incubator-nuttx/pull/#4166) mtd: Add MTDIOC_ERASESTATE command for retrieving erase state value 29989 * [#3885](https://github.com/apache/incubator-nuttx/pull/#3885) mtd: Add MTDIOC_FLUSH IOCTL like MTDIOC_XIPBASE 29990 * [#3722](https://github.com/apache/incubator-nuttx/pull/#3722) lirc: fix bug about lirc_raw_event 29991 * [#4515](https://github.com/apache/incubator-nuttx/pull/#4515) rptun: add CONFIG_RPTUN_LOADER to optimize code size 29992 * [#4223](https://github.com/apache/incubator-nuttx/pull/#4223) rptun: optimize multi-core startup 29993 * [#4552](https://github.com/apache/incubator-nuttx/pull/#4552) bcm43xxx: abrupt stall of receiving new credits from sdpcm header 29994 * [#4565](https://github.com/apache/incubator-nuttx/pull/#4565) bcm43xxx: added SDPCM frame pool size parameter 29995 * [#4236](https://github.com/apache/incubator-nuttx/pull/#4236) bcm43xxx: fixed issues with unaligned buffers for DMA transfers. 29996 * [#4567](https://github.com/apache/incubator-nuttx/pull/#4567) lcd/st77xx: change 16 bit cmd send to 8 bit 29997 * [#4137](https://github.com/apache/incubator-nuttx/pull/#4137) bluetooth: add more OGF definition 29998 * [#4039](https://github.com/apache/incubator-nuttx/pull/#4039) Add putarea() method for st7789 29999 * [#3754](https://github.com/apache/incubator-nuttx/pull/#3754) wireless/bluetooth: decoupling bt_driver_s and bt_buf_s 30000 30001### New Driver Support 30002 * [#3727](https://github.com/apache/incubator-nuttx/pull/#3727) Add basic support for MCP23017 I/O Expander 30003 * [#3859](https://github.com/apache/incubator-nuttx/pull/#3859) Add Holtek HT16K33 14-segment display driver 30004 * [#4641](https://github.com/apache/incubator-nuttx/pull/#4641) drivers/mtd/m25px.c: add support for MT25Q256 SPI NOR 30005 * [#4606](https://github.com/apache/incubator-nuttx/pull/#4606) Add support for MT25Q1G SPI NOR 30006 * [#4373](https://github.com/apache/incubator-nuttx/pull/#4373) Add support for 3-phase Hall effect sensor driver 30007 * [#4490](https://github.com/apache/incubator-nuttx/pull/#4490) add support for power management ic axp202 30008 30009## Board Support 30010 30011### New Board Support 30012 30013### Boards With Significant Improvements 30014 30015#### ARM 30016 30017#### CXD56 30018 * [#3833](https://github.com/apache/incubator-nuttx/pull/#3833) Spresense new memorymap 30019 * [#4526](https://github.com/apache/incubator-nuttx/pull/#4526) Rearch video 30020 * [#3973](https://github.com/apache/incubator-nuttx/pull/#3973) boards: spresense: Update rndis and rndis_smp for workaround 30021 * [#3744](https://github.com/apache/incubator-nuttx/pull/#3744) boards: cxd56xx: Update drivers on spresense board 30022 30023#### IMX6 30024 * [#3733](https://github.com/apache/incubator-nuttx/pull/#3733) imx6 elf support 30025 30026#### IMXRT 30027 * [#3982](https://github.com/apache/incubator-nuttx/pull/#3982) boards/arm/imxrt/teensy-4.x: added board level support for GPIO driver 30028 * [#3929](https://github.com/apache/incubator-nuttx/pull/#3929) Added encoder support for Teensy 4.x 30029 * [#3980](https://github.com/apache/incubator-nuttx/pull/#3980) FlexPWM support for iMXRT MCU 30030 * [#4581](https://github.com/apache/incubator-nuttx/pull/#4581) Fixed imxrt flexcan driver compilation error (incorrect variable scope) 30031 30032#### LPC17XX_40XX 30033 30034#### NRF52 30035 30036#### RP2040 30037 * [#3917](https://github.com/apache/incubator-nuttx/pull/#3917) arm/rp2040:USB device controller support 30038 * [#3857](https://github.com/apache/incubator-nuttx/pull/#3857) boards: rp2040: Add user gpio driver 30039 * [#3996](https://github.com/apache/incubator-nuttx/pull/#3996) Support for Waveshare Pico-LCD-1.x module 30040 * [#4086](https://github.com/apache/incubator-nuttx/pull/#4086) Added PCF8574 backpack support to Raspberry Pi Pico 30041 * [#4204](https://github.com/apache/incubator-nuttx/pull/#4204) added st7735 LCD based support 30042 * [#4289](https://github.com/apache/incubator-nuttx/pull/#4289) Fixing BMP180 and INA219 in RP2040 30043 30044#### S32K1XX 30045 * [#4643](https://github.com/apache/incubator-nuttx/pull/#4643) S32K1xx arch: Add (optional) support for SPI native/hardware chip select 30046 * [#4634](https://github.com/apache/incubator-nuttx/pull/#4634) S32K1XX arch: gpioread may also be used for output pins 30047 * [#4592](https://github.com/apache/incubator-nuttx/pull/#4592) S32K1XX: Add LPI2C slave support 30048 * [#4541](https://github.com/apache/incubator-nuttx/pull/#4541) S32K1XX EVB boards cleanup & update 30049 * [#4578](https://github.com/apache/incubator-nuttx/pull/#4578) S32K1XXEVB boards: Fix RGB LED output and add comments 30050 * [#4533](https://github.com/apache/incubator-nuttx/pull/#4533) S32k1xx: added PM support 30051 * [#4596](https://github.com/apache/incubator-nuttx/pull/#4596) S32K1XX: Add FlexIO registers 30052 * [#4508](https://github.com/apache/incubator-nuttx/pull/#4508) s32k1xx: added way to get the reset cause in a proc fs 30053 * [#4560](https://github.com/apache/incubator-nuttx/pull/#4560) RDDRONE-UAVCAN / UCANS32K146 boards cleanup & update 30054 30055#### SAM34 30056 * [#3732](https://github.com/apache/incubator-nuttx/pull/#3732) board: Add support for Adafruit Circuit Express 30057 * [#3840](https://github.com/apache/incubator-nuttx/pull/#3840) Add ST7789 LCD controller support for SAMV71 XPlained Ultra board 30058 30059#### STM32 30060 * [#3944](https://github.com/apache/incubator-nuttx/pull/#3944) boards/arm/stm32/nucleo-f446re: added support for DAC driver 30061 * [#3880](https://github.com/apache/incubator-nuttx/pull/#3880) boards/arm/stm32/nucleo-f446re: added support for GPIO driver 30062 * [#3909](https://github.com/apache/incubator-nuttx/pull/#3909) Added basic support for nucleo-g431kb board. 30063 * [#3922](https://github.com/apache/incubator-nuttx/pull/#3922) Adds PWM example to nucleo-g431kb board. 30064 * [#3914](https://github.com/apache/incubator-nuttx/pull/#3914) boards: added support for EMW3162 Wi-Fi board 30065 * [#3878](https://github.com/apache/incubator-nuttx/pull/#3878) Add FOC support for B-G431-ESC1 board 30066 * [#3637](https://github.com/apache/incubator-nuttx/pull/#3637) boards/arm/stm32/nucleo-f446re: added support for PWM 30067 * [#3660](https://github.com/apache/incubator-nuttx/pull/#3660) stm32_pwm: improvements for PULSECOUNT support 30068 * [#4505](https://github.com/apache/incubator-nuttx/pull/#4505) STM32 F4, F7, H7 USB OTG Device Ensure EP initialized to proper state on usb reset and configure 30069 * [#4589](https://github.com/apache/incubator-nuttx/pull/#4589) Fix stm32xx GPIO glitches from configuration bad order of operations 30070 * [#4085](https://github.com/apache/incubator-nuttx/pull/#4085) stm32,stm32f7,stm32h7: supported ETH MAC promiscuous mode 30071 * [#4255](https://github.com/apache/incubator-nuttx/pull/#4255) STM32 DAC Driver - Add support to DAC3 30072 * [#3796](https://github.com/apache/incubator-nuttx/pull/#3796) boards/arm/stm32/nucleo-f412zg/scripts/Make.defs: Replace EXTRADEFINES by EXTRAFLAGS 30073 * [#4284](https://github.com/apache/incubator-nuttx/pull/#4284) stm32_pmw: fix pwm_stop() function to enable multiple PWM start and stop 30074 * [#4353](https://github.com/apache/incubator-nuttx/pull/#4353) stm32/stm32_serial.c fix issue 30075 * [#4244](https://github.com/apache/incubator-nuttx/pull/#4244) STM32G4: add support for CORDIC math accelerator 30076 * [#4437](https://github.com/apache/incubator-nuttx/pull/#4437) stm32_serial.c: Don't fake a TX interrupt when interrupts are not suppressed 30077 * [#3863](https://github.com/apache/incubator-nuttx/pull/#3863) boards/arm/stm32/nucleo-f446re: fixed wrong qetimer config name 30078 * [#3952](https://github.com/apache/incubator-nuttx/pull/#3952) SDIO IO_RW_EXTENDED command (CMD53) related fixes 30079 * [#4597](https://github.com/apache/incubator-nuttx/pull/#4597) Add LCD backpack support for ESP32 (devkit-c). 30080 30081#### STM32L4 30082 * [#4534](https://github.com/apache/incubator-nuttx/pull/#4534) STM32L4 LPUART support 30083 30084#### STM32F4 30085 30086#### STM32F7 / STM32H7 30087 * [#3646](https://github.com/apache/incubator-nuttx/pull/#3646) boards/stm32f7: Add i2c and mpu60x0 support to nucleo-144 and fix bitmask bug in mpu60x0 30088 * [#3650](https://github.com/apache/incubator-nuttx/pull/#3650) stm32{H7|F7} Disables/Enabled the use of GPIO_OTG_ID pin 30089 * [#3669](https://github.com/apache/incubator-nuttx/pull/#3669) STM32 {F7|H7} Use 250 Ms Data path timeout, regardless of Card Clock frequency 30090 * [#3651](https://github.com/apache/incubator-nuttx/pull/#3651) Use inttypes in stm32{f7|h7}, Kinetis, s32k drivers. 30091 * [#4524](https://github.com/apache/incubator-nuttx/pull/#4524) stm32*7/stm32_serial.c: Don't fake a TX interrupt when interrupts are not suppressed 30092 * [#4598](https://github.com/apache/incubator-nuttx/pull/#4598) stm32h7:DMA_TRBUFF is DMA_SCR_TRBUFF 30093 30094#### KINETIS 30095 * [#4190](https://github.com/apache/incubator-nuttx/pull/#4190) kinetis lpserial add RX DMA 30096 30097#### ARM 30098#### AVR32 30099 * [#3684](https://github.com/apache/incubator-nuttx/pull/) avr32dev1: USART1 RX: Reassign pin 30100 30101#### MIPS 30102#### PIC32 30103 * [#4264](https://github.com/apache/incubator-nuttx/pull/) boards: added a basic support for chipKIT Wi-FIRE board 30104 30105#### RISC-V 30106 * [#3846](https://github.com/apache/incubator-nuttx/pull/#3846) risc-v/rv32m1: Basic port to rv32m1 ri5cy 30107 * [#4146](https://github.com/apache/incubator-nuttx/pull/#4146) risc-v/bl602: add boardctl support 30108 * [#3911](https://github.com/apache/incubator-nuttx/pull/#3911) Add i2c driver to PolarFire SoC and Icicle board 30109 * [#3905](https://github.com/apache/incubator-nuttx/pull/#3905) Add SPI driver to PolarFire SoC and Icicle board 30110 * [#3933](https://github.com/apache/incubator-nuttx/pull/#3933) riscv/mpfs: add i2c reset handler 30111 * [#3920](https://github.com/apache/incubator-nuttx/pull/#3920) add dma support for PolarFire SoC 30112 * [#4569](https://github.com/apache/incubator-nuttx/pull/#4569) MPFS emmcsd 30113 30114#### BL602 30115 * [#4010](https://github.com/apache/incubator-nuttx/pull/#4010) boards/bl602: Fix uart_nx.c:419: undefined reference to `uart_bth4_register 30116 30117#### C906 30118 30119#### ESP32-C3 30120 * [#3794](https://github.com/apache/incubator-nuttx/pull/#3794) risc-v/esp32c3: Support ESP32-C3 RTC driver 30121 * [#3883](https://github.com/apache/incubator-nuttx/pull/#3883) risc-v/esp32c3: Support ESP32-C3 RSA accelerator 30122 * [#3881](https://github.com/apache/incubator-nuttx/pull/#3881) risc-v/esp32c3: Support ESP32-C3 efuse 30123 * [#3935](https://github.com/apache/incubator-nuttx/pull/#3935) risc-v/esp32c3: Support ESP32-C3 SHA accelerator 30124 * [#3882](https://github.com/apache/incubator-nuttx/pull/#3882) riscv/esp32c3: Use the RTC memory as another heap. 30125 * [#3945](https://github.com/apache/incubator-nuttx/pull/#3945) boards/esp32c3: Add romfs configuration 30126 * [#3925](https://github.com/apache/incubator-nuttx/pull/#3925) risc-v/esp32-c3: Adds I2C polled support 30127 * [#3823](https://github.com/apache/incubator-nuttx/pull/#3823) risc-v/esp32-c3: Add support for HW flow control. 30128 * [#3822](https://github.com/apache/incubator-nuttx/pull/#3822) ESP32-C3: Add DMA support for SPI Slave 30129 * [#3543](https://github.com/apache/incubator-nuttx/pull/#3543) feat(esp32c3): Support esp32c3 ble function 30130 * [#3667](https://github.com/apache/incubator-nuttx/pull/#3667) risc-v/esp32c3: Add ESP32-C3 (G)DMA driver and testing 30131 * [#4605](https://github.com/apache/incubator-nuttx/pull/#4605) risc-v/esp32-c3: improvements and fix to esp32c3_rt_timer.c 30132 * [#4611](https://github.com/apache/incubator-nuttx/pull/#4611) ESP32-C3: Add support for booting NuttX from MCUboot 30133 * [#3656](https://github.com/apache/incubator-nuttx/pull/#3656) risc-v/esp32-c3: Adds freerun wrapper 30134 * [#4574](https://github.com/apache/incubator-nuttx/pull/#4574) esp32c3-devkit: Add board profile to use LVGL on GC9A01 display 30135 * [#3810](https://github.com/apache/incubator-nuttx/pull/#3810) risc-v/esp32c3: Fix overwriting of registered-but-disabled interrupts 30136 * [#3797](https://github.com/apache/incubator-nuttx/pull/#3797) ESP32-C3: Add SPI Slave peripheral driver 30137 * [#4568](https://github.com/apache/incubator-nuttx/pull/#4568) boards/esp32c3: add ESP32C3 LCD drivers 30138 * [#4553](https://github.com/apache/incubator-nuttx/pull/#4553) risc-v/esp32c3: fix pwm driver bug 30139 * [#4500](https://github.com/apache/incubator-nuttx/pull/#4500) risc-v/esp32-c3: refactor the Wi-Fi board logic. 30140 * [#3679](https://github.com/apache/incubator-nuttx/pull/#3679) risc-v/esp32c3: Support ESP32-C3 PM standby and sleep 30141 * [#3766](https://github.com/apache/incubator-nuttx/pull/#3766) riscv/esp32c3: Add ESP32-C3 AES driver 30142 * [#3750](https://github.com/apache/incubator-nuttx/pull/#3750) riscv/esp32c3: Support SPI Flash encryption read/write 30143 * [#3735](https://github.com/apache/incubator-nuttx/pull/#3735) riscv/esp32c3: Add ESP32-C3 ADC driver 30144 * [#3715](https://github.com/apache/incubator-nuttx/pull/#3715) risc-v/esp32c3: Support ESP32-C3 auto-sleep 30145 * [#4239](https://github.com/apache/incubator-nuttx/pull/#4239) risc-v/esp32-c3: Adds systimer support and make rt_timer rely on it 30146 * [#3694](https://github.com/apache/incubator-nuttx/pull/#3694) risc-v/esp32c3: Add support for DMA transfers on SPI driver 30147 * [#3697](https://github.com/apache/incubator-nuttx/pull/#3697) riscv/esp32c3: Fix RT timer issues 30148 * [#3906](https://github.com/apache/incubator-nuttx/pull/#3906) risc-v/esp32c3_wifi_adapter.c: Remove a config that's only used in Xtensa chips. 30149 * [#3701](https://github.com/apache/incubator-nuttx/pull/#3701) riscv/esp32c3: Add ESP32C3 LEDC(PWM) driver 30150 * [#3854](https://github.com/apache/incubator-nuttx/pull/#3854) ESP32-C3: Small clean up on IRQ functions 30151 * [#4006](https://github.com/apache/incubator-nuttx/pull/#4006) risc-v/esp32c3: Notifies networking layer whether the carrier is available 30152 * [#3788](https://github.com/apache/incubator-nuttx/pull/#3788) ESP32-C3: Fix configuration of TX Burst support for GDMA 30153 * [#4040](https://github.com/apache/incubator-nuttx/pull/#4040) risc-v/esp32c3: Fix some ESP32-C3 BLE driver issues 30154 * [#4082](https://github.com/apache/incubator-nuttx/pull/#4082) boards/esp32c3-devkit: Support mounting SPI Flash MTD to littleFS 30155 * [#4075](https://github.com/apache/incubator-nuttx/pull/#4075) risc-v/esp32c3: Add board_ioctl and board_uniqueid 30156 * [#4092](https://github.com/apache/incubator-nuttx/pull/#4092) risc-v/esp32c3: Use onexit to free thread private semaphore 30157 * [#3971](https://github.com/apache/incubator-nuttx/pull/#3971) boards/riscv/esp32c3: Rename the iram_0_2 segment to irom_0_0 to avoid confusions. 30158 * [#4141](https://github.com/apache/incubator-nuttx/pull/#4141) risc-v/esp32-c3: Use systimer 0 to RTOS TICK 30159 * [#3793](https://github.com/apache/incubator-nuttx/pull/#3793) esp32&esp32c3/wifi: Support specific channel and bssid scan 30160 * [#4162](https://github.com/apache/incubator-nuttx/pull/#4162) risc-v/esp32c3: Fix some ESP32-C3 Wi-Fi driver issues 30161 * [#4169](https://github.com/apache/incubator-nuttx/pull/#4169) risc-v/esp32-c3: Makes output readable and rmv unnecessary var. 30162 * [#4314](https://github.com/apache/incubator-nuttx/pull/#4314) risc-v/esp32-c3: Complete the support for RWDT 30163 30164#### XTENSA 30165 * [#4590](https://github.com/apache/incubator-nuttx/pull/#4590) [Xtensa/RISC-V] Remove FAR and CODE qualifiers from arch-specific files 30166 * [#4187](https://github.com/apache/incubator-nuttx/pull/#4187) Fix xtensa_btdump() to look at the exception frame 30167 * [#4556](https://github.com/apache/incubator-nuttx/pull/#4556) xtensa:backtrace: flush to stack when in interrupt 30168 * [#3939](https://github.com/apache/incubator-nuttx/pull/#3939) Fix xtensa 30169 * [#4531](https://github.com/apache/incubator-nuttx/pull/#4531) xtensa/irq.h: Fixes the routine that clears the processor interrupt 30170 * [#4278](https://github.com/apache/incubator-nuttx/pull/#4278) xtensa/common: save sp before overwriting in level2/3/4 handler and typo fix 30171 * [#4311](https://github.com/apache/incubator-nuttx/pull/#4311) xtensa:coproc: fix XTENSA_CP_ALLSET error in some case 30172 * [#3768](https://github.com/apache/incubator-nuttx/pull/#3768) xtensa: Fixes names of architecture serial functions 30173 30174#### ESP32 30175 * [#3940](https://github.com/apache/incubator-nuttx/pull/#3940) xtensa/esp32: Support ESP32 RTC driver 30176 * [#4003](https://github.com/apache/incubator-nuttx/pull/#4003) xtensa/esp32: Adds support for SERIAL_TXDMA. 30177 * [#3912](https://github.com/apache/incubator-nuttx/pull/#3912) xtensa/esp32: Adds I2C polled support. 30178 * [#3803](https://github.com/apache/incubator-nuttx/pull/#3803) Add support to ESP32-S2 and ESP32S2-SAOLA-1 Board 30179 * [#3824](https://github.com/apache/incubator-nuttx/pull/#3824) xtensa/esp32-s2: Add support for serial HW flow control. 30180 * [#4604](https://github.com/apache/incubator-nuttx/pull/#4604) xtensa/esp32: Enable build system to download or build binaries from source 30181 * [#3642](https://github.com/apache/incubator-nuttx/pull/#3642) xtensa/esp32: several uart fixes 30182 * [#3648](https://github.com/apache/incubator-nuttx/pull/#3648) tools/esp32/mk_qemu_img.sh: Refactor the dd commands. 30183 * [#4625](https://github.com/apache/incubator-nuttx/pull/#4625) esp32-c3/esp32-s2: Fix the sequence of commands to set the alarm value on rt timer. 30184 * [#4610](https://github.com/apache/incubator-nuttx/pull/#4610) ESP32-S2: Add support for booting NuttX from MCUboot 30185 * [#3678](https://github.com/apache/incubator-nuttx/pull/#3678) xtensa/esp32: Support auto-sleep 30186 * [#4532](https://github.com/apache/incubator-nuttx/pull/#4532) boards/esp32s2-saola-1: Add implementation for BOARDIOC_RESET interface 30187 * [#4275](https://github.com/apache/incubator-nuttx/pull/#4275) xtensa/esp32: Keep track of the CPU where the interrupt was attached. 30188 * [#4295](https://github.com/apache/incubator-nuttx/pull/#4295) xtensa/esp32: Enable boot from Espressif's port of MCUboot 30189 * [#4315](https://github.com/apache/incubator-nuttx/pull/#4315) xtensa/esp32: Fix issues on RWDT 30190 * [#4366](https://github.com/apache/incubator-nuttx/pull/#4366) xtensa/esp32: Use IRQ to enable/disable interrupts 30191 * [#4427](https://github.com/apache/incubator-nuttx/pull/#4427) esp32/ttgo_lora_esp32: Add support to SSD1306 OLED display 30192 * [#4388](https://github.com/apache/incubator-nuttx/pull/#4388) esp32: Re-organize the interrupt handling process to correctly handle the SMP case 30193 * [#4401](https://github.com/apache/incubator-nuttx/pull/#4401) xtensa/esp32-s2: Adds support to the timer driver 30194 * [#4545](https://github.com/apache/incubator-nuttx/pull/#4545) esp32-wrover: Add support to LCD1602 with I2C Backpack 30195 * [#4587](https://github.com/apache/incubator-nuttx/pull/#4587) xtensa/esp32-s2: Adds freerun timer wrapper 30196 * [#4139](https://github.com/apache/incubator-nuttx/pull/#4139) xtensa/esp32: Fixes termios issue. 30197 * [#4586](https://github.com/apache/incubator-nuttx/pull/#4586) xtensa/esp32-s2: Adds oneshot device driver support 30198 * [#4570](https://github.com/apache/incubator-nuttx/pull/#4570) esp32_spiflash.c: Correctly disable APP's CPU cache. 30199 * [#4509](https://github.com/apache/incubator-nuttx/pull/#4509) esp32: Add initial support to Bluetooth Low Energy 30200 * [#4411](https://github.com/apache/incubator-nuttx/pull/#4411) esp32/softap: Enable the WPA2 by default to ask user password 30201 * [#4412](https://github.com/apache/incubator-nuttx/pull/#4412) boards/esp32: Add basic support to TTGO-LoRa-SX1276-ESP32 30202 * [#4585](https://github.com/apache/incubator-nuttx/pull/#4585) xtensa/esp32-s2: Adds support to rt_timer and systimer to ESP32-S2. 30203 * [#4170](https://github.com/apache/incubator-nuttx/pull/#4170) xtensa/esp32: Make output readable and rmv unnecessary var. 30204 * [#4195](https://github.com/apache/incubator-nuttx/pull/#4195) esp32_allocateheap.c: Remove the amount reserved to himem from the heap. 30205 * [#4232](https://github.com/apache/incubator-nuttx/pull/#4232) xtensa/esp32: Enable configuration of GPIO pad's drive strength 30206 * [#4240](https://github.com/apache/incubator-nuttx/pull/#4240) xtensa/esp32: expose SPI2 as a char driver 30207 * [#4253](https://github.com/apache/incubator-nuttx/pull/#4253) xtensa/esp32: Enable the allocation of multiple SPI Flash partitions 30208 * [#4338](https://github.com/apache/incubator-nuttx/pull/#4338) tools/esp32/Config.mk: Allow ESPTOOL_BINDIR to be omitted when flashing the board 30209 * [#3938](https://github.com/apache/incubator-nuttx/pull/#3938) esp32&esp32c3/wifi: Fix the issues of Wi-Fi configuration being overwritten 30210 * [#3969](https://github.com/apache/incubator-nuttx/pull/#3969) boards/esp32: Refactor the different linker scripts and delete old OpenOCD config files. 30211 * [#3975](https://github.com/apache/incubator-nuttx/pull/#3975) xtensa/esp32: Fix RTC WDT deinitialization on start routine 30212 * [#3987](https://github.com/apache/incubator-nuttx/pull/#3987) tools/esp32/backtrace.gdbscript: don't modify registers 30213 * [#4001](https://github.com/apache/incubator-nuttx/pull/#4001) xtensa/esp32: Support to select different clock source for RTC controller and close TODOs. 30214 * [#4073](https://github.com/apache/incubator-nuttx/pull/#4073) xtensa/esp32: Fix uart 2 issue. 30215 * [#3800](https://github.com/apache/incubator-nuttx/pull/#3800) arch/xtensa/esp32_emac.c: Call phy_enable_interrupt correctly. 30216 * [#4157](https://github.com/apache/incubator-nuttx/pull/#4157) boards/esp32: Refactor the linker scripts into the common directory. 30217 * [#4249](https://github.com/apache/incubator-nuttx/pull/#4249) xtensa/esp32-s2: Adds GPIO board logic to esp32s2-saola-1. 30218 * [#4471](https://github.com/apache/incubator-nuttx/pull/#4471) xtensa/esp32: Wi-Fi board logic refactoring. 30219 * [#4497](https://github.com/apache/incubator-nuttx/pull/#4497) esp32_serial.c: Don't fake an interrupt when interrupts are not suppressed. 30220 * [#3829](https://github.com/apache/incubator-nuttx/pull/#3829) xtensa/esp32: Fixes support for UART HW flow control 30221 * [#3943](https://github.com/apache/incubator-nuttx/pull/#3943) xtensa/esp32: Adds I2C Bit banging reset 30222 * [#3960](https://github.com/apache/incubator-nuttx/pull/#3960) xtensa/esp32: Refactor the text heap and add RTC memory to it 30223 * [#4646](https://github.com/apache/incubator-nuttx/pull/#4646) Add example to use BLE and WiFi at same time 30224 30225## File System 30226 30227### Bug Fixes 30228 * [#3653](https://github.com/apache/incubator-nuttx/pull/#3653) fs:cromf Use inttypes in printing macros 30229 * [#4573](https://github.com/apache/incubator-nuttx/pull/#4573) fs:procfs: add waiting_paging_fill state names 30230 * [#3745](https://github.com/apache/incubator-nuttx/pull/#3745) fs/vfs/fs_select.c: Fix select() to return EINVAL when nfds is negative 30231 * [#3740](https://github.com/apache/incubator-nuttx/pull/#3740) fs/fat/fat32util.c: Fix calculation of current sector with invalid cl… 30232 * [#3724](https://github.com/apache/incubator-nuttx/pull/#3724) fs/hostfs: fix bug about getting error file size by fstat 30233 * [#3785](https://github.com/apache/incubator-nuttx/pull/#3785) FAT32 fix skipping sectors at computing the number of free clusters 30234 * [#4171](https://github.com/apache/incubator-nuttx/pull/#4171) fs/tmpfs: Handle the tail '/' correctly 30235 * [#4539](https://github.com/apache/incubator-nuttx/pull/#4539) vfs/poll: correct the return event if inode has closed 30236 * [#3760](https://github.com/apache/incubator-nuttx/pull/#3760) Fix calculation of free clusters at mounting a fat partition 30237 * [#4012](https://github.com/apache/incubator-nuttx/pull/#4012) fs: move out nx_close from filelock 30238 * [#3974](https://github.com/apache/incubator-nuttx/pull/#3974) fs/tmpfs: Fix the memory corruption when reallocate tmpfs_directory_s 30239 * [#3986](https://github.com/apache/incubator-nuttx/pull/#3986) fs: nfs: Reconnect to the NFS server in TCP mode 30240 * [#4031](https://github.com/apache/incubator-nuttx/pull/#4031) fs/fs_dup2: (sanity check )correct check before calling dup 30241 * [#4033](https://github.com/apache/incubator-nuttx/pull/#4033) fs/procfs: add StackAlloc field for task stack info 30242 * [#4061](https://github.com/apache/incubator-nuttx/pull/#4061) FAT32 kconfig entry to enforce computation of free clusters at mount 30243 * [#4079](https://github.com/apache/incubator-nuttx/pull/#4079) fs/procfs: layout the output of meminfo correctly 30244 * [#4093](https://github.com/apache/incubator-nuttx/pull/#4093) fs: Move the default ioctl handle from nx_vioctl to file_vioctl 30245 * [#4097](https://github.com/apache/incubator-nuttx/pull/#4097) fs: Remove the inernal st_count field from struct stat 30246 * [#4101](https://github.com/apache/incubator-nuttx/pull/#4101) fs: pseudorename should call inode_release in the error path 30247 * [#4118](https://github.com/apache/incubator-nuttx/pull/#4118) fs: Support the root file system attributes(mode, uid, gid and time) 30248 * [#4119](https://github.com/apache/incubator-nuttx/pull/#4119) fs: fstat shouldn't follow the symbol link 30249 * [#4121](https://github.com/apache/incubator-nuttx/pull/#4121) vfs: stat_recursive should return -ENOSYS if stat callback is NULL 30250 * [#4123](https://github.com/apache/incubator-nuttx/pull/#4123) nuttx: littlefs_close should return value bugfix 30251 * [#4153](https://github.com/apache/incubator-nuttx/pull/#4153) fs: Add fchstat and chstat callback into mountpt_operations 30252 * [#4165](https://github.com/apache/incubator-nuttx/pull/#4165) fs: should only apply umask to the userspace caller 30253 * [#4174](https://github.com/apache/incubator-nuttx/pull/#4174) Fix nfs and statfs 30254 * [#4193](https://github.com/apache/incubator-nuttx/pull/#4193) fs: Change off_t and related types to int64_t if long long is supported 30255 * [#4224](https://github.com/apache/incubator-nuttx/pull/#4224) fs/inode: add sanity check for inode to avoid nullpointer 30256 * [#4263](https://github.com/apache/incubator-nuttx/pull/#4263) fs: Save umask to tls_task_s for non kernel mode only 30257 * [#4300](https://github.com/apache/incubator-nuttx/pull/#4300) fs: Add utimens and lutimens 30258 * [#4307](https://github.com/apache/incubator-nuttx/pull/#4307) fs/userfs: Support fchstat and chstat callback 30259 * [#4308](https://github.com/apache/incubator-nuttx/pull/#4308) fs/unionfs: Support fchstat and chstat callback 30260 * [#4309](https://github.com/apache/incubator-nuttx/pull/#4309) fs/nfs: Support fchstat and chstat callback 30261 * [#4330](https://github.com/apache/incubator-nuttx/pull/#4330) fs/littlefs: improve littlefs flash block erase balance performance 30262 * [#4332](https://github.com/apache/incubator-nuttx/pull/#4332) fs: Support 64bit in register_[block|mtd]partition 30263 * [#4333](https://github.com/apache/incubator-nuttx/pull/#4333) fs/partition: Support BIOC_PARTINFO 30264 * [#4321](https://github.com/apache/incubator-nuttx/pull/#4321) fs: Remove endsector from partition_info_s 30265 * [#3680](https://github.com/apache/incubator-nuttx/pull/#3680) fs/eventfd: add EVENT_FD_POLL as a Kconfig dependency for EVENT_FD_NPOLLWAITERS 30266 * [#4514](https://github.com/apache/incubator-nuttx/pull/#4514) fs/ioctl: using FIOC_FILEPATH instead of FIOC_FILENAME 30267 * [#4511](https://github.com/apache/incubator-nuttx/pull/#4511) inode_getpath: correct get path whether path buffer is clean or not. 30268 * [#4276](https://github.com/apache/incubator-nuttx/pull/#4276) Fix status register reading in ramtron_read() 30269 * [#4290](https://github.com/apache/incubator-nuttx/pull/#4290) cmd/df: Fix the abnormal output after off_t change 30270 * [#4133](https://github.com/apache/incubator-nuttx/pull/#4133) profs: Print StackAlloc by procfs_snprintf 30271 30272### Significant Improvements 30273 30274## Networking 30275 30276### Improvements 30277 * [#4538](https://github.com/apache/incubator-nuttx/pull/#4538) sys/socket/scm: add more socket message control helper 30278 * [#4080](https://github.com/apache/incubator-nuttx/pull/#4080) net/socket: add SO_SNDBUF support 30279 * [#4116](https://github.com/apache/incubator-nuttx/pull/#4116) net: Add file_socket function 30280 * [#4135](https://github.com/apache/incubator-nuttx/pull/#4135) net/rpmsg: add multi-iov support 30281 * [#4179](https://github.com/apache/incubator-nuttx/pull/#4179) Update socket rpmsg 30282 * [#4355](https://github.com/apache/incubator-nuttx/pull/#4355) net/rpmsg: add nonblock connect(2) support 30283 * [#4356](https://github.com/apache/incubator-nuttx/pull/#4356) net/local: add nonblock connect(2) support 30284 * [#4357](https://github.com/apache/incubator-nuttx/pull/#4357) net/tcp: add nonblock connect(2) support 30285 * [#4070](https://github.com/apache/incubator-nuttx/pull/#4070) net/tcp: add window scale support 30286 * [#3926](https://github.com/apache/incubator-nuttx/pull/#3926) net/inet: add support of FIONREAD 30287 * [#3896](https://github.com/apache/incubator-nuttx/pull/#3896) net/local: add local_nextconn() helper 30288 * [#3961](https://github.com/apache/incubator-nuttx/pull/#3961) net: Add if_nameindex and if_freenameindex API 30289 * [#4069](https://github.com/apache/incubator-nuttx/pull/#4069) net/socket: add SO_RCVBUF support 30290 * [#4071](https://github.com/apache/incubator-nuttx/pull/#4071) net/local: add AF_[UNIX|LOCAL] socketpair support 30291 * [#4540](https://github.com/apache/incubator-nuttx/pull/#4540) net/local: add FIONSPACE support 30292 * [#4593](https://github.com/apache/incubator-nuttx/pull/#4593) net/local: add socket message control support 30293 30294### Bug Fixes 30295 * [#4602](https://github.com/apache/incubator-nuttx/pull/#4602) net/dup: only start tcp monitor on INET domain 30296 * [#4649](https://github.com/apache/incubator-nuttx/pull/#4649) net: always compile listen.c and accept.c when enable CONFIG_NET 30297 * [#4603](https://github.com/apache/incubator-nuttx/pull/#4603) [SECURITY]net/tcp: sanity check for the listen address 30298 * [#4579](https://github.com/apache/incubator-nuttx/pull/#4579) net/devif/devif_callback.c: made the connection event list doubly linked 30299 * [#4433](https://github.com/apache/incubator-nuttx/pull/#4433) net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO 30300 * [#3776](https://github.com/apache/incubator-nuttx/pull/#3776) net/dev: link the net device as order of registration 30301 * [#3758](https://github.com/apache/incubator-nuttx/pull/#3758) net/tcp/retransmit: recounter the ack counter during obtain newdata 30302 * [#3723](https://github.com/apache/incubator-nuttx/pull/#3723) net: Forward socket option only when the socket type is usrsock 30303 * [#4480](https://github.com/apache/incubator-nuttx/pull/#4480) net: utils: Remove critical section for SMP in net_lock.c 30304 * [#3707](https://github.com/apache/incubator-nuttx/pull/#3707) Fix NFS over TCP 30305 * [#3818](https://github.com/apache/incubator-nuttx/pull/#3818) tcp: recv window update improvement 30306 * [#3655](https://github.com/apache/incubator-nuttx/pull/#3655) Attempt to fix race condition reported in issue #3647 30307 * [#3865](https://github.com/apache/incubator-nuttx/pull/#3865) Fix tcp seq wrap around issues 30308 * [#3889](https://github.com/apache/incubator-nuttx/pull/#3889) net/dns:fix unaligned access in dns query 30309 * [#3894](https://github.com/apache/incubator-nuttx/pull/#3894) net/telnet: fix a potential busyloop if rxbuffer writes faster than read 30310 * [#3934](https://github.com/apache/incubator-nuttx/pull/#3934) net/local: Remove all HAVE_LOCAL_POLL reference 30311 * [#3755](https://github.com/apache/incubator-nuttx/pull/#3755) net/icmp: icmp bug fix and enhancement 30312 * [#3993](https://github.com/apache/incubator-nuttx/pull/#3993) tcp_reset: Don't copy the peer window 30313 * [#3994](https://github.com/apache/incubator-nuttx/pull/#3994) tcp: always responds to keep-alive segments 30314 * [#3995](https://github.com/apache/incubator-nuttx/pull/#3995) fix active close for CONFIG_NET_TCP_WRITE_BUFFERS 30315 * [#3999](https://github.com/apache/incubator-nuttx/pull/#3999) some follow-up patches for the recent tcp readahead 30316 * [#4017](https://github.com/apache/incubator-nuttx/pull/#4017) rpmsg_socket: fix rpmsg_socket_device_destroy() multi-access 30317 * [#4022](https://github.com/apache/incubator-nuttx/pull/#4022) tcp_close: Fix a race with passive close 30318 * [#3966](https://github.com/apache/incubator-nuttx/pull/#3966) net: Fix: left shift of 1 by 31 places cannot be represented in type long int 30319 * [#3948](https://github.com/apache/incubator-nuttx/pull/#3948) TCP: simplify readahead 30320 * [#3114](https://github.com/apache/incubator-nuttx/pull/#3114) usrsock/recv: guarantee all data is received before close 30321 * [#3756](https://github.com/apache/incubator-nuttx/pull/#3756) net/tcp: set/get TCP_KEEPINTVL/IDLE value as BSD style 30322 * [#3895](https://github.com/apache/incubator-nuttx/pull/#3895) net/accept: alloc the accept fd after accept success 30323 * [#3937](https://github.com/apache/incubator-nuttx/pull/#3937) dns_recv_response: Fix IPv6 address in an ninfo() 30324 * [#4408](https://github.com/apache/incubator-nuttx/pull/#4408) Fix up that local socket will be endless loop when write data size more than the fifo size. 30325 * [#4517](https://github.com/apache/incubator-nuttx/pull/#4517) rpmsg_socket: add prefix "rpmsg-socket" for the name of rpmsg endpoint 30326 * [#4537](https://github.com/apache/incubator-nuttx/pull/#4537) net/udp: fix buffer release handling on failed buffer alloc 30327 * [#4120](https://github.com/apache/incubator-nuttx/pull/#4120) net/tcp: tcp_sendfile need restore the file location at the end 30328 * [#4134](https://github.com/apache/incubator-nuttx/pull/#4134) net/tcp: only print the error when disable the TCP_NODELAY 30329 * [#4142](https://github.com/apache/incubator-nuttx/pull/#4142) tcp_send_buffered: throttle IOB allocations for send 30330 * [#4159](https://github.com/apache/incubator-nuttx/pull/#4159) tcp_send_buffered.c: Fix broken retransmit 30331 * [#4126](https://github.com/apache/incubator-nuttx/pull/#4126) include/netinet: Add missing IP_TTL definition 30332 * [#4197](https://github.com/apache/incubator-nuttx/pull/#4197) local/stream: remove preamble header in stream mode 30333 * [#4273](https://github.com/apache/incubator-nuttx/pull/#4273) tcp: some fixes in snd_wnd processing 30334 * [#4293](https://github.com/apache/incubator-nuttx/pull/#4293) tcp: make our sequence number a bit more monotonic 30335 * [#4257](https://github.com/apache/incubator-nuttx/pull/#4257) Fix a few deadlock in tcp/iob 30336 * [#4480](https://github.com/apache/incubator-nuttx/pull/#4480) net: utils: Remove critical section for SMP in net_lock.c 30337 * [#3919](https://github.com/apache/incubator-nuttx/pull/#3919) tcp iob throttling related fixes 30338 30339# Security Issues Fixed In This Release 30340 30341# Compatibility Concerns 30342 30343## Changes to Kconfig 30344 30345The names of some Kconfig settings have been changed to improve the naming consistency. Here is the list: 30346 30347| Old| New | 30348|:------------------:| -----------------:| 30349|LIB_BOARDCTL|BOARDCTL | 30350|LIB_CRC64_FAST|LIBC_CRC64_FAST| 30351|LIB_ENVPATH |LIBC_ENVPATH | 30352|LIB_HEX2BIN |LIBC_HEX2BIN | 30353|LIB_HOMEDIR |LIBC_HOMEDIR | 30354|LIB_HOSTNAME|LIBC_HOSTNAME| 30355|LIB_KBDCODEC|LIBC_KBDCODEC| 30356|LIB_RAND_ORDER|LIBC_RAND_ORDER| 30357|LIB_SLCDCODEC |LIBC_SLCDCODEC | 30358|LIB_USRWORK |LIBC_USRWORK | 30359|LIB_USRWORKPRIORITY |LIBC_USRWORKPRIORITY | 30360|LIB_USRWORKSTACKSIZE|LIBC_USRWORKSTACKSIZE| 30361|LIB_ZONEINFO|LIBC_ZONEINFO| 30362|LIB_ZONEINFO_ROMFS|LIBC_ZONEINFO_ROMFS| 30363 30364When they appear in code, these identifiers begin with a `CONFIG_*` prefix (e.g., `CONFIG_LIB_BOARDCTL` is renamed to `CONFIG_BOARDCTL`). 30365 30366All in-tree boards have been updated, but users who maintain their own out-of-tree boards will have to update all instances of these identifiers. 30367 30368See PR-4266 https://github.com/apache/incubator-nuttx/pull/4266 and PR-4267 https://github.com/apache/incubator-nuttx/pull/4267 in the main NuttX repository. 30369 30370See also PR-820 https://github.com/apache/incubator-nuttx-apps/pull/820 and PR-821 https://github.com/apache/incubator-nuttx-apps/pull/821 in the NuttX apps repository. 30371 30372## Changes to MTD subsystem 30373 30374MTDIOC_XIPBASE, MTDIOC_FLUSH and MTDIOC_PARTINFO is removed and replace with BIOC_XIPBASE, BIOC_FLUSH and BIOC_PARTINFO: 30375 30376* Simplify the general driver(e.g. partition, flt) implementation 30377* Reduce the confusion with the same IOCTL in the different layer 30378 30379See PR-4325 https://github.com/apache/incubator-nuttx/pull/4325 30380 30381## Changes to Build System 30382 30383### LD Now Called Through GCC 30384 30385When building NuttX with GCC toolchains, the linker is now called through $(CROSSDEV)gcc rather than $(CROSSDEV)ld. This requires all linker options to be prefixed with `-Wl,` (dash, capital W, lower-case L, comma). All boards in the NuttX tree have been updated, but any custom out-of-tree boards will need to apply this change in the relevant parts of their build scripts. 30386 30387The reason for this change is that GNU Binutils 2.36.x has added new error checking on command line arguments. This has had the effect that the NuttX build suddenly broke on host OS distributions that updated to the 2.36.x release line. Reports included Arch, Manjaro, and Ubuntu. Other host OSes are likely to be affected as well. 30388 30389#### Symptoms 30390 30391Your toolchain and board are affected if you see errors from LD like: 30392 30393``` 30394arm-none-eabi-ld: Error: unable to disambiguate: -nostartfiles (did you mean --nostartfiles ?) 30395``` 30396 30397or (following this change in NuttX) errors from GCC like: 30398 30399``` 30400arm-none-eabi-gcc: error: unrecognized command line option '--gc-sections'; did you mean '--data-sections'? 30401``` 30402 30403#### What to change 30404 30405The most common change expected to affect most boards: 30406 30407Change: 30408 30409``` 30410NXFLATLDFLAGS1 = -r -d -warn-common 30411NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections 30412``` 30413 30414to: 30415 30416``` 30417NXFLATLDFLAGS1 = -r -Wl,-d -Wl,-warn-common 30418NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -Wl,-no-check-sections 30419``` 30420 30421If doing a kernel build, you may need changes in your board's `kernel/Makefile` like: 30422 30423Change: 30424 30425``` 30426USER_LDFLAGS = --undefined=$(ENTRYPT) --entry=$(ENTRYPT) $(USER_LDSCRIPT) 30427``` 30428 30429to: 30430 30431``` 30432USER_LDFLAGS = -Wl,--undefined=$(ENTRYPT) -Wl,--entry=$(ENTRYPT) $(USER_LDSCRIPT) -nostartfiles -nodefaultlibs 30433``` 30434 30435Change: 30436 30437``` 30438$(Q) $(LD) -o $@ $(USER_LDFLAGS) $(USER_LIBPATHS) $(OBJS) --start-group $(USER_LDLIBS) --end-group $(USER_LIBGCC) 30439``` 30440 30441to: 30442 30443``` 30444$(Q) $(LD) -o $@ $(USER_LDFLAGS) $(USER_LIBPATHS) $(OBJS) -Wl,--start-group $(USER_LDLIBS) -Wl,--end-group $(USER_LIBGCC) 30445``` 30446 30447Depending on your board's customized build scripts, you may need to look out for other `make` variables in your board's `Makefile` or `Make.defs`. 30448 30449Some variables to look for: 30450 30451- `ARCHSCRIPT` 30452- `ARCH_LIBS` 30453- `CCLINKFLAGS` 30454- `EXTRALINKCMDS` 30455- `LDELFFLAGS` 30456- `LDENDGROUP` 30457- `LDFLAGS` 30458- `LDLINKFLAGS` 30459- `LDMODULEFLAGS` 30460- `LDSTARTGROUP` 30461- `NXFLATLDFLAGS1` 30462- `NXFLATLDFLAGS2` 30463- `USER_LDFLAGS` 30464 30465Anything that executes LD, such as: 30466 30467``` 30468$(Q) $(LD) --entry=__start $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \ 30469``` 30470 30471Anything that processes LD flags, such as: 30472 30473``` 30474$(LIBPATHS) "-(" $(LDLIBS) "-)" $(LDFLAGS) -Map="$(TOPDIR)$(DELIM)nuttx.map" 30475``` 30476 30477In general, any command line options destined for LD must be prefixed with `-Wl,` (dash, capital W, lower-case L, comma) since they are now being passed through GCC. 30478 30479#### Examples 30480 30481Change: 30482 30483``` 30484EXTRALINKCMDS += @$(TOPDIR)/syscall/syscall_wraps.ldcmd 30485``` 30486 30487to: 30488 30489``` 30490EXTRALINKCMDS += -Wl,@$(TOPDIR)/syscall/syscall_wraps.ldcmd 30491``` 30492 30493Change: 30494 30495``` 30496LDFLAGS += -gc-sections 30497``` 30498 30499to: 30500 30501``` 30502LDFLAGS += -Wl,-gc-sections 30503``` 30504 30505Change: 30506 30507``` 30508$(LIBPATHS) "-(" $(LDLIBS) "-)" $(LDFLAGS) -Map="$(TOPDIR)$(DELIM)nuttx.map" 30509``` 30510 30511to: 30512 30513``` 30514$(LIBPATHS) "-(" $(LDLIBS) "-)" $(LDFLAGS) -Wl,-Map="$(TOPDIR)$(DELIM)nuttx.map" 30515``` 30516 30517Change: 30518 30519``` 30520NXFLATLDFLAGS1 = -r -d -warn-common 30521``` 30522 30523to: 30524 30525``` 30526NXFLATLDFLAGS1 = -r -Wl,-d -Wl,-warn-common 30527``` 30528 30529Change: 30530 30531``` 30532ifeq ($(CONFIG_CYGWIN_WINTOOL),y) 30533LDFLAGS += -Map="${shell cygpath -w $(TOPDIR)/nuttx.map}" --cref 30534else 30535LDFLAGS += -Map=$(TOPDIR)/nuttx.map --cref 30536endif 30537``` 30538 30539to: 30540 30541``` 30542ifeq ($(CONFIG_CYGWIN_WINTOOL),y) 30543LDFLAGS += -Wl,-Map="${shell cygpath -w $(TOPDIR)/nuttx.map}" -Wl,--cref 30544else 30545LDFLAGS += -Wl,-Map=$(TOPDIR)/nuttx.map -Wl,--cref 30546endif 30547``` 30548 30549Also, if you have assigned the LD variable, it would need to change as well: 30550 30551Change: 30552 30553``` 30554LD = $(CROSSDEV)ld 30555``` 30556 30557to: 30558 30559``` 30560LD = $(CROSSDEV)gcc 30561``` 30562 30563#### References 30564 30565* Git commit # 45672c269db13f59bdaa417e564837e8bbb6c8c1 in the NuttX main repository: 30566- https://github.com/apache/incubator-nuttx/commit/45672c269db13f59bdaa417e564837e8bbb6c8c1 30567* PR-3836 in the NuttX main repository: 30568- https://github.com/apache/incubator-nuttx/pull/3836 30569* Issues 3209 and 3826 in the NuttX issue tracker: 30570- https://github.com/apache/incubator-nuttx/issues/3209 30571- https://github.com/apache/incubator-nuttx/issues/3826 30572* Description of the change on Binutils mailing list: 30573- https://sourceware.org/pipermail/binutils/2021-June/116826.html 30574* Description of -Wl,option in the GCC manual: 30575- https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html 30576