Commit graph

63241 commits

Author SHA1 Message Date
ouyangxiangzhen
f309d65a7f lib/math32: improve the performance of invdiv_u32.
This commit provided a better invdiv_u32 implementation on 64-bit architectures. The test results showed it is 25% faster than the original implementation on x86_64.

Signed-off-by: ouyangxiangzhen <ouyangxiangzhen@xiaomi.com>
2025-10-22 09:46:42 +08:00
ouyangxiangzhen
f6dfd3f6d0 lib/math32: Support optimized runtime-invariant integer division.
This commit implemented optimized runtime-invariant integer division
proposed by T. Granlund and L. Montgomery. It can be used to convert the
hardware clock cycles to seconds, where the clock frequency is runtime-invariant.

Signed-off-by: ouyangxiangzhen <ouyangxiangzhen@xiaomi.com>
2025-10-22 09:46:42 +08:00
Eren Terzioglu
f564f4fc56 Documentation/risc-v/esp32[c6]: Add multiple ULP bin docs for esp32c6
Add multiple ULP bin docs for esp32c6

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2025-10-21 06:32:32 -03:00
Eren Terzioglu
11b1361a96 boards/risc-v/esp32[c6]: Add multiple ULP bin board support for esp32c6
Add multiple ULP bin board support for esp32c6

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2025-10-21 06:32:32 -03:00
Eren Terzioglu
7aaac3ed8e arch/risc-v/esp32[c6]: Add multiple ULP bin support for esp32c6
Add multiple ULP bin support for esp32c6

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2025-10-21 06:32:32 -03:00
Eren Terzioglu
a3841a1678 Documentation/xtensa/esp32[-s2|-s3]: Add multiple ULP RISC-V bin docs
Add multiple ULP RISC-V bin docs for esp32s2 and esp32s3

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2025-10-21 06:32:32 -03:00
Eren Terzioglu
6702b4fdb4 boards/xtensa/esp32[-s2|-s3]: Add multiple ULP RISC-V bin board support
Add multiple ULP RISC-V bin board support for esp32s2 and esp32s3

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2025-10-21 06:32:32 -03:00
Eren Terzioglu
24eeff91c0 arch/xtensa/esp32[-s2|-s3]: Add multiple ULP RISC-V bin support
Add multiple ULP RISC-V bin support for esp32s2 and esp32s3

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2025-10-21 06:32:32 -03:00
Eren Terzioglu
7403177473 arch/risc-v/espressif: Add ULP as char device to support multiple ULP bins
Add ULP as char device to change binary that runs on ULP

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2025-10-21 06:32:32 -03:00
simbit18
90a881271e CI MSYS2 : added the genromfs tool for creating romfs file systems
Add:

 - the genromfs tool for creating romfs file systems

https://github.com/chexum/genromfs

Signed-off-by: simbit18 <simbit18@gmail.com>
2025-10-21 01:14:15 +08:00
Alexander Lerach
a9b258aa68 arch/arm/stm32h7: Fix UART TX DMA getting stuck
When closing a serial port an ongoing TX DMA transfer will be stopped. This can cause
one (or multiple) the following:

- dev->dmatx.length != 0
- dev->dmatx.nlength != 0
- stm32_dmaresidual returning a non-zero residual

This is caused by length/nlength not being set to 0 at startup or during closing.
In addition the DMA_SxNDTR register is not set to 0 at startup or during closing.

This commit solves the issue by setting the variables and register to 0 during closing.

Signed-off-by: Alexander Lerach <alexander@auterion.com>

arch/arm/stm32h7: Add review feedback regarding style

Removed non-needed spaces.
Aligned style of documentation.

Signed-off-by: Alexander Lerach <alexander@auterion.com>
2025-10-21 01:10:05 +08:00
wangchengdong
fca1010a5b arch/risc-v: remove duplicated nxsched_switch_context() call
The nxsched_switch_context() function should only be called
    when a task switch actually occurs. The RISC-V architecture
    already performs this call in riscv_perform_syscall(),
    so this PR removed the redundant nxsched_switch_context() call in
    up_switch_context().

Signed-off-by: Chengdong Wang <wangchengdong@lixiang.com>
2025-10-21 01:05:33 +08:00
Tiago Medicci Serrano
fcb96babc5 risc-v/espressif/spi: Update common source code functions
Updates the common source code for the SPI peripheral used by
Espressif's RISC-Vs SoCs. This enables newer SoCs to be supported
in the future while maintaining backwards compatibility.

Signed-off-by: Tiago Medicci Serrano <tiago.medicci@espressif.com>
2025-10-21 01:03:36 +08:00
wangchengdong
97db9a499c sched/signal: use list_waitingforsignal() to access g_waitingforsignal
Replace direct access to the g_waitingforsignal list with the
    NuttX-defined macro list_waitingforsignal() to improve code
    consistency and maintainability.

Signed-off-by: Chengdong Wang wangchengdong@lixiang.com
2025-10-20 11:24:25 -03:00
wangchengdong
4bdd33a035 nuttx/cmake: Remove redundant logic in CMake scripts
Simplify the CMake scripts by removing redundant logic to
    improve code readability and maintainability.

Signed-off-by: Chengdong Wang <wangchengdong@lixiang.com>
2025-10-20 10:08:28 +08:00
wangchengdong
519ffe66d0 sched/sched: Replace nxsched_alarm_tick_expiration()
Introduce a new function nxsched_tick_expiration() to replace
    nxsched_alarm_tick_expiration(). The new function provides a
    common implementation that can be shared by both the alarm
    and timer architectures.

    This change reduces code duplication and provides a unified
    function that can be directly reused.

Signed-off-by: Chengdong Wang <wangchengdong@lixiang.com>
2025-10-18 20:07:59 +08:00
wangchengdong
590ea0567d board/sam3u-ek: Adjust memory.ld to fix build error
Enlarge kflash memory size for the sam3u-ek board
    to resolve the build error.

Signed-off-by: Chengdong Wang <wangchengdong@lixiang.com>
2025-10-18 20:07:59 +08:00
wangchengdong
c7b6442974 sched/clock: Improve CLOCK_MONOTONIC nxclock_gettime()
Improve nxclock_gettime(), to get the system time excluding
   the time that the system is suspended, when the clockid is
   CLOCK_MONOTONIC

Signed-off-by: Chengdong Wang wangchengdong@lixiang.com
2025-10-18 20:07:59 +08:00
wangchengdong
1a22f4bf28 sched/clock: Improve clock implementation with sched ticks functions
Replace direct usage of g_system_ticks with clock_increase_sched_ticks()
   and clock_get_sched_ticks()

Signed-off-by: Chengdong Wang wangchengdong@lixiang.com
2025-10-18 20:07:59 +08:00
wangchengdong
54adf5979c sched/clock: Add clock_increase_sched_ticks() and clock_get_sched_ticks()
In the current NuttX kernel implementation, there is no function
    to represent pure scheduler ticks.
    The existing clock_systime_ticks() cannot serve this purpose,
    because it keeps increasing even when the scheduler is not running.
    This happens since the returned value reflects real hardware time:
    as long as the timer or alarm hardware is active,
    clock_systime_ticks() will continuously increase.

    This patch introduces two new functions that provide access to
    scheduler ticks — a counter that only increases when the scheduler
    itself is running.

Signed-off-by: Chengdong Wang wangchengdong@lixiang.com
2025-10-18 20:07:59 +08:00
trns1997
c705b278d1 cmake: Remove unused BUILD_OOTCPP guard from configuration.
Clean up the CMake configuration by removing the obsolete
`BUILD_OOTCPP` guard. This variable is no longer required
since out-of-tree build handling is now managed via the
enhanced `nuttx_add_subdirectory()` with EXCLUDE support.

* Simplifies CMake configuration command.
* Avoids redundant or unused build options.

Signed-off-by: trns1997 <trns1997@gmail.com>
2025-10-17 17:06:46 -03:00
Tiago Medicci Serrano
fb93a9e4d0 arch/risc-v/espressif/i2s: Fix common driver issues
This commit refactors the I2S common driver for Espressif's RISC-V
SoCs. Previously, the peripheral was not working as expected.

Along with the new I2S character driver, this new I2S lower-half
driver can be easily tested using internal loopback between the
transmitter and receiver channels.

Signed-off-by: Tiago Medicci Serrano <tiago.medicci@espressif.com>
2025-10-17 17:05:38 -03:00
Thiago Finelon
42d5f10c0d arch/xtensa/esp32s3: expose UART RX FIFO controls
Adds Kconfig knobs for the ESP32-S3 RX FIFO full threshold and timeout and wires them into the UART driver.
Clears RX FIFO overflow interrupts by resetting the hardware FIFO so reception resumes cleanly.

Signed-off-by: Thiago Finelon <thiago.sfinelon@gmail.com>
2025-10-17 17:40:32 +08:00
chao an
2909b1dadd sam3u-ek/knsh: disable LIBC_TEMPBUFFER to save code size
Fix build break:

| arm-none-eabi-ld: /home/archer/code/nuttx/nuttx section `.data' will not fit in region `kflash'
| arm-none-eabi-ld: region `kflash' overflowed by 96 bytes
| Memory region         Used Size  Region Size  %age Used
|           kflash:       65632 B        64 KB    100.15%
|           uflash:           0 B        64 KB      0.00%
|           xflash:           0 B       128 KB      0.00%
|           ksram1:        4716 B         6 KB     76.76%
|           usram1:           0 B         4 KB      0.00%
|           xsram1:           0 B        22 KB      0.00%
|            sram2:           0 B        16 KB      0.00%
| make[1]: *** [Makefile:217: nuttx] Error 1
| make: *** [tools/Unix.mk:542: nuttx] Error 2

Signed-off-by: chao an <anchao.archer@bytedance.com>
2025-10-17 14:05:02 +08:00
chao an
a8af5f3d0e style/spell: fix spell checker error
To make checker happy:

arch/arm/src/sama5/sam_classd.c:997: nd ==> and, 2nd
arch/arm/src/sama5/sam_classd.c:1362: levl ==> level
drivers/sensors/apds9922.c:286: persistance ==> persistence

Signed-off-by: chao an <anchao.archer@bytedance.com>
2025-10-17 14:05:02 +08:00
chao an
87f134cfaa sched/sleep: replace all Signal-based sleep implement to Scheduled sleep
Nuttx currently has 2 types of sleep interfaces:

1. Signal-scheduled sleep: nxsig_sleep() / nxsig_usleep() / nxsig_nanosleep()
Weaknesses:
a. Signal-dependent: The signal-scheduled sleep method is bound to the signal framework, while some driver sleep operations do not depend on signals.
b. Timespec conversion: Signal-scheduled sleep involves timespec conversion, which has a significant impact on performance.

2. Busy sleep: up_mdelay() / up_udelay()
Weaknesses:
a. Does not actively trigger scheduling, occupy the CPU loading.

3. New interfaces: Scheduled sleep: nxsched_sleep() / nxsched_usleep() / nxsched_msleep() / nxsched_ticksleep()
Strengths:
a. Does not depend on the signal framework.
b. Tick-based, without additional computational overhead.

Currently, the Nuttx driver framework extensively uses nxsig_* interfaces. However, the driver does not need to rely on signals or timespec conversion.
Therefore, a new set of APIs is added to reduce dependencies on other modules.

(This PR also aims to make signals optional, further reducing the code size of Nuttx.)

Signed-off-by: chao an <anchao.archer@bytedance.com>
2025-10-17 14:05:02 +08:00
Filipe Cavalcanti
7297ecc02e arch/xtensa: add non-iram interrupt support for ESP32-S2
Adds support for enabling and disabling non-iram interrupts on ESP32-S2.

Signed-off-by: Filipe Cavalcanti <filipe.cavalcanti@espressif.com>
2025-10-16 17:06:05 -04:00
chao an
02bfd290ac sched/sleep: add support for scheduling sleep
Nuttx currently has 2 types of sleep interfaces:

1. Signal-scheduled sleep: nxsig_sleep() / nxsig_usleep() / nxsig_nanosleep()
Weaknesses:
  a. Signal-dependent: The signal-scheduled sleep method is bound to the signal framework, while some driver sleep operations do not depend on signals.
  b. Timespec conversion: Signal-scheduled sleep involves timespec conversion, which has a significant impact on performance.
2. Busy sleep: up_mdelay() / up_udelay()
Weaknesses:
  a. Does not actively trigger scheduling, occupy the CPU loading.

3. New interfaces: Scheduled sleep: nxsched_sleep() / nxsched_usleep() / nxsched_msleep() / nxsched_ticksleep()
Strengths:
  a. Does not depend on the signal framework.
  b. Tick-based, without additional computational overhead.

Currently, the Nuttx driver framework extensively uses nxsig_* interfaces. However, the driver does not need to rely on signals or timespec conversion.
Therefore, a new set of APIs is added to reduce dependencies on other modules.

(This PR also aims to make signals optional, further reducing the code size of Nuttx.)

Signed-off-by: chao an <anchao.archer@bytedance.com>
2025-10-16 12:46:42 +02:00
Junbo Zheng
2578638d52 cmake: correct nuttx_wildcard_sources cmake usage
reference:
https://cmake.org/cmake/help/latest/command/cmake_parse_arguments.html

add debug message for test
```diff
diff --git a/cmake/nuttx_extensions.cmake b/cmake/nuttx_extensions.cmake
index 9ed430b74a..baa22cf90d 100644

--- a/cmake/nuttx_extensions.cmake
+++ b/cmake/nuttx_extensions.cmake
@@ -116,6 +116,9 @@ endfunction()
 function(nuttx_wildcard_sources)
   cmake_parse_arguments(ARGS "" "" EXCLUDE ${ARGN})

+  message(STATUS "## UNPARSED ARGUMENTS ${ARGS_UNPARSED_ARGUMENTS}")
+  message(STATUS "## ARGN ${ARGN}")
+
   file(GLOB SRCS ${ARGS_UNPARSED_ARGUMENTS})
   if(ARGS_EXCLUDE)
     file(GLOB RM_SRCS ${ARGS_EXCLUDE})
```

cmake build test
```
➜  /home/mi/local/mycpp [25-10-15_14:11:41] git:(master) ✗ ls demo
1.c  2.c  3.c
➜  /home/mi/local/mycpp [25-10-15_14:11:57] git:(master) ✗ cmake -S . -B build -G Ninja
>> 14:12:42.161053 INFO    [demo] Time taken: 0ms
-- ## UNPARSED ARGUMENTS aaa/*.c
-- ## ARGN aaa/*.c;EXCLUDE;aaa/3.c
-- Configuring done (0.3s)
-- Generating done (0.0s)
-- Build files have been written to: /home/mi/local/mycpp/build
➜  /home/mi/local/mycpp [25-10-15_14:12:47] git:(master) ✗
```

`SRCS` just collect all source files instead of EXCLUDE arguments

Signed-off-by: Junbo Zheng <zhengjunbo1@xiaomi.com>
2025-10-16 12:48:40 +08:00
Karel Kočí
29d44e5227 nxgdb: fix remote-register regular expression match
The code clearly expects the output of the 'maint print
remote-registers' to be indented by white-space character but at least
in my case it is not. This changes the match to consume any number of
white-space characters before it encounteres the register name.

Signed-off-by: Karel Kočí <cynerd@email.cz>
2025-10-16 12:48:31 +08:00
haitomatic
d6a169d6dd arch/arm64/src/imx9/imx9_flexcan.c: add CAN ID filtering.
Add simple single ID mask filter. Only pkts with set CAN ID are accepted. This works for both STD and EXT CAN ID.

Signed-off-by: haitomatic <hai.to@unikie.com>
2025-10-15 09:41:04 -04:00
Alan Carvalho de Assis
2b2afeec4c sama5d3-xplained: Disable semihosting syslog
TODO: Fix sama5 arch the same way stm32 to avoid compiling serial drivers
case no serial ports are used.

Signed-off-by: Alan C. Assis <acassis@gmail.com>
2025-10-14 08:36:44 -04:00
Alan Carvalho de Assis
82e4a715e6 boards/stm32/clicker2-stm32: Fix compilation after stm32_serial
This config doesn't have any STM32_USART enabled, but because it
have CDC_ACM if we disable CONFIG_SERIAL we are getting others
dependence error. So the solution here was enable the serial port
CONFIG_STM32_USART3.

Signed-off-by: Alan C. Assis <acassis@gmail.com>
2025-10-14 08:36:44 -04:00
Alan Carvalho de Assis
cf8b8355b8 boards/stm32/nucleo-f303re: Remove syslog for can example
This can board profile doesn't use serial, but the syslog still
using up_putc() that doesn't exist now that stm32_serial.c is not
compiled.

Signed-off-by: Alan C. Assis <acassis@gmail.com>
2025-10-14 08:36:44 -04:00
Alan Carvalho de Assis
676f4cb111 boards/arm/stm32: Fix board configs which use LWL_CONSOLE
After fixing stm32 to not compile stm32_serial.c when STM32_USART
is not enabled, we need fix the lwl_console driver to include the
up_putc().

Signed-off-by: Alan C. Assis <acassis@gmail.com>
2025-10-14 08:36:44 -04:00
Alan Carvalho de Assis
6e7f596c83 drivers/lwl: Fix lwl_console.c to support is own up_putc()
After removing stm32_serial.c compilation we need to create a new
up_putc() to be used by syslog.

Signed-off-by: Alan C. Assis <acassis@gmail.com>
2025-10-14 08:36:44 -04:00
Alan Carvalho de Assis
744ce66135 arch/stm32: Only compile stm32_serial.c when STM32_USART is enabled
When SEMIHOST_SYSLOG is enabled it creates its own up_putc() function
however the stm32_serial.c also creates this same function, even
when all STM32_USARTs are disabled. Fix patch fixes this issue.

Signed-off-by: Alan C. Assis <acassis@gmail.com>
2025-10-14 08:36:44 -04:00
Alan Carvalho de Assis
5d784a2abc arm/common: Fix arm_nputs.c to avoid mult. up_nputs() definitions
When SEMIHOST_SYSLOG is enabled up_nputs() could be defined twice.

Signed-off-by: Alan C. Assis <acassis@gmail.com>
2025-10-14 08:36:44 -04:00
yushuailong1
097c594aba video/fb: add FBIOGET_PANINFOCNT ioctl
Add a new ioctl to get the count of paninfo

The framebuffer is usually in high-speed RAM. Getting the paninfo
count can help us get the idle state of the framebuffer so that we
can temporarily use this memory.

Signed-off-by: yushuailong1 <yushuailong1@xiaomi.com>
2025-10-14 17:50:42 +08:00
Filipe Cavalcanti
632297a3ca documentation: update MCUBoot flash allocation on ESP32|S2|S3
Add description of flash allocation when using MCUBoot.

Signed-off-by: Filipe Cavalcanti <filipe.cavalcanti@espressif.com>
2025-10-14 17:44:15 +08:00
Filipe Cavalcanti
df6e5384fe arch/xtensa: update MCUBoot and virtual E-Fuse offset
Updates MCUBoot version and default address for virtual E-Fuse, depending
if MCUBoot is enabled.

Signed-off-by: Filipe Cavalcanti <filipe.cavalcanti@espressif.com>
2025-10-14 17:44:15 +08:00
guoshengyuan1
f9111e8946 codespellrc: add ist to ignorelist
In Intel 64 architecture code, ist
fails the spell check of checkpatch.

Signed-off-by: guoshengyuan1 <guoshengyuan1@xiaomi.com>
2025-10-14 17:42:01 +08:00
guoshengyuan1
79711737bc arch/init: call up_color_intstack before up_irq_enable
Make sure interrupt stack is colored before IRQ is enabled.

Currently, after calling irq_initialize in nx_start to
enable interrupts, there is still a period of execution
path before the interrupt stack is colored.

Signed-off-by: guoshengyuan1 <guoshengyuan1@xiaomi.com>
2025-10-14 17:42:01 +08:00
guoshengyuan1
5874f46a5b sched/irq: add stack size judgment when detecting stack overflow
`up_check_intstack` exists only when CONFIG_ARCH_INTERRUPTSTACK
is greater than 0, so the irq should first determine whether
CONFIG_ARCH_INTERRUPTSTACK is greater than 0 to determine
whether up_check_intstack can be called.

Signed-off-by: guoshengyuan1 <guoshengyuan1@xiaomi.com>
2025-10-14 17:42:01 +08:00
chao an
10fd309452 sched/signal: Remove shadow definitions to reduce unnecessary API
Reduce unnecessary API definitions:

nxsig_waitinfo() -> nxsig_timedwait()

Signed-off-by: chao an <anchao.archer@bytedance.com>
2025-10-14 17:40:18 +08:00
wangchengdong
4057d86e2b arch/tricore: Place nxsched_switch_context() at the correct location
The current implementation does not call
   nxsched_switch_context() exactly when a
   task switch occurs.

   This patch fixes the issue by placing the
   call at the correct location.

Signed-off-by: Chengdong Wang wangchengdong@lixiang.com
2025-10-13 14:47:28 -04:00
Stepan Pressl
cb2d591b42 stm32/stm32_usbdev.c: include arch/board/board.h
Without this, the compilation would fail for F302 chips.

Signed-off-by: Stepan Pressl <pressl.stepan@gmail.com>
2025-10-13 14:45:34 -04:00
reza0310
6fd64dec79 website/wiki: Small typos.
Changed two "is" by "it"

Signed-off-by: reza0310 <geoffroy.duprey@wandercraft.health>
2025-10-13 14:45:10 -04:00
trns1997
78e7668f58 Revert "ci: Serialize CI jobs to avoid unnecessary pipeline execution"
This reverts commit cb1b1863c0.

Signed-off-by: trns1997 <trns1997@gmail.com>
2025-10-12 09:02:20 -03:00
raiden00pl
3e6acfaf17 libs: remove not related comments from cmake files
remove not related comments from libs/libbuiltin/CMakeLists.txt and
libs/libxx/CMakeLists.txt. These are a copy paste from a Makefile
which doesn't make sense for these files.

Signed-off-by: raiden00pl <raiden00@railab.me>
2025-10-11 17:07:51 -04:00