Compare commits

...

15 commits

Author SHA1 Message Date
Alin Jerpelea
3130ff691e risc-v/k210: Fix SMP interrupt stack size calculation
manual cherry-pick from #3636

Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2021-05-01 09:11:40 -07:00
Alin Jerpelea
680225923d arch/risc-v: Fix interrupt stack alignment
manual cherry-pick from #3636

Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2021-05-01 09:11:40 -07:00
Alin Jerpelea
112d709609 arch/risc-v: Fix stack alignment according to calling convention
The RISC-V Integer Calling Convention states that the stack pointer
shall always be aligned to a 128-bit boundary upon procedure entry, both
for RV32* and RV64* ISAs (exception to the RV32E ISA, which must follow a
specific convention)

cherrypick from
f0696f27bc

Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2021-04-30 16:57:57 -03:00
Masayuki Ishikawa
70984c5254 arch: k210: Fix interrupt stack corruption in SMP mode
Summary:
- I noticed that stack corruption happens due to recent refactoring
- This commit fixes this issue

Impact:
- SMP only

Testing:
- Tested with maix-bit:smp (QMU and dev board)

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2021-04-30 08:46:11 -03:00
chenwen
84438c62f7 xtensa/esp32: Fix crash issue caused by null pointer operation 2021-04-29 10:00:45 +01:00
chao.an
893989e2f9 fs/inode: correct the return value
correct the return value of fs_getfilep() since the
semaphore take may probably fail if the thread canceled

Signed-off-by: chao.an <anchao@xiaomi.com>
2021-04-29 03:30:14 -05:00
Gregory Nutt
5a61d80ea3 net/: Add missing packet filtering checks
NuttX provides the UDP_BINDTODEVICE socket option.  This is a UDP protocol-specific implementation of the semi-standard Linux SO_BINDTODEVICE socket option:  "SO_BINDTODEVICE forces packets on the socket to only egress the bound interface, regardless of what the IP routing table would normally choose. Similarly only packets which ingress the bound interface will be received on the socket, packets from other interfaces will not be delivered to the socket." https://codingrelic.geekhold.com/2009/10/code-snippet-sobindtodevice.html

If CONFIG_NET_UDP_BINDTODEVICE is selected and a UDP socket is bound to the device, then unrecognized packets UDP packets must not be dropped, but must be forwarded along to the bound socket unconditionally.

It the typical case, this should have no impact.  It does effect the applications that use DHCP and do select the UDP_BINDTODEVICE socket option.

This PR replace existing improper logic in the code and also the improper attempts to fix problems from PR #3601 and PR #3598.  Those changes are improper because they expose DHCP appliction dependencies in the OS, breaking modularity and independence of the OS and application.

Tested with stm32f4discovery:netnsh with CONFIG_NET_UDP_BINDTODEVICE.  A proper DHCP test setup is needed, however.
2021-04-29 03:21:25 -05:00
chao.an
8637a12b31 net/local: correct the sendto() return length
return length should be data length

Signed-off-by: chao.an <anchao@xiaomi.com>
2021-04-29 03:21:03 -05:00
Barry Xu
f208a2fee4 Support different hardware version of Wi-Fi add-on board (iS110B)
Signed-off-by: Barry Xu <barry.xu@sony.com>
2021-04-22 21:36:10 -05:00
Nathan Hartman
3784307c46 ReleaseNotes: Improve organization and other minor fixes
Improve organization by sorting architectures and boards into alphabetical
order. Improve consistency of newlines between headings and contents. In
sections that include subsections for new features and bugfixes, list the
new features (or major/significant improvements) first, followed by
bugfixes. In Compatibility Concerns section, rewrap the lines and add
backticks around identifiers that should print in a fixed-width typeface.
2021-04-22 21:33:08 -05:00
David Sidrane
23218318a2 arch: remove up_irq{save|restore} these come from irq.h 2021-04-22 21:32:54 -05:00
Brennan Ashton
f380c919f0 documentation: Add release notes for 10.1.0 release 2021-04-18 00:07:13 -07:00
Masayuki Ishikawa
367dc9a29a drivers: wireless: Fix to receive a UDP packet partially in gs2200m.c
Summary:
- When receiving a UDP packet partially, the rest of the packet
  must be discarded.

Impact:
- None

Testing:
- Tested with a UDP sample program

Reported-by: Masatoshi Ueno <Masatoshi.Ueno@sony.com>
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2021-04-18 08:59:40 +02:00
Masayuki Ishikawa
a4b1cea3ba drivers: wireless: Fix AT command response handling in gs2200m.c
Summary:
- When sending an AT command during receiving a bulk packet,
  the bulk packet might be put in the AT command response.
- To handle such the case, gs2200m_send_cmd2() is newly
  introduced instead of using gs2200m_send_cmd(dev, cmd, NULL)

Impact:
- All use cases that send an AT command in gs2200m.c

Testing:
- Tested with renew and nxplayer with spresense:wifi

Reported-by: Masatoshi Ueno <Masatoshi.Ueno@sony.com>
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2021-04-18 08:59:25 +02:00
Dong Heng
16748108c5 riscv/esp32c3: Fix heap end address 2021-04-12 04:39:52 -05:00
36 changed files with 1335 additions and 205 deletions

View file

@ -28386,3 +28386,959 @@ See * [PR-1439](https://github.com/apache/incubator-nuttx/pull/1439), git
commit
#[5efa93ec26fd8a3fd85b24a2008bb743f96027fb](https://github.com/apache/incubator-nuttx/commit/5efa93ec26fd8a3fd85b24a2008bb743f96027fb)
in the main NuttX repository.
NuttX-10.1.0 Release Notes
------------------------
# What's New In This Release
## Highlights
* Better separation between kernel and userspace.
* Heap and stack management improvements.
* More closely follow POSIX and Linux interfaces.
* Symmetric Multi-Processing (SMP) performance improvements and bug fixes.
* Networking improvements and bug fixes.
* Added support for many microcontrollers and boards, and improved support for many existing ones.
* Many added and improved drivers.
* Build system improvements to deliver faster builds.
* Thousands of NuttX files converted to Apache 2.0 License with permission of their authors.
* Improved listing of 3rd party licenses used in NuttX (see LICENSE, NOTICE, and DISCLAIMER-WIP files).
## Major Changes to Core OS
### New Features
* [#2324](https://github.com/apache/incubator-nuttx/pull/2324) audio: libsamplerate: add initial audio Sample Rate Converter
* [#2820](https://github.com/apache/incubator-nuttx/pull/2820) arch, boards, drivers, include, sched, wireless: Change spinlock APIs.
* [#2885](https://github.com/apache/incubator-nuttx/pull/2885) Ensure the kernel component don't call userspace API
### Bug Fixes
* [#1852](https://github.com/apache/incubator-nuttx/pull/1852) sysconf: add _SC_PAGESIZE sysconf support
* [#1922](https://github.com/apache/incubator-nuttx/pull/1922) sched: nxtask_start should call entry point directly for kernel thread
* [#1994](https://github.com/apache/incubator-nuttx/pull/1994) libc: Don't fclose and fopen file in freopen
* [#2005](https://github.com/apache/incubator-nuttx/pull/2005) Fix note_syscall_leave_s to avoid unaligned access
* [#2043](https://github.com/apache/incubator-nuttx/pull/2043) sched: Add SCHED_INSTRUMENTATION_HIRES support
* [#2044](https://github.com/apache/incubator-nuttx/pull/2044) sched: Add note_syscall args support
* [#2071](https://github.com/apache/incubator-nuttx/pull/2071) pollnotify: we should send poll events before semaphore incrementes.
* [#2076](https://github.com/apache/incubator-nuttx/pull/2076) libc: math: Make this friendly with libcxx
* [#2111](https://github.com/apache/incubator-nuttx/pull/2111) LIBCXX related fixes
* [#2147](https://github.com/apache/incubator-nuttx/pull/2147) sched: Use nx_close() inside OS
* [#2176](https://github.com/apache/incubator-nuttx/pull/2176) syscall/syscall.csv: Increase number of arguments for prctl()
* [#2204](https://github.com/apache/incubator-nuttx/pull/2204) sched: irq: Fix enter_critical_section() in an irq handler for SMP
* [#2218](https://github.com/apache/incubator-nuttx/pull/2218) sched: signal.h: fix compile failed when open TTY_SIGINT
* [#2229](https://github.com/apache/incubator-nuttx/pull/2229) sched/sched/sched_waitid.c: Allow WNOHANG
* [#2236](https://github.com/apache/incubator-nuttx/pull/2236) sched/task/task_exithook.c: Remove a redundant assignment
* [#2243](https://github.com/apache/incubator-nuttx/pull/2243) libcxx: Update [0001-libcxx-Port-to-NuttX-https-nuttx.apache.org](http://0001-libcxx-Port-to-NuttX-https-nuttx.apache.org)-RTOS.patch
* [#2255](https://github.com/apache/incubator-nuttx/pull/2255) sys/epoll: sync the epoll define with linux
* [#2256](https://github.com/apache/incubator-nuttx/pull/2256) unistd/sched_sporadic: correct the disable value
* [#2261](https://github.com/apache/incubator-nuttx/pull/2261) sched/timer: add support of CLOCK_MONOTONIC
* [#2262](https://github.com/apache/incubator-nuttx/pull/2262) sched/init: init the default home directory to environment
* [#2285](https://github.com/apache/incubator-nuttx/pull/2285) libc/stdlib: Fix range check in strtoul(l)
* [#2326](https://github.com/apache/incubator-nuttx/pull/2326) libc: Enhance getopt function
* [#2407](https://github.com/apache/incubator-nuttx/pull/2407) libc: machine: arch: Support armv8-m relocation
* [#2418](https://github.com/apache/incubator-nuttx/pull/3447) libc: Change OK/ERROR from macro to enum
* [#2420](https://github.com/apache/incubator-nuttx/pull/2420) sched/signal: Remove redundant checks
* [#2437](https://github.com/apache/incubator-nuttx/pull/2765) sched/sched/sched_waitpid.c: Fix return value
* [#2449](https://github.com/apache/incubator-nuttx/pull/2449) mm/circbuf: fix the problem of dividing by zero
* [#2450](https://github.com/apache/incubator-nuttx/pull/2450) unistd/getopt: remove number of arguments limit
* [#2451](https://github.com/apache/incubator-nuttx/pull/2451) libc: pthread_mutexattr_getprotocol: modify prototype
* [#2455](https://github.com/apache/incubator-nuttx/pull/2455) sched/sched/sched_waitpid.c: Discard the correct child entry
* [#2475](https://github.com/apache/incubator-nuttx/pull/2475) sched/sched_waitid.c: Fix two bugs when CONFIG_SCHED_CHILD_STATUS is enabled
* [#2487](https://github.com/apache/incubator-nuttx/pull/2487) sched: clock/time: add CLOCK_BOOTTIME definition
* [#2492](https://github.com/apache/incubator-nuttx/pull/2492) procfs: make array const to reduce memory use
* [#2494](https://github.com/apache/incubator-nuttx/pull/2494) sched: Fix SMP
* [#2509](https://github.com/apache/incubator-nuttx/pull/2509) libc: net: implement ether_aton/ether_aton_r
* [#2517](https://github.com/apache/incubator-nuttx/pull/2517) sched: spinlock: Introduce SP_WFE() and SP_SEV()
* [#2518](https://github.com/apache/incubator-nuttx/pull/2518) sched: Don't forward gettid to getpid directly
* [#2530](https://github.com/apache/incubator-nuttx/pull/2530) libc: Implement posix_fallocate
* [#2533](https://github.com/apache/incubator-nuttx/pull/2533) sched: Make the number of queue/signal used by irq handler configurable
* [#2534](https://github.com/apache/incubator-nuttx/pull/2534) libc: Implement getppid
* [#2538](https://github.com/apache/incubator-nuttx/pull/2538) sched: pthread: Fix potential bugs in pthread_condclockwait.c
* [#2574](https://github.com/apache/incubator-nuttx/pull/2574) libc: dumpbuffer: dump buffer enhancement
* [#2580](https://github.com/apache/incubator-nuttx/pull/2580) sched: arch & sched: task: Fix up_exit() and nxtask_exit() for SMP
* [#2585](https://github.com/apache/incubator-nuttx/pull/2585) libc: netdb: Move hostbuffer out of the stack
* [#2602](https://github.com/apache/incubator-nuttx/pull/2740) sched: Add include/sys/poll.h
* [#2604](https://github.com/apache/incubator-nuttx/pull/2604) libc: Add b64_ntop and b64_pton implementation
* [#2616](https://github.com/apache/incubator-nuttx/pull/2616) libc/dumpvbuffer: update the vector ptr correctly
* [#2624](https://github.com/apache/incubator-nuttx/pull/2624) sched: implement the default test-and-set semantics
* [#2627](https://github.com/apache/incubator-nuttx/pull/2627) OS internal function should indicate the error by return negative value
* [#2630](https://github.com/apache/incubator-nuttx/pull/2630) libc: net: implement socketpair
* [#2631](https://github.com/apache/incubator-nuttx/pull/2631) sched: mqueue: simplify the mqueue reailize
* [#2650](https://github.com/apache/incubator-nuttx/pull/2650) libc: ctype/iscntrl: correct the control character function
* [#2653](https://github.com/apache/incubator-nuttx/pull/2653) sched: Don't call sched_lock()/unlock() in nx_waitid()/waitpid() for SMP
* [#2668](https://github.com/apache/incubator-nuttx/pull/2668) Kernel module should prefer functions with nx/kmm prefix
* [#2675](https://github.com/apache/incubator-nuttx/pull/2675) libc: Add placement new and new[] function
* [#2693](https://github.com/apache/incubator-nuttx/pull/2693) libxx: use built-in __aeabi_atexit() if LIBSUPCXX is enabled
* [#2694](https://github.com/apache/incubator-nuttx/pull/2694) libc/machine/arch: fix build break if enable armv8 ELF
* [#2719](https://github.com/apache/incubator-nuttx/pull/2719) sched/task: setup the scheduling policy to task
* [#2726](https://github.com/apache/incubator-nuttx/pull/2726) sched: sched: Remove sched_lock/unlock from nxsched_set_affinity()
* [#2737](https://github.com/apache/incubator-nuttx/pull/2737) sched: task: Fix a potential bug in nxtask_assign_pid()
* [#2740](https://github.com/apache/incubator-nuttx/pull/2740) sched/timer: get the previous reload value correctly
* [#2741](https://github.com/apache/incubator-nuttx/pull/2741) libc: unistd/fpathconf: enhance fpathconf
* [#2742](https://github.com/apache/incubator-nuttx/pull/2742) libc: pthread/cond: enhance pthread_cond_destroy
* [#2744](https://github.com/apache/incubator-nuttx/pull/2744) sched: task: Fix comments and label in nxtask_assign_pid()
* [#2765](https://github.com/apache/incubator-nuttx/pull/2765) sched: pthread: Return get_errno instead the hardcode value
* [#2767](https://github.com/apache/incubator-nuttx/pull/2767) sched/wqueue/notifier: protect the work notifier with critical section
* [#2797](https://github.com/apache/incubator-nuttx/pull/2797) sched: group: Fix group_kill_children() for SMP
* [#2849](https://github.com/apache/incubator-nuttx/pull/2849) mqueue: Add _MQ_OPEN, _MQ_CLOSE and _MQ_UNLINK macro
* [#2855](https://github.com/apache/incubator-nuttx/pull/2855) libs: Remove the duplicated _NX_ and _MQ_ macro
* [#2865](https://github.com/apache/incubator-nuttx/pull/2865) libc: :machine:risc-v:unifying elf relocation code
* [#2872](https://github.com/apache/incubator-nuttx/pull/2872) sched: pthread: Fix pthread cmdline issue
* [#2881](https://github.com/apache/incubator-nuttx/pull/2881) libc: Move stack check stuff from libc/stdlib/ to libc/assert/
* [#2904](https://github.com/apache/incubator-nuttx/pull/2904) libc: unistd/getcwd: enhance getcwd when buf is NULL
* [#2906](https://github.com/apache/incubator-nuttx/pull/2906) mm: umm_heap: valloc: support valloc (LEGACY)
* [#2910](https://github.com/apache/incubator-nuttx/pull/2910) libc/hex2bin: fix handling of segment offsets
* [#2919](https://github.com/apache/incubator-nuttx/pull/2919) sched: fix fd leak in dlopen
* [#2938](https://github.com/apache/incubator-nuttx/pull/2938) libs: misc: Remove critical section in lib_filesem.c for SMP
* [#2942](https://github.com/apache/incubator-nuttx/pull/2492) mtd: progmem: Add up_progmem_read callback guarded by ARCH_HAVE_PROGMEM_READ
* [#2946](https://github.com/apache/incubator-nuttx/pull/2946) sched: task: Call nxtask_flushstreams() without critical section
* [#2960](https://github.com/apache/incubator-nuttx/pull/2960) sched: signal: sigdeliver: fix system block when kill signal to idle in SMP
* [#2980](https://github.com/apache/incubator-nuttx/pull/2980) include: Add iso646.h for alternative spellings
* [#2981](https://github.com/apache/incubator-nuttx/pull/2981) sched: Remove all group id related stuff
* [#3033](https://github.com/apache/incubator-nuttx/pull/3033) unistd: Fix getpriority not handling invalid input value
* [#3080](https://github.com/apache/incubator-nuttx/pull/3080) sched: semaphore: Remove a redundant critical section in nxsem
* [#3083](https://github.com/apache/incubator-nuttx/pull/3083) libc: stdio/lib_clearerr: Did not clear stream buffer flags in clearerr
* [#3086](https://github.com/apache/incubator-nuttx/pull/3086) mm: improve the memory manager modularity and reduce the information explosion
* [#3111](https://github.com/apache/incubator-nuttx/pull/3111) sched: Sporadic scheduler: Fix time calculation and compile errors when assertions are enabled:
* [#3115](https://github.com/apache/incubator-nuttx/pull/3115) libc: time: localtime: fix race condition
* [#3121](https://github.com/apache/incubator-nuttx/pull/3121) mm/heap: Move semaphore related declaration to private header
* [#3123](https://github.com/apache/incubator-nuttx/pull/3123) sched: pthread: Remove a redundant critical section in pthread_condclockwait.c
* [#3131](https://github.com/apache/incubator-nuttx/pull/3131) mm: Minor fix for heap manager
* [#3159](https://github.com/apache/incubator-nuttx/pull/3159) mm: mm_heap: Remove critical section in mm_sem.c
* [#3170](https://github.com/apache/incubator-nuttx/pull/3170) libc: Move getopt() variables into TLS
* [#3196](https://github.com/apache/incubator-nuttx/pull/3196) sched/signal: Implement SA_NODEFER
* [#3228](https://github.com/apache/incubator-nuttx/pull/3228) mm/mm_heap: fix compile failed when open DEBUG_MM
* [#3244](https://github.com/apache/incubator-nuttx/pull/3244) libdsp: Improvements for libdsp and support for fixed16 libdsp implementation
* [#3247](https://github.com/apache/incubator-nuttx/pull/3247) sched: Move the default Task Stack size to Stack menu
* [#3251](https://github.com/apache/incubator-nuttx/pull/3251) libc: update pthread_once according to the specification
* [#3253](https://github.com/apache/incubator-nuttx/pull/3253) libc pthread: Fix pthread_rwlock_init return error
* [#3268](https://github.com/apache/incubator-nuttx/pull/3268) libdsp/fixed16: add open-loop handler
* [#3272](https://github.com/apache/incubator-nuttx/pull/3272) libc: Implement getopt_long() and getopt_long_only()
* [#3280](https://github.com/apache/incubator-nuttx/pull/3280) libc: Correct some getopt() logic
* [#3289](https://github.com/apache/incubator-nuttx/pull/3289) sched: task: Fix to initialize the task-specific data
* [#3294](https://github.com/apache/incubator-nuttx/pull/2418) libc: getopt(): Fix Use of Pointer before NULL check
* [#3299](https://github.com/apache/incubator-nuttx/pull/3299) libc: getopt_common(): Correct handling of unsupported long options.
* [#3308](https://github.com/apache/incubator-nuttx/pull/3308) libc: getopt_long(): Add support for required argument format
* [#3445](https://github.com/apache/incubator-nuttx/pull/3445) libc: update stream getoffset to handle write case
* [#3447](https://github.com/apache/incubator-nuttx/pull/2450) libc: correct zoneinfo genromfs source directory
## Major Changes to the Build System
### New Features
* [#1834](https://github.com/apache/incubator-nuttx/pull/1834) License/authorship handling scripts
* [#2107](https://github.com/apache/incubator-nuttx/pull/2107) build: Makefile should reference CONFIG_HOST_xxx
* [#2392](https://github.com/apache/incubator-nuttx/pull/2392) configure.sh: support custom board build config with absolute path
* [#2824](https://github.com/apache/incubator-nuttx/pull/2824) build/esp32: Create Flash size configuration and a new DOWNLOAD make target
* [#3317](https://github.com/apache/incubator-nuttx/pull/3317) tols: Update python scripts to py3 and lint all of them againt Black
### Bug Fixes
* [#1890](https://github.com/apache/incubator-nuttx/pull/1890) make/expression: improving up asm/C/C++ compile times(make with multi-jobs only)
* [#1940](https://github.com/apache/incubator-nuttx/pull/1940) cygwin build - path issue fix for Renesas arch
* [#2032](https://github.com/apache/incubator-nuttx/pull/2032) build: Change .external_dummy to dummy
* [#2101](https://github.com/apache/incubator-nuttx/pull/2101) build: Add $(OBJS) and $(BIN) to CLEAN macro to clean objects also in subdirectories
* [#2192](https://github.com/apache/incubator-nuttx/pull/2192) build: Move __NuttX__ definition to tools/[Config.mk](http://Config.mk)
* [#2221](https://github.com/apache/incubator-nuttx/pull/2221) tools: Avoid messing the final binary nuttx.(bin,hex,...) compilation msg
* [#2335](https://github.com/apache/incubator-nuttx/pull/2335) build: Parallelize depend file generation
* [#2380](https://github.com/apache/incubator-nuttx/pull/2380) tools: Fix nuttx-gdbinit for armv7-m with FPU
* [#2404](https://github.com/apache/incubator-nuttx/pull/2404) Update checkrelease script to check [readme.md](http://readme.md) instead of .txt
* [#2411](https://github.com/apache/incubator-nuttx/pull/2411) tools: Add 'handle SIGUSR1' to nuttx-gdbinit for the NuttX sim SMP
* [#2432](https://github.com/apache/incubator-nuttx/pull/2432) build system: add missing --obj-path to MKDEP
* [#2557](https://github.com/apache/incubator-nuttx/pull/2557) tools/version.sh: Fix the version retrieved from GIT
* [#2561](https://github.com/apache/incubator-nuttx/pull/2561) tools: Fix version.sh
* [#2642](https://github.com/apache/incubator-nuttx/pull/2642) tools/version.sh: Fix the version retrieved from git-tag
* [#2673](https://github.com/apache/incubator-nuttx/pull/2673) tools: esp32: add a gdb script to show backtrace
* [#2679](https://github.com/apache/incubator-nuttx/pull/2679) tools: esp32: btdecode.sh: Script to decode the Xtensa backtrace.
* [#2701](https://github.com/apache/incubator-nuttx/pull/2701) tools: gdbinit: add support for reporting total and used stack size
* [#2729](https://github.com/apache/incubator-nuttx/pull/2729) tools: esp32: backtrace.gdbscript: Add comments
* [#2803](https://github.com/apache/incubator-nuttx/pull/2803) tools: esp32: Remove some duplicated output
* [#2882](https://github.com/apache/incubator-nuttx/pull/2882) tools: esp32: refine the QEMU image generation.
* [#2895](https://github.com/apache/incubator-nuttx/pull/2895) tools: esp32: fix warnings from ShellCheck
* [#2930](https://github.com/apache/incubator-nuttx/pull/2930) tools: version.sh: If the version is not available, use 0.0.0
* [#2982](https://github.com/apache/incubator-nuttx/pull/2982) tools: nxstyle: Verify relative path in the file header
* [#3004](https://github.com/apache/incubator-nuttx/pull/3004) tools: esp32XX: Delete the Makefile that downloads IDF.
* [#3012](https://github.com/apache/incubator-nuttx/pull/3012) tools: esp32xx: Few fixes/improvements to the post build scripts
* [#3017](https://github.com/apache/incubator-nuttx/pull/3017) tools: esp32: [Config.mk](http://Config.mk): Revert part of "Don't abort make when QEMU script fails"
* [#3094](https://github.com/apache/incubator-nuttx/pull/3094) tools: version.sh: Fix PATCH including extra version
## Architectural Support
### New Architectures
* [#1995](https://github.com/apache/incubator-nuttx/pull/1995) arch: Add custom arch chip build support
* [#2161](https://github.com/apache/incubator-nuttx/pull/2161) Added Support for more TI Tiva Microcontrollers: TM4C123GH6PZ, TM4C123GH6PGE, TM4C129ENCPDT, and TM4C129ENCZAD.
* [#2566](https://github.com/apache/incubator-nuttx/pull/2566) arch/risc-v: Add BL602 support
* [#2974](https://github.com/apache/incubator-nuttx/pull/2974) STM32L5 Architecture Support
* [#3001](https://github.com/apache/incubator-nuttx/pull/3001) arch:riscv64:basic porting for C906
* [#3023](https://github.com/apache/incubator-nuttx/pull/3023) Remove nr5m100 and gap8 support
### Architectures with significant improvements
#### ARM
* [#2042](https://github.com/apache/incubator-nuttx/pull/2042) Fix interrupt stack handlings for ARM SMP
* [#2061](https://github.com/apache/incubator-nuttx/pull/2061) Refactor arm interrupt stack related code
* [#2309](https://github.com/apache/incubator-nuttx/pull/2309) Fix armv7-a L2CC and apply the code to the sabre-6quad board
* [#2876](https://github.com/apache/incubator-nuttx/pull/2876) arm: ARMv6-M vector table offset register support
* [#2932](https://github.com/apache/incubator-nuttx/pull/2932) arch: armv6-m: Apply armv7-m signal handling logic
* [#2944](https://github.com/apache/incubator-nuttx/pull/2944) armv8-m: Fix EXC_RETURN for non-secure usage
* [#2990](https://github.com/apache/incubator-nuttx/pull/2990) arch/armv7-m: Adds dwt helper functions for controlling watchpoints i…
#### BL602
* [#2614](https://github.com/apache/incubator-nuttx/pull/2614) bl602: Update register maps and lower half drivers
* [#2633](https://github.com/apache/incubator-nuttx/pull/2633) BL602: Add support for system reset modes
* [#2655](https://github.com/apache/incubator-nuttx/pull/2655) arch/risc-v/bl602 : add pwm onshot watchdog driver
* [#2659](https://github.com/apache/incubator-nuttx/pull/2659) arch/risc-v/bl602 : add spiflash(hardware sf controller)
* [#2669](https://github.com/apache/incubator-nuttx/pull/2669) risc-v/bl602 : add gpioirq、 i2c(master) driver.
* [#2804](https://github.com/apache/incubator-nuttx/pull/2804) arch/risc-v/bl602: spi_master support.
* [#2809](https://github.com/apache/incubator-nuttx/pull/2809) arch:risc-v:bl602: enable FPU for this target.
* [#2836](https://github.com/apache/incubator-nuttx/pull/2836) :risc-v:bl602:add support for elf file apps
* [#2991](https://github.com/apache/incubator-nuttx/pull/2991) risc-v/bl602: Add wifi and ble support
#### CXD56XX
* [#2750](https://github.com/apache/incubator-nuttx/pull/2750) arch: cxd56xx: Add i2c bitbang lower driver
* [#2830](https://github.com/apache/incubator-nuttx/pull/2830) Driver-specific spinlock for cxd56_serial.c
#### ESP32
* [#1893](https://github.com/apache/incubator-nuttx/pull/1893) Add ESP32 WiFi adapter and driver
* [#1942](https://github.com/apache/incubator-nuttx/pull/1942) Implement BASIC reset logic
* [#1945](https://github.com/apache/incubator-nuttx/pull/1945) Added Timer Support
* [#1958](https://github.com/apache/incubator-nuttx/pull/1958) When PSRAM is enabled allow drivers and tasks to allocate memory from a separate internal memory
* [#1978](https://github.com/apache/incubator-nuttx/pull/1978) Add power management of deep-sleep
* [#2074](https://github.com/apache/incubator-nuttx/pull/2074) Add real-time timer support for WiFi
* [#2138](https://github.com/apache/incubator-nuttx/pull/2138) Add Partition and OTA device
* [#2199](https://github.com/apache/incubator-nuttx/pull/2199) SPI Flash driver uses global sem for all MTD
* [#2224](https://github.com/apache/incubator-nuttx/pull/2224) Add SPI Flash hardware encryption I/O support
* [#2234](https://github.com/apache/incubator-nuttx/pull/2234) Include cache workaround to PSRAM
* [#2242](https://github.com/apache/incubator-nuttx/pull/2242) Watchdog support (MWDTs)
* [#2269](https://github.com/apache/incubator-nuttx/pull/2269) Add high memory support to work with PSRAM
* [#2294](https://github.com/apache/incubator-nuttx/pull/2294) Refactor ESP32 Wi-Fi driver
* [#2296](https://github.com/apache/incubator-nuttx/pull/2296) added support to automonitor by capture
* [#2474](https://github.com/apache/incubator-nuttx/pull/2474) Optimize IRAM usage based on esp-idf
* [#2514](https://github.com/apache/incubator-nuttx/pull/2514) allows the rtc wdt to be configured in bootloader and used later
* [#2515](https://github.com/apache/incubator-nuttx/pull/2515) Added support for RTC WDT
* [#2550](https://github.com/apache/incubator-nuttx/pull/2550) enables started flag if the wdt was turned on in bootloader
* [#2613](https://github.com/apache/incubator-nuttx/pull/2613) Added driver api to reload counter instantly
* [#2716](https://github.com/apache/incubator-nuttx/pull/2716) Add AES hardware accelerator driver
* [#2721](https://github.com/apache/incubator-nuttx/pull/2613) Add efuse driver
* [#2831](https://github.com/apache/incubator-nuttx/pull/2831) Writeback PSRAM data when mapping SPI Flash address to ESP32's address bus
* [#2840](https://github.com/apache/incubator-nuttx/pull/2840) Add esp32_gpio_matrix_in/out to replace ROM functions
* [#2858](https://github.com/apache/incubator-nuttx/pull/2858) Fix a memory leak when discarding a large packet.
* [#2939](https://github.com/apache/incubator-nuttx/pull/2939) Refactor ESP32 WiFi driver to support station and softAP coexistence
* [#2947](https://github.com/apache/incubator-nuttx/pull/2947) esp32_ummap: write back spiram cache before calling Cache_Flush
* [#2965](https://github.com/apache/incubator-nuttx/pull/2965) Add more flash options to esptool
* [#2979](https://github.com/apache/incubator-nuttx/pull/2979) Add support for I2C tracing
* [#2983](https://github.com/apache/incubator-nuttx/pull/2983) Extract memory layout definitions to a separate header
* [#2999](https://github.com/apache/incubator-nuttx/pull/2999) Add WPA2 Enterprise and WPA3 support
* [#3003](https://github.com/apache/incubator-nuttx/pull/3003) Re-organise the different heap regions
* [#3048](https://github.com/apache/incubator-nuttx/pull/3048) timer driver refactor
* [#3233](https://github.com/apache/incubator-nuttx/pull/3233) Bugfixes and Improvements for SPI DMA Exchange function
#### ESP32C3
* [#2870](https://github.com/apache/incubator-nuttx/pull/2870) Support for ESP32-C3 GPIO Driver
* [#2875](https://github.com/apache/incubator-nuttx/pull/2875) risc-v/esp32c3: Add support for Main System Watchdog Timer
* [#2901](https://github.com/apache/incubator-nuttx/pull/2901) esp32c3: Add system reset.
* [#2965](https://github.com/apache/incubator-nuttx/pull/2965) ESP32XX: Add more flash options to esptool
* [#3006](https://github.com/apache/incubator-nuttx/pull/3006) esp32-c3: Adds timer driver
* [#3007](https://github.com/apache/incubator-nuttx/pull/3007) risc-v/esp32-c3: complements serial driver
* [#3028](https://github.com/apache/incubator-nuttx/pull/3028) ESP32-C3: Add I2C drive
* [#3029](https://github.com/apache/incubator-nuttx/pull/3029) esp32-c3: Adds termios support
* [#3040](https://github.com/apache/incubator-nuttx/pull/3040) riscv/esp32c3: Add ESP32-C3 WLAN netcard driver
* [#3126](https://github.com/apache/incubator-nuttx/pull/3126) risc-v/esp32-c3: Add support to SPI Flash
* [#3160](https://github.com/apache/incubator-nuttx/pull/3160) riscv/esp32c3: Add standard C atomic function
#### IMX6
* [#2595](https://github.com/apache/incubator-nuttx/pull/2595) Add imx_enet driver
#### IMXRT
* [#2212](https://github.com/apache/incubator-nuttx/pull/2212) imxrt: adds support for WDOG1
* [#2354](https://github.com/apache/incubator-nuttx/pull/2354) imxrt: Added support for DP83825I PHY
* [#2461](https://github.com/apache/incubator-nuttx/pull/2461) imxrt: Added NETDEV_LATEINIT option for Ethernet
* [#2471](https://github.com/apache/incubator-nuttx/pull/2471) imxrt: Support serial single-wire mode and fix parity settings
* [#2929](https://github.com/apache/incubator-nuttx/pull/2929) imxrt: changes to FlexCAN driver support
#### NRF52
* [#2148](https://github.com/apache/incubator-nuttx/pull/2148) nrf52_wdt: split into low-level API and watchdog driver lower-half
* [#2149](https://github.com/apache/incubator-nuttx/pull/2149) nrf52832: add errata mitigation code for various RADIO issues
* [#2182](https://github.com/apache/incubator-nuttx/pull/2182) nrf52: support configuring no console/serial
* [#2189](https://github.com/apache/incubator-nuttx/pull/2189) nrf52_spi: support unconnected MISO/MOSI pins
* [#2207](https://github.com/apache/incubator-nuttx/pull/2207) nrf52: add POWER register definitions; support enabling DC/DC regulator
* [#2270](https://github.com/apache/incubator-nuttx/pull/2270) nRF52 SPI improvements
* [#2440](https://github.com/apache/incubator-nuttx/pull/2440) nrf52 ADC: minor fixes
* [#2674](https://github.com/apache/incubator-nuttx/pull/2674) nrf52_i2c: add support for I2C_M_NOSTOP and I2C_M_NOSTART flags
* [#2705](https://github.com/apache/incubator-nuttx/pull/2705) nrf52: Add a static copy buffer for i2c NOSTART transfers
* [#2712](https://github.com/apache/incubator-nuttx/pull/2712) nRF52: support stack coloration
* [#2717](https://github.com/apache/incubator-nuttx/pull/2717) I2C bitbang driver (and nRF52 implementation)
* [#2735](https://github.com/apache/incubator-nuttx/pull/2735) nRF52: add support for building SoftDevice BLE controller
* [#2756](https://github.com/apache/incubator-nuttx/pull/2756) nrf52: add stackcheck support
#### RP2040
* [#2916](https://github.com/apache/incubator-nuttx/pull/2916) rp2040: Raspberry Pi Pico SMP support
* [#2927](https://github.com/apache/incubator-nuttx/pull/2927) rp2040: Fix LDFLAGS for boot stage2
* [#2952](https://github.com/apache/incubator-nuttx/pull/2952) rp2040: Add I2C driver support
* [#2986](https://github.com/apache/incubator-nuttx/pull/2986) rp2040: Add SPI driver support
* [#3002](https://github.com/apache/incubator-nuttx/pull/3002) rp2040: SPI driver DMA transfer support
* [#3057](https://github.com/apache/incubator-nuttx/pull/3057) rp2040: Fix SPI halfword DMA transfer
#### S32K1XX
* [#2900](https://github.com/apache/incubator-nuttx/pull/2900) s32k1xx: Support ramfunc
#### STM32
* [#2010](https://github.com/apache/incubator-nuttx/pull/2010) arch/arm/src/stm32h7/stm32_spi.c: fixed build issue when SPI is configured
* [#2095](https://github.com/apache/incubator-nuttx/pull/2095) arch: stm32: fix otghs logic to support interface requests
* [#2177](https://github.com/apache/incubator-nuttx/pull/2177) FLASH waiting cycles are configured based on HCLK.
* [#2180](https://github.com/apache/incubator-nuttx/pull/2180) stm32 - Add register mappings for STM32G474 VREFBUF
* [#2194](https://github.com/apache/incubator-nuttx/pull/2194) stm32 - Add register mappings for STM32Gxxxxx-family DAC
* [#2273](https://github.com/apache/incubator-nuttx/pull/2273) stm32/stm32_spi: Add SPI register definitions for STM32G47xxx
* [#2288](https://github.com/apache/incubator-nuttx/pull/2288) stm32: Add DMAMUX register mappings and request IDs
* [#2325](https://github.com/apache/incubator-nuttx/pull/2325) arch/arm/src/stm32/stm32_serial.c: for flowcontrol use common idiom for enabling/disabling RX interrupts
* [#2473](https://github.com/apache/incubator-nuttx/pull/2473) STM32 - Add ADC register definitions for STM32G4 family
* [#2477](https://github.com/apache/incubator-nuttx/pull/2477) STM32 FLASH latency is calculated based on Vin
* [#2985](https://github.com/apache/incubator-nuttx/pull/2985) stm32 Ethernet hardening
#### STM32F7
* [#2209](https://github.com/apache/incubator-nuttx/pull/2209) stm32f7/stm32_serial.c: fix console re-initialisation if DMA enabled
* [#3489](https://github.com/apache/incubator-nuttx/pull/3489) stm32f7: Freeze tickless timer during debug halt.
#### STM32H7
* [#2880](https://github.com/apache/incubator-nuttx/pull/2880) stm32h7: add definitions for DAC
* [#2955](https://github.com/apache/incubator-nuttx/pull/2955) stm32h7:Add DBGMCU missing from master
* [#2994](https://github.com/apache/incubator-nuttx/pull/2994) stm32h7: Allow custom clock configuration to use stdclockconfig
* [#3143](https://github.com/apache/incubator-nuttx/pull/3143) stm32h7: DMA BDMA does not auto disabled on completion
* [#3207](https://github.com/apache/incubator-nuttx/pull/3207) usbhost: Add usb host tracing strings to stm32h7
* [#3458](https://github.com/apache/incubator-nuttx/pull/3458) stm32h7: Adds stm32_dbgmcu.h to match stm32f7 port
* [#3461](https://github.com/apache/incubator-nuttx/pull/3461) stm32h7: Expose flash lock, unlock, and write protect functions to boards
#### STM32L4
* [#2068](https://github.com/apache/incubator-nuttx/pull/2068) STM32L4: Improvements on ADC driver
* [#2178](https://github.com/apache/incubator-nuttx/pull/2178) STM32L4 ADC driver: extenal event configuration
* [#2220](https://github.com/apache/incubator-nuttx/pull/2220) STM32L4 TIMER: Add some helper functions
* [#2232](https://github.com/apache/incubator-nuttx/pull/2232) STM32L4 ADC: Add injected channel support.
#### STM32L5
* [#3090](https://github.com/apache/incubator-nuttx/pull/3090) stm32l5: Optional LSE xtal drive strength ramp-up
#### Renesas RX65N
* [#2469](https://github.com/apache/incubator-nuttx/pull/2469) USB Host Driver Support
#### Risc-V
* [#2470](https://github.com/apache/incubator-nuttx/pull/2470) risc-v: Introduce basic setjmp support
* [#2918](https://github.com/apache/incubator-nuttx/pull/2918) risc-v: up_sigdeliver missing fpu contexts.
#### RV64
* [#2928](https://github.com/apache/incubator-nuttx/pull/2928) rv64:add API up_copyfullstate for later FPU support
* [#3018](https://github.com/apache/incubator-nuttx/pull/3018) rv64:c906:enable DP FPU support
* [#3073](https://github.com/apache/incubator-nuttx/pull/3073) rv64:c906:demo protect build without the PMP
* [#3087](https://github.com/apache/incubator-nuttx/pull/3087) rv64: keep the stack to be 16bytes aligned
* [#3098](https://github.com/apache/incubator-nuttx/pull/3098) rv64:fix 64bit data type and instruction for FPU handlers
* [#3203](https://github.com/apache/incubator-nuttx/pull/3203) rv64:c906:add risc-v PMP and change mem map for protect build.
#### Xtensa
* [#1933](https://github.com/apache/incubator-nuttx/pull/1933) Add support to PSRAM using SPIRAM interface
* [#2014](https://github.com/apache/incubator-nuttx/pull/2014) Add the optional interrupt stack to the Xtensa architecture
* [#2352](https://github.com/apache/incubator-nuttx/pull/2352) Print the bakctrace on assertions
* [#2504](https://github.com/apache/incubator-nuttx/pull/2504) Get full backtrace from interrupts.
* [#3015](https://github.com/apache/incubator-nuttx/pull/3015) hostfs: Make host_stat populate st_size
### Minor changes
* [#1904](https://github.com/apache/incubator-nuttx/pull/1904) xtensa: ESP32: Fixed the type of cpuint variables in esp32_emac.c
* [#1943](https://github.com/apache/incubator-nuttx/pull/1943) xtensa: ESP32: Fix and clean some corners of GPIOs configuration.
* [#1947](https://github.com/apache/incubator-nuttx/pull/1947) xtensa: esp32: Fix crash on startup
* [#1948](https://github.com/apache/incubator-nuttx/pull/1948) xtensa: ESP32: Fixes the GPIO's function mask test
* [#1960](https://github.com/apache/incubator-nuttx/pull/1960) xtensa: xtensa.h: Include sys/types.h needed if STACK_COLORATON is enabled
* [#1968](https://github.com/apache/incubator-nuttx/pull/1968) arm: kinetis: freedom-k64f: Declare missing NUM_BUTTONS
* [#1990](https://github.com/apache/incubator-nuttx/pull/1990) arm: kinetis: flexcan fixed compile error
* [#2120](https://github.com/apache/incubator-nuttx/pull/2120) arm: stm32h7: Fix missing 'ret' reported by Frank-Christian Kruegel
* [#2159](https://github.com/apache/incubator-nuttx/pull/2159) xtensa: esp32: Fix SPI master DMA RX buffer memcpy size erro
* [#2160](https://github.com/apache/incubator-nuttx/pull/2160) arm: stm32l4/stm32l4_adc.c: fix copy-paste mistake with CONFI
* [#2210](https://github.com/apache/incubator-nuttx/pull/2210) arm: stm32/stm32_adc.c: do not allow negative ref count
* [#2214](https://github.com/apache/incubator-nuttx/pull/2214) xtensa: esp32: Fix rt-timer issues
* [#2233](https://github.com/apache/incubator-nuttx/pull/2233) xtensa: esp32: Fix the memory regions with regards to the range used by the ROM
* [#2240](https://github.com/apache/incubator-nuttx/pull/2240) arm: nrf52 GPIO/GPIOTE: better expose pin interrupt capability
* [#2284](https://github.com/apache/incubator-nuttx/pull/2284) arm: stm32h7/stm32_dmamux.h: Fix errors in bitfield definitions
* [#2286](https://github.com/apache/incubator-nuttx/pull/2286) arm: stm32f0l0g0/stm32_dmamux.h: Fix errors in bitfield definitions
* [#2287](https://github.com/apache/incubator-nuttx/pull/2287) arm: stm32h7/stm32_dmamux.h: Add missing CCR SPOL defines
* [#2300](https://github.com/apache/incubator-nuttx/pull/2300) arm: sam34: compile error on SAM34 TWI
* [#2316](https://github.com/apache/incubator-nuttx/pull/2844) risc-v: minor fix
* [#2330](https://github.com/apache/incubator-nuttx/pull/2330) xtensa: esp32/esp32_tim.c: Fix build when debug is enabled.
* [#2336](https://github.com/apache/incubator-nuttx/pull/2336) arm: stm32l4: correct macros STM32L4_CAN_MCR_OFFSET, etc... to match defines
* [#2344](https://github.com/apache/incubator-nuttx/pull/2344) xtensa: esp32/esp32_gpio.c: Fix GPIO IRQ assert condition
* [#2351](https://github.com/apache/incubator-nuttx/pull/2351) xtensa: esp32: Fix issues of force-sleep
* [#2355](https://github.com/apache/incubator-nuttx/pull/2355) xtensa: esp32_himem: Fix issue that was preventing to map all free memory
* [#2361](https://github.com/apache/incubator-nuttx/pull/2361) arm: nrf52 GPIO: minor fixes
* [#2364](https://github.com/apache/incubator-nuttx/pull/2364) arm: stm32h7: Fix bug where more than CONFIG_MM_REGIONS would be allocated
* [#2372](https://github.com/apache/incubator-nuttx/pull/2372) rv64: Fix SCN/PRI.PTR definitions
* [#2373](https://github.com/apache/incubator-nuttx/pull/2373) risc-v: Don't use non existent "saved_status"
* [#2423](https://github.com/apache/incubator-nuttx/pull/2423) xetnsa: Couple of Xtensa fixes
* [#2448](https://github.com/apache/incubator-nuttx/pull/2448) arm: stm32/stm32h7: fix the configuration of PWM outputs when subsequent channels are not enabled
* [#2454](https://github.com/apache/incubator-nuttx/pull/2454) xtensa: esp32/esp32-core: Fix #ifdef warning and update MM_SECTIONS
* [#2483](https://github.com/apache/incubator-nuttx/pull/2483) arm: stm32: convert all STM32G47X specific code to generic STM32G4 series code
* [#2519](https://github.com/apache/incubator-nuttx/pull/2519) arm: imxrt: replace clock_systimespec with clock_systime_timespec
* [#2536](https://github.com/apache/incubator-nuttx/pull/2536) xtensa: esp32: fixes enable int function and gets apb clk frequency through function
* [#2546](https://github.com/apache/incubator-nuttx/pull/2546) arm: imxrt: imxrt_usdhc.c: fixed no DMA build error
* [#2551](https://github.com/apache/incubator-nuttx/pull/2551) arm: stm32h7x3xx_memorymap.h invalid address map for fdcan
* [#2554](https://github.com/apache/incubator-nuttx/pull/2554) xtensa: Esp32 wifi fixes
* [#2555](https://github.com/apache/incubator-nuttx/pull/2555) xtensa: esp32/esp32_spiflash.c: Writeback PSRAM data before invalidating the cache
* [#2559](https://github.com/apache/incubator-nuttx/pull/2559) risc-v: Remove duplicated declaration for up_irq_save and up_irq_restore
* [#2560](https://github.com/apache/incubator-nuttx/pull/2560) risc-v: Move csr.h to common place
* [#2568](https://github.com/apache/incubator-nuttx/pull/2568) risc-v: Move CSR register bit definition to csr.h
* [#2569](https://github.com/apache/incubator-nuttx/pull/2569) risc-v: Reuse the common up_schedule_sigaction implementation
* [#2570](https://github.com/apache/incubator-nuttx/pull/2570) arm: stm32g4: Fix incorrect FLASH wait states
* [#2573](https://github.com/apache/incubator-nuttx/pull/2573) xtensa: esp32: Bump NAME_MAX where CONFIG_ESP32_WIFI_SAVE_PARAM=y
* [#2584](https://github.com/apache/incubator-nuttx/pull/2584) xtensa: esp32_wifi_adapter.c: file mode for open doesn't make sense for O_RDONLY
* [#2589](https://github.com/apache/incubator-nuttx/pull/2589) risc-v: fix redefined CSR_INSTRET
* [#2612](https://github.com/apache/incubator-nuttx/pull/2612) arm: kinetis: S32K/Kinetis: Fix RTC settime prescaler
* [#2612](https://github.com/apache/incubator-nuttx/pull/2612) arm: S32K/Kinetis: Fix RTC settime prescaler
* [#2647](https://github.com/apache/incubator-nuttx/pull/2647) xtensa: esp32: Fix ESP32 serial UART tx ready check error
* [#2666](https://github.com/apache/incubator-nuttx/pull/2666) xtensa: esp32: Fix ESP32 SPI3 slave ops data error
* [#2676](https://github.com/apache/incubator-nuttx/pull/2676) arm: stm32412: Fixes pinmap CAN1
* [#2689](https://github.com/apache/incubator-nuttx/pull/2689) arm: tiva: Fix lm3s_ethernet.c with DEBUGASSERT
* [#2700](https://github.com/apache/incubator-nuttx/pull/2700) arm: nRF52 various minor fixes
* [#2708](https://github.com/apache/incubator-nuttx/pull/2708) xtensa: esp32: Fix ESP32 I2C driver issues
* [#2709](https://github.com/apache/incubator-nuttx/pull/2709) xtensa: esp32: Fix ESP32 SPI driver issues
* [#2722](https://github.com/apache/incubator-nuttx/pull/2722) arm: stm32f412:Replaced Kludged pinmap with one for SoC.
* [#2725](https://github.com/apache/incubator-nuttx/pull/2725) arm: nRF52: FIX wrong bitmask for DRIVE setting
* [#2727](https://github.com/apache/incubator-nuttx/pull/2727) xtensa: esp32_free_cpuint: Fix an assertion
* [#2728](https://github.com/apache/incubator-nuttx/pull/2728) xtensa: esp32_dma_init: Fix a dubious assertion
* [#2731](https://github.com/apache/incubator-nuttx/pull/2731) xtensa: esp_allocateheap.c: Correct ROM memory boundaries in SMP case
* [#2752](https://github.com/apache/incubator-nuttx/pull/2752) xtensa: esp32/esp32_spiflash.c: Fix the value of the page start address when invalidating the cache
* [#2755](https://github.com/apache/incubator-nuttx/pull/2755) xtensa: esp32: Fix compile errors with CONFIG_SMP=y
* [#2757](https://github.com/apache/incubator-nuttx/pull/2757) xtensa: esp32/esp32_wifi_adapter.c: Print debug output only when DEBUG_WIRLESS* are enabled
* [#2758](https://github.com/apache/incubator-nuttx/pull/2758) xtensa: Kconfig: Reduce the default value of the internal memory
* [#2759](https://github.com/apache/incubator-nuttx/pull/2759) xtensa: esp32/psram: Fix missing configs
* [#2761](https://github.com/apache/incubator-nuttx/pull/2761) risc-v: Remove unused and undefined file section "Public Variables"
* [#2763](https://github.com/apache/incubator-nuttx/pull/2763) arm: imx6: Apply the latest imxrt/imxrt_enet.c to imx6/imx_enet.c
* [#2771](https://github.com/apache/incubator-nuttx/pull/2771) arm: imx6: Update imx6 enet
* [#2772](https://github.com/apache/incubator-nuttx/pull/2771) arm: imx6 enet with TCP_WRITE_BUFFERS
* [#2777](https://github.com/apache/incubator-nuttx/pull/2777) arm: imx6: Fix a compile error with CONFIG_DEBUG_ASSERTIONS=y
* [#2779](https://github.com/apache/incubator-nuttx/pull/2779) arm: samv7/sam_mcan.c: fix some mismatches caused by renaming
* [#2782](https://github.com/apache/incubator-nuttx/pull/2782) arm: nRF52 fixes
* [#2788](https://github.com/apache/incubator-nuttx/pull/2788) risc-v: Don't declare riscv_addregion if CONFIG_MM_REGIONS is < 1.
* [#2791](https://github.com/apache/incubator-nuttx/pull/2791) arm: stm32f7/stm32_qspi.c: Fix warning of format strings
* [#2792](https://github.com/apache/incubator-nuttx/pull/2792) arm: [imxrt] Fix FlexCAN tx dropping frames
* [#2793](https://github.com/apache/incubator-nuttx/pull/2316) risc-v: Remove nx_start prototype from riscv_internal.h
* [#2795](https://github.com/apache/incubator-nuttx/pull/2795) arm: stm32f412:Corrected Pin count
* [#2796](https://github.com/apache/incubator-nuttx/pull/2796) xtensa: esp32: Fix cache issue detected by DEBUG_ASSERTION
* [#2799](https://github.com/apache/incubator-nuttx/pull/2799) RV64: handle relocation type R_RISCV_CALL_PLT in PIC build.
* [#2805](https://github.com/apache/incubator-nuttx/pull/2805) arm: imxrt1060 iperf
* [#2812](https://github.com/apache/incubator-nuttx/pull/2812) xtensa: esp32_spiflash.c: Fix preprocessor condition
* [#2813](https://github.com/apache/incubator-nuttx/pull/2813) xtensa: esp32: Add extern modifier to ROM function declaration
* [#2815](https://github.com/apache/incubator-nuttx/pull/2815) riscv: Fix files names in headers that were still using the old 'up_' prefix
* [#2832](https://github.com/apache/incubator-nuttx/pull/2832) xtensa: esp32: Fix the issue of WiFi internal malloc from PSRAM
* [#2844](https://github.com/apache/incubator-nuttx/pull/2844) risc-v: LiteX: Make Arty-A7 example work
* [#2867](https://github.com/apache/incubator-nuttx/pull/2867) arm: lpc17xx_40xx/lpc17_40_i2c.c: Propagate I2C I/O errors
* [#2886](https://github.com/apache/incubator-nuttx/pull/2886) arm: pic32mz: Chip does not have ANSEL register on port K
* [#2889](https://github.com/apache/incubator-nuttx/pull/2889) arm: pic32mx7 cannot perform context switch
* [#2892](https://github.com/apache/incubator-nuttx/pull/2892) risc-v: esp32-c3: Don't reserve any vectors for any special use.
* [#2893](https://github.com/apache/incubator-nuttx/pull/2893) risc-v: esp32-c3: Build serial driver only when selected
* [#2903](https://github.com/apache/incubator-nuttx/pull/2903) xtensa: esp32: xtensa_user: Implement a few more instructions
* [#2912](https://github.com/apache/incubator-nuttx/pull/2912) risc-v: esp32-c3: Fix CPU interrupts freeing on WDT driver
* [#2917](https://github.com/apache/incubator-nuttx/pull/2917) arm: Add 'select ARM_HAVE_WFE_SEV' to ARCH_CHIP_RP2040
* [#2920](https://github.com/apache/incubator-nuttx/pull/2920) risc-v: esp32-c3: Configure clock and call board initialize at startup
* [#2923](https://github.com/apache/incubator-nuttx/pull/2923) ez80: fix several bugs in emac driver
* [#2931](https://github.com/apache/incubator-nuttx/pull/2931) arm: kinetis: [FlexCAN] Fix TX drop #2792 and correctly set CAN timings to non-zero
* [#2931](https://github.com/apache/incubator-nuttx/pull/2931) arm: s32k1xx: [FlexCAN] Fix TX drop #2792 and correctly set CAN timings to non-zero
* [#2943](https://github.com/apache/incubator-nuttx/pull/2943) arm: stm32x7:lse ensure it is started
* [#2951](https://github.com/apache/incubator-nuttx/pull/2951) arm: stm32_wwdg debug log formatting
* [#2967](https://github.com/apache/incubator-nuttx/pull/2967) arm: STM32F7 lse static values directly from Kconfig
* [#2968](https://github.com/apache/incubator-nuttx/pull/2968) xtensa: esp32: Change I2C SCL default pin to a valid one
* [#2972](https://github.com/apache/incubator-nuttx/pull/2972) risc-v: esp32-c3: Fix GPIO pin function configuration
* [#2976](https://github.com/apache/incubator-nuttx/pull/2976) xtensa: ESP32: Fix I2C Kconfig bringing the character driver as a dependency
* [#2977](https://github.com/apache/incubator-nuttx/pull/2977) xtensa: ESP32: Fix GPIO pin function configuration
* [#2996](https://github.com/apache/incubator-nuttx/pull/2996) arm: stm32h747xi: Fix missing IO_CONFIG setting
* [#3008](https://github.com/apache/incubator-nuttx/pull/3008) risc-v: esp32-c3: free cpu in case it was preallocated in wdt driver
* [#3013](https://github.com/apache/incubator-nuttx/pull/3013) risc-v: bl602:fix bl602_flash_erase to erase the wrong block
* [#3034](https://github.com/apache/incubator-nuttx/pull/3034) arm: imx6: Fix an error message in imx_enet.c
* [#3051](https://github.com/apache/incubator-nuttx/pull/3051) risc-v: Internal functions should be prefixed with riscv_ not up
* [#3075](https://github.com/apache/incubator-nuttx/pull/3075) arm: Fix syscall number out of swi range in thumb mode
* [#3079](https://github.com/apache/incubator-nuttx/pull/3079) arm: kinetis: [FlexCAN] Correct reset state for CTRL1 register
* [#3079](https://github.com/apache/incubator-nuttx/pull/3079) arm: s32k1xx: [FlexCAN] Correct reset state for CTRL1 register
* [#3088](https://github.com/apache/incubator-nuttx/pull/3088) arm: samv7: Fix sam_putreg() parameter type
* [#3092](https://github.com/apache/incubator-nuttx/pull/3092) xtensa: xtensa: esp32_allocateheap.c: Don't allocate ROM regions when running in QEMU.
* [#3116](https://github.com/apache/incubator-nuttx/pull/3116) arm: stm32l5: Enable SPI support and license clearing
* [#3119](https://github.com/apache/incubator-nuttx/pull/2976) xtensa: sp32: Fix buffer size word-alignment for DMA transfers
* [#3125](https://github.com/apache/incubator-nuttx/pull/3125) risc-v: Internal functions should be prefixed with "riscv_"
* [#3130](https://github.com/apache/incubator-nuttx/pull/3145) xtensa: esp32: Fix SPI polling mode when DMA is also enabled.
* [#3135](https://github.com/apache/incubator-nuttx/pull/3135) rv64:c906:colorize the idle stack area;minor fixes.
* [#3145](https://github.com/apache/incubator-nuttx/pull/3145) xtensa: esp32_part_ioctl: Return -ENOTTY for unknown commands
* [#3162](https://github.com/apache/incubator-nuttx/pull/3162) arm: STM32 USB OTGFSDEV: Fix handling of SETUP OUT longer than 64 bytes
* [#3167](https://github.com/apache/incubator-nuttx/pull/3167) arm: stm32h7:SPI Fix 16 bit SPI mode
* [#3174](https://github.com/apache/incubator-nuttx/pull/3174) arm: Use macro defined swi range in dispatch_syscall
* [#3178](https://github.com/apache/incubator-nuttx/pull/3178) arm: tiva:cc13x0_adi3_refsys fix typo
* [#3198](https://github.com/apache/incubator-nuttx/pull/3198) arm: Stm32h7 fix heap clobber
* [#3199](https://github.com/apache/incubator-nuttx/pull/3199) xtensa: ESP32: Fix math for DMA buffer length rounding
* [#3200](https://github.com/apache/incubator-nuttx/pull/3200) xtensa: esp32: Fix DMA burst mode being unintendedly disabled
* [#3219](https://github.com/apache/incubator-nuttx/pull/3219) risc-v: bl602: fix _heap_start not word aligned
* [#3220](https://github.com/apache/incubator-nuttx/pull/3220) arm: Fix indexing for stm32h7 usbhost tracing
* [#3248](https://github.com/apache/incubator-nuttx/pull/3248) xtensa: esp32: remove extra initial newline on syslog call
* [#3283](https://github.com/apache/incubator-nuttx/pull/3283) rv64:add memory clobber to inline asm for syscall.
* [#3285](https://github.com/apache/incubator-nuttx/pull/3285) arm: Remove .cpu directive from assemble file
* [#3293](https://github.com/apache/incubator-nuttx/pull/3293) arm: armv6-m: Remove cpsid and cpsie from exception_common
* [#3307](https://github.com/apache/incubator-nuttx/pull/3307) arm: Replace the hardcode syscall number with macro
* [#3310](https://github.com/apache/incubator-nuttx/pull/3310) arm: armv8-m: Merge ite instruction to the previous one
* [#3311](https://github.com/apache/incubator-nuttx/pull/3311) arm: fix the potential corruption in initialization
* [#3313](https://github.com/apache/incubator-nuttx/pull/3313) arm: Replace "b lr" or "mov pc, lr" with "bx lr"
* [#3315](https://github.com/apache/incubator-nuttx/pull/3315) arm: Move setjmp/longjmp to libc/machine
* [#3326](https://github.com/apache/incubator-nuttx/pull/3326) arm: Update the old arm architecture with the recent fix
* [#3440](https://github.com/apache/incubator-nuttx/pull/3440) arm: Change all spsr_cxsf to spsr
* [#3448](https://github.com/apache/incubator-nuttx/pull/3448) arm: armv7-a: Remove the special process of the nest level
* [#3451](https://github.com/apache/incubator-nuttx/pull/3451) arm: Remove g_irqtmp, g_undeftmp and g_aborttmp
* [#3452](https://github.com/apache/incubator-nuttx/pull/3452) risc-v: esp32-c3: Refactors and fixes issues on serial driver.
* [#3457](https://github.com/apache/incubator-nuttx/pull/3457) arm: stm32h7: Actually use the AXI SRAM as the main heap as the documentation describes in PROTECTED mode.
* [#3459](https://github.com/apache/incubator-nuttx/pull/3459) arm: stm32h7: Fixes build error in stm32_sdmmc.c without DCACHE
* [#3473](https://github.com/apache/incubator-nuttx/pull/3473) xtensa: esp32: move common XTAL and RUN_IRAM configs to ESP32 KConfig
* [#3486](https://github.com/apache/incubator-nuttx/pull/3486) xtensa: esp32: Improve SPI polling to use the entire HW buffer
* [#3492](https://github.com/apache/incubator-nuttx/pull/3492) risc-v: riscv_initialize.c: Add telnet_initialize to riscv's up_initialize
* [#2868](https://github.com/apache/incubator-nuttx/pull/2868) xtensa: Fix xtensa stack coloring
## Simulator
### New Features
* [#2129](https://github.com/apache/incubator-nuttx/pull/2129) add "nimble" config, to test nimBLE on top of bthcisock
* [#2130](https://github.com/apache/incubator-nuttx/pull/2130) rpproxy/rpserver: force use 'CONFIG_SIM_M32' for 64bit system.
* [#2158](https://github.com/apache/incubator-nuttx/pull/2158) linux I2C bus support in sim
* [#2164](https://github.com/apache/incubator-nuttx/pull/2164) add LVGL configuration which uses the X11 framebuffer and mouse
* [#2198](https://github.com/apache/incubator-nuttx/pull/2198) support LCD emulation over X11; correctly decouple LCD/FB from X11/NX
* [#2579](https://github.com/apache/incubator-nuttx/pull/2579) make it conditional with FS_FAT
* [#2599](https://github.com/apache/incubator-nuttx/pull/2599) names: add writev/readv into name list
* [#2619](https://github.com/apache/incubator-nuttx/pull/2619) hci: reuse the reserved fields of hci buffer
* [#2690](https://github.com/apache/incubator-nuttx/pull/2690) support sim vfork
* [#2696](https://github.com/apache/incubator-nuttx/pull/2696) hcitty: add hcitty adapter
* [#2720](https://github.com/apache/incubator-nuttx/pull/2720) board/sim: Support NuttX BLE stack through uart shim driver
* [#3093](https://github.com/apache/incubator-nuttx/pull/3093) add heap policy and asan logic to support mm debug on sim platform
* [#3152](https://github.com/apache/incubator-nuttx/pull/3152) add dlsym to [nuttx-names.in](http://nuttx-names.in)
* [#3224](https://github.com/apache/incubator-nuttx/pull/3224) boards/sim: remove dsptest configuration
* [#3231](https://github.com/apache/incubator-nuttx/pull/3231) add the simulated lower-half FOC device
* [#3478](https://github.com/apache/incubator-nuttx/pull/3478) refactor signal handling
### Bug Fixes
* [#2109](https://github.com/apache/incubator-nuttx/pull/2109) Revert "arch/sim: Make the SIGUSR1 host signal use the NuttX irq logic"
* [#2246](https://github.com/apache/incubator-nuttx/pull/2246) boards/sim/sim/sim/src/sim_touchscreen.c: add missing nx_disconnect
* [#2259](https://github.com/apache/incubator-nuttx/pull/2259) boards/sim: add atexit(2) into naming list
* [#2441](https://github.com/apache/incubator-nuttx/pull/2441) sim: fix input handling and add simulated buttons support from mouse
* [#2597](https://github.com/apache/incubator-nuttx/pull/2597) Revert "board/sim: Remove the too strict warning"
* [#3176](https://github.com/apache/incubator-nuttx/pull/3176) sim: fix signal deliver calling error on sim platform
* [#3205](https://github.com/apache/incubator-nuttx/pull/3205) sim: do not exit simulator on up_assert (just let the task exit)
## Documentation
### New Features
* [#1955](https://github.com/apache/incubator-nuttx/pull/1955) Add documentation for note filters and task trace guides
* [#1959](https://github.com/apache/incubator-nuttx/pull/1959) Documentation for the Timer Driver
* [#2268](https://github.com/apache/incubator-nuttx/pull/2268) Documentation for Watchdog Timer Driver
* [#2334](https://github.com/apache/incubator-nuttx/pull/2334) [CONTRIBUTING.md](http://CONTRIBUTING.md): talk about preferred commit message format
* [#2408](https://github.com/apache/incubator-nuttx/pull/2408) Documentation: support versioned docs
* [#2543](https://github.com/apache/incubator-nuttx/pull/2543) Documentation: how to use auto monitor feature to keep the chip alive
* [#2818](https://github.com/apache/incubator-nuttx/pull/2818) Documentation: introduce hardware platforms documentation
* [#2819](https://github.com/apache/incubator-nuttx/pull/2819) Documentation: document nRF52832 Sparkfun board (improve MDK board a bit)
* [#3022](https://github.com/apache/incubator-nuttx/pull/3022) hostfs: Document the backends and restrictions
* [#3127](https://github.com/apache/incubator-nuttx/pull/3127) Documentation: add ESP32 and DevKitC docs
* [#3138](https://github.com/apache/incubator-nuttx/pull/3138) Addind CMake based C++ project example in documentation
* [#3490](https://github.com/apache/incubator-nuttx/pull/3490) Documentation/esp32: Add supported peripherals
### Improvements
* [#2021](https://github.com/apache/incubator-nuttx/pull/2021) Correct the links in Documentation folder
* [#2024](https://github.com/apache/incubator-nuttx/pull/2024) Fix broken documentation links
* [#2026](https://github.com/apache/incubator-nuttx/pull/2026) Documentation: Remove all tail spaces from *.rst and *.html
* [#2027](https://github.com/apache/incubator-nuttx/pull/2027) Documentation: Reorganize some section
* [#2031](https://github.com/apache/incubator-nuttx/pull/2031) Documentation/quickstart/debugging.rst: rewrite JTAG/OpenOCD section
* [#2045](https://github.com/apache/incubator-nuttx/pull/2045) Documentation: Misc fixups for broken links, errors, warnings
* [#2051](https://github.com/apache/incubator-nuttx/pull/2051) Documentation/quickstart/debugging: rewrite SWD sentence
* [#2106](https://github.com/apache/incubator-nuttx/pull/2106) documentation: change non-working URL
* [#2329](https://github.com/apache/incubator-nuttx/pull/2329) Documentation/components/drivers/character/pwm: fix pwm.c location
* [#2362](https://github.com/apache/incubator-nuttx/pull/2362) Documentation improvements
* [#2390](https://github.com/apache/incubator-nuttx/pull/2390) Documentation: improve debugging section
* [#2485](https://github.com/apache/incubator-nuttx/pull/2485) Documentaiton: merge quickstart to getting started
* [#2563](https://github.com/apache/incubator-nuttx/pull/2563) update Documentation/components/drivers/character/watchdog.rst
* [#3144](https://github.com/apache/incubator-nuttx/pull/3144) CI: remove linkcheck when building docs
* [#3180](https://github.com/apache/incubator-nuttx/pull/3180) documentation: improve boardctl() docs
* [#3194](https://github.com/apache/incubator-nuttx/pull/3194) Documentation: add syslog user API and other minor improvements
* [#3271](https://github.com/apache/incubator-nuttx/pull/3271) docs and comments: Update stale references to COPYING
* [#3470](https://github.com/apache/incubator-nuttx/pull/3470) Documentation: migrate ESP32 README to docs
## Driver Support
### New Driver Support
* [#1936](https://github.com/apache/incubator-nuttx/pull/1936) note: Add task trace support
* [#1989](https://github.com/apache/incubator-nuttx/pull/1989) sensors: Support fxos8700cq motion I2C sensor
* [#2091](https://github.com/apache/incubator-nuttx/pull/2091) usbdev: add Android Debug Bridge driver
* [#2166](https://github.com/apache/incubator-nuttx/pull/2166) lcd: Add LCD character driver: allows interacting with LCD directly from userspace
* [#2216](https://github.com/apache/incubator-nuttx/pull/2216) rc: support infrared remote control
* [#2282](https://github.com/apache/incubator-nuttx/pull/2282) audio: cxd56: add initial audio SRC implementation
* [#2301](https://github.com/apache/incubator-nuttx/pull/2301) analog: support for MAX1161X family of I2C 12 bit ADC chips
* [#2429](https://github.com/apache/incubator-nuttx/pull/2429) audio: add simple wm8994 codec driver
* [#2628](https://github.com/apache/incubator-nuttx/pull/2628) efuse: Add generic efuse driver for NuttX
* [#2736](https://github.com/apache/incubator-nuttx/pull/2736) console: Add generic support to LWL Console
* [#2829](https://github.com/apache/incubator-nuttx/pull/2829) sensor: add fakesensor driver
* [#3230](https://github.com/apache/incubator-nuttx/pull/3230) motor: add generic upper-half driver for Field Oriented Control (FOC)
* [#3474](https://github.com/apache/incubator-nuttx/pull/3474) sensors: Adds driver for hyt271 sensore module
### Bug Fixes
* [#2036](https://github.com/apache/incubator-nuttx/pull/2036) serial: break from read after closing
* [#2039](https://github.com/apache/incubator-nuttx/pull/2039) sensors: add unified management for sensor
* [#2070](https://github.com/apache/incubator-nuttx/pull/2070) bluetooth: support HCI/L2CAP sockets, support HCI RAW channel
* [#2139](https://github.com/apache/incubator-nuttx/pull/2139) lcd: Ssd1306 cleanup
* [#2142](https://github.com/apache/incubator-nuttx/pull/2776) note: Add task name record for task trace
* [#2146](https://github.com/apache/incubator-nuttx/pull/2146) pipes: nx_pipe syscall takes three params, also use nx_close
* [#2175](https://github.com/apache/incubator-nuttx/pull/2175) wireless: gs2200m: Check disassociation from AP and enable rejoin
* [#2188](https://github.com/apache/incubator-nuttx/pull/2200) lcd_dev: put header in correct location; fix missing const
* [#2200](https://github.com/apache/incubator-nuttx/pull/2200) lcd: Minor fixes to ssd1306 i2c driver
* [#2201](https://github.com/apache/incubator-nuttx/pull/2512) wireless: gs2200m: Add function to get IWNWID / IWFREQ / IWSENS information
* [#2208](https://github.com/apache/incubator-nuttx/pull/2208) lcd: add optional putarea()/getarea() operations
* [#2215](https://github.com/apache/incubator-nuttx/pull/2215) sensors: add new feature about sensor driver model
* [#2223](https://github.com/apache/incubator-nuttx/pull/2223) audio: cxd56: cleanup for the spresense audio implementation
* [#2315](https://github.com/apache/incubator-nuttx/pull/2370) sensors: add common circular buffer management
* [#2318](https://github.com/apache/incubator-nuttx/pull/2318) sensors: update l3gd20 sensor driver with new sensor driver model
* [#2343](https://github.com/apache/incubator-nuttx/pull/2343) serial: Prevent RX stall
* [#2345](https://github.com/apache/incubator-nuttx/pull/2345) mtd/mtd_progmem.c: fix progmem_log2 parameter type to match prototype
* [#2369](https://github.com/apache/incubator-nuttx/pull/2369) sensors: support custom types of sensor
* [#2370](https://github.com/apache/incubator-nuttx/pull/2370) rc: fix bug about lirc_read
* [#2383](https://github.com/apache/incubator-nuttx/pull/2383) USB: Do not try to print NULL format strings for verbose trace messages when disabled
* [#2398](https://github.com/apache/incubator-nuttx/pull/2398) rptun: fix rptun rpmsg_unregister_callback fault
* [#2445](https://github.com/apache/incubator-nuttx/pull/2445) audio: Make audio_null play at real speed
* [#2488](https://github.com/apache/incubator-nuttx/pull/2488) crypto/arc4random: rename getrandom to arc4random_buf
* [#2490](https://github.com/apache/incubator-nuttx/pull/3482) leds: ws2812: make frequency selection more flexible
* [#2497](https://github.com/apache/incubator-nuttx/pull/2497) crypto/random_pool.c: fix getrandom() when thread calling it gets can…
* [#2508](https://github.com/apache/incubator-nuttx/pull/2508) leds/ws2812: optimize reset bytes
* [#2512](https://github.com/apache/incubator-nuttx/pull/2488) wireless/bluetooth: change the tx thread stack size to DEFAULT_TASK_STACKSIZE
* [#2564](https://github.com/apache/incubator-nuttx/pull/2564) audio: uninitialize usermq to NULL when the device has not
* [#2571](https://github.com/apache/incubator-nuttx/pull/2571) bluetooth: Fix bt_buff lifecycle
* [#2607](https://github.com/apache/incubator-nuttx/pull/2607) wireless: bluetooth: minor fix to bluetooth stack
* [#2609](https://github.com/apache/incubator-nuttx/pull/2609) wireless: bluetooth: fix minor issue in bt uart driver
* [#2611](https://github.com/apache/incubator-nuttx/pull/2611) wireless/bluetooth: Fix vairous issues found in bt uart shim driver
* [#2617](https://github.com/apache/incubator-nuttx/pull/2617) serial: should include <signal.h> explicitly
* [#2621](https://github.com/apache/incubator-nuttx/pull/2621) syslog: Added formatted timestamps in syslog.
* [#2636](https://github.com/apache/incubator-nuttx/pull/2636) pipes: pty shouldn't call nx_pipe and then file_detach in kernel space
* [#2664](https://github.com/apache/incubator-nuttx/pull/2664) can: fix RTR ioctl and support timeout
* [#2691](https://github.com/apache/incubator-nuttx/pull/2383) wireless: bluetooth: add more hci event definitions
* [#2692](https://github.com/apache/incubator-nuttx/pull/2692) syslog: Prepend Process ID to syslog message
* [#2697](https://github.com/apache/incubator-nuttx/pull/2697) syslog: Added printing of log priority in syslog
* [#2698](https://github.com/apache/incubator-nuttx/pull/2698) syslog: Added color output to syslog.
* [#2704](https://github.com/apache/incubator-nuttx/pull/2704) wireless: bluetooth: minor fix for bluetooth driver
* [#2707](https://github.com/apache/incubator-nuttx/pull/2707) drivers: wireless: Fix ASSERT() in _read_data_len() in gs2200m.c
* [#2710](https://github.com/apache/incubator-nuttx/pull/2710) syslog: Re-arranged syslog fields.
* [#2711](https://github.com/apache/incubator-nuttx/pull/2711) sensors: bmp280: minor fixes
* [#2715](https://github.com/apache/incubator-nuttx/pull/2715) sensors: bmp280: convert to sensor interface (and minor sensor change)
* [#2738](https://github.com/apache/incubator-nuttx/pull/2738) wireless: gs2200m: Print error massages with wlerr()
* [#2747](https://github.com/apache/incubator-nuttx/pull/2747) wireless: gs2200m: Fix _read_data()
* [#2775](https://github.com/apache/incubator-nuttx/pull/2775) mtd: w25qxxxjv.c : W25Q256's sector count is 8192
* [#2776](https://github.com/apache/incubator-nuttx/pull/2776) net/encx24j600.c: Correct setting of ifstate
* [#2798](https://github.com/apache/incubator-nuttx/pull/2798) wireless: gs2200m: Change retry condition in gs2200m_hal_write()
* [#2801](https://github.com/apache/incubator-nuttx/pull/2801) mtd:w25qxxxjv.c: use different protect bits and address lengts
* [#2850](https://github.com/apache/incubator-nuttx/pull/2850) audio: Introduce a driver-specific spinlock to cxd56.c
* [#2907](https://github.com/apache/incubator-nuttx/pull/2711) sensors: driver model update
* [#2950](https://github.com/apache/incubator-nuttx/pull/2950) audio: pcm_decode: add RAW format support
* [#2961](https://github.com/apache/incubator-nuttx/pull/2961) syslog_rpmsg: fix system crash when open CONFIG_SCHED_HAVE_PARENT
* [#2989](https://github.com/apache/incubator-nuttx/pull/2989) mmcsd: Fixes race condition in event wait logic of SDMMC driver
* [#3000](https://github.com/apache/incubator-nuttx/pull/3000) sensors: fakesensor support batch
* [#3020](https://github.com/apache/incubator-nuttx/pull/3020) syslog: add option to prefix process name
* [#3047](https://github.com/apache/incubator-nuttx/pull/3047) mmcsd: Stuck in 1-bit mode, Removed CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT
* [#3050](https://github.com/apache/incubator-nuttx/pull/3050) syslog: Added support for multiple syslog channels.
* [#3110](https://github.com/apache/incubator-nuttx/pull/3110) can: Add CAN FD flags to CAN header
* [#3118](https://github.com/apache/incubator-nuttx/pull/3118) sensors: qencoder.c - Remove bad sninfo() format string
* [#3163](https://github.com/apache/incubator-nuttx/pull/3163) USBDEV: RNDIS: Fix occasional disconnections due to race condition
* [#3185](https://github.com/apache/incubator-nuttx/pull/3185) USBDEV RNDIS: Fix unaligned access caused by 4f66624
* [#3195](https://github.com/apache/incubator-nuttx/pull/3195) serial: Don't comment out ws_[x|y]pixel field from winsize struct
* [#3201](https://github.com/apache/incubator-nuttx/pull/3201) timers: rtc/rpmsg: support server and client to set time each other
* [#3214](https://github.com/apache/incubator-nuttx/pull/3214) can: Fix TX ID bits 18-20 of mcp2515 can driver
* [#3215](https://github.com/apache/incubator-nuttx/pull/3215) syslog: Drop extra carriage return from syslog calls
* [#3226](https://github.com/apache/incubator-nuttx/pull/3226) syslog: Added multi device support in syslog_device.
* [#3269](https://github.com/apache/incubator-nuttx/pull/3269) motor: Add support for motor debug messages
* [#3453](https://github.com/apache/incubator-nuttx/pull/3453) syslog: Fix in syslog_intbuffer flushing
* [#3454](https://github.com/apache/incubator-nuttx/pull/3454) syslog: Proper uninit of syslog_device.
* [#3475](https://github.com/apache/incubator-nuttx/pull/3214) input: Add INPUT_TOUCHSCREEN config
* [#3482](https://github.com/apache/incubator-nuttx/pull/3482) input: Rename config from INPUT classes
## Board Support
### New Board Support
* [#2054](https://github.com/apache/incubator-nuttx/pull/2054) configure.sh: update custom board config build support
* [#2463](https://github.com/apache/incubator-nuttx/pull/2463) boards: Added Teensy-4.x BSP
* [#2503](https://github.com/apache/incubator-nuttx/pull/2503) Re-organise ESP32 boards and introduce two more(ESP-WROVER-KIT and the ESP32-Ethernet-Kit)
* [#2506](https://github.com/apache/incubator-nuttx/pull/2506) stm32: add stm32g43x support and nucleo-g431rb board
* [#2838](https://github.com/apache/incubator-nuttx/pull/2838) Add initial support for ESP32-C3 and ESP32-C3 DevKit board
* [#2877](https://github.com/apache/incubator-nuttx/pull/2877) Support for Raspberry Pi Pico
* [#3129](https://github.com/apache/incubator-nuttx/pull/3129) boards/stm32: add initial support for b-g431b-esc1 board
* [#3217](https://github.com/apache/incubator-nuttx/pull/3217) board: Add support for nucleo-h743i2
* [#3234](https://github.com/apache/incubator-nuttx/pull/3234) boards/stm32/common: add support for IHM07M1 and IHM08M1 boards
### Boards With Significant Improvements
#### ARM
#### BL602
* [#2764](https://github.com/apache/incubator-nuttx/pull/2764) boards: bl602evb flash and debug notes
#### C906
* [#3027](https://github.com/apache/incubator-nuttx/pull/3027) board:rv64:c906:support the ELF apps
#### CXD56
* [#1939](https://github.com/apache/incubator-nuttx/pull/1939) Add cxd56xx intstack for SMP
* [#3016](https://github.com/apache/incubator-nuttx/pull/3016) spresense:rndis_smp
* [#3024](https://github.com/apache/incubator-nuttx/pull/3024) Spesense CPU activity LED support
* [#3084](https://github.com/apache/incubator-nuttx/pull/3084) cxd56_gnss: Add missing include header for cxd56_gnss.c
* [#3085](https://github.com/apache/incubator-nuttx/pull/3085) cxd56_cpu1signal: Fix an issue that gnss does not work
#### ESP32
* [#2507](https://github.com/apache/incubator-nuttx/pull/2507) boards/arm/stm32: add common and stm32f103-minimum support for WS2812
* [#2753](https://github.com/apache/incubator-nuttx/pull/2753) esp32: Enable renew for "wapi" configs
* [#2864](https://github.com/apache/incubator-nuttx/pull/2864) Add wapi_smp to test Wi-Fi in SMP mode
* [#2883](https://github.com/apache/incubator-nuttx/pull/2883) This commit implements I2C support for ESP32 (wrover kit)
* [#2888](https://github.com/apache/incubator-nuttx/pull/2888) This commit enables BMP180 suport for ESP32
* [#2971](https://github.com/apache/incubator-nuttx/pull/2971) esp32: Add board config to support MCP2515
* [#3071](https://github.com/apache/incubator-nuttx/pull/3071) ESP32: Mount TMPFS on board bring up
* [#3095](https://github.com/apache/incubator-nuttx/pull/3095) ESP32: Allow a BSS section to reside in external memory
* [#3117](https://github.com/apache/incubator-nuttx/pull/3117) xtensa/esp32: Use Polling instead of DMA for transfers below threshold
* [#3139](https://github.com/apache/incubator-nuttx/pull/3139) xtensa/esp32: Support esp32 wireless ioctl cmd
* [#3154](https://github.com/apache/incubator-nuttx/pull/3154) ESP32: Add Button support via BOOT button on GPIO0
* [#3164](https://github.com/apache/incubator-nuttx/pull/3164) xtensa/esp32: Adds oneshot timer driver.
* [#3190](https://github.com/apache/incubator-nuttx/pull/3190) risc-v/esp32c3: Support ESP32-C3 wireless ioctl cmd
* [#3192](https://github.com/apache/incubator-nuttx/pull/3192) esp32-devkitc: Make nsh the entry-point of the ostest config
* [#3211](https://github.com/apache/incubator-nuttx/pull/3211) esp32-devkitc: Add GPIO board support
* [#3270](https://github.com/apache/incubator-nuttx/pull/3270) xtensa/esp32: Refactor register access functions on SPI driver
* [#3303](https://github.com/apache/incubator-nuttx/pull/3303) esp32-devkitc: Add BMP180 sensor support
#### ESP32C3
* [#2879](https://github.com/apache/incubator-nuttx/pull/2879) risc-v/esp32c3: Enable stdio buffering for esp32c3-devkit NSH config
* [#2897](https://github.com/apache/incubator-nuttx/pull/2897) boards/esp32c3: Add tmpfs mounting when bringing up
* [#3074](https://github.com/apache/incubator-nuttx/pull/3074) esp32c3-devkit: Use nx_mount to avoid overriding errno
* [#3261](https://github.com/apache/incubator-nuttx/pull/3261) esp32-c3: Add support to RNG peripheral
#### IMX6
* [#2997](https://github.com/apache/incubator-nuttx/pull/2997) boards: sabre-6quad: Add netnsh_smp configuration
#### IMXRT
* [#2004](https://github.com/apache/incubator-nuttx/pull/2004) FlexCAN driver for i.MX RT1060 MCU
* [#2526](https://github.com/apache/incubator-nuttx/pull/2526) boards/arm/imxrt/teensy-4.x: CDC-ACM console support
* [#2588](https://github.com/apache/incubator-nuttx/pull/2588) teensy-4.x Support for ST7789 controller
#### KINETIS
* [#1969](https://github.com/apache/incubator-nuttx/pull/1969) freedom-k64f: Init PWM only if enabled
* [#1977](https://github.com/apache/incubator-nuttx/pull/1977) freedom-k64f: Support raw binary firmware format
* [#1980](https://github.com/apache/incubator-nuttx/pull/1980) freedom-k64f: Add renew DHCP client for netnsh
* [#1982](https://github.com/apache/incubator-nuttx/pull/1982) freedom-k64f: Add I2C initial support
* [#1999](https://github.com/apache/incubator-nuttx/pull/1999) freedom-k64f: Register on board sensor driver
* [#2020](https://github.com/apache/incubator-nuttx/pull/2020) freedom-k64f: Declare k64_i2cdev_initialize function
* [#2030](https://github.com/apache/incubator-nuttx/pull/2030) freedom-k64f: Fix k64_buttons.c
* [#2037](https://github.com/apache/incubator-nuttx/pull/2037) freedom-k64f: Add demo configuration
* [#2047](https://github.com/apache/incubator-nuttx/pull/2047) freedom-k64f: Add I2C to demo image
* [#2847](https://github.com/apache/incubator-nuttx/pull/2847) board/freedom-k64f: Add usbdev support with cdcacm example
#### LPC17XX_40XX
* [#3239](https://github.com/apache/incubator-nuttx/pull/3239) board/arm/lpc17xx_40xx/mbed: Add userleds driver support
#### NRF52
* [#2706](https://github.com/apache/incubator-nuttx/pull/2706) board/nrf52-feather: Add simple i2c test configuration
#### RP2040
* [#2884](https://github.com/apache/incubator-nuttx/pull/2884) Update raspi-pico
* [#2894](https://github.com/apache/incubator-nuttx/pull/2894) boards: raspberrypi-pico: Add nshsram defconfig for SRAM build
* [#3014](https://github.com/apache/incubator-nuttx/pull/3014) BMP180 sensor support to RP2040
* [#3021](https://github.com/apache/incubator-nuttx/pull/3021) add INA219 support
* [#3030](https://github.com/apache/incubator-nuttx/pull/3030) boards/raspberrypi-pico: Support ENC28J60 SPI ethernet board
* [#3067](https://github.com/apache/incubator-nuttx/pull/3067) boards/raspberrypi-pico: Pico Display Pack (ST7789 LCD) support
#### SAM34
* [#2464](https://github.com/apache/incubator-nuttx/pull/2464) Added: MT29F2G Nand Flash block driver for sam4s-xplained-pro
#### STM32
* [#2433](https://github.com/apache/incubator-nuttx/pull/2433) Add 2.4 Inch TFT LCD Shield ILI9341 for nucleo-l152re, 8080 MCU 8-bit
* [#2505](https://github.com/apache/incubator-nuttx/pull/2505) boards/arm/stm32/stm32f103-minimum: cleanup
* [#3053](https://github.com/apache/incubator-nuttx/pull/3053) Nucleo-F446RE: added support for CAN driver
* [#3064](https://github.com/apache/incubator-nuttx/pull/3064) boards: refactor for nucleo-f446re and nucleo-f302r8 boards
* [#3097](https://github.com/apache/incubator-nuttx/pull/3097) Add configuration for testing the Sporadic Scheduler.
* [#3222](https://github.com/apache/incubator-nuttx/pull/3222) stm32/stm32_serial: add support for TX DMA and some improvements
* [#3223](https://github.com/apache/incubator-nuttx/pull/3223) stm32/stm32_pwm: add interfaces to access RCR register and TRGO
* [#3225](https://github.com/apache/incubator-nuttx/pull/3225) stm32/stm32_adc: various improvements for ADC
* [#3232](https://github.com/apache/incubator-nuttx/pull/3232) stm32/stm32_foc.c: add the lower-half FOC device support
#### STM32F4
* [#2553](https://github.com/apache/incubator-nuttx/pull/2553) boards: stm32f4discovery: Add adb configuration
* [#2699](https://github.com/apache/incubator-nuttx/pull/2699) boards/stm32f4discovery: Add a LWL board profile and improve the README.txt
* [#3052](https://github.com/apache/incubator-nuttx/pull/3052) Add support to LCD ST7789 on STM32F4Discovery
* [#3056](https://github.com/apache/incubator-nuttx/pull/3056) Add LCD1602 Backpack to common board
#### STM32F7
* [#3218](https://github.com/apache/incubator-nuttx/pull/3218) Integration of pysimCoder with NUTTX
#### STM32H7
* [#2353](https://github.com/apache/incubator-nuttx/pull/2353) Fix of the OTG FS HOST for nucleo-h743zi
#### STM32L4
* [#2009](https://github.com/apache/incubator-nuttx/pull/2842) Added STM32L432KC DAC support
* [#2837](https://github.com/apache/incubator-nuttx/pull/2837) Add missing I2C3 support on nucleo-l432kc board
* [#2842](https://github.com/apache/incubator-nuttx/pull/2842) board: nucleo-l432kc: Add missing i2c_master_s definition
#### TIVA
* [#2684](https://github.com/apache/incubator-nuttx/pull/2684) boards: lm3s6965-ek: Add iperf to discover/defconfig
#### XTENSA
### **Minor Board Changes**
* [#2558](https://github.com/apache/incubator-nuttx/pull/2558) boards: Remove CINCPATH and CXXINCPATH
#### ARM
* [#2079](https://github.com/apache/incubator-nuttx/pull/2079) Stm32 oled fixes pr
* [#2360](https://github.com/apache/incubator-nuttx/pull/2360) stm32/stm32ldiscovery: modernize board init little bit
* [#2500](https://github.com/apache/incubator-nuttx/pull/2500) stm32/common: devpath not long enough for apa102 and veml6070
#### CXD56
* [#2193](https://github.com/apache/incubator-nuttx/pull/2193) cxd56xx: Remove HOSTCC and HOSTCFLAGS from Make.defs
#### Xtensa
* [#2127](https://github.com/apache/incubator-nuttx/pull/2127) esp32: Added Userled support
* [#2802](https://github.com/apache/incubator-nuttx/pull/2802) ESP32: Refactor of POSTBUILD action
* [#3263](https://github.com/apache/incubator-nuttx/pull/3263) esp32: Move the WLAN initialisation to the common directory.
* [#3288](https://github.com/apache/incubator-nuttx/pull/3288) esp32-wrover-kit: Don't use User GPIO Subsystem to control LED
* [#3442](https://github.com/apache/incubator-nuttx/pull/3442) esp32 boards: BUTTON_BOOT should use PULLUP instead PULLDOWN
## File System
### Significant Improvements
* [#2598](https://github.com/apache/incubator-nuttx/pull/2598) fs/epoll: add asynchronous epoll control support
* [#2841](https://github.com/apache/incubator-nuttx/pull/2841) fs: procfs meminfo improvements
* [#2957](https://github.com/apache/incubator-nuttx/pull/2957) fs: mqueue: add poll support
* [#3045](https://github.com/apache/incubator-nuttx/pull/3045) fs: Allocate file/socket dynamically
* [#3212](https://github.com/apache/incubator-nuttx/pull/3212) fs/lfs: Update version to 2.4.0
### Bug Fixes
* [#2073](https://github.com/apache/incubator-nuttx/pull/2073) fs: epoll_create: modify return value for epoll_create1
* [#2260](https://github.com/apache/incubator-nuttx/pull/2260) fs: eventfd: remove the unique minor limit
* [#2317](https://github.com/apache/incubator-nuttx/pull/2317) fs: flashback to release all file descriptors in group to increase debugging time.
* [#2339](https://github.com/apache/incubator-nuttx/pull/2339) Revert "fs/nxffs: Fix scan good block slowly and scan an invalid block"
* [#2532](https://github.com/apache/incubator-nuttx/pull/2532) fs/unionfs: remove excessive protection to avoid deadlock
* [#2540](https://github.com/apache/incubator-nuttx/pull/2540) fs: Skip call fs_checkfd if fd < 3 in fs_fdopen
* [#2572](https://github.com/apache/incubator-nuttx/pull/2572) fs: spiffs fixes
* [#2606](https://github.com/apache/incubator-nuttx/pull/2606) fs: Fix inode lock at umount2
* [#2618](https://github.com/apache/incubator-nuttx/pull/2618) fs: remove INODE_IS_SPECIAL() use INODE_IS_PSEUDODIR instead
* [#2638](https://github.com/apache/incubator-nuttx/pull/2618) fs: fs_dupfd2 should return OK if fd1 equals fd2
* [#2639](https://github.com/apache/incubator-nuttx/pull/2639) fs: Let files_allocate return -EMFILE instead ERROR
* [#2640](https://github.com/apache/incubator-nuttx/pull/2640) fs: Remove _files_close and reuse file_close
* [#2643](https://github.com/apache/incubator-nuttx/pull/2643) fs: Fix the race condition in file_dup
* [#2648](https://github.com/apache/incubator-nuttx/pull/2648) fs: Remove the special hack for pty in nx_vopen
* [#2660](https://github.com/apache/incubator-nuttx/pull/2660) fs: Reimplement file_open to not depend on nx_open
* [#2661](https://github.com/apache/incubator-nuttx/pull/2661) fs: file_dup2 shouldn't hold the file list lock
* [#2662](https://github.com/apache/incubator-nuttx/pull/2662) fs/inode/fs_files.c: fix DEBUGASSERT in romfs
* [#2667](https://github.com/apache/incubator-nuttx/pull/2667) fs: Make nx_vxxx and file_vxxx as internal functions
* [#2724](https://github.com/apache/incubator-nuttx/pull/2724) fs/tmpfs: Iterate the entry reversely in readdir
* [#2739](https://github.com/apache/incubator-nuttx/pull/2739) fs/readdir: Must reserve a byte for the NUL terminator
* [#2810](https://github.com/apache/incubator-nuttx/pull/2810) fs: eventfd: Convert the indent under EVENT_FD_VFS_PATH option to tab
* [#2852](https://github.com/apache/incubator-nuttx/pull/2852) fs: Merge fs_poll into poll_fdsetup
* [#2854](https://github.com/apache/incubator-nuttx/pull/2854) fs: Don't call _NX_SETERRNO in fopen and fdopen
* [#2861](https://github.com/apache/incubator-nuttx/pull/2861) fs: change geometry sizes from size_t to uint32_t
* [#2913](https://github.com/apache/incubator-nuttx/pull/2913) fs/lfs: lfs_file_sync() when littlefs_open
* [#2956](https://github.com/apache/incubator-nuttx/pull/2956) fs/mount: fix mount cmd break out when meet stat error
* [#3042](https://github.com/apache/incubator-nuttx/pull/3042) fs: vfs : Do some adjustments for epoll
* [#3060](https://github.com/apache/incubator-nuttx/pull/3060) fs: find_blockdriver: Don't ferr() on MTDs
* [#3069](https://github.com/apache/incubator-nuttx/pull/3069) fs/mmap: Clarify MAP_PRIVATE dependency on CONFIG_FS_RAMMAP
* [#3070](https://github.com/apache/incubator-nuttx/pull/3070) fs/mmap: Return EACCES for incompatible file descriptors
* [#3105](https://github.com/apache/incubator-nuttx/pull/3105) fs/epoll: correct the return value of epoll_ctl(2)
* [#3137](https://github.com/apache/incubator-nuttx/pull/3137) fs/littlefs: Suppport the duplication function
* [#3444](https://github.com/apache/incubator-nuttx/pull/3444) fs/romfs: fix open zero-byte file fail issue
* [#3491](https://github.com/apache/incubator-nuttx/pull/3491) fs: vfs: adjust the error code of write to be consistent with read
## Networking
### Significant Improvements
* [#2414](https://github.com/apache/incubator-nuttx/pull/2414) net: tcp: implement the fast retransmit
* [#2415](https://github.com/apache/incubator-nuttx/pull/2415) net: gmp: add MULTICAST_TTL support
* [#2417](https://github.com/apache/incubator-nuttx/pull/2417) net: wireless: add country code control support
* [#2548](https://github.com/apache/incubator-nuttx/pull/2548) net: tcp: optimize TCP handshake performance
* [#2695](https://github.com/apache/incubator-nuttx/pull/2695) netpacket: if_addr: add interface address header
* [#2899](https://github.com/apache/incubator-nuttx/pull/2899) net: socket: Unify socket into file system to avoid the code duplication
* [#2964](https://github.com/apache/incubator-nuttx/pull/2964) net: socket_rpmsg: add socket rpmsg support
* [#3025](https://github.com/apache/incubator-nuttx/pull/3025) net: Add sendmsg and recvmsg to syscall list
* [#3081](https://github.com/apache/incubator-nuttx/pull/3081) tcp_send_buffered.c: improve tcp write buffering
* [#3113](https://github.com/apache/incubator-nuttx/pull/3113) net: usrsock: add send multi-elements support
* [#3257](https://github.com/apache/incubator-nuttx/pull/3257) net: tcp: support bind the same port with different domain
### Bug Fixes
* [#1589](https://github.com/apache/incubator-nuttx/pull/1589) net: tcp: fix tcp socket close timeout if loss wireless connection
* [#2075](https://github.com/apache/incubator-nuttx/pull/2075) net: TCP-stack fix for stalled tcp sockets due to broken keepalive
* [#2121](https://github.com/apache/incubator-nuttx/pull/2121) net: devif: devif_callback.c: remove harmful debug check
* [#2257](https://github.com/apache/incubator-nuttx/pull/2257) net: callback: remove the assert check of conn instance
* [#2332](https://github.com/apache/incubator-nuttx/pull/2332) net/tcp: Rectified keepalive fix
* [#2412](https://github.com/apache/incubator-nuttx/pull/2413) net/icmp: add sanity check to avoid wild data length
* [#2413](https://github.com/apache/incubator-nuttx/pull/2413) net/tcp: correct the available iobs count if throttle is enabled
* [#2416](https://github.com/apache/incubator-nuttx/pull/2416) net/tcp: fallback to unthrottle pool to avoid deadlock
* [#2421](https://github.com/apache/incubator-nuttx/pull/2421) net/neighbor/neighbor_ethernet_out.c: fix build error without ICMPv6
* [#2465](https://github.com/apache/incubator-nuttx/pull/2465) net/procfs: handle opendir("/proc/net/") correctly
* [#2466](https://github.com/apache/incubator-nuttx/pull/2466) net/igmp: add sanity check to handle allocate fail
* [#2467](https://github.com/apache/incubator-nuttx/pull/2467) net/sockopt: Try usrsock further if the protocol not available
* [#2489](https://github.com/apache/incubator-nuttx/pull/2489) net: tcp: send the ACK in time after obtain ahead buffer from iobs
* [#2688](https://github.com/apache/incubator-nuttx/pull/2688) net: Remove duplicate forward references
* [#2774](https://github.com/apache/incubator-nuttx/pull/2774) net/ip: do not drop the udp packet from IP layer
* [#2811](https://github.com/apache/incubator-nuttx/pull/2811) net/local: Add an option to specify the prefix of named pipe
* [#2869](https://github.com/apache/incubator-nuttx/pull/2869) netdb.h: Add NI_MAXHOST and NI_MAXSERV
* [#2911](https://github.com/apache/incubator-nuttx/pull/2911) net: fix a few DP83848C and DP83825I constants
* [#2959](https://github.com/apache/incubator-nuttx/pull/2959) net: socket: move si_send/recv into sendmsg/recvmsg
* [#2978](https://github.com/apache/incubator-nuttx/pull/2978) telnet: fix crash about telnet client connect
* [#3037](https://github.com/apache/incubator-nuttx/pull/3037) Revert "net: tcp: Add DEBUGASSERT() in psock_tcp_send()"
* [#3043](https://github.com/apache/incubator-nuttx/pull/3043) net: local: Remove local_send.c since nobody use it now
* [#3044](https://github.com/apache/incubator-nuttx/pull/3044) net: fix local_sendmsg return length
* [#3062](https://github.com/apache/incubator-nuttx/pull/3062) net: tcp_sendfile.c: Remove an unused copy of CONFIG_NET_TCP_SPLIT_SIZE
* [#3099](https://github.com/apache/incubator-nuttx/pull/3099) net: tcp: dup: do not start the tcp monitor if unestablished
* [#3100](https://github.com/apache/incubator-nuttx/pull/3100) net: tcp: correct the port byte order
* [#3101](https://github.com/apache/incubator-nuttx/pull/3101) net: arp: add timeout to avoid infinite send wait
* [#3103](https://github.com/apache/incubator-nuttx/pull/3103) net: tcp: reset the connection ref count before tcp_free()
* [#3104](https://github.com/apache/incubator-nuttx/pull/3104) net: dev: check the available address further
* [#3106](https://github.com/apache/incubator-nuttx/pull/3106) net: if: remove the macro expansion of the public structure
* [#3221](https://github.com/apache/incubator-nuttx/pull/3221) net: tcp: tcp_send_buffered.c: Fix non-blocking I/O
* [#3254](https://github.com/apache/incubator-nuttx/pull/3254) net: arp: Fix arp
* [#3319](https://github.com/apache/incubator-nuttx/pull/3319) tcp_netpoll.c: Fix a performance issue with CONFIG_NET_TCP_WRITE_BUFFERS
# Security Issues Fixed In This Release
# Compatibility Concerns
## Changes to Build System
### Change CFLAGS, CPPFLAGS, CXXFLAGS, and AFLAGS from Recursive to Simple Assignment
[PR-1890](https://github.com/apache/incubator-nuttx/pull/1890)
(commit [2caf3a69e3d60ec550980f7ba897c732e7a39df7](https://github.com/apache/incubator-nuttx/pull/1890/commits/2caf3a69e3d60ec550980f7ba897c732e7a39df7))
attempts to speed up compilation time for concurrent builds by changing
assignment to makefile variables `*CFLAGS*`, `*CPPFLAGS*`, `*CXXFLAGS*`, and
`*AFLAGS*` from recursive `=` to simple `:=`. This causes these compile
options to be expanded only once during the build.
If you are using NuttX on a custom board not in the NuttX repository, you may
want to make a similar change to your `Make.defs` files. Change these
recursive assignments:
```
CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
AFLAGS = $(CFLAGS) -D__ASSEMBLY__
```
to simple assignments:
```
CFLAGS := $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
AFLAGS := $(CFLAGS) -D__ASSEMBLY__
```
### Not Necessary to Define `__NuttX__` in Make.defs
[PR-2192](https://github.com/apache/incubator-nuttx/pull/2192)
(commit [9208176f600d0d04446531909bf05710716a5ee4](https://github.com/apache/incubator-nuttx/commit/9208176f600d0d04446531909bf05710716a5ee4))
refactors definition of the `__NuttX__` preprocessor symbol to
`tools/Config.mk`, so it is no longer necessary to define it in each board's
`Make.defs` file.
If you are using NuttX on a custom board not in the NuttX repository, you may
want to make a similar change to your Make.defs files.
Remove lines like this:
```
ARCHDEFINES = -D__NuttX__
```
Or remove -D__NuttX__ from lines like this:
```
CXXFLAGS += $(ARCHDEFINES) $(EXTRAFLAGS) -pipe -std=c++11 -D__NuttX__
```

View file

@ -85,7 +85,7 @@ exception_common:
mv a1, sp /* context = sp */
#if CONFIG_ARCH_INTERRUPTSTACK > 3
#if CONFIG_ARCH_INTERRUPTSTACK > 15
/* Switch to interrupt stack */
lui sp, %hi(g_intstackbase)
@ -150,17 +150,17 @@ exception_common:
* Name: g_intstackalloc and g_intstackbase
************************************************************************************/
#if CONFIG_ARCH_INTERRUPTSTACK > 3
#if CONFIG_ARCH_INTERRUPTSTACK > 15
.bss
.align 4
.balign 16
.global g_intstackalloc
.global g_intstackbase
.type g_intstackalloc, object
.type g_intstackbase, object
g_intstackalloc:
.skip ((CONFIG_ARCH_INTERRUPTSTACK & ~3))
.skip ((CONFIG_ARCH_INTERRUPTSTACK + 8) & ~15)
g_intstackbase:
.skip 4
.size g_intstackbase, 4
.size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~3)
.size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~15)
#endif

View file

@ -78,10 +78,10 @@ void up_irqinitialize(void)
up_irq_save();
#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 3
#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15
/* Colorize the interrupt stack for debug purposes */
size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~3);
size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~15);
riscv_stack_color((FAR void *)((uintptr_t)&g_intstackbase - intstack_size),
intstack_size);
#endif

View file

@ -191,7 +191,7 @@ exception_common:
mv a1, sp /* context = sp */
#if CONFIG_ARCH_INTERRUPTSTACK > 3
#if CONFIG_ARCH_INTERRUPTSTACK > 15
/* Load mhartid (cpuid) */
csrr s0, mhartid
@ -203,7 +203,7 @@ exception_common:
j 4f
3:
la sp, g_intstackbase
addi sp, sp, -((CONFIG_ARCH_INTERRUPTSTACK) & ~7)
addi sp, sp, -((CONFIG_ARCH_INTERRUPTSTACK) & ~15)
4:
#endif
@ -264,17 +264,17 @@ exception_common:
* Name: g_intstackalloc and g_intstackbase
************************************************************************************/
#if CONFIG_ARCH_INTERRUPTSTACK > 7
#if CONFIG_ARCH_INTERRUPTSTACK > 15
.bss
.align 8
.balign 16
.global g_intstackalloc
.global g_intstackbase
.type g_intstackalloc, object
.type g_intstackbase, object
g_intstackalloc:
.skip (((CONFIG_ARCH_INTERRUPTSTACK * 2) & ~7))
.skip ((CONFIG_ARCH_INTERRUPTSTACK + 8) & ~15)
g_intstackbase:
.skip 8
.size g_intstackbase, 8
.size g_intstackalloc, ((CONFIG_ARCH_INTERRUPTSTACK * 2) & ~7)
.size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~15)
#endif

View file

@ -72,8 +72,8 @@ void up_irqinitialize(void)
/* Colorize the interrupt stack for debug purposes */
#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 7
size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~7);
#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15
size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~15);
riscv_stack_color((FAR void *)((uintptr_t)&g_intstackbase - intstack_size),
intstack_size);
#endif

View file

@ -191,17 +191,17 @@ ssize_t up_check_stack_remain(void)
return up_check_tcbstack_remain(this_task());
}
#if CONFIG_ARCH_INTERRUPTSTACK > 3
#if CONFIG_ARCH_INTERRUPTSTACK > 15
size_t up_check_intstack(void)
{
return do_stackcheck((uintptr_t)&g_intstackalloc,
(CONFIG_ARCH_INTERRUPTSTACK & ~3),
(CONFIG_ARCH_INTERRUPTSTACK & ~15),
true);
}
size_t up_check_intstack_remain(void)
{
return (CONFIG_ARCH_INTERRUPTSTACK & ~3) - up_check_intstack();
return (CONFIG_ARCH_INTERRUPTSTACK & ~15) - up_check_intstack();
}
#endif

View file

@ -42,20 +42,13 @@
* Pre-processor Macros
****************************************************************************/
/* RISC-V requires at least a 4-byte stack alignment.
* For floating point use, however, the stack must be aligned to 8-byte
* addresses.
*/
/* RISC-V requires a 16-byte stack alignment. */
#if defined(CONFIG_LIBC_FLOATINGPOINT) || defined (CONFIG_ARCH_RV64GC)
# define STACK_ALIGNMENT 8
#else
# define STACK_ALIGNMENT 4
#endif
#define STACK_ALIGNMENT 16
/* Stack alignment macros */
#define STACK_ALIGN_MASK (STACK_ALIGNMENT-1)
#define STACK_ALIGN_MASK (STACK_ALIGNMENT - 1)
#define STACK_ALIGN_DOWN(a) ((a) & ~STACK_ALIGN_MASK)
#define STACK_ALIGN_UP(a) (((a) + STACK_ALIGN_MASK) & ~STACK_ALIGN_MASK)

View file

@ -53,13 +53,13 @@
*
****************************************************************************/
#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 3
#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15
static inline void up_color_intstack(void)
{
uint32_t *ptr = (uint32_t *)&g_intstackalloc;
ssize_t size;
for (size = (CONFIG_ARCH_INTERRUPTSTACK & ~3);
for (size = (CONFIG_ARCH_INTERRUPTSTACK & ~15);
size > 0;
size -= sizeof(uint32_t))
{

View file

@ -133,7 +133,7 @@ EXTERN uint32_t g_idle_topstack;
/* Address of the saved user stack pointer */
#if CONFIG_ARCH_INTERRUPTSTACK > 3
#if CONFIG_ARCH_INTERRUPTSTACK > 15
EXTERN uint32_t g_intstackalloc; /* Allocated stack base */
EXTERN uint32_t g_intstackbase; /* Initial top of interrupt stack */
#endif

View file

@ -37,20 +37,13 @@
* Pre-processor Macros
****************************************************************************/
/* RISC-V requires at least a 4-byte stack alignment.
* For floating point use, however, the stack must be aligned to 8-byte
* addresses.
*/
/* RISC-V requires a 16-byte stack alignment. */
#if defined(CONFIG_LIBC_FLOATINGPOINT) || defined (CONFIG_ARCH_RV64GC)
# define STACK_ALIGNMENT 8
#else
# define STACK_ALIGNMENT 4
#endif
#define STACK_ALIGNMENT 16
/* Stack alignment macros */
#define STACK_ALIGN_MASK (STACK_ALIGNMENT-1)
#define STACK_ALIGN_MASK (STACK_ALIGNMENT - 1)
#define STACK_ALIGN_DOWN(a) ((a) & ~STACK_ALIGN_MASK)
#define STACK_ALIGN_UP(a) (((a) + STACK_ALIGN_MASK) & ~STACK_ALIGN_MASK)

View file

@ -39,20 +39,13 @@
* Pre-processor Definitions
****************************************************************************/
/* RISC-V requires at least a 4-byte stack alignment.
* For floating point use, however, the stack must be aligned to 8-byte
* addresses.
*/
/* RISC-V requires a 16-byte stack alignment. */
#if defined(CONFIG_LIBC_FLOATINGPOINT) || defined (CONFIG_ARCH_RV64GC)
# define STACK_ALIGNMENT 8
#else
# define STACK_ALIGNMENT 4
#endif
#define STACK_ALIGNMENT 16
/* Stack alignment macros */
#define STACK_ALIGN_MASK (STACK_ALIGNMENT-1)
#define STACK_ALIGN_MASK (STACK_ALIGNMENT - 1)
#define STACK_ALIGN_DOWN(a) ((a) & ~STACK_ALIGN_MASK)
#define STACK_ALIGN_UP(a) (((a) + STACK_ALIGN_MASK) & ~STACK_ALIGN_MASK)

View file

@ -34,6 +34,8 @@
#include "esp32c3.h"
#include "hardware/esp32c3_rom_layout.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
@ -64,12 +66,13 @@ void up_allocate_heap(FAR void **heap_start, size_t *heap_size)
*/
extern uint8_t *_sheap;
extern uint8_t *_eheap;
extern const struct esp32c3_rom_layout_s *ets_rom_layout_p;
board_autoled_on(LED_HEAPALLOCATE);
*heap_start = (FAR void *)&_sheap;
*heap_size = (size_t)((uintptr_t)&_eheap - (uintptr_t)&_sheap);
*heap_size = (size_t)(ets_rom_layout_p->dram0_rtos_reserved_start -
(uintptr_t)&_sheap);
}
/****************************************************************************

View file

@ -43,13 +43,13 @@
.section .noinit
#if CONFIG_ARCH_INTERRUPTSTACK > 15
.align 4
.balign 16
.type g_intstackalloc, @object
.type g_intstackbase, @object
g_intstackalloc:
.skip CONFIG_ARCH_INTERRUPTSTACK
.skip ((CONFIG_ARCH_INTERRUPTSTACK + 8) & ~15)
g_intstackbase:
.size g_intstackalloc, CONFIG_ARCH_INTERRUPTSTACK
.size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~15)
#endif
/****************************************************************************

View file

@ -0,0 +1,94 @@
/****************************************************************************
* arch/risc-v/src/esp32c3/hardware/esp32c3_rom_layout.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_ROM_LAYOUT_H
#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_ROM_LAYOUT_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <stdint.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/* Structure and functions for returning ROM global layout
*
* This is for address symbols defined in the linker script,
* which may change during ECOs.
*/
struct esp32c3_rom_layout_s
{
uintptr_t dram0_stack_shared_mem_start;
uintptr_t dram0_rtos_reserved_start;
uintptr_t stack_sentry;
uintptr_t stack;
uintptr_t stack_sentry_app;
uintptr_t stack_app;
/* BTDM data */
uintptr_t data_start_btdm;
uintptr_t data_end_btdm;
uintptr_t bss_start_btdm;
uintptr_t bss_end_btdm;
uintptr_t data_start_btdm_rom;
uintptr_t data_end_btdm_rom;
uintptr_t data_start_interface_btdm;
uintptr_t data_end_interface_btdm;
uintptr_t bss_start_interface_btdm;
uintptr_t bss_end_interface_btdm;
/* PHY data */
uintptr_t dram_start_phyrom;
uintptr_t dram_end_phyrom;
/* Wi-Fi data */
uintptr_t dram_start_coexist;
uintptr_t dram_end_coexist;
uintptr_t dram_start_net80211;
uintptr_t dram_end_net80211;
uintptr_t dram_start_pp;
uintptr_t dram_end_pp;
uintptr_t data_start_interface_coexist;
uintptr_t data_end_interface_coexist;
uintptr_t bss_start_interface_coexist;
uintptr_t bss_end_interface_coexist;
uintptr_t data_start_interface_net80211;
uintptr_t data_end_interface_net80211;
uintptr_t bss_start_interface_net80211;
uintptr_t bss_end_interface_net80211;
uintptr_t data_start_interface_pp;
uintptr_t data_end_interface_pp;
uintptr_t bss_start_interface_pp;
uintptr_t bss_end_interface_pp;
uintptr_t dram_start_usbdev_rom;
uintptr_t dram_end_usbdev_rom;
uintptr_t dram_start_uart_rom;
uintptr_t dram_end_uart_rom;
};
#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_ROM_LAYOUT_H */

View file

@ -126,7 +126,7 @@ exception_common:
mv a1, sp /* context = sp */
#if CONFIG_ARCH_INTERRUPTSTACK > 3
#if CONFIG_ARCH_INTERRUPTSTACK > 15
/* Switch to interrupt stack */
lui sp, %hi(g_intstackbase)
@ -188,17 +188,17 @@ exception_common:
* Name: g_intstackalloc and g_intstackbase
************************************************************************************/
#if CONFIG_ARCH_INTERRUPTSTACK > 3
#if CONFIG_ARCH_INTERRUPTSTACK > 15
.bss
.align 4
.balign 16
.global g_intstackalloc
.global g_intstackbase
.type g_intstackalloc, object
.type g_intstackbase, object
g_intstackalloc:
.skip ((CONFIG_ARCH_INTERRUPTSTACK & ~3))
.skip ((CONFIG_ARCH_INTERRUPTSTACK + 8) & ~15)
g_intstackbase:
.skip 4
.size g_intstackbase, 4
.size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~3)
.size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~15)
#endif

View file

@ -59,8 +59,8 @@ void up_irqinitialize(void)
/* Colorize the interrupt stack for debug purposes */
#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 3
size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~3);
#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15
size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~15);
riscv_stack_color((FAR void *)((uintptr_t)&g_intstackbase - intstack_size),
intstack_size);
#endif

View file

@ -143,7 +143,7 @@ normal_irq:
mv a1, sp /* context = sp */
#if CONFIG_ARCH_INTERRUPTSTACK > 3
#if CONFIG_ARCH_INTERRUPTSTACK > 15
/* Load mhartid (cpuid) */
csrr s0, mhartid
@ -155,7 +155,7 @@ normal_irq:
j 4f
3:
la sp, g_intstackbase
addi sp, sp, -((CONFIG_ARCH_INTERRUPTSTACK) & ~7)
addi sp, sp, -((CONFIG_ARCH_INTERRUPTSTACK) & ~15)
4:
#endif
@ -215,17 +215,25 @@ normal_irq:
* Name: g_intstackalloc and g_intstackbase
************************************************************************************/
#if CONFIG_ARCH_INTERRUPTSTACK > 7
#if CONFIG_ARCH_INTERRUPTSTACK > 15
.bss
.align 8
.balign 16
.global g_intstackalloc
.global g_intstackbase
.type g_intstackalloc, object
.type g_intstackbase, object
g_intstackalloc:
.skip (((CONFIG_ARCH_INTERRUPTSTACK * 2) & ~7))
#ifndef CONFIG_SMP
.skip ((CONFIG_ARCH_INTERRUPTSTACK + 8) & ~15)
#else
.skip (((CONFIG_ARCH_INTERRUPTSTACK * CONFIG_SMP_NCPUS) + 8) & ~15)
#endif
g_intstackbase:
.skip 8
.size g_intstackbase, 8
.size g_intstackalloc, ((CONFIG_ARCH_INTERRUPTSTACK * 2) & ~7)
#ifndef CONFIG_SMP
.size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~15)
#else
.size g_intstackalloc, ((CONFIG_ARCH_INTERRUPTSTACK * CONFIG_SMP_NCPUS) & ~15)
#endif
#endif

View file

@ -80,8 +80,13 @@ void up_irqinitialize(void)
/* Colorize the interrupt stack for debug purposes */
#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 7
size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~7);
#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15
size_t intstack_size = 0;
#ifndef CONFIG_SMP
intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~15);
#else
intstack_size = ((CONFIG_ARCH_INTERRUPTSTACK * CONFIG_SMP_NCPUS) & ~15);
#endif
riscv_stack_color((FAR void *)((uintptr_t)&g_intstackbase - intstack_size),
intstack_size);
#endif

View file

@ -126,7 +126,7 @@ exception_common:
mv a1, sp /* context = sp */
#if CONFIG_ARCH_INTERRUPTSTACK > 3
#if CONFIG_ARCH_INTERRUPTSTACK > 15
/* Switch to interrupt stack */
lui sp, %hi(g_intstackbase)
@ -188,17 +188,17 @@ exception_common:
* Name: g_intstackalloc and g_intstackbase
************************************************************************************/
#if CONFIG_ARCH_INTERRUPTSTACK > 3
#if CONFIG_ARCH_INTERRUPTSTACK > 15
.bss
.align 4
.balign 16
.global g_intstackalloc
.global g_intstackbase
.type g_intstackalloc, object
.type g_intstackbase, object
g_intstackalloc:
.skip ((CONFIG_ARCH_INTERRUPTSTACK & ~3))
.skip ((CONFIG_ARCH_INTERRUPTSTACK + 8) & ~15)
g_intstackbase:
.skip 4
.size g_intstackbase, 4
.size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~3)
.size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~15)
#endif

View file

@ -58,8 +58,8 @@ void up_irqinitialize(void)
/* Colorize the interrupt stack for debug purposes */
#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 3
size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~3);
#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15
size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~15);
riscv_stack_color((FAR void *)((uintptr_t)&g_intstackbase - intstack_size),
intstack_size);
#endif

View file

@ -173,7 +173,7 @@ static void riscv_dumpstate(void)
uint32_t sp = riscv_getsp();
uint32_t ustackbase;
uint32_t ustacksize;
#if CONFIG_ARCH_INTERRUPTSTACK > 3
#if CONFIG_ARCH_INTERRUPTSTACK > 15
uint32_t istackbase;
uint32_t istacksize;
#endif
@ -189,9 +189,9 @@ static void riscv_dumpstate(void)
/* Get the limits on the interrupt stack memory */
#if CONFIG_ARCH_INTERRUPTSTACK > 3
#if CONFIG_ARCH_INTERRUPTSTACK > 15
istackbase = (uint32_t)&g_intstackbase;
istacksize = (CONFIG_ARCH_INTERRUPTSTACK & ~3) - 4;
istacksize = (CONFIG_ARCH_INTERRUPTSTACK & ~15) - 4;
/* Show interrupt stack info */

View file

@ -41,10 +41,6 @@
* Pre-processor Definitions
****************************************************************************/
#ifndef CONFIG_STACK_ALIGNMENT
# define CONFIG_STACK_ALIGNMENT 4
#endif
/****************************************************************************
* Private Functions
****************************************************************************/

View file

@ -184,7 +184,7 @@ static void up_dumpstate(void)
uint64_t sp = riscv_getsp();
uintptr_t ustackbase;
uintptr_t ustacksize;
#if CONFIG_ARCH_INTERRUPTSTACK > 7
#if CONFIG_ARCH_INTERRUPTSTACK > 15
uintptr_t istackbase;
uintptr_t istacksize;
#endif
@ -200,9 +200,9 @@ static void up_dumpstate(void)
/* Get the limits on the interrupt stack memory */
#if CONFIG_ARCH_INTERRUPTSTACK > 7
#if CONFIG_ARCH_INTERRUPTSTACK > 15
istackbase = (uintptr_t)&g_intstackbase;
istacksize = (CONFIG_ARCH_INTERRUPTSTACK & ~7) - 8;
istacksize = (CONFIG_ARCH_INTERRUPTSTACK & ~15) - 8;
/* Show interrupt stack info */

View file

@ -1802,8 +1802,10 @@ static int32_t esp_task_create_pinned_to_core(void *entry,
(char * const *)param);
if (pid > 0)
{
*((int *)task_handle) = pid;
if (task_handle != NULL)
{
*((int *)task_handle) = pid;
}
#ifdef CONFIG_SMP
if (core_id < CONFIG_SMP_NCPUS)
{

View file

@ -47,6 +47,20 @@
#define SPI_TX_MAXSIZE (CONFIG_CXD56_DMAC_SPI5_TX_MAXSIZE)
#define SPI_RX_MAXSIZE (CONFIG_CXD56_DMAC_SPI5_RX_MAXSIZE)
#if defined(CONFIG_WIFI_BOARD_IS110B_HARDWARE_VERSION_10B)
/* v1.0b */
#define GS2200M_GPIO_37 (PIN_UART2_CTS)
#define GS2200M_EXT_RTC_RESET_IN (PIN_EMMC_DATA3)
#elif defined(CONFIG_WIFI_BOARD_IS110B_HARDWARE_VERSION_10C)
/* v1.0c */
#define GS2200M_GPIO_37 (PIN_EMMC_DATA2)
#define GS2200M_EXT_RTC_RESET_IN (PIN_EMMC_DATA3)
#else
/* v1.0a */
#define GS2200M_GPIO_37 (PIN_UART2_CTS)
#define GS2200M_EXT_RTC_RESET_IN (PIN_UART2_RTS)
#endif
/****************************************************************************
* Private Function Prototypes
****************************************************************************/
@ -84,7 +98,7 @@ static volatile uint32_t _n_called;
static int gs2200m_irq_attach(xcpt_t handler, FAR void *arg)
{
cxd56_gpioint_config(PIN_UART2_CTS,
cxd56_gpioint_config(GS2200M_GPIO_37,
GPIOINT_LEVEL_HIGH,
handler,
arg);
@ -104,7 +118,7 @@ static void gs2200m_irq_enable(void)
if (0 == _enable_count)
{
cxd56_gpioint_enable(PIN_UART2_CTS);
cxd56_gpioint_enable(GS2200M_GPIO_37);
}
_enable_count++;
@ -127,7 +141,7 @@ static void gs2200m_irq_disable(void)
if (0 == _enable_count)
{
cxd56_gpioint_disable(PIN_UART2_CTS);
cxd56_gpioint_disable(GS2200M_GPIO_37);
}
leave_critical_section(flags);
@ -141,7 +155,7 @@ static uint32_t gs2200m_dready(int *ec)
{
irqstate_t flags = enter_critical_section();
uint32_t r = cxd56_gpio_read(PIN_UART2_CTS);
uint32_t r = cxd56_gpio_read(GS2200M_GPIO_37);
if (ec)
{
@ -160,7 +174,7 @@ static uint32_t gs2200m_dready(int *ec)
static void gs2200m_reset(bool reset)
{
cxd56_gpio_write(PIN_UART2_RTS, !reset);
cxd56_gpio_write(GS2200M_EXT_RTC_RESET_IN, !reset);
}
/****************************************************************************
@ -222,8 +236,8 @@ int board_gs2200m_initialize(FAR const char *devpath, int bus)
/* Change UART2 to GPIO */
CXD56_PIN_CONFIGS(PINCONFS_UART2_GPIO);
cxd56_gpio_config(PIN_UART2_CTS, true);
cxd56_gpio_config(PIN_UART2_RTS, false);
cxd56_gpio_config(GS2200M_GPIO_37, true);
cxd56_gpio_config(GS2200M_EXT_RTC_RESET_IN, false);
/* Initialize spi device */

View file

@ -515,6 +515,23 @@ config LCD_ON_MAIN_BOARD
endchoice
endif
choice
prompt "Spresense Wi-Fi Add-on board (iS110B)"
default WIFI_BOARD_IS110B_HARDWARE_VERSION_10A
---help---
Specify the hardware version of Wi-Fi Add-on board (iS110B)
config WIFI_BOARD_IS110B_HARDWARE_VERSION_10A
bool "WIFI Board iS110B v1.0A"
config WIFI_BOARD_IS110B_HARDWARE_VERSION_10B
bool "WIFI Board iS110B v1.0B"
config WIFI_BOARD_IS110B_HARDWARE_VERSION_10C
bool "WIFI Board iS110B v1.0C"
endchoice
comment "LTE Options"
menuconfig CXD56_LTE

View file

@ -82,10 +82,6 @@ MEMORY
}
/* Heap ends at the start of the static data of the ROM bootloader */
_eheap = 0x3fccae00;
#if CONFIG_ESP32C3_DEVKIT_RUN_IRAM
REGION_ALIAS("default_rodata_seg", dram0_0_seg);
REGION_ALIAS("default_code_seg", iram0_0_seg);

View file

@ -650,7 +650,7 @@ static bool _copy_data_from_pkt(FAR struct gs2200m_dev_s *dev,
pkt_dat->remain -= len;
if (0 == pkt_dat->remain)
if (0 == pkt_dat->remain || TYPE_BULK_DATA_UDP == pkt_dat->type)
{
_remove_and_free_pkt(dev, c);
}
@ -1568,6 +1568,27 @@ errout:
return r;
}
/****************************************************************************
* Name: gs2200m_send_cmd2
****************************************************************************/
static enum pkt_type_e gs2200m_send_cmd2(FAR struct gs2200m_dev_s *dev,
FAR char *cmd)
{
struct pkt_dat_s pkt_dat;
enum pkt_type_e r;
/* Initialize pkt_dat and send */
memset(&pkt_dat, 0, sizeof(pkt_dat));
r = gs2200m_send_cmd(dev, cmd, &pkt_dat);
/* Release the pkt_dat */
_release_pkt_dat(dev, &pkt_dat);
return r;
}
/****************************************************************************
* Name: gs2200m_set_opmode
* NOTE: See 5.1.2 Operation Mode
@ -1580,7 +1601,7 @@ static enum pkt_type_e gs2200m_set_opmode(FAR struct gs2200m_dev_s *dev,
char cmd[20];
snprintf(cmd, sizeof(cmd), "AT+WM=%d\r\n", mode);
t = gs2200m_send_cmd(dev, cmd, NULL);
t = gs2200m_send_cmd2(dev, cmd);
if (TYPE_OK == t)
{
@ -1636,7 +1657,7 @@ errout:
static enum pkt_type_e gs2200m_disassociate(FAR struct gs2200m_dev_s *dev)
{
return gs2200m_send_cmd(dev, (char *)"AT+WD\r\n", NULL);
return gs2200m_send_cmd2(dev, (char *)"AT+WD\r\n");
}
/****************************************************************************
@ -1650,7 +1671,7 @@ static enum pkt_type_e gs2200m_enable_dhcpc(FAR struct gs2200m_dev_s *dev,
char cmd[16];
snprintf(cmd, sizeof(cmd), "AT+NDHCP=%d\r\n", on);
return gs2200m_send_cmd(dev, cmd, NULL);
return gs2200m_send_cmd2(dev, cmd);
}
/****************************************************************************
@ -1664,7 +1685,7 @@ static enum pkt_type_e gs2200m_calc_key(FAR struct gs2200m_dev_s *dev,
char cmd[80];
snprintf(cmd, sizeof(cmd), "AT+WPAPSK=%s,%s\r\n", ssid, psk);
return gs2200m_send_cmd(dev, cmd, NULL);
return gs2200m_send_cmd2(dev, cmd);
}
/****************************************************************************
@ -1678,7 +1699,7 @@ static enum pkt_type_e gs2200m_set_security(FAR struct gs2200m_dev_s *dev,
char cmd[16];
snprintf(cmd, sizeof(cmd), "AT+WSEC=%d\r\n", mode);
return gs2200m_send_cmd(dev, cmd, NULL);
return gs2200m_send_cmd2(dev, cmd);
}
/****************************************************************************
@ -1749,7 +1770,8 @@ static enum pkt_type_e gs2200m_set_addresses(FAR struct gs2200m_dev_s *dev,
snprintf(cmd, sizeof(cmd), "AT+NSET=%s,%s,%s\r\n",
address, netmask, gateway);
return gs2200m_send_cmd(dev, cmd, NULL);
return gs2200m_send_cmd2(dev, cmd);
}
/****************************************************************************
@ -1763,7 +1785,7 @@ static enum pkt_type_e gs2200m_enable_dhcps(FAR struct gs2200m_dev_s *dev,
char cmd[20];
snprintf(cmd, sizeof(cmd), "AT+DHCPSRVR=%d\r\n", on);
return gs2200m_send_cmd(dev, cmd, NULL);
return gs2200m_send_cmd2(dev, cmd);
}
/****************************************************************************
@ -1777,7 +1799,7 @@ static enum pkt_type_e gs2200m_set_auth(FAR struct gs2200m_dev_s *dev,
char cmd[16];
snprintf(cmd, sizeof(cmd), "AT+WAUTH=%d\r\n", mode);
return gs2200m_send_cmd(dev, cmd, NULL);
return gs2200m_send_cmd2(dev, cmd);
}
#ifdef CONFIG_WL_GS2200M_ENABLE_WEP
@ -1793,7 +1815,7 @@ static enum pkt_type_e gs2200m_set_wepkey(FAR struct gs2200m_dev_s *dev,
char cmd[32];
snprintf(cmd, sizeof(cmd), "AT+WWEP1=%s\r\n", key);
return gs2200m_send_cmd(dev, cmd, NULL);
return gs2200m_send_cmd2(dev, cmd);
}
#else
@ -1809,7 +1831,7 @@ static enum pkt_type_e gs2200m_set_wpa2pf(FAR struct gs2200m_dev_s *dev,
char cmd[64];
snprintf(cmd, sizeof(cmd), "AT+WWPA=%s\r\n", key);
return gs2200m_send_cmd(dev, cmd, NULL);
return gs2200m_send_cmd2(dev, cmd);
}
#endif /* CONFIG_WL_GS2200M_ENABLE_WEP */
@ -2038,21 +2060,10 @@ static enum pkt_type_e gs2200m_send_bulk(FAR struct gs2200m_dev_s *dev,
static enum pkt_type_e gs2200m_close_conn(FAR struct gs2200m_dev_s *dev,
char cid)
{
struct pkt_dat_s pkt_dat;
enum pkt_type_e r;
char cmd[15];
/* Prepare cmd */
snprintf(cmd, sizeof(cmd), "AT+NCLOSE=%c\r\n", cid);
/* Initialize pkt_dat and send */
memset(&pkt_dat, 0, sizeof(pkt_dat));
r = gs2200m_send_cmd(dev, cmd, &pkt_dat);
_release_pkt_dat(dev, &pkt_dat);
return r;
return gs2200m_send_cmd2(dev, cmd);
}
/****************************************************************************
@ -2066,7 +2077,7 @@ static enum pkt_type_e gs2200m_enable_bulk(FAR struct gs2200m_dev_s *dev,
char cmd[20];
snprintf(cmd, sizeof(cmd), "AT+BDATA=%d\r\n", on);
return gs2200m_send_cmd(dev, cmd, NULL);
return gs2200m_send_cmd2(dev, cmd);
}
/****************************************************************************
@ -2080,7 +2091,7 @@ static enum pkt_type_e gs2200m_enable_echo(FAR struct gs2200m_dev_s *dev,
char cmd[8];
snprintf(cmd, sizeof(cmd), "ATE%d\r\n", on);
return gs2200m_send_cmd(dev, cmd, NULL);
return gs2200m_send_cmd2(dev, cmd);
}
/****************************************************************************
@ -2094,7 +2105,7 @@ static enum pkt_type_e gs2200m_activate_wrx(FAR struct gs2200m_dev_s *dev,
char cmd[30];
snprintf(cmd, sizeof(cmd), "AT+WRXACTIVE=%d\r\n", on);
return gs2200m_send_cmd(dev, cmd, NULL);
return gs2200m_send_cmd2(dev, cmd);
}
/****************************************************************************
@ -2109,7 +2120,7 @@ static enum pkt_type_e gs2200m_set_gpio(FAR struct gs2200m_dev_s *dev,
char cmd[24];
snprintf(cmd, sizeof(cmd), "AT+DGPIO=%d,%d\r\n", n, val);
return gs2200m_send_cmd(dev, cmd, NULL);
return gs2200m_send_cmd2(dev, cmd);
}
#endif
@ -2125,7 +2136,7 @@ static enum pkt_type_e gs2200m_set_loglevel(FAR struct gs2200m_dev_s *dev,
char cmd[16];
snprintf(cmd, sizeof(cmd), "AT+LOGLVL=%d\r\n", level);
return gs2200m_send_cmd(dev, cmd, NULL);
return gs2200m_send_cmd2(dev, cmd);
}
#endif
@ -2139,7 +2150,7 @@ static enum pkt_type_e gs2200m_get_version(FAR struct gs2200m_dev_s *dev)
char cmd[16];
snprintf(cmd, sizeof(cmd), "AT+VER=??\r\n");
return gs2200m_send_cmd(dev, cmd, NULL);
return gs2200m_send_cmd2(dev, cmd);
}
#endif

View file

@ -369,7 +369,7 @@ int fs_getfilep(int fd, FAR struct file **filep)
_files_semgive(list);
}
return OK;
return ret;
}
/****************************************************************************

View file

@ -44,6 +44,7 @@
#define IFF_UP (1 << 1) /* Interface is up */
#define IFF_RUNNING (1 << 2) /* Carrier is available */
#define IFF_IPv6 (1 << 3) /* Configured for IPv6 packet (vs ARP or IPv4) */
#define IFF_BOUND (1 << 4) /* Bound to a socket */
#define IFF_NOARP (1 << 7) /* ARP is not required for this packet */
/* Interface flag helpers */
@ -51,20 +52,23 @@
#define IFF_SET_DOWN(f) do { (f) |= IFF_DOWN; } while (0)
#define IFF_SET_UP(f) do { (f) |= IFF_UP; } while (0)
#define IFF_SET_RUNNING(f) do { (f) |= IFF_RUNNING; } while (0)
#define IFF_SET_BOUND(f) do { (f) |= IFF_BOUND; } while (0)
#define IFF_SET_NOARP(f) do { (f) |= IFF_NOARP; } while (0)
#define IFF_CLR_DOWN(f) do { (f) &= ~IFF_DOWN; } while (0)
#define IFF_CLR_UP(f) do { (f) &= ~IFF_UP; } while (0)
#define IFF_CLR_RUNNING(f) do { (f) &= ~IFF_RUNNING; } while (0)
#define IFF_CLR_BOUND(f) do { (f) &= ~IFF_BOUND; } while (0)
#define IFF_CLR_NOARP(f) do { (f) &= ~IFF_NOARP; } while (0)
#define IFF_IS_DOWN(f) (((f) & IFF_DOWN) != 0)
#define IFF_IS_UP(f) (((f) & IFF_UP) != 0)
#define IFF_IS_RUNNING(f) (((f) & IFF_RUNNING) != 0)
#define IFF_IS_BOUND(f) (((f) & IFF_BOUND) != 0)
#define IFF_IS_NOARP(f) (((f) & IFF_NOARP) != 0)
/* We only need to manage the IPv6 bit if both IPv6 and IPv4 are supported.
* Otherwise, we can save a few bytes by ignoring it.
* Otherwise, we can save a few bytes by ignoring it.
*/
#if defined(CONFIG_NET_IPv4) && defined(CONFIG_NET_IPv6)

View file

@ -1354,39 +1354,6 @@ void up_irqinitialize(void);
bool up_interrupt_context(void);
/****************************************************************************
* Name: up_irq_save
*
* Description:
* Save the current interrupt state and disable interrupts.
*
* Input Parameters:
* None
*
* Returned Value:
* Interrupt state prior to disabling interrupts.
*
****************************************************************************/
irqstate_t up_irq_save(void);
/****************************************************************************
* Name: up_irq_restore
*
* Description:
* Restore the previous irq state (i.e., the one previously
* returned by up_irq_save())
*
* Input Parameters:
* irqstate - The interrupt state to be restored.
*
* Returned Value:
* None
*
****************************************************************************/
void up_irq_restore(irqstate_t irqstate);
/****************************************************************************
* Name: up_enable_irq
*

View file

@ -297,7 +297,14 @@ int ipv4_input(FAR struct net_driver_s *dev)
}
else
#endif
if (ipv4->proto != IP_PROTO_UDP)
#if defined(NET_UDP_HAVE_STACK) && defined(CONFIG_NET_UDP_BINDTODEVICE)
/* If the UDP protocol specific socket option UDP_BINDTODEVICE
* is selected, then we must forward all UDP packets to the bound
* socket.
*/
if (ipv4->proto != IP_PROTO_UDP || !IFF_IS_BOUND(dev->d_flags))
#endif
{
/* Not destined for us and not forwardable... Drop the
* packet.

View file

@ -433,7 +433,14 @@ int ipv6_input(FAR struct net_driver_s *dev)
}
else
#endif
if (nxthdr != IP_PROTO_UDP)
#if defined(NET_UDP_HAVE_STACK) && defined(CONFIG_NET_UDP_BINDTODEVICE)
/* If the UDP protocol specific socket option UDP_BINDTODEVICE
* is selected, then we must forward all UDP packets to the bound
* socket.
*/
if (nxthdr != IP_PROTO_UDP || !IFF_IS_BOUND(dev->d_flags))
#endif
{
/* Not destined for us and not forwardable...
* drop the packet.

View file

@ -156,8 +156,7 @@ static ssize_t local_sendto(FAR struct socket *psock,
#ifdef CONFIG_NET_LOCAL_DGRAM
FAR struct local_conn_s *conn = (FAR struct local_conn_s *)psock->s_conn;
FAR struct sockaddr_un *unaddr = (FAR struct sockaddr_un *)to;
ssize_t nsent;
int ret;
ssize_t ret;
/* Verify that a valid address has been provided */
@ -212,7 +211,7 @@ static ssize_t local_sendto(FAR struct socket *psock,
ret = local_create_halfduplex(conn, unaddr->sun_path);
if (ret < 0)
{
nerr("ERROR: Failed to create FIFO for %s: %d\n",
nerr("ERROR: Failed to create FIFO for %s: %zd\n",
conn->lc_path, ret);
return ret;
}
@ -224,25 +223,18 @@ static ssize_t local_sendto(FAR struct socket *psock,
(flags & MSG_DONTWAIT) != 0);
if (ret < 0)
{
nerr("ERROR: Failed to open FIFO for %s: %d\n",
nerr("ERROR: Failed to open FIFO for %s: %zd\n",
unaddr->sun_path, ret);
nsent = ret;
goto errout_with_halfduplex;
}
/* Send the packet */
nsent = local_send_packet(&conn->lc_outfile, buf, len);
if (nsent < 0)
ret = local_send_packet(&conn->lc_outfile, buf, len);
if (ret < 0)
{
nerr("ERROR: Failed to send the packet: %d\n", ret);
}
else
{
/* local_send_packet returns 0 if all 'len' bytes were sent */
nsent = len;
nerr("ERROR: Failed to send the packet: %zd\n", ret);
}
/* Now we can close the write-only socket descriptor */
@ -255,7 +247,8 @@ errout_with_halfduplex:
/* Release our reference to the half duplex FIFO */
local_release_halfduplex(conn);
return nsent;
return ret;
#else
return -EISCONN;
#endif /* CONFIG_NET_LOCAL_DGRAM */

View file

@ -29,10 +29,14 @@
#include <debug.h>
#include <assert.h>
#include <net/if.h>
#include <nuttx/net/net.h>
#include <nuttx/net/netdev.h>
#include <nuttx/net/udp.h>
#include "devif/devif.h"
#include "netdev/netdev.h"
#include "udp/udp.h"
#include "socket/socket.h"
@ -63,7 +67,7 @@ int udp_close(FAR struct socket *psock)
unsigned int timeout = UINT_MAX;
int ret;
/* Interrupts are disabled here to avoid race conditions */
/* Lock the network to avoid race conditions */
net_lock();
@ -102,6 +106,28 @@ int udp_close(FAR struct socket *psock)
nerr("ERROR: udp_txdrain() failed: %d\n", ret);
}
#ifdef CONFIG_NET_UDP_BINDTODEVICE
/* Is the socket bound to an interface device */
if (conn->boundto != 0)
{
FAR struct net_driver_s *dev;
/* Yes, get the interface that we are bound do. NULL would indicate
* that the interface no longer exists for some reason.
*/
dev = netdev_findbyindex(conn->boundto);
if (dev != NULL)
{
/* Clear the interface flag to unbind the device from the socket.
*/
IFF_CLR_BOUND(dev->d_flags);
}
}
#endif
#ifdef CONFIG_NET_UDP_WRITE_BUFFERS
/* Free any semi-permanent write buffer callback in place. */

View file

@ -29,9 +29,11 @@
#include <assert.h>
#include <debug.h>
#include <net/if.h>
#include <netinet/udp.h>
#include <nuttx/net/net.h>
#include <nuttx/net/netdev.h>
#include <nuttx/net/udp.h>
#include "socket/socket.h"
@ -112,31 +114,74 @@ int udp_setsockopt(FAR struct socket *psock, int option,
*/
case UDP_BINDTODEVICE: /* Bind socket to a specific network device */
if (value == NULL || value_len == 0 ||
(value_len > 0 && ((FAR char *)value)[0] == 0))
{
conn->boundto = 0; /* This interface is no longer bound */
ret = OK;
}
else
{
int ifindex;
{
FAR struct net_driver_s *dev;
/* Get the interface index corresponding to the interface name */
/* Check if we are are unbinding the socket */
ifindex = netdev_nametoindex(value);
if (ifindex >= 0)
{
DEBUGASSERT(ifindex > 0 && ifindex <= MAX_IFINDEX);
conn->boundto = ifindex;
ret = OK;
}
else
{
ret = ifindex;
}
}
if (value == NULL || value_len == 0 ||
(value_len > 0 && ((FAR char *)value)[0] == 0))
{
/* Just report success if the socket is not bound to an
* interface.
*/
if (conn->boundto != 0)
{
/* Get the interface that we are bound do. NULL would
* indicate that the interface no longer exists for some
* reason.
*/
dev = netdev_findbyindex(conn->boundto);
if (dev != NULL)
{
/* Clear the interface flag to unbind the device from
* the socket.
*/
IFF_CLR_BOUND(dev->d_flags);
}
conn->boundto = 0; /* This interface is no longer bound */
}
ret = OK;
}
/* No, we are binding a socket to the interface. */
else
{
/* Find the interface device with this name */
dev = netdev_findbyname(value);
if (dev == NULL)
{
ret = -ENODEV;
}
/* An interface may be bound only to one socket. */
else if (IFF_IS_BOUND(dev->d_flags))
{
ret = -EBUSY;
}
else
{
/* Bind the interface to a socket */
IFF_SET_BOUND(dev->d_flags);
/* Bind the socket to the interface */
DEBUGASSERT(dev->d_ifindex > 0 &&
dev->d_ifindex <= MAX_IFINDEX);
conn->boundto = dev->d_ifindex;
ret = OK;
}
}
}
break;
#endif