Newer
Older
8001
8002
8003
8004
8005
8006
8007
8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
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
- 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.
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
8101
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
8179
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
8372
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
8407
8408
8409
8410
8411
8412
8413
8414
8415
8416
8417
8418
8419
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
the all-routers multicast address.
* 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.
* All Archtectures:
- 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.