Newer
Older
- Granule allocator: Fixes some issues found by the PX4 team using
Coverity. From Pavel Krienko
* Networking:
- Several fixes correcting issues with the CC3000 networking. From
Jussi Kivilinna
- CC3000 Fix: Data can be unaligned. When dereferenced as an input
ntosh(), a bad value is returned. Reported by Alan Carvalho de
Assis
- Correct naming of fields in struct sockaddr_in6: sin6_port and
sin6_family, not sin_port and sin_family.
- accept(): Correct the value returned by accept() in the case where
net_lockingwait() is called. It was returning -1 and losing the
errno value. Noted by Rony Xln
* Common Drivers:
- Loop device should return -EINTR is interrupted by a signal.
- M25P serial flash driver: Add subsector size of the M24P16 part.
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
From Lazlo
- Common serial driver: In case a thread is doing a blocking operation
(e.g. read()) on a serial device, while it is being terminated by
pthread_cancel(), then uart_close() gets called, but the semaphore
is still blocked. This means that once the serial device is opened
next time, data will arrive on the serial port (and driver
interrupts handled as normal), but the received characters never
arrive in the reader thread. The problem was fixed by re-
initializing the semaphores on the last uart_close() on the device.
From Harald Welte
- Pipes: Fixes some issues found by the PX4 team using Coverity. From
Pavel Krienko
- CDC/ACM driver: Fixes some issues found by the PX4 team using
Coverity. From Pavel Krienko
* NXP LPC43xx Drivers:
- LPC4357: Changes required to get USART 2 & 3 working on the
lpc4357-evb. From Toby Duckworth.
* STMicro STM32:
- Several fixes correcting issues with the STM32 header files from
Jussi Kivilinna
* STMicro STM32 Drivers:
- Ported Tridge's STM32 I2C noise resilience logic from the PX4
repository.
- STM32 F2 and F4: Set the GPIO_SPEED_50MHz on all F2 and F4 SPI pin
configurations. This is based on an F411 SPI1 errata but the fixed
is generalized to all SPI and all F2 and F4. Discovered and fixed
by Sebastien Lorquet.
- Fix for STM32 OTGHS device driver working in FS mode. From Ken
Pettit.
- For STM32 OTG HS DEV (in FS mode): Disable ULPI clock enable in RCC
AHB1 Register. If Both ULPI and the FS clock enable bits are set in
FS mode, then the ARM never awakens from WFI due to a chip issue.
This is only an issue if you are using the internal PHY. From Ken
Pettit.
- STM32 F429 LTDC: Add missing clut register definition. From Marco
Krahl
- STM32 serial: fix declaration and definition of up_receive() and
up_dma_receive() to match fields in the interface definition of
struct uart_ops_s. From Freddie Chopin.
* TI Tiva Drivers:
- Fix Tiva IRQ control logic; was limited to only 64 IRQs. That is a
problem for higher numbered IRQs on many platforms
* C Library/Header Files:
- avsprintf(): Fix a bug in usage of va_list on x86. On x86,
va_list is a pointer to a single copy on the stack. avsprintf()
calls lib_vsprintf() twice and so traverses the va_list twice using
va_start. va_start modifies that single copy on the stack so that
the second call to lib_vsprintf() fails. This appears to be an
issue with x86 only so far.
- stdint.h: Don't use hex values to specify minimum values of fixed
width, signed values. Hex values are inherently unsigned and not
usable for this purpose in all contexts.
- strncpy(): Would trash a lot of memory if n == 0. From Yasuhiro
Osaki.
- sscanf(). Accept %X and %F as well as %x %f as a format specifiers.
From Sébastien Lorquet
* Applications:
- apps/examples/romfs: fix romfs example builtin app registry issue.
From Librae
- apps/system/cdcacm, composite and usbmsc: Fix some strangely placed
conditional compilation. Looks like an automated update went awry
- apps/netutils/telnetd: Add protection when CONFIG_SCHED_HAVE_PARENT
is enabled: Call sigaction with SA_NOCLDWAIT so that exit status is
not retained (no zombies) and block receipt of SIGCHLD so that
accept is not awakened by a signal. If accept() is awakened by a
signal, do not do anything crazy like exit. Most from Rony Xln
- apps/nshlib/: NSH TFTP get command: Wrong file name used for the
destination. From Lazlo
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
8113
8114
8115
8116
8117
8118
8119
8120
8121
8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
8143
8144
8145
8146
8147
8148
8149
8150
8151
8152
8153
8154
8155
8156
8157
8158
8159
8160
8161
8162
8163
8164
8165
8166
8167
8168
8169
8170
8171
8172
8173
8174
8175
8176
8177
8178
NuttX-7.8
---------
The 108th release of NuttX, Version 7.8, was made on February 11, 2015,
and is available for download from the SourceForge website. Note
that release consists of two tarballs: nuttx-7.8.tar.gz and
apps-7.8.tar.gz. Both may be needed (see the top-level nuttx/README.txt
file for build information).
This release is primarily a bugfix release for the NuttX-7.7 version that
was release just two weeks prior. That release included substantial
modifications in the NuttX networking to accommodate support for IPv6. This
release follows close behind NuttX-7.7 in order to correct some the problems
discovered in that networking code. This release does, however, include a
small number of new features and bug fixes unrelated to NuttX networking.
Additional new features and extended functionality:
* Core OS:
- Tickless Mode: added limit of maximum delay that can be request
by the scheduler tickless logic. This is necessary so that the
tickless logic does not request a delay beyond the capability of the
underlying hardware. From Macs Neklyudov.
* Common Drivers:
- VFS Unlink: Add an unlink method to both the character and block
driver interface. This is important because if the driver inode is
unlinked and there are no open references to the driver, then the
driver resources will be stranded. On the unlink call, the driver
has the opportunity (1) check if there an any open references, and
if not, (2) free the driver resources.
- Pipes and FIFOs: Implement the unlink method. If the pipe/FIFO is
unlinked, it will marked the pipe/FIFO as unlinked. If/when all
open references to the driver are closed, all of the driver
resources will be freed.
- Added an option to use the syslog'ing device as the system console.
This option enables a low-level, write-only console device at
/dev/console (similar to the low-level UART console device). From
Pierre-noel Bouteville.
* File Systems/Block Drivers/MTD:
- RAM/ROM disk: Add logic to dispose of the driver and RAM buffer
when the RAM disk has been unlinked and all open references to the
RAM disk have been closed. Add new parameters to romdisk() to
specify what should be done with the RAM/ROM buffer in this case --
Should it be freed or not? Changed all calls to ramdisk() to use
these new parameters.
* Networking:
- Add support for local, Unix domain sockets. Support included for
both SOCK_STREAM and SOCK_DGRAM style local socket.
- UDP enhancement: Add UDP read-ahead support. In addition to
eliminating the main reason for lost UDP packets, then change
enables support for for poll/select on UDP sockets and also non-
blocking UDP sockets. From Macs Neklyudov.
- SLIP interface improvements. From Macs Neklyudov.
- IPv6 Neighbor Solicitation: Added logic to support verification
that we have the IPv6 address in the Neighbor Table before sending
any packets. If not, then the Neighbor Solicitation message is
sent. This feature is important because otherwise the first packet
sent to a remote peer will fail (it would have been replaced with a
Neighbor Solicitation).
- IPv6 Autonomous Auto-Configuration: Added support for sending
ICMPv6 Router Solicitation and receiving Router advertisement. The
local IPv6 address, mask, and router address are then auto-configured
from the response..
- IPv6 Router Support: Add logic to behave like a router (if so
configured) only in the sense that NuttX will send the router
advertisement message in response to any received router solicitation
messages. Thus, one NuttX node in a network can configure the IPv6
addresses of all other nodes in the network.
- Optional IPv6 address filtering added to all Ethernet drivers for
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190
8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
8205
8206
8207
8208
8209
8210
8211
8212
8213
8214
8215
8216
8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
8235
8236
8237
8238
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
8249
8250
8251
8252
8253
8254
8255
8256
8257
8258
8259
8260
8261
8262
8263
8264
8265
8266
8267
8268
8269
8270
8271
8272
8273
8274
8275
8276
8277
8278
8279
8280
8281
8282
8283
8284
8285
8286
8287
8288
8289
8290
8291
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301
8302
8303
8304
8305
8306
8307
8308
8309
8310
8311
8312
8313
8314
8315
8316
8317
8318
8319
8320
8321
8322
8323
8324
8325
8326
8327
8328
8329
8330
8331
8332
8333
8334
8335
8336
8337
8338
8339
8340
8341
8342
8343
8344
8345
8346
8347
8348
8349
8350
8351
8352
8353
8354
8355
8356
8357
8358
8359
8360
8361
8362
8363
8364
8365
8366
8367
8368
8369
8370
8371
* Atmel AVR:
- Added architecture support for the Atmel AVR ATMega1284P MCU. From
Jedi Tek'Unum.
* Atmel AVR Boards:
- Added support for the LowPowerLab MoteinoMEGA that is based on the
Atmel AVR ATMega1284P MCU. From Jedi Tek'Unum.
* Atmel SAMA4:
- Add support for Tickless mode of operation for the SAM4CM platform.
From Macs Neklyudov.
* Atmel SAMA4 Drivers:
- Ethernet: The SAM4E Ethernet driver can now be configuration to
perform all network processing on the work queue. This greatly
reduces the amount of interrupt level processing to service Ethernet
packets.
- SAM4E Ethernet: Add support multicast address matching and IPv6.
* Atmel SAMA4 Boards:
- SAM4E-EK: The nsh configuration now configures the Ethernet driver
for execution on the work thread.
* Atmel SAMA5D Drivers:
- SAMA5D4 Ethernet: The SAMA5D4 Ethernet driver can now be configuration
to perform all network processing on the work queue. This greatly
reduces the amount of interrupt level processing to service Ethernet
packets.
- SAMA5D3 and SAMA5D4 Ethernet: Add support multicast address matching
and IPv6.
* Atmel SAMA5D Boards:
- SAMA5D4-EK; Added a configuration to testing IPv6.
- SAMA5D4-EK: Converted the nsh and ipv6 configurations to configure
the Ethernet driver to use the work queue (vs. interrupt level
processing).
* Freescale KL:
- Add architectural support for the K26Z128VLH4 chip. From Derek B. Noonburg.
* Freescale KL Boards:
- Add board support for the Freedom KL26Z board. From Derek B. Noonburg.
* NXP LPC17xx Drivers:
- Ethernet: Add support multicast address matching and IPv6.
* SiLabs EFM32:
- Add configurable option to unconditionally enable LE clocking. Even
you don't use core clock LE as source for LFA or LFB, to read are
write any register not clocked by HFPERCLK or HFCORECLK, HFCORECLKLE
should be enabled. From Pierre-noel Bouteville.
* SiLabs EFM32 Drivers:
- EFM32 RTC: RTC driver using BURTC. From Pierre-Noel Bouteville.
* STMicro STM32 Drivers:
- AES: Add driver for STM32L162XX AES peripheral. From Juha Niskanen.
- Ethernet: The STM32 Ethernet driver can now be configuration to
perform all network processing on the work queue. This greatly
reduces the amount of interrupt level processing to service Ethernet
packets.
- Ethernet: Add support multicast address matching and IPv6.
* STMicro STM32 Boards:
- Added an IPv6 configuration for the STM32F4-Discovery board (with the
STM32-DISCO_BB base board).
- Converted all STM32F4-Discovery configurations (with base board) to
configure the Ethernet driver to use the work queue (vs. interrupt
level processing).
* TI Tiva Drivers:
- Added support for TM4C123G timers. From Calvin Maguranis.
- Added a Tiva ADC driver. From Calvin Maguranis.
* TI Tiva Boards:
- Added TM4C123G timers on the TM4C123G Launchpad. From Calvin Maguranis.
- Added Tiva ADC support to the TM4C123G-Launchpad. From Calvin Maguranis.
* C Library/Header Files:
- Math Library: Added support for inverse hyperbolic functions,
isfinite(), error functions, nan(), copysign(), and trunc()
functions. From Brennan Ashton.
* Applications:
- apps/examples/ustream: Add a simple test of Unix domain stream
sockets.
- apps/examples/udgram: Add a simple test of Unix domain datagram
sockets.
- apps/netutils/netlib: Add utilities to convert to/from prefix
lengths from/to 128-bit network masks.
- apps/nshlib: Modify the NSH IPv6 ifconfig command to show the more
standard post-pended prefix value, rather than the full 128-bit
netmask.
Efforts In Progress. The following are features that are partially
implemented but present in this release. They are not likely to be
completed soon.
* Processes. Much of the work in this release is focused on the
realization of Unix-style user processes in NuttX. There is more to
be done, however. The full roadmap and status is available at:
http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
* XMega: There are some fragments in place for an XMega port. That
port has not really started, however.
Bugfixes. Only the most critical bugfixes are listed here (see the
ChangeLog for the complete list of bugfixes and for additional, more
detailed bugfix information):
* Core OS:
- Work Queues: Fix a backward calculation when determining the time
to the next interesting event. . From Liio Chen via the PX4
repository.
- clock_systimespec(): Fixes for compilation errors in certain
configurations. From Macs Neklyudov.
* Graphics
- Fixed a problem with one of the font files. From Pierre-noel Bouteville.
* Networking:
- IOB Deadlock: There were issues with the TCP write-ahead buffering
if CONFIG_NET_NOINTS was enabled: There is a possibility of
deadlocks in certain timing conditions: The network should never
wait for TCP read-ahead buffering space to be available. It should
drop the packets immediately if no buffering is available. This was
fixed by duplicating most of the IOB interfaces: The versions that
waited are still present (like iob_alloc()), but now there are non-
waiting versions of the same interfaces (like iob_tryalloc()). The
TCP read-ahead logic now uses only these non-waiting interfaces.
- TCP Deadlock: Fix another deadlock when CONFIG_NET_NOINTS is enabled.
tcp_write_buffer_alloc() calls sem_wait() with network locked. That
worked if CONFIG_NET_NOINTS was not defined because interrupts are
automatically restored when the wait happens. But with
CONFIG_NET_NOINTS=y, the wait blocks with the network locked -- bad
style and also can lead to a deadlock condition.
- ARP response waiting: Fixes another CONFIG_NET_NOINTS issue. When
called sem_timedwait() with the network locked, the network stays
locked while we wait which is not what we want (without CONFIG_NET_NOINTS,
interrupts are re-enabled while we wait and all is well).
- TCP accept(): Fix a major TCP bug introduced with the NuttX-7.7
IPv6 changes: Some connection logic was reordered; setting the
socket as 'connected' got moved to BEFORE the point where the check
was made if the socket was already connected. The resulting behavior
was odd: Telnet would connect, but then when you exit and reconnect,
it would fail to connect. But then if try again, it would connect
okay. So the symptom was connect-fail-connect-fail-...
- Lots of build problems introduced into multiple NIC support with the
IPv6 changes of NuttX-7.7. Many places where conditional logic based
on CONFIG_NETDEV_MULTINIC is confused with CONFIG_NET_MULTILINK.
Lots of code changed with IPv6 that was never compiled with MULTINIC
enabled.
* Common Drivers:
- Pipes and FIFOs: Fix a race condition between FIFO buffer operations
and the opening and closing of FIFOs which necessary when the FIFOs
are used to support Unix domain, datagram sockets. The default
policy is the deallocate FIFO buffering when the last client closes
the pipe. When when used for datagram communications, packets left
in the FIFO will be lost. Some like UDP read-ahead is needed: The
buffered data in the FIFO needs to be retained until the reader gets
a chance to re-open the FIFO. Added an ioctl (PIPEIOC_POLICY) to
control the buffer policy. Default (0) is the legacy behavior; Unix
domain datagram logic sets the alternative policy so that the packet
data persists after the FIFO is closed.
- RAMTRON: Table of parts is not terminated properly if
CONFIG_RAMTRON_FRAM_NON_JEDEC is not defined. Noted by David
Sidrane.
8373
8374
8375
8376
8377
8378
8379
8380
8381
8382
8383
8384
8385
8386
8387
8388
8389
8390
8391
8392
8393
8394
8395
8396
8397
8398
8399
8400
8401
8402
8403
8404
8405
8406
- Removed all occurrences of up_maskack_irq() that disables interrupts
with up_ack_irq() that only acknowledges the interrupts. This is only
used in interrupt decoding logic. Also remove the logic that
unconditionally re-enables interrupts with the interrupt exits. This
interferes with the drivers ability to control the interrupt state.
This is a necessary, sweeping, global change and unfortunately
impossible to test.
* ARM
- ARMv7-A and ARMv7-M memcpy(): Optimized ARM assembly language
memcpy's were not returning a value in R0 they are required to do.
From David Sidrane.
- ARMv7-A interrupt handler should not automatically re-enable interrupts
on interrupt return. That interferes with the driver's ability to
manage interrupts. Analogous change made to all other architectures
as well (ARM7, ARM9, HC, SH, x86, z16, z80, etc,. See above.).
* STMicro STM32:
- GPIO Interrupts: Disabling any of EXTI 5-9 interrupts was disabling
interrupts for all EXTI 5-9. Same issue with EXTI 10-15. From Jussi
Kivilinna.
* STMicro STM32 Drivers:
- RTCC: Fix for recent changes that caused compilation failrues with
STM32L15XX configurations. From Jussi Kivilinna.
- SPI: The source clock for SPI 4,5, and 6 should be PCLK2, not PCLK1
(for F411, F427, and F429). Per David Sidrane.
* C Library/Header Files:
- execl(): Fix bad logic in counting the number of arguments.
execl() parameter passing could never have worked. Noted by
Pierre-noel Bouteville.
* Applications:
- Fix for building with parallel make. Build-server sometimes failed
'make -j24' with errors in the builtin line or or sometimes silently
succeeds but generated builds that contain a random subset of
configured NuttX applications. There are two root causes for this:
(1) Recipes for building builtin_list.h and builtin_proto.h are
not linearizable, and (2) Nothing ensures that 'make context' is run
first for apps/builtin. This change address both issues. From Juha
Niskanen.
NuttX-7.9
---------
The 109th release of NuttX, Version 7.9, was made on April 14, 2015,
and is available for download from the SourceForge website. Note
that release consists of two tarballs: nuttx-7.9.tar.gz and
apps-7.9.tar.gz. Both may be needed (see the top-level nuttx/README.txt
file for build information).
Additional new features and extended functionality:
8434
8435
8436
8437
8438
8439
8440
8441
8442
8443
8444
8445
8446
8447
8448
8449
8450
8451
8452
8453
8454
8455
8456
8457
8458
8459
8460
8461
8462
8463
8464
8465
8466
8467
8468
8469
8470
8471
8472
8473
8474
8475
8476
8477
8478
8479
8480
8481
8482
8483
8484
8485
8486
8487
8488
- Assertions: Add support for dumping board-specific information on
assertions. From David Sidrane.
- boardctl(): : Add a new non-standard OS interface called boardctl().
This is similar to a driver IOCTL call. But this is an IOCTL call
directly on the board logic. This function will eventually replace
all of the ad hoc OS interfaces that are current used to perform
application specific initialization and application driver test
configuration. It essentially formalizes and institutionalizes
these rogue interface in to at least a single crazy call.
* Graphics:
- Line Joins: Line drawing graphic functions now take an argument that
will draw a circular "cap" on the ends of lines to support cleaner
joining of lines segments..
* Common Drivers:
- SPI iInterface: Add an SPIDEV_USER so that there can be board-
specific definitions of SPI devices.
- I2C Interface: Add a user provided void * argument to the I2C
callback method for the I2C slave interface. Suggested by Nate
Weibley.
- AT24 EEPROM Driver: Add support for (1) the byte-oriented read()
method, (2) devices that have extended memory regions, and (3)
devices that use 8-bit addressing.
- Freescale MPL115A barometer: Add driver for the Freescale MPL115A
barometer. From Alan Carvalho de Assis.
- CS2100-CP: Add a driver for the CS2100-CP Fractional-N Multipler
chip.
- RTC IOCTls: Added the definitions of a driver based RTC interfaces
and RTC upper half driver.
* File Systems/Block Drivers/MTD:
- umount2(): Added to support un-mount flags. umount() is now a macro
that just calls umount2() with flags = 0.
- File system interface: Pass the umount2() flags to every unbind()
implementation. That is where the decision to umount or not and how
to umount will be made.
- FAT unbind: Add support for umount2(target, MNT_FORCE) in the FAT
file system.
* Networking:
- netdev_register(): Improve the network device registration logic.
When multiple link types are used, modify how each interface number
is assigned to the device name by incrementing the device number
individually for each interface link type. From Max Neklyudov.
- Add TUN network device. Used to support the Netutils PPPD
implementation. From Max Neklyudov.
* ARMv7-M
- ARM Cortex-M7: Add basic support for the Cortex-M7 architecture.
- ARMv7 Common Lazy Exception handling. Add common support for lazy
FPU state saving. MCU-specific lazy FPU saving was already in place.
This change just makes the code share-able.
* Atmel SAMA5D3/4 Drivers:
- SAMA5 Serial: Backport support for flowcontrol and termios from
SAM3/4.
* Atmel SAMV7:
- Atmel SAMV7: Add architecture support for the Atmel SAMV7 family
8502
8503
8504
8505
8506
8507
8508
8509
8510
8511
8512
8513
8514
8515
8516
8517
8518
8519
8520
8521
8522
8523
8524
8525
8526
8527
8528
8529
8530
8531
8532
8533
8534
8535
8536
8537
8538
8539
8540
8541
8542
8543
8544
8545
8546
8547
8548
8549
8550
8551
8552
8553
8554
8555
8556
8557
8558
8559
8560
8561
8562
8563
8564
8565
8566
8567
8568
8569
8570
8571
8572
8573
8574
(Cortex-M7)
* Atmel SAMV7 Boards:
- Atmel SAMV71 Xplained Ultra: Add board support for this SAMV7 board.
This initialize release includes support for: SDRAM, TWI/I2C, SPI,
Ethernet, HSMCI, DMA, GPIOs, UARTs, AT24 EEPROM and the maXTouch
Xplained Pro LCD. Drivers are available for SSC/I2C, the WM8904,
the maXTouch trouchscreen, and USB device but have not yet been
fully integrated in this release.
* SiLabs EFM32 Drivers:
- EFM32 USB Device is now functional with the efforts of From Pierre-
noel Bouteville.
- EFM32 I2C: Add I2C driver. From Pierre-noel Bouteville.
* STMicro STM32:
- STM32F372/F373: Adds architecture support for this STM32 parts.
Tested on STM32F373CC. Contributed by Marten Svanfeldt.
* STMicro STM32 Drivers:
- STM32 RTCC: Break out a new internal interface, stm32_rtc_setdatetime().
This eliminates some un-necessary time conversions. From Freddie Chopin.
- STM32 RTCC: Add an implementation of the RTC lower half interface
for the STM32.
- STM32 RTCC: Extend the RTC interface to support reading subseconds.
From Jussi Kivilinna.
- STM32 BBSRAM: Adds the ability to use the STM32F2 and STM32F4 Battery
Backed SRAM in the file system. With an option to Save Panic context
to one of the files. From David Sidrane.
* STMicro STM32 Boards:
- Olimexino-STM32: Board support for the Olimexino STM32 board from David
Sidrane.
- Viewtool-STM32F107: Add support for an optional, add-on Freescale
MPL115A baramoter. From Alan Carvalho de Assis.
* TI Tiva:
- TM4C1294: Add support for the TM4C1294. Contributed by Frank Sautter.
* TI Tiva Drivers:
- Tiva ADC: Updated files to allow for ADC and PWM triggering by a
timer. Refactoring of ADC implementation. From Calvin Maguranis.
- Tiva Timer: Refactoring by Calvin Maguranis
* TI Tiva Boards:
- TM4C123G-launchpad: Add ADC support. From Calvin Maguranis.
- TM4C123G-launchpad: Add board button interrupt support. From Calvin
Maguranis.
- TM4C1294 Launchpad: Add support for the TM4C1294 Launchpad.
Contributed by Frank Sautter.
* Microchip PIC32
- PIC32MZ: Add architectural support for the PIC32MZ (MIPS32 M14k).
Includes contributions from Kristopher Tate.
* Microchip PIC32MZ Boards
- PIC32MZ Starter Kit: Add basic board support for the PIC32MZ.
Includes contributions from David Sidrane.
* C Library/Header Files:
- gettimeofday(): This function is no longer a core OS interface. It
is only a wrapper around clock_settime().
- settimeofday(): Added. gettimeofday has been deprecated in POSIX
8576
8577
8578
8579
8580
8581
8582
8583
8584
8585
8586
8587
8588
8589
8590
8591
8592
8593
8594
8595
8596
8597
8598
8599
8600
8601
8602
8603
8604
2008. settimeofday() was never part of POSIX, but I decided to add
it to libc as well just for symmetry.
- Day-of-Week: Add CONFIG_TIME_EXTENDED to support the last 3 members
of the tm struct and support for filling them in with the day of the
week. From David Sidrane.
- sighold(), sigrelse(), sigignore(), sigset() and sigpause(): New
signal handling functions.
- sys/select.h: Extend the fd_set type definition so that it can
handle more than 32 descriptors (if so configured). From Max
Neklyudov.
- netdb.h: Add a mostly-commented-out version of the standard netdb.h
header file.
- include/nuttx/board.h: Remove common board function prototypes from
other files and consolidate them in this new header file.
* Applications:
- OS test: Improved error checking for sem_timedwait() from Juha
Niskanen.
- OS test: Add a simple test of sigprocmask, sighold, and sigrelse.
- PPPD test: Add PPPD test case. Split out from the PPPD daemon by
Brennan Ashton.
- Netutils: Add a PPP daemon. From Max Neklyudov.
- NSH: NSH initialization now calls boardctl(BOARDIOC_INIT) instead
of nsh_archinitialize(). Remove support for CONFIG_NSH_ARCHMAC.
It is not used and there are better ways to do that operation.
- NSH: Allow NSH 'date' command with no hardware RTC. This command
is useful without an RTC too. Also, this permits testing on the
simulator which never has an RTC.
- apps/examples/: Several tests changed (touchscreen adc, pwm,
8606
8607
8608
8609
8610
8611
8612
8613
8614
8615
8616
8617
8618
8619
8620
8621
8622
8623
8624
8625
8626
8627
8628
8629
8630
8631
8632
8633
8634
8635
8636
8637
8638
8639
8640
8641
8642
graphics). No longer call directly into the OS, but rather
indirectly via boardctl().
- Modbus: Includes extensions to support RTU master mode by
Armink(383016632@qq.com): https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32.
Ported to NuttX by Darcy Gong.
- TZ database: All logic to build timezone database needed for
localtime() support. Does not do much else yet.
Efforts In Progress. The following are features that are partially
implemented but present in this release. They are not likely to be
completed soon.
* Processes. Much of the work in this release is focused on the
realization of Unix-style user processes in NuttX. There is more to
be done, however. The full roadmap and status is available at:
http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes
* XMega: There are some fragments in place for an XMega port. That
port has not really started, however.
Bugfixes. Only the most critical bugfixes are listed here (see the
ChangeLog for the complete list of bugfixes and for additional, more
detailed bugfix information):
* Core OS:
- atexit(): Fix compile failure due to reference to undefined variable
in certain configurations. From Juha Niskanen.
- syscalls: Last changes to message queue prototypes did not make it
into call gate logic. Some additional errors had crept as well since
the system calls are seldom used.
- waitpid(): Do not use uninitialized boolean in waitpid(). From Juha
Niskanen.
- Timing functions: Fix some nanosecond comparisons. Comparisons should
be greater than OR EQUAL TO 1000000000 for maximum value of nanoseconds
in struct tm. From Juha Niskanen.
- Time initialization: Fix an error in time initialization when there
is no RTC and the time is initialized from a fixed configured value.
8644
8645
8646
8647
8648
8649
8650
8651
8652
8653
8654
8655
8656
8657
8658
8659
8660
8661
8662
8663
8664
8665
8666
8667
8668
8669
8670
8671
8672
8673
8674
8675
8676
8677
8678
8679
8680
8681
8682
8683
8684
8685
8686
8687
8688
8689
8690
8691
8692
8693
8694
8695
8696
8697
8698
8699
8700
8701
8702
8703
8704
8705
8706
8707
8708
8709
8710
8711
8712
8713
8714
8715
8716
8717
8718
8719
8720
8721
8722
8723
8724
8725
8726
8727
8728
8729
8730
8731
8732
8733
8734
8735
8736
8737
8738
8739
8740
8741
8742
8743
8744
8745
8746
8747
8748
8749
8750
8751
8752
8753
8754
8755
8756
8757
8758
8759
8760
8761
8762
8763
8764
8765
8766
8767
8768
8769
8770
8771
8772
8773
8774
8775
8776
8777
8778
8779
8780
The call to clock_calendar2utc() was returning the time in units of
seconds. The initialization logic, however, was expecting to get
time in units of days. This problem has been there forever but
obviously has not significant impact to behavior in systems where
time is not visible.
- mq_timedsend(): Should not check for valid time if there is space
in the message queue. Noted by Freddie Chopin.
- select() and sem_timedwait(): Fix places where the errno value was
being overwritten by subsequent actions so that the returned errno
value was incorrect. From Max Neklyudov.
- clock_systimer64(): Fix a problem in clock_systimer64 that occurs
when (1) the 64-bit system time is enabled, and (2) the value of
CONFIG_USEC_PER_TICK is less than 1 milliseconds (such as when using
the tickless mode of operation). In that case, the conversion of
time to 64-bit millisecond value in clock_systmer64() causes some
bad times to be returned. Time was converted to milliseconds, then
to configured ticks. Precision was lost in the millisecond
conversion. The fix is to first convert time to a 64-bit microsecond
value, then to the configured tick value. Noted by David Sidrane.
- clock_systimespec(): When an RTC is used clock_systimespec() must
subtract the basetime from the returned time. It needs to return
the time since power up, no the current time. Issue noted by Max
Neklyudov.
- AIO: correct some backward tests in aio_read() and aio_write():
Socket descriptors have higher numbers than file descriptors. In
aio_contain(), Copy u.ptr (void *) when initializing aioc and not
the case specific u.aioc_filep. From Michal Ulianko.
* File Systems/Block Drivers/MTD:
- procfs: Fix potential NULL pointer dereference of 'node'. From
Juha Niskanen.
- FAT: fat_unbind() was accessing 'fs->fs_sem' after freeing the 'fs'
struct. From Juha Niskanen.
- mkfatfs: Use DMA memory for mkfatfs when needed. This makes mkfatfs
use fat_dma_alloc() when CONFIG_FAT_DMAMEMORY is set. This is needed
to ensure mkfatfs operates with boards that use DMA for microSD.
From Andrew Tridgell via the PX4/NuttX repository.
- FAT unmount: Fix a bug in the FAT unbind() logic. There were
problems with the way certain internal list handling was
implemented. The end result is that newly opened or cloned file
structures were never being added to the list of open files. So
when the unmount() happens, it always looked like there were not
open files and a crash could ensue.
- FAT mounting: Fix misthink when CONFIG_ENDIAN_BIG=y. From Lwazi Dube.
* Common Drivers:
- CAN upper half driver: Some lines had to be reordered in the can_open
function otherwise the open count will only be incremented from 0 to
1. This caused problems when trying to open the can bus from two
different tasks. SourceForge Patch #46.
* Crypto:
- crypto: Fix issues when AES support was added for the STM32L1.
From Juha Niskanen.
* Networking:
- Network initialization: Divide net_intiialize() into net_setup() and
net_initialize() to solve a chicken-and-egg problem. net_setup()
must be called before up_initialize() is called so that networking
data structures are ready to register new network devices.
net_initialize() now does only timer related operations and is
called AFTER up_initialize() where the timers are configured.
Problem noted by Max Neklyudov.
- netdev_unregister(): Fix a list handling error. From Max Neklyudov.
- Socket dup: Do not call sockfd_socket() twice. From Juha Niskanen.
* Common Drivers:
- max11802 touchscreen: Fix possible unmatched IRQ restore (not
normally a problem, but could happen in certain configurations).
Noted by Juha Niskanen.
- MMCSD SPI Multi-block transfers: ACMD23 must be preceded with CMD55
command as any other ACMD commands. Also, after the block reading
wait loop must be inserted before writing the next block of data to
the sd card. From Dmitry Nikolaev via Jussi Kivilinna.
- MMCSD SDIO: Fix some bad logic when file system debug is turned on:
Arguments to syslog were missing so that garbage was being printed.
- Common upper-half serial driver: Report correct number of bytes free
in serial buffer with FIONWRITE. From Sami Pelkonen via Jussi Kivilinna.
- Pipes/Fifos: Fix zero-lenth writes to pipes/FIFOs. From Jussi Kivilinna.
- USB device MSC: Add NULL pointer check. From Juha Niskanen.
- BCH driver: Avoid NULL pointer dereference when bch->refs == 255.
From Juha Niskanen.
- Various drivers: The inode unlink method should not be support if
operations on the root pseudo-filesystem are disabled.
* ARMv7-M
- ARMv7M MPU: Bad syntax in ARMv7-M MPU logic would cause failure to
write the correct value to the MPU_RASR register. From Juha Niskanen.
* Atmel SAM3/4 Drivers:
- SAM3/4 Serial TERMIOS: A side-effect of changing serial settings
via TERMIOS (such as tcsetattr) is that serial interrupts were being
left disabled. This is not a problem if the serial configuration is
changed when there are no open references to the serial device. In
that case, serial interrupts are disabled and will not be enabled
enabled until the serial device is first opened. But it is fatal if
the serial device is already opened and if there is a task waiting
to receive data. In that case, the side-effect of disabling
interrupts is fatal: That task is then left hanging with interrupts
disabled.
- SAM3/4 Serial: The IMR register is read-only. This means that
sam_restoreints() did not actually re-enable UART interrupts
(Fortunately, that function was not being used up to this point).
- SAMA5 HSMCI: Fix a bug in SAMA5 HSMCI. The bitfield mask and shift
values were reversed resulting in a trashed value for the number of
blocks in the BLOCKR register. This was sufficient to prevent DMA
writes from working.
* Atmel SAMA5 Drivers:
- SAMA5 Timer/Counter: Fix typos in timer/counter header file. From
Bob Doiron.
* STMicro STM32 Drivers:
- STM32 PWR and RTC: Changes to support fully write protecting the
backup domain. N.B. stm32_pwr_enablebkp did not account for the delay
from enable to the domain being writable. The KISS solution is a
up_udelay. A more complex solution would be a negated write test
with restore. From David Sidrane.
- STM32 SPI: Add missing SPI callback functions to the STM32 SPI
driver. From Freddie Chopin.
- STM32 I2C: Add missing NULL check. From Juha Niskanen.
- STM32 USB device: Fix stale initialization invalidating later NULL
check. From Juha Niskanen.
- STM32 UART: Fix RX DMA setup for UART5. From Jussi Kivilinna.
- STM32 UART: Make input hardware flow-control work with RX DMA. From
Jussi Kivilinna.
- STM32 RTC and clock control: The STM32F4Discovery board doesn't
come with a Low speed external oscillator so the default LSE source
Gregory Nutt
committed
for the RTC doesn't work. In stm32_rtcc.c the up_rtc_initialize()
8782
8783
8784
8785
8786
8787
8788
8789
8790
8791
8792
8793
8794
8795
8796
8797
8798
8799
8800
8801
8802
8803
8804
8805
8806
8807
8808
8809
8810
8811
8812
8813
8814
8815
8816
8817
8818
8819
8820
8821
8822
8823
8824
8825
logic doesn't work with the LSI. The check on RTC_MAGIC on the BK0R
register lead to rtc_setup() call that rightfully enables the LSI
clock; but the next times, when the rtc is already setup, the
rtc_resume() call does NOT start the LSI clock! The right place to
put LSE/LSI initialisation is inside stm32_stdclockconfig() in
stm32fxxxxx_rcc.c. Doing this I checked the possible uses of the
LSI and the LSE sources: the LSI can be used for RTC and/or the
IWDG, while the LSE only for the RTC (and to output the MCO1 pin).
This change is not verifed for any other platforms. From Leo
Aloe3132
* Tiva Drivers:
- Tiva GPIO driver needed small fixes in the configuration routines and
discovered false-positive bugs in interrupt testing: interrupts are
now verified to actually be working reliably. From Calvin Maguranis .
* MIPS32:
- mips32/Toolchain.mk: Current Pinguino toolchain uses the prefix p32-
instead of mips-.
* C Library/Header Files:
- sigaddset() and sigdelset(): Need to set errno if a bad signal
number is received.
- sfrtime(): Missing implementation of %C in sfrtime() C (was being
treated as %y). From Freddie Chopin.
- pthread.h: Fix PTHREAD_COND_INITIALIZER.
- ungetc.c: Fix NULL pointer dereference in ungetc() if 'stream' was
NULL, 'stream->fs_oflags' was evaluated. From Juha Niskanen.
- Fixes to asinh(), atanh(), and sinh(): The 'basic' expansions all
exhibited bad cancellation errors near zero (<= 1E-10). This can be
easily seen e.g. with x = 1E-30, the results are all zero though they
should be extremely close to x. The cutoff values (1E-5, 1E-9) are
chosen so that the next term in the Taylor series is negligible (for
double). Functions could maybe be optimized to use only first term (x)
and a smaller cutoff, just bigger than where the cancellation occurs
- localtime(): Inconsistent configuration name: CONFIG_LIBC_TZDIR vs
CONFIG_LIBC_TZ_TZDIR. Former wins.
* Applications:
- Modbus: Fix some compile problems when TCP is enabled.
8826
8827
8828
8829
8830
8831
8832
8833
8834
8835
8836
8837
8838
8839
8840
8841
8842
8843
8844
8845
8846
8847
8848
8849
8850
8851
8852
8853
8854
8855
8856
8857
8858
8859
8860
8861
8862
8863
8864
8865
8866
8867
8868
8869
8870
8871
8872
8873
8874
8875
8876
8877
8878
8879
8880
8881
8882
8883
8884
8885
8886
8887
8888
8889
8890
8891
8892
8893
8894
8895
8896
8897
8898
8899
8900
8901
8902
8903
8904
8905
8906
8907
NuttX-7.10
----------
The 110th release of NuttX, Version 7.10, was made on June 9, 2015,
and is available for download from the SourceForge website. Note
that release consists of two tarballs: nuttx-7.10.tar.gz and
apps-7.10.tar.gz. Both may be needed (see the top-level nuttx/README.txt
file for build information).
Additional new features and extended functionality:
* Binary Loader:
- ARMv-7M, binfmt/, STM32: Add support uClibc++ exceptions. This
involved additional handling for relative relation types, additional
support for unwinding, as well as additional changes. The
culmination of a big effort from Leo Aloe3132.
* Graphics/Graphic Drivers:
- RA8875 LCD driver contributed by Marten Svanfeldt.
* File Systems/Block Drivers/MTD:
- Union File System: Add support for a union file system that can be
used to overlay and merge the content of two mounted file systems.
* USB Host:
- USB Hub Support: Bring in USB hub-related files from
https://github.com/kaushalparikh/nuttx. This is the work of Kaushal
Parikh. This is quite a bit more hub logic was needed in before the
USB hub support was fully functional. This involved changing many
USB host controller driver interfaces and modifications to many
drivers.
- USB host CDC/ACM class driver: Added initial implementation of a
host-side CDC/ACM driver. Initial version was a great learning
experience, but probably should be partially redesigned (as
discussed in the top-level TODO file).
- IPv6 Routing: Complete implementation of the IPv6 routing logic.
From Max Neklyudov.
* Networking:
- Local Sockets: Add poll support for Unix stream sockets. From Jussi
Kivilinna.
- net/: ARP, ICMP, ICMPv6, PKT, TCP, and UDP now all receive event
notifications from both network device packet processing, but now
also from Device-specific events such as when the network goes down.
The device notification callback structure is now supports dual
linkages so that the client can receive notifications from both
source; The device structure now includes a list of clients that
want to receive device related notifications. This prevents network
actions from hanging when the device goes down and will be an
essential part of future support for removable network devices.
Some of the core logic was contributed by Max Neklyudov.
- TUN: Misc. improvements to the TUN driver, mostly related to poll().
Also several bugfixes. From Max Neklyudov.
* Simulation Platform:
- Simulator: Add logic to test localtime and TZ database. See
apps/system/README.txt for info.
- Simulation: Add a configuration for testing the Union File System.
* Calypso:
- Calypso Compal-E86: Updates for execution out of FLASH on the C139
phone. From Craig Comstock.
* Atmel SAMD/L:
- SAML21 Support: And chip definitions, configuration framework,
memory map and pin configuration files for SAML21 support.
* Atmel SAMD/L Boards:
- SAML21-Xplained: Add a board support for the SAML21 Xplained Pro.
This is based on the similar SAMD20 Xplained Pro board.
* Freescale/NXP KL:
- KL25Z64: Added support for the KL25Z64. The KL25Z64 is a lower
memory variant of the KL25Z128 and is used on the Teensy LC. From
Michael as SourceForge patch 50.
* Freescale/NXP KL Boards:
- Teensy-LC: Add board support for the Teensy LC board. Support is
based off the Freedom KL25Z board. LED, PWM, and UART0 have been
tested. The SPI pins are mapped correctly but have not yet been
tested. From Michael Hope as SourceForge patch 51.
* NXP LPC111x:
- LPC111x: Support for the LPC11xx family (the LPC1115 MCU in
particular). Contributed by Alan Carvalho de Assis.
* NXP LPC111x Boards:
8927
8928
8929
8930
8931
8932
8933
8934
8935
8936
8937
8938
8939
8940
8941
8942
8943
8944
8945
8946
8947
8948
8949
8950
8951
8952
8953
8954
8955
8956
8957
8958
8959
8960
8961
8962
8963
8964
8965
8966
8967
8968
8969
8970
8971
8972
8973
8974
8975
8976
8977
8978
8979
8980
8981
8982
8983
8984
8985
8986
8987
8988
8989
8990
8991
8992
8993
- LPCXpresso LPC1115: Support for the LPCXpression LPC1115
board. Contributed by Alan Carvalho de Assis.
* NXP LPC17xx Drivers:
- LPC17xx Ethernet: Add support for the Micrel KSZ8041 PHY to the
LPC17xx Ethernet driver.
* NXP LPC17xx Boards:
- Lincoln60: Add a network enabled configuration for the Lincoln60
board.
* Atmel SAM3/4 Drivers:
- SAM4CM: Add support for optical mode for the SAM4CM UART1. From
Max Neklyudov.
* Freescale (NXP) Kinetis:
- Kinetis K20: Basic support for the Kinetis K20 architecture. Taken
from PX4. This is the work of Jakob Odersky.
* Atmel SAMV7 Boards:
- SAMV71-Xplained w/maXTouch Xplained Pro: A TWIHS fix was the last
barrier to getting the touchscreen working in the maXTouch Xplained
Pro LCD. Added the NxWM integrated graphics demonstration
configuration.
* STMicro STM32:
- STM32: Added support for STM32F302K8 and STM32F302K6. From Ben Dyer
via PX4/David Sidrane.
- STM32F205RG: Add basic support for the STM32F205RG. From SourceForge
Ticket 40 (anonymous, 2015-05-31).
- STM32 F3: Add DBGMCU register definitions for the F3 family. From
Greg Meiste.
* STMicro STM32 Drivers:
- STM32 LCDC: Defined a second interface for the dma2d controller.
LTDC only controls the display visibility but the DMA2D controller
changes the content of the frame buffer (buffer of the layer). From
Marco Krahl.
- STM32 PVD: Added support for STM32's Programmable Voltage Detector
(PVD) feature. By Dmitry Nikolaev, submitted by Juha Niskanen.
* STMicro STM32 Boards:
- STM32F429i-Disco: Add support for the new DMA2D features to the LTDC
configuration. From Marco Krahl.
* TI Tiva Boards:
- TM4C1294 Launchpad: Added TM4C1294NCPDT EN0_LED2 (10/100-Base-Tx);
removed all booster pack pin definitions. From Frank Sautter.
* C Library/Header Files:
- libc: Add an option to disable support for long long formats in
lib_vsprintf(). On very tiny platforms, this reduces the footprint
by omitting large libgcc.a libraries to perform the 64-bit
arithmetic operations. From Alan Carvalho de Assis.
* Applications: apps/system:
Gregory Nutt
committed
- nuttx/zoneinfo: Add logic to build a ROMFS file system
containing the timezone data.
* Applications: apps/nshlib:
- Add poll support for Unix stream sockets. From Jussi Kivilinna.
- Enhancements to NSH ifconfig for case of multi-link operation, TUN