Newer
Older
9001
9002
9003
9004
9005
9006
9007
9008
9009
9010
9011
9012
9013
9014
9015
9016
9017
9018
9019
9020
9021
9022
9023
9024
9025
9026
9027
9028
9029
9030
9031
9032
9033
9034
9035
9036
9037
9038
9039
9040
9041
9042
9043
9044
9045
9046
9047
9048
9049
9050
9051
9052
9053
9054
9055
9056
9057
9058
9059
9060
9061
9062
9063
9064
9065
device and local connections. From Max Neklyudov.
- Enhanced output to NSH ping command from Max Neklyudov.
- The NSH mount command now recognizes the Union filesystem type when
listing mounted file systems.
* Applications: apps/netutils:
- apps/netutils/thttpd/ and apps/examples/thttpd/: Add support for
using binfs/ with the Union FS instead of NXFLAT. NXFLAT is
probably the better solution but recently compiler changes make it
unusable. binfs or ELF are fallback binary formats. This commit
adds an option to use binfs with the Union FS.
* Applications: apps/examples:
- Modify/simpify apps/examples build files. From Roman Saveljev.
- apps/examples/ltdc: Add testing support for the STM32 LTDC's 2D DMA.
From Marco Krahl.
- apps/examples/ostest: Add a test of nested signals. There are no
failures to handle signals but neither am I getting any nested signal
handling.
- apps/examples/elf: Add configuration options to support building the
hello++4 example that depends upon having uClibc++ available. Also
add hello++5 to the ELF example From Leo aloe3132.
- apps/examples/unionfs: Add a test of the union file system to
apps/examples.
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:
- boardctl(): Add missing case causing that caused failures of PWM
test.
- pthread_kill(): Re-implemented pthread_kill(). It was just a simple
wrapper around kill() but since the correct dispatching of signals
for multi-threaded task groups has been implemented, calling kill()
does not do what pthread_kill() is supposed to do. The corrected
implementation of pthread_kill() will direct the signal specifically
to the specific pthread and no other.
- uint32_t callbacks: Update the type passed to watchdog timer
handlers. Using uint32_t is a problem for 64-bit machines because
it it too small to pass a pointer. uintptr_t is a more appropriate
type.
- mq_timedreceive(): move the location where the errno value is set;
the ETIMEDOUT errno setting was being overwritten by subsequent
actions before returning. Noted by Freddie Chopin.
- POSIX message queues: Move mq_setattr() and mq_getattr() from
nuttx/libc/mqueue to nuttx/sched/mqueue. Also add syscall support
for mq_setattr() and mq_getattr(). This is necessary in protected
and kernel builds because in those cases the message queue
structure is protected and cannot be accessed directly from user
9067
9068
9069
9070
9071
9072
9073
9074
9075
9076
9077
9078
9079
9080
9081
9082
9083
9084
9085
9086
9087
9088
9089
9090
9091
9092
9093
9094
9095
9096
9097
9098
9099
9100
9101
9102
9103
9104
9105
9106
9107
9108
9109
9110
9111
9112
9113
9114
9115
9116
9117
9118
9119
9120
9121
9122
9123
9124
9125
9126
9127
9128
9129
9130
9131
9132
9133
9134
9135
9136
9137
9138
9139
9140
9141
9142
9143
9144
9145
9146
9147
9148
9149
9150
9151
9152
9153
9154
9155
9156
9157
9158
9159
9160
* File Systems/Block Drivers/MTD:
- MTD: Increase the size of the fields in the geometry structure
(again) to support larger FLASH sizes. Needed by Sebastien Lorquet.
* Common Drivers:
- poll(): Fix resource leak and memory corruption on poll failure.
From Jussi Kivilinna.
* USB Host:
- LPC31xx and SAMA5Dx EHCI: Fix cache related problem in LPC31 and
SAMA5Dx EHCI drivers. All buffers are now aligned with the cache
line size in both starting address and in length. This cause major
problems in unlucky builds where the USB host buffers where
unaligned and abutting other data. The cache flush and invalidate
operations could be subverted by accesses to adjacent data or could
have unexpected side effects. This bug has been in the ECHI drivers
forever, but was only revealed due to unlucky memory allocations
during the integration of the hub feature.
* USB Device:
- All USB device class drivers: There needs to be a check to make
sure that the size of a returned string does not exceed the size of
the allocated request buffer. Strings such as vendor names or
product names will be truncated to fit in the request buffer.
* Networking:
- TCP: Correct failures in long Telnet sessions by increasing th
size of the number of bytes sent from uint16_t to uint32_t. This
avoids an integer overflow that causes a long Telnet session to be
closed unexpectedly. From Rony XLN.
- Network locks: Correct some network lock logic: Two error
conditions where the network was not being unlocked and one where it
was getting unlocked twice. From Jussi Kivilinna.
- Local Sockets: Local stream sockets had problem of double releasing
pipes (both server and client attempt release), which causes wrong
pipe pair being closed in multi-client case. Solve by adding per
connection instance ID to pipe names. From Jussi Kivilinna.
- TCP: Fix an important TCP networking bug: 16-bit flags was being
converted to 8-bits in a few locations, causing loss of status
indications.
- TCP: net_startmonitor() always returned OK. In the race case
where a socket has already been closed, it correctly handled the
disconnection event but still returned OK. Returning OK caused the
callers of net_startmonitor() to assume that the connection was
okay, undoing the good things that net_startmonitor() did and
causing the socket to be incorrectly marked as connected. This
behavior was noted by Pelle Windestam.
- setsockopt() failed when setting timeouts to values less tha 100
msec. That is because the timeout is limited to stops of 1
decisecond and because the conversion of structure timeval was
truncating the microsecond remainder. The utility
net_timeval2dsec() now accepts and option to determine how it
handles the remainder: truncate, discarding the remainder, use
the remainder to round to the closed decisecond value, or use any
non-zero remainder to the next larger whole decisecond value. Bug
discovered by Librae.
- TCP: In the TCP connection operation, it was trying to setup the
network monitor BEFORE the socket was successfully connected. This,
of course, has ALWAYS failed because the socket is not yet connected
and the TCP state is not yet correct for a connected socket. However,
because of other changes net_startmonitor() now returns a failure
condition that causes worse problems when trying to connect. The fix
is to move the logic that starts the network monitor to AFTER the
socket has been successfully connected.
* Atmel SAM3/4 Drivers:
- SAM4CM and SAMA5D Free-running timer: Logic that samples the free
running counter reads the pending interrupt status register and can
cause interrupts to be lost. So, if when the status register is
read, the logic must also handle the timer overflow event. Found
and fixed by Max Neklyudov.
* Atmel SAMA5 Drivers:
- SAM3/4 Serial: When reconfigured, serial does not receive bytes
from UART. This happens because RX interrupt was disabled in the
setup routine. Fixed this I save interrupt configuration before
UART shutdown and restore it after. From Max Neklyudov.
* NXP LPC17xx Drivers:
- LPC176x GPIO: Reorder steps when an output GPIO is configured in
order to avoid transient bad values from being output. From Hal
Glenn.
- LPC17 USB OHCI: Correct some initialization of data structures.
When hub support is enabled, it would overwrite the end of an array
and clobber some OS data structures.
- LPC17xx Ethernet: Review, update, and modify the Ethernet driver so
9162
9163
9164
9165
9166
9167
9168
9169
9170
9171
9172
9173
9174
9175
9176
9177
9178
9179
9180
9181
9182
9183
9184
9185
9186
9187
9188
9189
9190
9191
9192
9193
9194
9195
9196
9197
9198
9199
9200
9201
9202
9203
9204
9205
9206
9207
9208
9209
9210
9211
9212
9213
9214
9215
9216
9217
9218
9219
9220
9221
9222
9223
9224
9225
9226
9227
9228
9229
9230
9231
9232
9233
9234
9235
9236
9237
9238
9239
9240
9241
9242
that it works better with CONFIG_NET_NOINTS=y. Also, update all
LPC17xx networking configurations so that they have
CONFIG_NET_NOTINTS=y selected.
* SiLabs EMF32 Drivers:
- EFM32 SPI: Add missing SPI GPIO pin initialization. From Pierre-noel
Bouteville.
* STMicro STM32:
- STM32 F3: Added missing EXTI definitions for the STM32 F3; Correct
an error the port D base address in the STM32 F30x and F37x memory
maps. From Greg Meiste.
* STMicro STM32 Drivers:
- STM23 RTC: Fix an error introduced into stm32_pwr_enablebkp().
That function must preserve the previous state of backup domain
access on return.
- STM32 RTC counter: Now need to enable backup domain write access
when setting the time. From Darcy Gong.
- STM32 OTG FS and HS: Added protection in the event that out-of-bound
endpoint numbers are received. From David Sidrane.
* STMicro STM32 Boards:
- STM32F429i Disco: (1) Fix a bad return value if the LCD driver is
already initialized. (2) The LCD driver initialization is now
performed during the early boot sequence. (3) Increased the size
of the message queue from 32 to 64 in the lcd configuration. From
Marco Krahl.
* TI Tiva
- Fixes for Tiva TM4C1294NCPDT. From Frank Sautter.
* Atmel SAMV71 Drivers:
- SAMV7 TWIHS: Fix SAMV TWIHS logic that performs multi-message
transfers with and without repeated starts.
* Atmel SAMA5D3/4 Dirvers:
- SAMA5 CAN: Fix SAMA5 CAN frame construction. From Max Holtzberg.
* C Library/Header Files:
- stdlib.h: MAX_RAND should be RAND_MAX.
- assert.h: Wrap definitions of assertion macros in do while so that
they are valid C statements. Numerous places throughout the code
where semicolons were missing at the end of an assertion also had to
be fixed. Suggested by orbitalfox.
- inetntoa(): Correct errors in printing IP address when type char is
signed and the value is >= 128. From Max Neklyudov.
* Tools:
- Tools: Fix test for the existence of the apps/ directory in
configure.c. Fix backward interpretation of options, -l was selecting
Windows and -w was selecting Linux. This was SourceForege Ticket #39.
* Applications: apps/nshlib:
- apps/nshlib/nsh_timcmds.c: Check return values from time functions.
- apps/nshlib/: Fix handling of gmtime_r return value in time commands.
gmtime_r returns a pointer, not an int.
* Applications: apps/netutils:
- apps/netutils/ntp: Fix mismatched sched_lock/unlock. Noted by Juha
Niskanen.
* Applications: apps/examples:
- apps/examples/nxlines: Fix missing right bracket that causes
compile error when CONFIG_NX_XYINPUT=y. From Librae.
- apps/examples: When boardctl() fails, need to print errno not the
returned value which will always be -1.
- apps/examples: Correct use of the BOARDIOC_GRAPHICS_SETUP boardctl()
call.
NuttX-7.11 Release Notes
------------------------
The 111th release of NuttX, Version 7.11, was made on August 13 2015,
and is available for download from the Bitbucket.org website. Note
that release consists of two tarballs: nuttx-7.11.tar.gz and
apps-7.11.tar.gz. These are available from:
https://bitbucket.org/patacongo/nuttx/downloads
https://bitbucket.org/nuttx/apps/downloads
Both may be needed (see the top-level nuttx/README.txt file for build
information).
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
9359
9360
9361
9362
9363
9364
9365
9366
9367
9368
9369
9370
9371
9372
9373
9374
9375
9376
9377
9378
9379
9380
9381
9382
9383
9384
9385
9386
9387
9388
9389
9390
9391
9392
9393
9394
9395
9396
9397
9398
9399
9400
9401
9402
9403
9404
9405
9406
9407
9408
9409
9410
9411
9412
9413
9414
9415
9416
9417
9418
9419
9420
9421
9422
9423
9424
9425
9426
9427
9428
9429
9430
9431
9432
9433
9434
9435
9436
9437
9438
9439
9440
9441
9442
9443
9444
9445
9446
9447
9448
9449
9450
9451
9452
9453
9454
9455
9456
9457
9458
9459
9460
9461
9462
9463
9464
9465
9466
9467
9468
9469
9470
9471
9472
9473
9474
9475
9476
9477
9478
9479
9480
9481
9482
9483
9484
9485
9486
9487
9488
9489
9490
9491
9492
9493
9494
9495
9496
9497
9498
9499
9500
9501
9502
9503
9504
9505
9506
9507
9508
9509
9510
9511
9512
9513
9514
9515
9516
9517
9518
9519
9520
9521
9522
9523
9524
9525
9526
9527
9528
9529
9530
9531
9532
9533
9534
9535
9536
9537
9538
9539
9540
9541
9542
9543
9544
9545
9546
9547
9548
9549
9550
9551
9552
9553
9554
9555
9556
9557
9558
9559
9560
9561
9562
9563
9564
9565
9566
9567
9568
9569
9570
9571
9572
9573
9574
9575
9576
9577
9578
9579
9580
9581
9582
9583
9584
9585
9586
9587
Additional new features and extended functionality:
* Core OS:
- clock_gettime(): Use up_timer_gettime for CLOCK_MONOTONIC in
tickless mode. From Max Neklyudov.
- waitpid(): Implement WNOHANG for waitpid() only and for the case of
CONFIG_SCHED_HAVE_PARENT not selected. From Max Neklyudov.
- SCHED_SPORADIC: Add a sporadic scheduler to NuttX.
- Extend the processor-specific interface to include information to
support the Sporadic Scheduler.
- sem_tickwait(): Added this function for internal use within the OS.
It is a non-standard but more efficient version of sem_timedwait()
for use in higher performance device drivers.
* Binary Loader:
* Graphics/Graphic Drivers:
- Graphics: Implement anti-aliasing in order to clean the drawing of
all edges. Anti-aliasing is supported in the horizontal, raster
direction only.
- SSD1306 LCD Driver: Modify the SSD1306 LCD driver to support either
the SPI or I2C interface. From Alan Carvalho de Assis.
* File Systems/Block Drivers/MTD:
- mount: Add the ability to mount a file system on top of en existing
node in the psuedo-file system.
- epoll(): Add a very simple epoll layer just around poll calls. To
satisfy build app requirements. From Anton D. Kachalov.
* Common Device Drivers:
- IOCTL: Add relay IOCTL definitions. From Max Neklyudov.
- I/O Expander Framework: Add an I/O expander driver framework. From
Sebastien Lorquet
- NXP PCA9555 I/O Explander. Add PCA9555 driver.From Sebastien
Lorquet
- BMP180 Barameter: Add support to Bosch BMP180 barometer. From
Alan Carvalho de Assis.
- CAN IOCTLs: Add CAN IOCTL command definitions to manage CAN message
filtering
- CAN Driver: Add configuration to support DLC to byte conversions
needed for CAN FD mode.
- SPI Slave Interface: Add a definition of an SPI slave interface.
- LM92 Temperature Sensor: Add a driver for the LM92 temperature
sensor. Contributed by Paul Alexander Patience.
- AS5048B Rotary Magnetic Sensor: Add support for an AS5048B rotary
magnetic sensor. From Paul Alexander Patience.
- Ramtron Driver: Update to include supportf for newer RAMTRON parts.
From David Sidrane.
- MB7040 Sonar Driver: Add support for a MB7040 sonar driver. From
Paul Alexander Patience.
- ms5805 Altimeter Driver: Add support for an MS5805 altimeter. From
Paul Alexander Patience.
* Networking:
- DNS Client: Implement the low-level network DNS packet protocol to
request and receive IPv6 address mappings.
- NetDB: Add support for a DNS host name resolution cache. This can
save a lot of DNS name server lookups (but might also have the
negative consequence of using stale IP address mappings.
- NetDB: Name resolution logic now supports lookups from a file like
/etc/hosts.
- Network Initialization: Add CONFIG_NETDEV_LATEINIT that can be
used to suppress calls to up_netinitialize() from early in
initialization.
- FTMAC100 Ethernet MAC Driver. Add support for Faraday FTMCA100
Ethernet MAC/ From Anton D. Kachalov.
- UDP Networking: Add support for send() for connected UDP sockets.
* Crypto:
- Add CFB and MAC AES modes. From Max Neklyudov.
* Simulation Platform:
- Simulation: Implement board_power_off() for the simulation platform.
This allows for a graceful exit from the simulation.
* MoxaRT:
- MoxaRT SoC: Add support for MoxaRT SoC found in the most Moxa serial
converters such as NP51x0, NP66xx, UC72xx. From Anton D. Kachalov.
* MoxaRT Boards:
- Moxa NP51x0: Moxa NP51x0 series of 2-port advanced RS-232/422/485
serial device servers. From Anton D. Kachalov.
* ARMv6-M:
- ARMv6-M Assertions: Port some per-process stack dumping logic from
ARMv7-M to ARMv6-M. From Alan Carvalho de Assis.
* Atmel SAMD/L Boards:
- SAML21: DMA: Add SAML21 DMA support.
- SAMD21: Add architecture support for the SAMD21 family.
- SAMD21-Xplained: Board configuration for the SAMD21 Xplained board.
* Atmel SAM3/4 Drivers:
- SAM4E: Add default loop optimization if EEFC_FMR is available in the
configuration (i.e., for SAM4S and 4E). From Marco Aurélio da Cruz.
- crypto/ and SAM4CM: Add CFB and MAC AES modes. From Max Neklyudov.
- SAM3/4: Add a TWI driver for the SAM4CM. From Max Neklyudov.
* Freescale (NXP) Kinetis:
- Kinetis: Add support for MK20DN--VLH5 and MK20DX---VLH5. Needed
for backward compatible support for Teensy-3.0.
* Freescale (NXP) Kinetis Boards:
- Teensy 3.x: Add board support for the PJRC Teensy-3.0 and
Teensy-3.1 boards.
* Atmel SAMV7 Drivers:
- SAMV7: Add an MCAN driver for the SAMV7 platform.
- SAMV7 SPI Slave Driver: Add the an SPI slave driver.
* STMicro STM32:
- STMicro STM32 F7: Add architecture support for the STMicro STM32
F7.
- STM32 F446: Add support for the STMicro STM32 F446. From David
Sidrane.
* STMicro STM32 Drivers:
- STM32 F7: Add an STM32 F7 Ethernet driver.
- STM32 F7: Port the STM32 F4 DMA driver.
- STM32 F4 ADC: Add DMA support to the ADC driver for STM32 F4. From
Max Kriegler.
* STMicro STM32 Boards:
- STM32F762G-Disco: Add support for the STMicro STM32 F7 Discovery
board.
- STM32F4-Disco: Add support to BMP180 driver on the STM32F4 Discovery.
From Alan Carvalho de Assis.
* C Library/Header Files:
- Add asctime(), asctime_r(), ctime(), and ctime_r().
- sethostname(): Add support for sethostname().
- gethostbyname() and gethostbyaddr(): Add support for
gethostbyname() and gethostbyaddr(). Also support included for the
non-standard gethostbyname_r() and gethostbyaddr_r(). This moves
the DNS client logic from apps/ into the NuttX libc implementation.
* Tools:
- testbuild.sh: Add a script that can be used to perform building
testing for several board configurations.
* Build/Configuration System:
- apps/ Build System: No longer depends on hardcoded lists of
directories. Instead, it does a wildcard search to find all
appropriate directories. This means that to install a new
application, you simply have to copy the directory (or link it) into
the apps/ directory. If the new directory includes a Makefile and
Make.defs file, then it will automatically be included in the build.
- mkkonfig.sh: Add the tool mkkconfig.sh that dynamically builds the
apps/Kconfig file at configuration time. The hardcoded
configuration file has been removed and now the top-level Makefile
executes tools/mkkconfig.sh to auto-generate the top-level Kconfig
file. A new apps/ make target call preconfig: was added to support
this operation. Now you do not have to modify the top-level Kconfig
file to add a new directory into the configuration; the top-level
subdirectory simply needs to include a Kconfig file and it will
automatically be included in the configuration. The native Windows
build is temporarily broken until a new apps/tools/mkconfig.bat
script is generated.
- mkkconfig.bat: Add the Windows script corresponding to
apps/tools/mkkconfig.sh. Needed for a Windows native build.
* Applications: apps/nshlib:
- NSH shutdown command: NSH will now support an (optional) shutdown
command if the board provides the option CONFIG_BOARDCTL_POWEROFF.
The command can also be used to reset the system if
CONFIG_BOARDCTL_RESET=y.
- NSH uname command: Add support for a uname command.
- NSH nslookup command: Add an nslookup command.
* Applications: apps/system:
- NetDB: Add a system command to access the network database.
- readline(): Add support for Unix-style tab complete to readline.
Contributed by Nghia Ho.
- readline(): Extended the tab-completion support to also expand NSH
command names.
- readline(): Add support for an in-memory command line history that
can be retrieved using the up and down arrows. Contributed by Nghia
Ho.
* Applications: apps/netutils:
- DNS client: Moved the DNS client logic into the NuttX C library.
It is a necessary part for the full implementation of the netdb logic
and provides more flexibility in that location.
- Replace calls to the non-standard dns_gethotip() with calls to
standard gethostbyname().
- NetLib: Create netlib wrapper functions around dns_getserver() and
dns_setserver() to isolate application code from changes to those
interfaces.
* Applications: apps/examples:
- OS test: Extend the OS test to include a test of
pthread_mutex_trylock() for recursive mutexes. From Juha Niskanen.
- OS test: Add a test for the sporadic scheduler.
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:
- pthreads: Use -1 instead of 0 as PID for unclaimed mutexes. From
Juha Niskanen.
- pthreads: Implement pthread_mutex_trylock() for recursive mutexes.
From Juha Niskanen.
- pthread_create(): Group binding needs to be cleared before
sched_releasetcb(), as otherwise group_leave() will be called and
group->tg_nmembers decremented or group being released. group_leave()
should be called only after group_join() is called, not after
group_bind(). From Jussi Kivilinna.
- Protected Mode User Memory Allocator: Redesigned how the user space
heap is accessed from the kernel code in protected mode. It used to
call memory management functions in user space via function pointers
in the userspace interface. That is inefficient because the first
thing that those memory management functions do is to trap back into
the kernel to get the current PID. Worse, that operation can be
fatal is certain fragile situations such as when a task is exiting.
The solution is to remove all of the memory management function
calls from the interface. Instead, the interface exports the users
pace heap structure and then kernel size implementations of those
memory management functions will operate on the userspace heap
structure. This avoids the unnecessary system calls and, more
importantly, failures do to freeing memory when a test exits.
- pthread_create(): Fix an (unlikely) error in fallback value in the
event of a failure (which should never occur).
* Common Drivers:
- STMPE811 Driver: In stmpe811_instanciate() when
CONFIG_STMPE811_MULTIPLE is enabled, and the call to
stmpe811_checkid() fails, then the linked device list is not
restored to its previous state. From Sebastien Lorquet.
- CAN driver: Fix an issue in the CAN driver where the rx_sem count
can grow beyond bounds.
* File System/Block Drivers:
- NFS client: Fix prototype of unbind method. The function prototype
was not updated for NFS after a recent change to the file system
interface. From Manuel St??.
* Networking/Network Drivers:
- netconfig.h: Fix some backward compilation that was emitting #error
in the wrong condition when SLIP was enabled.
- SLIP Driver: Fix a missed name change when many of network
interface names changed sometime back but were apparently never
updated for SLIP.
- Networking: Allow receipt of empty UDP packets. From Max Neklyudov.
* ARMv6-M:
- ARMv6-M: Fix Cortex-M0 assembly error when the interrupt stack is
enabled. From Alan Carvalho de Assis.
* Atmel SAMD/L Drivers:
- SAMD20, D21, L21: In the SAML21, SERCOM5 uses a different SLOW clock
channel (and, hence, also a different SLOW GCLK generator). This
means that the channel selection cannot be a global definition but
must be a per SERCOM configuration setting.
- SAMD/L: Several fixes to register definitions and types. From
Janne Rosberg.
* Atmel SAM3/4 Drivers:
- SAM3/4 UART: Back out an error introduced with commit
02c33f66c5a8be774034cd40e4125e9323c7b4d8. Causes an infinite loop in
up_lowputc(). From Max Neklyudov.
- SAM4CM: Fix SUPC register definitions. From Max Neklyudov.
- SAM3/4 WDT: Correct some problems with SAM3/4 watchdog driver.
Includes some small improvements. From Max Neklyudov.
* Atmel SAMV7 Drivers:
- SAMV7 UART: Also back the bad cloned change o sam_lowputc.c for
SAMV7 platform.
* NXP LPC43xx Drivers:
- LPC4350: Correct some LPC4350 GPIO pin configurations. From
Alessandro Temil.
* SiLabs EMF32 Drivers:
- EFM32 SPI: Correct write to incorrect register in EFM32 SPI driver.
From Pierre-noel Bouteville.
* STMicro STM32 Drivers:
- STM32 F15x: STM322 F15x stm32_stdclockconfig() was calling
stm32_pw_setvos() which accessed PWR_CR via an inactive APB From
Juha Niskaneni.
- STM32 Ethernet: Extend STM32 Ethernet operating frequency to 180MHz.
From Sebastien Lorquet.
* STMicro STM32 Boards:
- SAMV7 Xplained: In clock configuration, divider was set to 25 to get
25*12MHz=300MHz CPU clock. The correct multiplier is 24 because the
calculation if (24+1)*12MHz. So the board was running at 312MHz.
From Efim Monjak.
* ARMv7-A:
- Cortex-A5 vfork(): Fix a Cortex-A compilation error when system
calls are enabled in modes other than CONFIG_BUILD_KERNEL.
9589
9590
9591
9592
9593
9594
9595
9596
9597
9598
9599
9600
9601
9602
9603
9604
9605
9606
9607
9608
9609
9610
9611
9612
9613
9614
9615
9616
9617
9618
9619
9620
9621
9622
9623
* Atmel SAMA5 Drivers:
- SAMA5Dx EHCI: Fix some bad conditional compilation that left a
function undefined if CONFIG_USBHOST_ASYNCH is not selected.
* C Library/Header Files:
- getopt(): Uninitialized variable can cause hardfault from getopt()
if required argument is missing. From George McWilliams.
* Applications: apps/nshlib:
- NSH/THHPD: Change decoding to handle the increased size of the
scheduling policy field in the TCB.
* Applications: apps/netutils:
- THTTPD: Fix compilation problems when
CONFIG_THTTPD_GENERATE_INDICES is defined.
- THTTPD: Missing gci-src as a dependency path when building with
BINFS enabled.
* Applications: apps/examples:
- poll() example: Fix a few bit-rot compilation errors.
- Nx Lines example: If CONFIG_NX_ANTIALIASING=y, then the nxlines
example now erases a line that is 2 pixels longer and 2 pixels wider
than the line it drew. That eliminates edges effects due to
applying the anti-aliasing algorithm twice. A better solution
would be to make anti-aliasing an option for each graphics call so
you would rend the line with anti-aliasing ON and clear it with
anti-aliasing OFF. but I don't have the wherewithal for that change
today.
- OS test: Improve synchronization in round robin tests. On very fast
processors, there are race conditions that make the test fail.
Need better interlocking to assure that the threads actually do start
at the same time.
9627
9628
9629
9630
9631
9632
9633
9634
9635
9636
9637
9638
9639
9640
9641
9642
9643
9644
9645
9646
9647
9648
9649
9650
9651
9652
9653
9654
9655
9656
9657
9658
9659
9660
9661
9662
9663
9664
9665
9666
9667
9668
9669
9670
9671
9672
9673
9674
9675
9676
9677
9678
9679
9680
9681
9682
9683
9684
9685
9686
9687
9688
9689
9690
9691
9692
9693
9694
9695
9696
9697
9698
9699
9700
9701
9702
9703
9704
9705
9706
9707
9708
9709
9710
9711
9712
9713
9714
9715
9716
9717
9718
9719
9720
9721
9722
9723
9724
9725
9726
9727
9728
9729
9730
9731
9732
9733
9734
9735
9736
9737
9738
9739
9740
9741
9742
9743
9744
9745
9746
9747
9748
9749
9750
9751
9752
9753
9754
9755
9756
9757
9758
9759
9760
9761
9762
9763
9764
9765
9766
9767
9768
9769
9770
9771
9772
9773
9774
9775
9776
9777
9778
9779
9780
9781
9782
9783
9784
9785
9786
9787
9788
9789
9790
9791
9792
9793
9794
9795
9796
9797
9798
9799
9800
9801
9802
9803
9804
9805
9806
9807
9808
9809
9810
9811
9812
9813
9814
9815
9816
9817
9818
9819
9820
9821
9822
9823
9824
9825
9826
9827
9828
9829
9830
9831
9832
9833
9834
9835
9836
9837
9838
9839
9840
9841
9842
9843
9844
9845
9846
9847
9848
9849
9850
9851
9852
9853
9854
9855
9856
9857
9858
9859
9860
9861
9862
9863
9864
9865
9866
9867
9868
9869
9870
9871
9872
9873
9874
9875
9876
9877
9878
9879
9880
9881
9882
9883
9884
9885
9886
9887
9888
9889
9890
9891
9892
9893
9894
9895
9896
9897
9898
9899
9900
9901
9902
9903
9904
9905
9906
9907
9908
9909
9910
9911
9912
9913
9914
9915
9916
NuttX-7.12 Release Notes
------------------------
The 112th release of NuttX, Version 7.12, was made on October 1, 2015,
and is available for download from the Bitbucket.org website. Note
that release consists of two tarballs: nuttx-7.12.tar.gz and
apps-7.12.tar.gz. These are available from:
https://bitbucket.org/patacongo/nuttx/downloads
https://bitbucket.org/nuttx/apps/downloads
Both may be needed (see the top-level nuttx/README.txt file for build
information).
Additional new features and extended functionality:
* Graphics/Graphic Drivers:
- Added SSD1351 OLED controller support. Contributed by Paul
Alexander Patience.
* Common Device Drivers:
- MS58xx: Generalize the MS5805 altimeter driver to support other
family members. From Paul Alexander Patience.
- CAN driver interface: Add an error indication bit to the CAN
message report.
- Developed a new interface for QSPI. Most QSPI hardware (such as the
SAMV71) used a programmed interface to access the QuadSPI FLASH.
That programmed interface is no compatible with the simpler NuttX
SPI data transfer interface.
- Added a driver for ST25L1*K QuadSPI parts.
- Renamed the battery driver interface to battery_gauge since it
really only implements a battery fuel gauge. From Alan Carvalho de
Assis.
- Added a new framework to support a batter charger interface. From
Alan Carvalho de Assis.
- Added a BQ24250 battery charger driver. From Alan Carvalho de Assis.
* Networking:
- Added support for the local loopback device (dev lo, hostname localhost).
- Added NetDB support for the local loopback device.
- Network initialization: Automatically initialize all the TUN and
loopback devices if they arein the configuration.
* Simulation Platform:
- The simulation now runs under Cygwin64. Modern Cygwin X86_64
machines follow the Microsoft ABI for parameter passing. The Linux
System 5 ABI would not work on X86_64-based Cygwin machines. Newer
Cygwin tool chains do nor pre-pend symbol names with the underscore
character.
* Atmel SAMA5Dx:
- Added architectural support for the Atmel SAMA5D2 parts. Not fully
verified in this NuttX release.
* Atmel SAMA5Dx Boards:
- Added support for the Atmel SAMA45D2 Xplained Ultra board. Not
fully verified in this NuttX release.
* Atmel SAMV7 Drivers:
- SAMV7 USBHS DCD: The device controller driver is (finally)
functional.
* NXP LPC17xx:
- Implement options to use external SDRAM and or SRAM for the heap.
From Pavel Pisa.
* NXP LPC43x:
- Added architectural support for the LPC4370. From Lok Tep.
* NXP LPC43xx Drivers:
- Added Ethernet support. From Ilya Averyanov.
- Added LPC43xx EHCI driver from Ilya Averyanov.
* NXP LPC43xx Drivers:
- Added support for the NXP LPC4370-Link2 development board from Lok
Tep.
* STMicro STM32:
- Added architectural for STM32F303K6, STM32F303K8, STM32F303C6,
STM32F303C8, STM32F303RD, and STM32F303RE devices. From Paul
Alexander Patience.
* STMicro STM32 Drivers:
- Added OTG support for STM32F44x. From David Sidrane.
* STMicro STM32 Boards:
- Added support for the STMicro Nucleo F303ERE board from Paul
Alexander Patience.
* C Library/Header Files:
- stdlib: Add support for div() to the C library. From OrbitalFox.
Also added ldiv() and lldiv() which are equivalent to div() with
long and long long types, respectively, instead of int.
- Added an implementation of the standard shutdown function.
* Tools:
- tools/mksymtab: declare g_symtab array as const to occupy RO section
(Flash). From Pavel Pisa.
* Build/Configuration System:
- Simplify configs/ Makefiles by combining common logic into a new
Board.mk Makefile fragment. From Paul Alexander Patience.
* Applications: apps/system:
- apps/system/symtab: Optional canned symtab inclusion to the build.
When option CONFIG_SYSTEM_SYMTAB is selected and symbol table file
libc/symtab/canned_symtab.inc is prepared then application can use
system provided complete symbol table. The option has substantial
effect on system image size. Mainly code/text. If loading of
applications at runtime is not planned do not select this. From
Pavel Pisa.
* Applications: apps/canutils:
- apps/canutils/uavcan: Add support for libuavcan. From Paul Alexander Patience.
* Applications: apps/examples:
- apps/examples/can: Extend the CAN loopback test by adding more
command line options.
- apps/examples/usbserial: Can now be run as an NSH builtin-function.
Now uses a configurable IO buffer size.
- apps/examples/nettest: Add option to suppress network initialization.
This is necessary if the nettest is run from NSH which has already
initialized the network.
- apps/examples/nettest: Extend test so that can be performed using
the local loopback device.
- apps/examples/netloop: Add a test of the local loopback device.
- apps/examples/udpblaster: Add a test to stress the network by
sending UDP packets at a very high rate. .
- apps/examples/uavcan: libuavcan example from Paul Alexander Patience.
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:
- wd_create(): Correct a counting error in the number of available
watchdog timers. When the number of free timers is low, the counter
could be incremented below zero.
- mq_open(): When message queue is opened, inode_reserve() leaves the
reference count at zero. mq_open() logic must assure that the
reference count of the newly created inode is one.
- work_queue(): Logic that sets the queued indication and the logic
that does the actual queuing must be atomic.
* Binary Loader:
- Fix a memory leak in the built-in application logic: File was not
being closed. From Bruno Herrera.
* File System/Block Drivers:
- poll(): If we fail to setup the poll for any file descriptor, for
any reason, set the POLLERR bit.
- rwbuffer: Fix some logic errors. From Dmitry Nikolaev via Juha
Niskanen.
- ROMFS: One allocation was not being freed if there was a subsequent
failure to allocation I/O buffers resulting in a memory leak on
certain error conditions. From Bruno Herrera.
* Networking/Network Drivers:
- Fix a bug in tun interface driver. From Max Neklyudov.
- recvfrom(): Correct wait for new data when NET_UDP_READAHEAD is
enabled. Fix size accounting when recvfrom_udpreadahead() sets
state.rf_recvlen == -1. I have not checked if data are accumulated
to the right position in the buffer however. From Pavel Pisa.
- networking: Correct return value from psock_tcp_accept(). From
SaeHie Park.
- TCP: Fix a problem in when there are multiple network devices.
Polls were being sent to all TCP sockets before. This is not good
because it means that packets may sometimes be sent out on the wrong
device. That is inefficient because it will cause retransmissions
and bad performance. But, worse, when one of the devices is not
Ethernet, it will have a different MSS and, as a result, incorrect
data transfers can cause crashes. The fix is to lock into a single
device once the MSS is locked locked down.
- net/tcp: The logic that binds a specific network device to a
connection was faulty for the case of multiple network devices. On
bind(), the local address should be used to associate a device with
the connection (if the local address is not INADDR_ANY); On connect(),
the remote address should be used (in case the local address is
INADDR_ANY). On accept(), it does not matter but the remote address
is the one guaranteed to be available.
- net/tcp: Fix unbuffered send compilation error when Ethernet is not
enabled. From Alan Cavalho de Assis.
* ARMv7-M:
- All ARMV7-M IRQ setup: Always set the NVIC vector table address
unconditionally. This is needed in cases where the code is running
with a bootload and when the code is running from RAM. It is also
needed by the logic of up_ramvec_initialize() which gets the vector
base address from the NVIC. Suggested by Pavel Pisa.
- Fix some H/W floating point logic: In the original implementation,
!defined(CONFIG_ARMV7M_CMNVECTOR) was a sufficient test to determine
if lazy floating point register saving was being used. But recents
changes added common lazy register as well so now that test must be
(!defined(CONFIG_ARMV7M_CMNVECTOR) || defined(CONFIG_ARMV7M_LAZYFPU)).
- ARMv7-M, all "lazy" interrupt stack logic. Assembly instruction
that fetches the saved value is incorrect; replace with more
traditional push and pop. This is an important fix. Noted by
Stefan Kolb.
- All ARMV7-M: Force 8-byte stack alignment when calling from assembly
to C to interrupt handling.
- up_schedulesigaction(): Fix logic that determines if there is a
pending signal action before scheduling the next signal action.
Both the test and the scheduling action need to be atomic. This
problem was fixed on the ARMv7-M but also ported to other
architectures that had the same issue.
* NXP LPC43xx:
- LPC43xx: Fix NVIC_SYSH_PRIORITY_STEP define. From Ilya Averyanov.
- LPC43xx: Fix missing #define in eeprom. From Ilya Averyanov.
* NXP LPC43xx Drivers:
- Fixed the SPI driver. From Ilya Averyanov.
* Atmel SAMA5 Drivers:
- LPC31 and SAMA5D EHCI: Fix qh_ioccheck to move bp to next QH. From
Ilya Averyanov.
- LPC31 and SAMA5D EHCI: Performance improvement: Do not disable the
asynchronous queue when adding a new QH structure. From Ilya
Averyanov.
* C Library/Header Files:
- gethostbyname(): correct returned address format when DNS is used.
The hostent.h_addr_list should point to raw in_addr or in6_addr
as defined in the standard. Original implementation used that for
numeric addresses but for DNS lookup returned pointer to whole
sockaddr_in or sockaddr_in6. From Pavel Pisa .
- asin(): The function did not convert for some input values. asing()
did not convert for values which do not belong to the domain of the
function. But aside of that the function also did not converge for
allowed values. I achieved a conversion of the function by
reducing the DBL_EPSION and by checking if the input value is in
the domain of the function. This is a fix for the problem but the
function should always terminate after a given number of iterations.
From Stefan Kolb.
- Change all references from avsprintf to vasprintf. From Sebastien
Lorquet.
* Applications: apps/nshlib:
- Fix error handling in 'cat' command. On a failure to allocate
memory, a file was not being closed. From Bruno Herrera.
- Fix error handling in 'mv' command. On a failure to expand the
second path, the memory allocated for the expansion of the first
path was not being freed. From Bruno Herrera.
* Applications: apps/system:
- apps/system/netdb: Failed to build if CONFIG_NET_HOSTFILE was not
defined because gethostbyaddr() was not available. Noted by
OrbitalFox.
* Applications: apps/netutils:
- Various Kconfig files in netutils: Fix some changes from from
NETUTILS_DNSCLIENT to NETDB_DNSCLIENT. From Pavel Pisa.
* Applications: apps/modbus:
- Macros PR_BEGIN_EXTERN_C and PR_END_EXTERN_C were not defined in
all contexts. Replace with explicit expansion in all cases. From Stefan Kolb.
9917
9918
9919
9920
9921
9922
9923
9924
9925
9926
9927
9928
9929
9930
9931
9932
9933
9934
9935
9936
9937
9938
9939
9940
9941
9942
9943
9944
9945
9946
9947
9948
9949
9950
9951
9952
9953
9954
9955
9956
9957
9958
9959
9960
9961
9962
9963
9964
9965
9966
9967
9968
9969
9970
9971
9972
9973
9974
9975
9976
9977
9978
9979
9980
9981
9982
9983
9984
9985
9986
9987
9988
9989
9990
9991
9992
9993
9994
9995
9996
9997
9998
9999
10000
NuttX-7.13 Release Notes
------------------------
The 113th release of NuttX, Version 7.13, was made on December 5, 2015,
and is available for download from the Bitbucket.org website. Note
that release consists of two tarballs: nuttx-7.13.tar.gz and
apps-7.13.tar.gz. These are available from:
https://bitbucket.org/patacongo/nuttx/downloads
https://bitbucket.org/nuttx/apps/downloads
Both may be needed (see the top-level nuttx/README.txt file for build
information).
Additional new features and extended functionality:
* Core OS:
- External RTC: Added OS support for external RTC chips.
- boardctl(): Add a command to the boardctl() interface to obtain a
board unique ID.
* File Systems:
- TMPFS: Add support for a new TMPFS, RAM file system. The TMPFS
file system does not require any significant amount of memory
itself. It will grow dynamically as files are added and shrink back
when files are deleted. A very low overhead way to retain temporary
files.
- VFS: The VFS was extended to support standard file operations on
block drivers (open, close, read, write, etc.). The open() interface
accomplishes this by creating a temporary characer driver to mediate
the character oriented accesses to tje block driver.
- HOSTFS: Added a HOSTFS file system for use with the simulator. The
HOSTFS file system mounts in the simulated Nuttx context by provides
proxied access to the file system on the host PC. This is useful for
providing file system content and nonvolatile storage of files in the
simulation environment. From Ken Pettit.
- MTD/PROCFS: Add an interface to un-register an MTD procfs entry.
From Ken Pettit.
- filemtd: A new MTD conversion layer that will convert a regular file
(or driver file) to an MTD device. This is useful for testing on the
simulation using the HOSTFS. From Ken Pettit.
- PROCFS: Extended to include networking entries in the procfs. Device
status, device statistics, and network statistics are now available
from the PROCFS.
- PROCFS: The PROCFS file system can now be configured so that it
supports runtime registration of PROCFS entries with
CONFIG_FS_PROCFS_REGISTER=y.
* Graphics/Graphic Drivers:
- ST7565 Driver: Extend to include support for the ERC12864-3. From
Pierre-noel Bouteville.
* Common Device Drivers:
- User buttons: Added a character driver to support application access
to board buttons. Supports notification of button activity via
signals.
- User LEDs: Added a character driver to support application access
to on-board LEDs.
- Zero Cross: Added a Zero Cross device driver support. From Alan
Carvalho de Assis.
- MAX6675: Added support to Thermocouple-to-Digital converter MAX6675.
From Alan Carvalho de Assis.
- BCH: Block-to-character (BCH) driver should forward ioctl() calls
to the contained block driver.
- S25FL1xx: Added a S25FL1xx QuadSPI FLASH driver.
- On-Chip FLASH: Added an upper half MTD device that can use the
interfaces defined in included/nuttx/progmem.h to provide a
standard MTD driver.
- Serial: Implemented high level DMA infrastructure for serial
devices. From Max Neklyudov.
- AT24XX: Add support for multiple AT24xx EEPROM parts, each with
unique I2C addresses, but otherwise identical.
- External RTC: Added drivers for external I2C RTC chips: DS3102,
DS1307, DS3231, DS3232, and NXP PCF85263.
- W25: Added support for byte write mode to the W25 FLASH driver. From
Ken Pettit.
- dev/loop: Added a loop character device. losetup() and loteardown()
should not be called directory from applications. Rather, these
functions are now available as IOCTL commands to the loop driver.