Hello, thanks, I see it merged, next step is zero latency interrupt handling in branch named avrdx_zerolatency_intr. It rebased cleanly on current master branch. PR description is:

============================

AVR: support for zero latency interrupt handlers

## Summary

This patch series provides support for so-called zero latency interrupts as described in https://nuttx.apache.org/docs/latest/guides/concurrency/zerolatencyinterrupts.html . These can be used for driver code that needs the interrupt handler to run with as little overhead as possible (for example because it is latency sensitive, runs very often etc.) This series does not add any in-tree user, that is a topic of a planned follow-up (driver for WS2812 programmable LED.)

This support is only added for DA/DB family of AVR chips.

There are also some fixes of interrupt vectors table (incorrectly numbered vectors as a result of duplicates) and Kconfig option naming. In addition to that, interupt vectors are renamed (for DA/DB family only) to be able to override them with custom code written in C (and compiled with GCC which expects __vector prefix in the name.)

## Impact

New feature is added: zero latency interrupts that override regular interrupt routine with a custom code completely independent on the rest of the operating system.

There is no impact on existing users, all new code is off by default. No impact on other architectures nor other AVR families either.

Impact on build - some Kconfig options are renamed from HAS_ to preferred HAVE_ form. This renaming only touches existing Kconfig options that are referred to by newly added Kconfig options (ie. the new option depends on the existing one.) All of the renamed options are selected automatically based on chip in use so this change should have no impact on existing configurations.

Impact on documentation - the guide linked in the summary is updated to describe specifics of the AVR implementation.

No impact on hardware, security or compatibility.

## Testing

I confirm that changes are verified on local setup and works as intended:
  * Build Host: Linux, AMD, GCC - avr-gcc 14.2
  * Target: AVR DA/DB, tested on breadxavr board

To test that the interrupt vector renaming did not affect other AVR families, mega1284p-xplained:nsh was built and disassembly compared. There was no change.

The feature was first tested by rudimentary application that controlled WS2812 programmable LED outside of the OS and then by a new driver for that LED using ws2812 example application from nuttx-apps.

## PR verification Self-Check

  * [x] This PR introduces only one functional change.
  * [x] I have updated all required description fields above.
* [x] My PR adheres to Contributing [Guidelines](https://github.com/apache/nuttx/blob/master/CONTRIBUTING.md) and [Documentation](https://nuttx.apache.org/docs/latest/contributing/index.html) (git commit title and message, coding standard, etc).
  * [ ] My PR is still work in progress (not ready for review).
* [x] My PR is ready for review and can be safely merged into a codebase.

============================

On 2026-10-15 07:41, Swatantra wrote:
Hi Kerogit, Alin,

I have opened the Pull Request for Step 1 on GitHub on behalf of Kerogit:
https://github.com/apache/nuttx/pull/20677

All 4 commits preserve Kerogit's original authorship and DCO sign-offs,
rebased cleanly onto current master, and checked with nxstyle.
As discussed, we will proceed step-by-step: once this PR is reviewed and
merged, we can proceed with Step 2 (Zero Latency Interrupts).

Best regards,
Swatantra Yadav

On Thu, 15 Oct 2026 at 03:15, <[email protected]> wrote:

Hello,

thanks to everyone for the offers. First part of the series is ready in the Git repository, branch is named avrdx_fixes_13.1. The PR description
is below. I'll be looking at Github and if any question arise, I will
answer them here.

And just in case - since you mention splitting the patches into
individual PRs. If you mean breaking the branch into 4 separate
branches, I would advise against that. The features more or less depend
on each other (software interrupt emulation changes file added by the
zero latency interrupts, WS2812 uses both of these features etc.) so
trying to split them up is most likely going to end with git conflicts
and code that does not build. That's why I was planning to merge this in
step-by-step fashion.

The filled PR template:

============================

AVR DA/DB: fix for build failure and other smaller fixes

## Summary

This patch series fixes build failure for AVR DA/DB family and adds some
other smaller fixes.

The build failure was caused by patch series that added LIBC_ATOMIC_IRQ Kconfig option during 13.1 development. Commit 4ca2256a9bee selects this option by default for AVR chips but not for the DA/DB family, causing a
build failure (atomic functions are missing.) The first patch of this
series simply adds missing "select LIBC_ATOMIC_IRQ" for this family as
well.

Other than that, version 13.1 added a performance regression which
manifested as dropped bytes in USART peripheral during receive (with
heavy round-robin preemptive scheduling load.) The regression was
bisected to commit b32712d0a2 that fixes some bugs (which were affecting AVR DA/DB default build as well) but apparently adds more time-consuming
work to context switch with interrupts disabled. The patch for this
simply documents this possibility in the USART driver description.

The remaining patches fix unused variable warning, make (very unlikely)
board initialization error more visible and reorder manipulation with
stack pointer during context restore to do it in the way (presumably)
intended by the chip manufacturer.

## Impact

After the patch is applied, it is again possible to build the code.
Other than that, there is no impact on existing code/users.

The stack pointer reordering change is done in file shared with other
AVR families - #ifdef blocks are used to cause no change for them

## Testing

   I confirm that changes are verified on local setup and work as
intended:
   * Build Host: Linux, AMD, GCC-AVR 14.2
   * Target: AVR (AVR128DA28), breadxavr:nsh

   Testing logs before change:

   ```
$ tools/configure.sh -l breadxavr:nsh
$ make -j16
...
avr-ld: .../nuttx.git/staging/libsched.a(sem_destroy.o): in function
`.L3':
sem_destroy.c:(.text.nxsem_destroy+0x46): undefined reference to
`__atomic_load_4'
...
```

   Testing logs after change:

   ```
$ tools/configure.sh -l breadxavr:nsh
$ make -j16
Register: nsh
Register: sh
LD: nuttx
Memory region         Used Size  Region Size  %age Used
            flash:       56377 B       128 KB     43.01%
             sram:         780 B        16 KB      4.76%
           eeprom:           0 B        512 B      0.00%
           rodata:         606 B         4 KB     14.79%
CP: nuttx.hex
CP: nuttx.asm
   ```

To verify that the stack pointer change did not affect other AVR
families, mega1284p-xplained:nsh was built before and after the change.
The resulting binary was identical (with the exception of version
string.)

Header and source files were checked by checkpatch with no issues found,
spelling checked with aspell.

## PR verification Self-Check

   * [x] This PR introduces only one functional change.
   * [x] I have updated all required description fields above.
   * [x] My PR adheres to Contributing
[Guidelines](https://github.com/apache/nuttx/blob/master/CONTRIBUTING.md)
and
[Documentation](
https://nuttx.apache.org/docs/latest/contributing/index.html)
(git commit title and message, coding standard, etc).
   * [ ] My PR is still work in progress (not ready for review).
   * [x] My PR is ready for review and can be safely merged into a
codebase.

============================

On 2026-10-14 18:20, Abhishek Mishra wrote:
> Hi,
>
> I'd be happy to help split the patches into individual PRs and work on
> getting them merged. Please let me know how you'd like to coordinate.
>
> Best regards,
> Abhishek
>
> On Wed, Oct 14, 2026 at 9:09 PM Alin Jerpelea <[email protected]>
> wrote:
>
>> please prepare the first patches and I will handle them
>>
>> Best regards
>> Alin J
>>
>> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <[email protected]> wrote:
>>
>> > Hi,
>> >
>> > I can lend a hand tomorrow
>> >
>> > Thanks for your message
>> >
>> > Best regards
>> > Alin
>> >
>> > On Wed, 14 Oct 2026, 11:18 Felipe Moura Oliveira, <
[email protected]>
>> > wrote:
>> >
>> >> Hello,
>> >>
>> >> I am away from my desk for the next few days. If no one offers to
help
>> by
>> >> this weekend, I will reach out to you so I can help you with this.
>> >>
>> >> Regards,
>> >>
>> >>
>> >> *--Felipe Moura de Oliveira*
>> >> Linkedin <https://www.linkedin.com/in/felipe-oliveira-75a651a0>
>> >>
>> >> On Wed, 14 Oct 2026 at 10:48 <[email protected]> wrote:
>> >>
>> >> > Hello,
>> >> >
>> >> > I would like to ask someone to help me merge some patches for the
AVR
>> >> > architecture, DA/DB family. I have a series ready with some fixes
and
>> >> > some new features. Same as before, I don't have a Github account
so I
>> am
>> >> > looking for someone who could open pull requests
>> >> >
>> >> > The series as a whole is available in my "nuttx.git" repository at
>> >> > git.kerogit.eu accessible through HTTP/S. The relevant branch is
>> named
>> >> > avrdx_ws2812_upstream .
>> >> >
>> >> > In its current form, the branch is not suitable for merging - it
would
>> >> > be more than one feature per one PR which is against the
contributing
>> >> > rules. My plan is, if someone decides to help, to split the series
>> into
>> >> > steps and merge these steps one by one. After one step is merged, I
>> >> > would rebase the remainder on current master branch and provide
next
>> >> > step. I also plan to prepare text to be filled in the PR form
>> >> > (essentialy doing as much as possible to make the job easier for
the
>> >> > person who will interact with Github.)
>> >> >
>> >> > There are four features:
>> >> >
>> >> > 1. fixes - build failure introduced between 13.0 and 13.1,
documenting
>> >> > performance regression between these versions and some minor stuff
>> >> > 2. zero latency interrupt support -
>> >> >
>> >> >
>> >>
>>
https://nuttx.apache.org/docs/latest/guides/concurrency/zerolatencyinterrupts.html
>> >> > 3. software interrupt emulation
>> >> > 4. lower half for WS2812 driver
>> >> >
>> >> > Thanks
>> >> >
>> >>
>> >
>>

Reply via email to