Newer
Older
15001
15002
15003
15004
15005
15006
15007
15008
15009
15010
15011
15012
15013
15014
15015
15016
15017
15018
15019
15020
15021
* First attempt at a nucleo-l432kc board. From Sebastien Lorquet
(2017-05-02).
* STM32F7: Flash: macro naming errors, there is no FLASH_CONFIG_F for
F7. From Juha Niskanen (2017-05-02).
* STM32L4: stm32l4x6xx_pinmap: Update I2C4 and DCMI pins. From Juha
Niskanen (2017-05-02).
* 6loWPAN: Add basic call path to interface with the MAC layer through
the MAC network driver. Logic has not yet been implemented. This is
just a structural change in preparation for additional changes
(2017-05-02).
* wireless/ieee802154: Sets up default PIB attributes. From Anthony
Merlino (2017-05-02).
* wireless/ieee802154: Finishes some IOCTL logic for MAC layer. From
Anthony Merlino (2017-05-02).
* 6loWPAN: Changes to use new MAC interfaces. Incomplete and needs
some clean-up of dangling, unused definitions (2017-05-03).
* wireless/ieee802154: Starts work on setting PIB attributes. From
Anthony Merlino (2017-05-03).
* 6loWPAN: Fixes hang in loopback test (2017-05-03).
* drivers/wireless/bcmf: Fix frame not freed when dropped + cleanup.
From Simon Piriou (2017-05-03).
* STM32L4: stm32l4_i2c: Change wrong macro to CONFIG_I2C_POLLED. From
15023
15024
15025
15026
15027
15028
15029
15030
15031
15032
15033
15034
15035
15036
15037
15038
15039
15040
15041
15042
15043
15044
15045
15046
15047
15048
15049
15050
15051
15052
15053
15054
15055
15056
15057
15058
15059
15060
15061
15062
15063
15064
15065
15066
15067
15068
15069
15070
15071
15072
15073
15074
15075
Juha Niskanen (2017-05-04).
* STM32L4: modularize Kconfig to support different product
lines/families. This is modeled after STM32F7. Idea is to declare
each chip in Kconfig but allow for flash size override. Commit adds
many STM32L4_HAVE_XXX feature test macros. From Juha Niskanen
(2017-05-02).
* STM32L4: Changes needed for STM32L452 and Nucleo-L452RE board. GPIO
and UART seem similar across STMicro product matrix, so renamed files
accordingly. RCC is cloned just in case, while conflicting
differences there seem to be very minor. From Juha Niskanen
(2017-05-02).
* STM32L4: Flash: update override config macros and add
FLASH_CONFIG_B. From Juha Niskanen (2017-05-02).
* configs: Add nucleo-l452re board files. From Juha Niskanen
(2017-05-04).
* fixedmath: Add square root and b32_t conversion operators. From
Jussi Kivilinna (2017-05-04).
* Fix STM32F7 I2C interrupt handler. From Jussi Kivilinna (2017-05-04).
* STM32F7 serial: Allow configuring Rx DMA buffer size. From Jussi
Kivilinna (2017-05-04).
* 6loWPAN: Replace Rime address naming with more consistent
short/exended address terminology (2017-05-04).
* 6loWPAN: Remove all ieee802.15.4 MAC knowledge from 6loWPAN. Now
relies on wires/ieee802154 for all MAC-related operations (2017-05-04).
* 6loWPAN: Local address length is fixed by the configuration. The
remote address be with short or extended (2017-05-04).
* STM32L4: Separate SYSCFG into product line specific files for
clarity. From Juha Niskanen (2017-05-05).
* STM32L4: firewall for stm32l4x3xx. Not tested for any product
family, but now it at least compiles. L496 devices can have one bit
wider Volatile Data Segment. From Juha Niskanen (2017-05-05).
* STM32L4: Add more chips to Kconfig. This also removes
DPFPU/DTCM/ITCM features again, fixing a recent git history hickup.
From Juha Niskanen (2017-05-05).
* configs/nucleo-l496zg: Kconfig was copied from nucleo-144. Removed
as most options have not been tested. From Juha Niskanen (2017-05-05).
* nucleo-144: Default for choice in Kconfig was not one of the
possible choices (2017-05-05).
* Kinetis: Add TPM to K66 chip. From David Sidrane (2017-05-05).
* Kinetis: Fixed CLKSRC Bit Names. From David Sidrane (2017-05-05).
* Kinetis: Add OSC_DIV to the kinetis_osc header. From David Sidrane
(2017-05-05).
* Kinetis: Use optional BOARD_OSC_CR and BOARD_OSC_DIV in clock
configuration. From David Sidrane (2017-05-05).
* Kinetis: Added HW flow control and termios. From David Sidrane
(2017-05-05).
* wireless/ieee802154: Changes rxenable at radio layer. From Anthony
Merlino (2017-05-03).
* wireless/ieee802154: Finishes promiscuous mode IOCTL. From Anthony
Merlino (2017-05-03).
* wireless/ieee802154: Removes radio IOCTL. Starts bringing radio and
MAC closer with well-defined interface. From Anthony Merlino
(2017-05-05).
* STM32L4: Add support for many new MCUs from STM32L4X3XX product line
15077
15078
15079
15080
15081
15082
15083
15084
15085
15086
15087
15088
15089
15090
15091
15092
15093
15094
15095
15096
15097
15098
15099
15100
15101
15102
15103
15104
15105
15106
15107
15108
15109
15110
15111
15112
15113
15114
15115
15116
15117
15118
15119
15120
15121
15122
15123
15124
15125
15126
and Nucleo-L452 board. From Juha Niskanen (2017-05-05).
* 6loWPAN: Use information in struct ieee802154_data_ind_s when
reassembling a packet (2017-05-05).
* ieee 802.15.4: Add a pool-based memory allocator for RX frame
meta-data (2017-05-05).
* kinetis k66, k64, k60, k40, k20: Pin mux configure all I2C signals as
Open Drain. The output structure of the GPIO for I2C needs to be
open drain. When left at the default, one can observe on a scope the
slave contending with the push-pull during the ACK. From David
Sidrane (2017-05-05).
* wireless/ieee802154: Removes msdu_length from meta-data since it is
intrinsically in the IOB. From Anthony Merlino (2017-05-06).
* wireless/ieee802154: Reworks data_ind allocation to include IOB
allocation/deallocation. Hides private data. From Anthony Merlino
(2017-05-05).
* wireless/ieee802154: Completes Rx data flow through MAC layer to
callback. From Anthony Merlino (2017-05-06).
* Kinetis: Add ARCH_HAVE_I2CRESET. From David Sidrane (2017-05-06).
* Reworks data_ind allocation to include IOB allocation/deallocation.
Hides private data. From Anthony Merlino (2017-05-06).
* STM32: Serial Allow configuring Rx DMA buffer size. From David
Sidrane (2017-05-06).
* 6loWPAN: Minor cleanup and re-verification of all compression modes
after so many recent changes (2017-05-06).
* Update the C coding standard document (2017-05-06).
* IEEE 802.15.4 network driver. Remove support for multicast address
filtering; doesn't work that way on an IEEE 802.15.4 network
(2017-05-08).
* STM32: Serial DMA buffer round off not up. From David Sidrane
(2017-05-08).
* STM32 TIM: Add method to get timer width. Freerun timer: Use timer
width to get the correct clock rollover point (2017-05-08).
* wireless/ieee802154: Finishes MAC processing of received data frame.
From Anthony Merlino (2017-05-08).
* wireless/ieee802154: Finishes MAC char driver read functionality.
From Anthony Merlino (2017-05-08).
* wireless/ieee802154: MRF24J40: Finishes receive functionality,
supports promicuous mode, and rxonidle attributes. From Anthony
Merlino (2017-05-08).
* wireless/ieee802154: Completes basic receive functionality. From
Anthony Merlino (2017-05-08).
* Final fixes to get the nucleo-l432kc config build. Execution not
tested yet. From Sebastien Lorquet (2017-05-09).
* Adapt stm32l43x pin definitions. From Sebastien Lorquet (2017-05-09).
* More unbuilt stm32 -> stm32l4 changes. From Sebastien Lorquet
(2017-05-09).
* Restore settings for UARTs 4 and 5. From Sebastien Lorquet
(2017-05-09).
* IOBs: Move from driver/iob to a better location in mm/iob
(2017-05-09).
* STM32L4: Add dbgmcu header files. From Juha Niskanen (2017-05-09).
15128
15129
15130
15131
15132
15133
15134
15135
15136
15137
15138
15139
15140
15141
15142
15143
15144
15145
15146
15147
* wireless/ieee802154: Fixes missing handle of read/write being able to
be interrupted. From Anthony Merlino (2017-05-09).
* wireless/ieee802154: Starts implementing START.request primitive.
From Anthony Merlino (2017-05-09).
* drivers/serial: I discovered a problem in the file
drivers/serial/serial.c concerning the function uart_close(â¦). In the
case that a serial device is opened with the flag O_NONBLOCK the
function uart_close(â¦) blocks until all data in the buffer is
transmitted. The function close(â¦) called on an handle opened with
O_NONBLOCK should not block. The problem occurred with a CDC/ACM
device. From Stefan Kolb (2017-05-10).
* mtd/config: erase block between block read and write. From Juha
Niskanen (2017-05-10).
* Moved LIS3DSH from the I2C-dependent block to the SPI-block to make
Make.defs consistent with the driver (SPI only) and
drivers/sensors/Kconfig. From Floxx (2017-05-10).
* syslog: Add option to buffer SYSLOG output to avoid interleaving
(2017-05-10).
* syslog buffering: Use IOBs to buffer data, not an on-stack buffer
(2017-05-10).
* STM32L4: Add internal flash write support. From Juha Niskanen
15149
15150
15151
15152
15153
15154
15155
15156
15157
15158
15159
15160
15161
15162
15163
15164
15165
15166
15167
15168
15169
15170
15171
15172
15173
15174
15175
15176
15177
15178
15179
15180
15181
15182
15183
15184
15185
15186
15187
15188
15189
15190
15191
15192
15193
15194
15195
15196
15197
15198
15199
15200
15201
15202
15203
15204
15205
15206
(2017-05-11).
* When syslog message has addition characters after last new-line. With
buffering those now get lost as vsyslog does not flush output after
lib_sprintf. Additional trailing characters could be ANSI escape
sequence to reset state that message setups. For example, macro here
uses colors and resets state after actual message (including '\n'):
With flushing added to vsyslog, then there is problem that next
syslog line might come from other task before reset sequence, causing
wrong line getting color. This could be avoided by not flushing on
'\n' but only if IOB is full and/or at end of vsyslog. Would this
make sense?. From Jussi Kivilinna (2017-05-11).
* Syslog: Need inclusion of errno.h for fix building with
CONFIG_SYSLOG_TIMESTMAP=y (2017-05-11).
* mtd: Build RAMTRON and AT45DB drivers only if selected. From Juha
Niskanen (2017-05-11).
* mtd/config: Fix byte read interface test. From Juha Niskanen
(2017-05-11).
* mtd: Fix some unallocated and NULL pointer issues. rwb->wrflush and
rwb->wrmaxblocks in rwbuffer could get unallocated values from
ftl_initialize() in some configurations. Also fixes related assert:
up_assert: Assertion failed at file:rwbuffer.c line: 643
that can happen with the following configuration:
CONFIG_FTL_WRITEBUFFER=y
CONFIG_DRVR_WRITEBUFFER=y
# CONFIG_FS_WRITABLE is not set
These problems are caused by CONFIG variable differences between the
buffer layers. TODO: This is not a perfect solution. readahead
support has similar issues. From Juha Niskanen (2017-05-11).
* STM32L4: port stm32l4_serial_get_uart function from STM32F7. From
Juha Niskanen (2017-05-12).
* syslog: Avoid flushing syslog_stream buffer, if possible, until
lib_vsprintf() completely parses the format. This assures that the
flush will flush the entire output, even data that may potentially
follow the linefeed. And, in that case, it cannot be interleaved
with other devug output. Suggested by Jussi Kivilinna (2017-05-12).
* syslog: There is yet another place where the output can get split.
That is in syslog_dev_write(): It will break up the stream to insert
a CR before the LF. This can that can be avoid be generating the
CR-LF sequence in the buffer and then detecting and ignoring valid
CR-LF sequences, rather than expecting syslog_dev_write() to insert
the CR in this case. I don't like the idea that syslog_dev_write()
still scans the entire output buffer to expand CR-LF sequence. This
seems really wasteful, especially in this case where we can be sure
that the is no CR or LF without a matching LF or CR. Bu, I think,
the existing behavior in syslog_dev_write() must be retained because
it is needed in other contexts (2017-05-12).
* Bitbucket Issue 47: Some of last syslog changes needed to be
condition on #ifdef CONFIG_SYSLOG_BUFFER in order to be built without
syslog buffering enabled (2017-05-12).
* Move CAN subsystem to its own directory and put device drivers
there. From Alan Carvalho de Assis (2017-05-12).
* locale.h: Add a bogus definition of locale_t. From (2017-05-12).
* kinetis K66: Fixed TMP2_CH1 definition. From David Sidrane
(2017-05-12).
* kinetis K66: Define ALT1 to match ref manual. From David Sidrane
15208
15209
15210
15211
15212
15213
15214
15215
15216
15217
15218
15219
15220
15221
15222
15223
15224
15225
15226
15227
15228
15229
15230
15231
15232
15233
15234
15235
(2017-05-12).
* kinetis K66: GPIO and pin mux cleanup. From David Sidrane
(2017-05-13).
* STM32F410: Add support for STM32F410. STM32F410 is a version of
STM32F4 with 32 KB of RAM and 62 or 128 KB of flash. From Gwenhael
Goavec-Merou (2017-05-13).
* Kconfig/deconfigs: Add CONFIG_ARCH_TOOLCHAIN_GNU to indicate that
the toolchain is based on GNU gcc/as/ld. This is in addition to the
CPU-specific versions of the same definition (2017-05-13).
* Remove CONFIG_ARM_TOOLCHAIN_GNU; replace with
CONFIG_ARCH_TOOLCHAIN_GNU (2017-05-13).
* Tiva I2C: Correct an error in conditional compilation (2017-05-13).
* Kconfig: Rename CONFIG_ARM_TOOLCHAIN_IAR to
CONFIG_ARCH_TOOLCHAIN_IAR (2017-05-13).
* Move prototype for up_cxxinitialize() from nuttx/include/nuttx/arch.h
to apps/include/platform/cxxinitialize.h (2017-05-13).
* libc/wchar: Versions mbrlen and mbsrtowcs taken and adapted from
FreeBSD code (at https://github.com/freebsd/freebsd/). From Matias
v01d (2017-05-13).
* tcp: wait for 3-Way Handshare before accept() returns. From Simon
Piriou (2017-05-14).
* configs/photon/wlan: disable network logs and add nsh over telnet.
From Simon Piriou (2017-05-14).
* TCP: Send RST if applicaiton 'unlistens()' before we complete the
connection sequence (2017-05-14).
* drivers: fix some bad NULL checks. From Juha Niskanen (2017-05-15).
* drivers: rename newly introduced up_i2creset to I2C_RESET. From
Juha Niskanen (2017-05-15).
* TCP: An RST received during the 3-way handshake requires a little
15237
15238
15239
15240
15241
15242
15243
15244
15245
15246
15247
15248
15249
15250
15251
15252
15253
15254
15255
15256
15257
15258
15259
15260
15261
15262
15263
15264
15265
15266
15267
15268
15269
15270
15271
15272
15273
15274
15275
15276
15277
15278
15279
15280
15281
15282
15283
15284
15285
more clean-up (2017-05-15).
* STM32 CAN: I had the problem that the transmit FIFO size (= actual
elements in FIFO) was slowly increasing over time, and was full after
a few hours. The reason was that the code hit the line
"canerr("ERROR: No available mailbox\n");" in stm32_cansend, so
can_xmit thinks it has sent the packet to the hardware, but actually
has not. Therefore the transmit interrupt never happens which would
call can_txdone, and so the size of the FIFO size does not decrease.
The reason why the code actually hit the mentioned line above, is
because stm32can_txready uses a different (incomplete) condition than
stm32can_send to determine if the mailbox can be used for sending,
and thus can_xmit forwards the packet to stm32can_send.
stm32can_txready considered mailboxes OK for sending if the mailbox
was empty, but did not consider that mailboxes may not yet be used if
the request completed bit is set - stm32can_txinterrupt has to
process these mailboxes first. Note that I have also modified
stm32can_txinterrupt - I removed the if condition, because the CAN
controller retries to send the packet until it succeeds. Also if the
condition would not evaluate to true, can_txdone would not be called
and the FIFO size would not decrease also. From Lederhilger Martin
(2017-05-16).
* drivers/bch: BCH character driver bch_ioctl() always returns -ENOTTY
for DIOC_GETPRIV command. It should returns OK if DIOC_GETPRIV
command succeeds. From EunBong Song (2017-05-16).
* There can be a failure in IOB allocation to some asynchronous
behavior caused by the use of sem_post(). Consider this scenario:
(1) Task A holds an IOB. There are no further IOBs. The value of
semcount is zero. Task B calls iob_alloc(). Since there are not
IOBs, it calls sem_wait(). The value of semcount is now -1. (2)
Task A frees the IOB. iob_free() adds the IOB to the free list and
calls sem_post() this makes Task B ready to run and sets semcount to
zero NOT 1. There is one IOB in the free list and semcount is zero.
When Task B wakes up it would increment the sem_count back to the
correct value. (3) But an interrupt or another task runs occurs
before Task B executes. The interrupt or other tak takes the IOB off
of the free list and decrements the semcount. But since semcount is
then < 0, this causes the assertion because that is an invalid state
in the interrupt handler. So I think that the root cause is that
there the asynchrony between incrementing the semcount. This change
separates the list of IOBs: Currently there is only a free list of
IOBs. The problem, I believe, is because of asynchronies due
sem_post() post cause the semcount and the list content to become out
of sync. This change adds a new 'committed' list: When there is a
task waiting for an IOB, it will go into the committed list rather
than the free list before the semaphore is posted. On the waiting
side, when awakened from the semaphore wait, it will expect to find
its IOB in the committed list, rather than free list. In this way,
the content of the free list and the value of the semaphore count
always remain in sync (2017-05-16).
* stm32_serial: Fix freezing serial port. Serial interrupt
15287
15288
15289
15290
15291
15292
15293
15294
15295
15296
15297
15298
15299
15300
15301
15302
15303
15304
15305
15306
15307
15308
15309
enable/disable functions do not disable interrupts and can freeze
device when serial interrupt is received while execution is at those
functions. Trivially triggered with two or more threads write to
regular syslog stream and to emergency stream. In this case, freeze
happens because of mismatch of priv->ie (TXEIE == 0) and actually
enabled interrupts in USART registers (TXEIE == 1), which leads to
unhandled TXE interrupt and causes interrupt storm for USART. From
Jussi Kivilinna (2017-05-17).
* STM32 Ethernet: Add support for KSZ8081 PHY interrupts. From
Sebastien Lorquet (2017-05-17).
* IPv6: Fix net_ipv6_pref2mask(). From Masayuki Ishikawa (2017-05-18).
* net procfs: Fix buffer corruption and refactor netdev_statistics.c.
From Masayuki Ishikawa (2017-05-19).
* binfmt: Fix .dtor memory allocation. From Masayuki Ishikawa
(2017-05-19).
* stm32_i2c: make private symbols static. From Juha Niskanen
(2017-05-19).
* network IOCTL commands: The only place in net/netdev/netdev_ioctl.c
where the interface state should change is for SIOCSIFFLAGS. The
other ones .. SIOCSIFADDR, SIOSLIFADDR, SIODIFADDR .. should not
change the link state. From Sebastien Lorquet (2017-05-19).
* drivers/wireless/ieee80211: Add support for AP scanning. From Simon
Piriou (2017-05-21).
* drivers/audio: Add cs43l22 audio driver STM32F4: Add i2s driver.
15311
15312
15313
15314
15315
15316
15317
15318
15319
15320
15321
15322
15323
15324
15325
15326
15327
15328
15329
15330
From Taras Drozdovsky (2017-05-21).
* This is based on a patch by Taras Drozdovsky. Basically, the delay
that was added during the integration of the CDC/ACM host driver was
interfering with streaming audio. That delay was put there to
prevent build endpoints from hogging the system bandwidth. So what
do we do? Do we hog the bandwidth or do we insert arbitrarity
delays. I think both ideas such (2017-05-21).
* Replace sprintf() with snprintf() in pipe.c. From Nobutaka Toyoshima
(2017-05-22).
* drivers/bch: Fix 'Missing Unlock' in bchdev_driver.c. From Masayuki
Ishikawa (2017-05-22).
* FAT: Fix 'Missing unlock' in fs_fat32.c. From Masayuki Ishikawa
(2017-05-22).
* netdb: Fix time info in lib_dnscache.c. From Masayuki Ishikawa
(2017-05-23).
* STM32L4: Add IWDG peripheral. This is the same as for STM32 except
that prescale and reload can be changed after watchdog has been
started, as this seems to work on L4. From Juha Niskanen (2017-05-23).
* drivers/can: Add Microchip MCP2515 CAN Bus controller driver. From
Alan Carvalho de Assis (2017-05-23).
* button_upper: Fix interrupt enabling for poll-events. From Jussi
Kivilinna (2017-05-24).
* netdb: Fix bugs in lib_gethostbynamer.c. This fix sets h_name in
struct hostent returned by gethostbyname(). From Masayuki Ishikawa
(2017-05-25).
* TCP: Fix tcp_findlistner() in dual stack mode. From Masayuki
Ishikawa (2017-05-25).
* TCP: tcp_input() now receives IP domain as an input parameter vs.
deriving from the IP header length (2017-05-25).
* Kinetis ADC: Various corrections and updates. From David Sidrane
(2017-05-25).
* drivers/lcd: Add driver for Nokia 5110 (Philips PCD8544). From Alan
Carvalho de Assis (2017-05-26).
* configs/stm32f103-miniumum: Add board support to use the Nokia 5110
LCD display driver. From Alan Carvalho de Assis (2017-05-26).
* configs/pic32mx7mmb: Add support for the Pinquino toolchain
(2017-05-27).
* configs/pic32mx7mmb: Repartition files to match newer
configurations. Add support for PROCFS file system. Default is now
Pinguino toolchain. Verify networking (2017-05-27).
* pthread_trylock: Fixes a problem in pthread_trylock() noted by
initialkjc@yahoo.com. When CONFIG_PTHREAD_MUTEX_UNSAFE=y, the
special return value EAGAIN was not being detected due to differences
in reporting of returned values (2017-05-29).
* vfs: fdopen: Add missing file stream flags clearing. Clear file
stream structure regardless of config options. Structure clearing is
needed as previous use of stream list entry might leave fs_flags
set. From Harri Luhtala (2017-05-31).
* drivers/input: Add Cypress MBR3108 CapSense touch button driver.
15360
15361
15362
15363
15364
15365
15366
15367
15368
15369
15370
15371
15372
15373
15374
15375
15376
15377
15378
15379
15380
15381
15382
15383
15384
15385
15386
15387
15388
15389
15390
15391
15392
15393
From Juha Niskanen (2017-05-31).
* STM32L4: gpio: put back EXTI line source selection. From Juha
Niskanen (2017-05-31).
* mtd/smart: Fix use of uninitialized variable. From Jussi Kivilinna
(2017-05-31).
* drivers/mtd/w25.c: Erase sector only if it is not in erased state.
From Jussi Kivilinna (2017-05-31).
* stm32f7: Add SPI DMA support. From Jussi Kivilinna (2017-05-31).
* drivers/mtd/w25.c: Enable short delay after sector/chip erase. From
Jussi Kivilinna (2017-05-31).
* pthread robust mutexes: Fix memmory trashing problem: the main task
may also use mutexes; need to check thread type before accessing
pthread-specific mutex data structures. Problem noted by Jussi
Kivilinna (2017-05-31).
* STM32L4 RTC: store RTC MAGIC to backup reg, not to address zero.
From Juha Niskanen (2017-06-01).
* drivers/{sensors,usbmisc}: Fix uninitialized I2C frequency. From
Juha Niskanen (2017-06-01).
* mtd/config: Add some error checks for I/O errors. From Juha
Niskanen (2017-06-01).
* pthread mutex: Remove bogus DEBUGASSERT. Problem noted by Jussi
Kivilinna (2017-06-01).
* Tiva SSI: Resolves issue 52 'Copy-Paste error in
tiva_ssibus_initialize()' submitted by Aleksandr Kazantsev
(2017-06-01).
* nucleo-f4x1re User LEDS: Issue #51 reports compilation problems with
stm32_userled.c. Reported by Gappi92 (2017-06-01).
* tools/: Add initialconfig.c so that perhaps in the future we will be
able to use this to generate a new configuration from scratch (rather
than having to derive new configurations from existing
configurations). NOTE: Not yet intregated into the build system
(2017-06-02).
7.22 2017-xx-xx Gregory Nutt <gnutt@nuttx.org>