Newer
Older
17001
17002
17003
17004
17005
17006
17007
17008
17009
17010
17011
17012
17013
17014
17015
17016
17017
17018
17019
17020
17021
17022
17023
17024
17025
17026
17027
17028
17029
17030
17031
17032
17033
17034
17035
17036
17037
17038
17039
17040
17041
17042
17043
17044
17045
17046
17047
17048
17049
17050
17051
17052
17053
17054
17055
17056
17057
17058
17059
17060
17061
17062
17063
17064
17065
17066
17067
17068
17069
17070
17071
17072
17073
17074
17075
17076
17077
17078
17079
17080
17081
17082
17083
17084
17085
17086
17087
17088
17089
17090
17091
17092
17093
17094
17095
17096
17097
17098
17099
17100
17101
17102
17103
17104
17105
17106
17107
17108
17109
17110
17111
17112
17113
17114
17115
17116
17117
17118
17119
17120
17121
17122
17123
17124
17125
17126
17127
17128
17129
17130
17131
17132
17133
17134
17135
17136
17137
17138
17139
17140
17141
17142
17143
17144
17145
17146
17147
17148
17149
17150
17151
17152
17153
17154
17155
17156
17157
17158
17159
17160
17161
17162
17163
17164
17165
17166
17167
17168
17169
17170
17171
17172
17173
17174
17175
17176
17177
17178
17179
17180
17181
17182
17183
17184
17185
17186
17187
17188
17189
17190
17191
17192
17193
17194
17195
17196
17197
17198
17199
17200
17201
17202
17203
17204
17205
17206
17207
17208
17209
17210
17211
17212
17213
17214
17215
17216
17217
17218
17219
17220
17221
17222
17223
17224
17225
17226
17227
17228
17229
17230
17231
17232
17233
17234
17235
17236
17237
17238
17239
17240
17241
17242
17243
17244
17245
17246
17247
17248
17249
17250
17251
17252
17253
17254
17255
17256
17257
17258
17259
17260
17261
17262
17263
17264
17265
17266
17267
17268
17269
17270
17271
17272
17273
17274
17275
17276
17277
17278
17279
17280
17281
17282
17283
17284
17285
17286
17287
17288
17289
17290
17291
17292
17293
17294
17295
17296
17297
17298
17299
17300
17301
17302
17303
17304
17305
17306
17307
17308
17309
17310
17311
17312
17313
17314
17315
17316
17317
17318
17319
17320
17321
17322
17323
17324
17325
17326
17327
17328
17329
17330
17331
17332
17333
17334
17335
17336
17337
17338
17339
17340
17341
17342
17343
17344
17345
17346
17347
17348
17349
17350
17351
17352
17353
17354
17355
17356
17357
17358
17359
17360
17361
17362
17363
17364
17365
17366
17367
17368
17369
17370
17371
17372
17373
17374
17375
17376
17377
17378
17379
17380
17381
17382
17383
17384
17385
17386
17387
17388
17389
17390
17391
17392
17393
17394
17395
17396
17397
17398
17399
17400
17401
17402
17403
17404
17405
17406
17407
17408
17409
17410
17411
17412
17413
17414
17415
17416
17417
17418
17419
17420
17421
17422
17423
17424
17425
17426
17427
17428
17429
17430
17431
17432
17433
17434
17435
17436
17437
17438
17439
17440
17441
17442
17443
17444
17445
17446
17447
17448
17449
17450
- configs/viewtool-stm32f107: Add support for FT80X initialization.
Add ft80x configuration that will eventually be used for testing the
ft80x if I ever receive hardware.
* Tools:
- tools/logparser: Add a tool which will help me to convert git logs
to ChangeLog format.
* NSH: apps/nshlib:
- apps/nshlib: Add support for a truncate command. This will be used
to test the new ftruncate file system support.
- apps/nshlib: Add support for Telnet character mode. From Masayuki
Ishikawa.
- apps/nshlib: Add support for '-n' option to the echo command. From
Masayuki Ishikawa.
- apps/nshlib: Add irqinfo command.
* Examples/Tests: apps/examples:
- apps/examples/userfs: Add truncate() support for userfs.
- apps/examples/lvgldemo: Add lvgldemo example for LittlevGL.
- apps/examples/veml6070: Add VEML6070 Application Example. From
Alan Carvalho de Assis.
- apps/examples/bmp180: Add BMP180 application example. From Alan
Carvalho de Assis.
- apps/examples/ft80x: Add a test of the FT80x based on FTDI
SampleApp. Includes tests of GPU primitives and graphics co-
processor commands.
* Network Utilities: apps/netutils:
- apps/netutils/netlib: Add default route in netlib_set_dripv4addr().
From Masayuki Ishikawa.
* Graphics: apps/graphics:
- apps/graphics/littlevgl: Add littlevgl library. From Alan Carvalho
de Assis.
- apps/graphics/ft80x: Add the FTDU FT80x GUI support library.
Consists of some display list helpers, audio helpers, touch helpers,
RAM access, register access etc.
* System Utilities (apps/system)
- apps/system/nxplayer: Add support for HTTP streaming in nxplayer.
From Masayuki Ishikawa.
- apps/system/setlogmask: Adds 'setlogmask' application that allows
you to set the syslog priority via a simple command. From Anthony
Merlino.
- apps/system/usbmsc: Added Kconfig options to configure write
protection for each LUN. From Fabio D'Urso.
- system/stackmonitor: Re-design the stack monitor so that it does not
make forbidden calls directly into the OS, breaking the portable POSIX
OS interface. It now properly uses the PROCFS file system to glean
information about stack usage.
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:
- System Timer: Change the way that the 64-bit time is sampled.
Previously, we disabled interrupts before sampling the 64-bit
timer since the uint64_t access is not atomic on most CPUs. However,
disabling (local) interrupts does not work in the SMP case. In that
case, the timer interrupt may be running on only one of the CPUs;
disabling interrupts on a different CPU will provide no protection
from timer rollover. To work around this, logic was added that
samples 64-bit timer is sampled twice and if 32-bit rollover was
detected between samples, then loops until there is no rollover.
- POSIX Timers: In SMP mode, running TCB is not always at the head of
the g_readytorun list. This change removes DEBUGASSERT() to avoid
this condition. From Masayuki Ishikawa.
- Spinlocks: Add memory barrier operations in spin_unlock(). In ARM
document regarding memory barriers, SP_DMB() must be issued before
changing a spinlock state to SP_UNLOCKED. However, we found that
SP_DSB() is also needed to ensure that spin_unlock() works
correctly for network streaming aging test. From Masayuki Ishikawa.
- Sporadic Scheduler: Fix compiler error in Sporadic Scheduler when
priority inheritance is enabled. Noted by eunb.song@samsung.com
- Priority Inheritance: Fix some priority inheritance related issues
noted during review of logic. Also add some REVISIT comments for some issues noted in the design.
- boardctl: Remove the BOARDIOC_TSCTEST_TEARDOWN and
BOARDIOC_TSCTEST_SETUP boardctl() commands. Remove all
implementations of board_tsc_teardown(). Each board now initializes
the touchscreen controller as a normal part of its board bring-up.
board_tsc_setup() is gone; the touchscreen controller is now treated
like any other on-board device.
- configs: CONFIG_MAX_TASKS must be a power of 2.
- SMP: Introduce a new global IRQ clearing logic and tasklist
protection. The previous implementation of clearing global IRQ in
sched_addreadytorun() and sched_removereadytorun() was done too
early. As a result, nxsem_post() would have a chance to enter the
critical section even nxsem_wait() is still not in blocked state.
This patch moves clearing global IRQ controls from
sched_addreadytorun() and sched_removereadytorun() to
sched_resumescheduler() to ensure that nxsem_post() can enter the
critical section correctly. For this change,
sched_resumescheduler.c is always necessary for SMP configuration.
In addition, by this change, task_exit() had to be modified so that
it calls sched_resumescheduler() because it calls
sched_removescheduler() inside the function, otherwise it will cause
a deadlock. However, I encountered another DEBUGASSERT() in
sched_cpu_select() during HTTP streaming aging test on LC823450-XGEVK.
Actually sched_cpu_select() accesses the g_assignedtasks which might
be changed by another CPU. Similarly, other tasklists might be
modified simultaneously if both CPUs are executing scheduling logic.
To avoid this, I introduced tasklist protection APIs. With these
changes, SMP kernel stability has been much improved. From Masayuki
Ishikawa.
- SMP: Fix this_task() to be an atomic operation. In the previous
implementation, this_task() was defined in sched.h by using just a
macro current_task(this_cpu()). However, I found that this is not
atomic and actually sometimes switching CPU happened in executing
the macro when we tested audio steaming plus executing commands via
Telnet. This change resolves this issue by implementing atomic
this_task()in sched_thistask.c which is newly introduced. From
Masayuki Ishikawa.
- SMP: Implements a global scheduler lock capability as part of SMP
support. This allows the scheduler to be locked with no knowledge
or access to the TCB of the currently running task. This is
necessary because accessing the TCB of the currently running task
is, itself, a non-atomic operation. This global scheduler lock
capability was add just to support that atomic access to the TCB.
- SMP: Extend the last global lock change to work with the
LC823450-XGEVK which does not support the atomic fetch add but
does support disabling interprocessor interrupts. Disabling
interprocessor interrupts will also guarantee that the TCB address
calculation is atomic.
- SMP: Fix a infinite recursion problems that a recent changes
introduced into the i.MX6 SMP implementation. This is not seen
with the LC823450 because you can disable inter-processor interrupts
in that architecture; but you cannot in the ARMv7-A/GIC architecture.
- SMP: Remove SMP related logic in sig_dispatch.c. This change
prevents from a deadlock in up_schedulesigaction.c where inter-CPU
signal handling is actually implemented. arch/arm/src/armv7-m: Fix
signal handling for SMP. In previous implementation, signal handling
for SMP was incorrect. Thus, for example, if an inter-CPU signal
happened an incorrect tcb was signaled and caused ASSERT(). This
change fixes the issues and works for both inter-CPU signal handling
and signal handling on the same CPU. From Masayuki Ishikawa.
- Tasking: Add nxtask_create(). Kthread_create() and nxtask_create()
are internal OS functions and should not modify the errno variable.
Convert legitimate uses of task_create() to nxtask_create().
Review handling of returned values from all uses of kthread_create()
(as well as nxtask_create()).
- Tasking: Threads started by board bring-up logic should be kernel
threads, not user tasks.
- Tasking: Threads started by drivers should be kernel threads, not
user tasks.
- Semaphore Usage: Added ECANCELED condition to DEBUGASSERT's
checking sem_wait result From Dmitriy Linikov.
- errno: Add new internal OS function nxsched_setaffinity() that is
identical to sched_isetaffinity() except that it does not modify the
errno value. All usage of sched_setaffinity() within the OS is
replaced with nxsched_setaffinity().
- errno: Internal functions sched_reprioritize() and
sched_setpriority() no longer modify the errno value. Also renamed
to nxsched_reprioritize() and sched_setpriority().
- errno: Add new internal OS function nxsched_getscheduler() that is
identical to sched_getscheduler() except that it does not modify the
errno value. All usage of sched_getscheduler() within the OS is
replaced with nxsched_getscheduler().
- errno: Add new internal OS function nxsched_setparam() that is
identical to sched_setparam() except that it does not modify the
errno value. All usage of sched_setparam() within the OS is
replaced with nxsched_setparam().
- errno: Add new internal OS function nxsched_getparam() that is
identical to sched_getparam() except that it does not modify the
errno value (actually, the previous value erroneously neglected to
set the errno value to begin with, but this fixes both issues). All
usage of sched_getparam() within the OS is replaced with
nxsched_getparam().
- errno: wd_start() is an internal OS function and should not set the
errno value. Reviewed and updated every call to wd_start() to
verify if return value is used and if so if the errno value is
accessed.
- errno: Fix several inappropriate accesses to get_errno() that were
missed in previous changes (some going back to nuttx-7.23). Add new
nxsched_setscheduler() and nxsched_getaffinity() which are
equivalent to their counterparts without the nx on front. These
versions do not modify the errno value. Changed all calls within
the OS to use these newer versions of the functions.
- errno: binfmt/, configs/, grahics/, libc/, mm/, net/, sched/: OS
references to the errno variable should always use the set_errno(),
get_errno() macros.
- drivers/, fs/ and libc/: OS references to the errno variable should
always use the set_errno(), get_errno() macros.
* File System/Block and MTD Drivers:
- FAT: CONFIG_FAT_MAXFNAME may not exceed NAME_MAX (CONFIG_NAME_MAX)
- NFS: Correctly infer file type. The file type is in struct
nfs_statinfo_s's ns_type field, not in the ns_mode field. From
Michael Jung.
- NFS: Fix buffer corruption. In case multiple read requests to the
NFS server are required to fill up the user provided buffer,
nfs_read() might write behind the end of said buffer. This is fixed
with this change. From Michael Jung.
- VFS: reopen() should return NULL when oflags is less than 0, not
equal to 0. Because negative value is returned on failure of
lib_mode2offlags() which converts the mode string into file open
mode flag.
- ProcFS: Fix an error in a common function that manages read data.
- drivers/mmcsd: Respect SDIO_CAPS_DMABEFOREWRITE on CMD25. From
Evgeniy Bobkov.
- AT24xx: Correct page size for AT24C02 part. From Alexander
Oryshchenko.
- mtd_config.c: Add still more error handling (to detect bad
underlying flash implementations). Remove MTD_ERASE that was
erasing data block instead of erase block. This is a partial
revert of 4f18b4. Reported-by: Pascal Speck <iktek01@yahoo.com>
* Graphics/Display Drivers:
- drivers/lcd: Fix the default I2C address of SSD1306 OLED display
(7- vs 8-bit addressing) From Alan Carvalho de Assis.
- drivers/lcd: lcd_framebuffer.c does not need to include board-
specific board.h.
- include/lcd: Eliminate a warning from an SSD1306 header file by
adding a forward reference to struct i2c_master_s. From Sebastien
Lorquet.
* Networking/Network Drivers:
- ARP: Fix an error introduced when ICMP and ICMP6 socket support was
added in NuttX-7.3. A gratuitous ARP (or solicitation) was being
sent after receive of the ECHO replay (advertisement).
- ARP: Fix IGMP multicast address computation on Nuttx network stack.
This change fixes the IGMP address computation to allow multicast
UDP messages. The destination address was created with the incorrect
bytes of the given IPv4 address. From Louis Mayencourt.
- ioctl: The existence of the network driver ioctl() method should
depend on CONFIG_NETDEV_IOCTL rather than CONFIG_NETDEV_PHY_IOCTL.
The former enables the method, the later enables a subset of
possible driver IOCTLs.
- TCP: Write buffering logic should not wait for a free buffer if
the socket was opened non-blocking.
- TCP: Fixed bad return value handling in psock_tcp_send(). send()
expects psock_tcp_send() to return a negated errno value, not -1
with the errno set (GN: I added same change for tcp_send_buffered.c
which has the same issue as tcp_send_unbuffered.c) From Pelle
Windestam.
- TCP: Fixes hardfault when network goes done and network monitoring
is in place. From Gianpaolo Ferroni Ariani.
- TCP: tcp_send_[un]buffered.c: Check routing table in
psock_send_addrchck(). Previously only ARP table was considered
when determining if the data will actually be sent. From Juho
Grundstrom.
- TCP: Generalize Juho Grundstrom's IPv4 change for IPv6 as well.
- UDP: Remove some conditional logic that was true if there is only a
single network device, but not true in the multi-device context.
- UDP: In sendto(), return EHOSTUNREACH if the network is down.
* Common Drivers:
- drivers/pipes: In poll logic, fix off-by-one error in calculation
of bytes in the buffer. Buffer calculation in pipe poll setup is
off-by-one when read index is larger than write index. This causes
poll() not getting POLLIN when buffer has one byte as calculation
gives zero bytes in buffer. From Jussi Kivilinna.
- drivers/audio: Improve stability of the WM8776 driver in SMP mode.
Apply irq_spin APIs to improve performance. Repeat to process a
message to avoid deadlock. From Masayuki Ishikawa.
- drivers/ioexpander: Fixed build of PCF8574 driver when its
interrupts aren't enabled by config. From Dmitriy Linikov.
- drivers/syslog: Fixes LOG_UPTO macro to include specified log level.
From Anthony Merlino.
- drivers/sensors: Fix HTS221 sensor reset with BOOT bit From Jussi
Kivilinna.
- drivers/loop: If we want to open read-only in losetup.c, flags
should be O_RDONLY not O_RDWR. From Fabio D'Urso.
- drivers/timers/ds3231.c: Correct some debug statements. From
Alexander Oryshchenko.
- drivers/sensors/lis2dh: Use realtime clock if monotonic is not
available From Juha Niskanen.
- drivers/i2c and drivers/spi: Fix compile error if
CONFIG_DISABLE_PSEUDOFS_OPERATIONS, fix bad NULL checks From Juha
Niskanen.
* ARMv7-A:
- Data Cache: Fix cp15_invalidate_dcache. In cases where more than
one dcache line was to be invalidated, a missing branch label
would result in a false branch target into cp15_flush_idcache. Also
the .size macro was fixed for both cp15_invalidate_dcache. From
Michael Jung.
- SMP: Port the signal-related SMP change by Masayuki Ishikawa to the
ARMv7-A family.
* Extensa:
- SMP: Port the signal-related SMP change by Masayuki Ishikawa to the
Xtensa family.
* Infineon XMC4xxx Drivers:
- XMC4xxx: Only setup USB clock when USB PLL is enabled From Alan
Carvalho de Assis.
- XMC4xxx: Fix USIC_BRG_SCLKCFG definition From Alan Carvalho
de Assis.
* Microchip PIC32MZ
- MIPS32: In up_idle, the kludge that was conditionally enabled if
the work queue was enable appears to be needed even when he work
queue is not enabled on the PIC32MZ.
- PIC32MZ: Fix some typos in debug instrumentation in pic32mz-gpio.c;
fix some typos related to UART5 configuration in pic32mz-serial.c.
* Microchip/Atmel SAMD/L:
- SPI: In sam_spibus_initialize(), the pinmux configuration was
smashing the previous CTRLA register configuration. There are
also some typos in samd_spi.h From Matt Thompson.
- SPI: Fixes g_spi2ops and g_spi2dev using incorrect values From Matt
Thompson.
- SPI: SPI must be disabled before changing the mode bits in CTRLA
register From Matt Thompson.
- DMA: Fix DMA controller support. From Matt Thompson.
* NXP/Freescale LPC17xx Drivers:
- LPC17xx: Disable LPC17 FDR when not used. If a boot loader set the
fractional divider (FDR) the baud rate in nuttx will be wrong
(multiplied by this fraction). So if it is not used, it should be
disabled. From Harald Gutsche.
* NXP/Freescale Kinetis Drivers:
- Kinetis: Correct some Ethernet PHY register bit tests for the
KSZ8081 PHY. From Stewart.
* On Semiconductor LC823450
- arch/arm/src/LC823450: Add SP_DMB() into lc823450_testset.c.
In LC823450, ldrex and strex are not supported. So we implemented
up_testset() with H/W Mutex. However, there was a bug in memory
access order. This change ensures correct memory access order in
up_testset() for LC823450. From Masatoshi Tateishi.
* STMicro STM32 Drivers:
- STM32 F3 RCC: A flash wait state configuration. Flash latency must
be fixed according to sysclk frequency. If this operation is not
done or done after PLL configuration, the STM32 fail to continue
boot operation if the frequency if greater than 24MHz according to
the board variable STM32_SYSCLK_FREQUENCY. Tested on stm32f334-disco
board. From Gwenhael Goavec-Merou.
- STM32 RTC: Make STM32 usable with an external RTC.
- STM32 SPI: Removed unnecessary (and incorrect) speed limitation.
From Alexander Oryshchenko.
- STM32 SPI: I have a SPI bus with both Mode 0 and Mode 3 devices
on it. After performing SPI I/O to a Mode 0 device, switching to a
Mode 3 device locked up the SPI interface. Only zeroes would be
read. I traced the reason for the lock-up to arm/arm/src/stm32f7/stm32_spi.c function spi_setmode(). Changing
the mode causes a spurious SPI clock transmission that confuses the
stm32f7 SPI input hardware. This problem is solved by (1) changing
the SPI mode with SPI (and perhaps DMA) disabled, and (2) flushing
the receive FIFO if the mode change results in garbage in the FIFO.
From Bob Feretich.
- STM32 and STM32 F7: Remove confusing, redundant, and misleading
definitions of STM32_BKP_BASE from the F2, F3, and F4 memory
maps. Unlike the F1, these parts do not have a separate BKP address
region. The BKP registers are with the RTCC address regions.
stm32_bkp.h should only be used for STM32 F1. stm32_rtcc.h should be
used to access BKP registers on F2, F3, and F4.
- STM32 and STM32 F7: Architecture-specific code is not permitted to
modify the errno variable.
- STM32 F4 I2C: Correct some recent changes to STM32F4 I2C that broke
poll mode of operation. From Alexander Oryshchenko.
- STM32 F4 I2C: Corrections to STM32 F4 I2C to restore functionality.
From Alexander Oryshchenko.
- STM32 F4 I2C: Corrections to STM32 F4 I2C to fix the NORESTART
flag. From Alexander Oryshchenko.
- STM32 F7: Fixes a bug in multi-block SD-card operations on the
STM32F7 platform. DBLOCKSIZE must be the size of SD-card block, not
the total amount of transferred bytes. From Evgeniy Bobkov.
- STM32 F7: Fix undefined variable when using USART1 for other
purposes than UART (e.g. SPI). From Frank Benkert.
- STM32 F7: Backport RTC alarm setting changes from STM32L4. Most
notably this fixes RTC getting stuck issue when both alarms were
used. Root cause was writing RTC ISR register contents to RTC CR
register. From Juha Niskanen.
- STM32 L4 Flash: Change flash programming to use page buffer for
unaligned writes. From Juha Niskanen.
* STMicro STM32 Boards:
- Nucleo-L432KC: Fix some bogus logic noted by Fanda.
- configs/nucleo-* and configs/stm32l476vg-disco: Fix more
stm32_userleds.c bogus logic From Juha Niskanen.
- Nucleo-L432KC: Fixed nucleo-l432kc broken build when
CONFIG_USERLED_LOWER defined From Fanda.
- Nucleo-L432KC: Issue #85: /dev/userleds is not working for
Nucleo-L432KC fixed From Fanda Vacek.
- STM32F429I-Disco: Separate SPI4 from MTD init. I was trying to
attach a non-MTD peripheral to an STM32F429I Discovery Board's SPI4
port and was hitting compilation problems, since CONFIG_MTD and
thus 'struct mtd_geometry_s' was not defined. This patch separates
SPI4 initialization logic from MTD initialization logic. From
Michael Jung.
- STM32F103-Minimum: Remove CONFIG_NX_LCDDRIVER dependence from
stm32_ssd1306.c From Alan Carvalho de Assis.
* C Library/Header Files:
- libc/stdio: In dtoa(), up_interrupt_context() is used in a debug
assertion. up_interrupt_context() is not available in the user-mode
phase of the PROTECTED or KERNEL build configurations. In those
configurations, enabling libc floating point support and debug
assertions will result in an undefined reference to
up_interrupt_context().
- libc/netdb: Fixed parsing of DNS response packets having compressed
names ending with pointer. There were troubles parsing response
packets which have compression of QNAME/NAME field when only
trailing part of the name (not the whole name) is replaced with
pointer to another part of the packet. This commit fixes parsing of
such packets. Also I added checks to keep parsing only in bounds of
the read part of DNS response packet. From Dmitriy Linikov.
* Tools
- tools/*.c: Add #define _GNU_SOURCE to all C files that call
asprintf() to eliminate a warning.
- tools/cvsparser.c: Add a check to avoid access past the end
of a fixed size array
* NSH: apps/nshlib:
- apps/nshlib: Fix compile error when CONFIG_NSH_DISABLESCRIPT is not
defined. The field np_flags does not exist if scripting is disabled.
* Examples/Tests: apps/examples:
- apps/examples/touchscreen: Eliminate BOARDIOC_TSCTEST_SETUP.
* Network Utilities: apps/netutils:
- apps/netutils/ftpc: Fix some corner-cases that could cause FTP to
access past the end of valid data.
* Wireless Utilities: apps/wireless:
- apps/wireless/ieee802154/i8shark: Fixes special XBee compensation
by purposely chopping off the FCS. From Anthony Merlino.