Commit graph

9 commits

Author SHA1 Message Date
Kerogit
d9269112ee arch/avr/avrdx: do not copy const variables into RAM
AVR uses Hardward architecture with separate address space for program
memory (flash) and data memory (RAM). Normal program flow can only
access data memory which means that all variables - including const
variables - have to be copied into RAM to be accessible. (This happens
automatically during startup.)

It is possible to work around this limitation in software but that
can have severe impact on performance and/or API complexity. It is hardly
feasible to change NuttX interfaces in a way that would allow to make use
of this workaround.

On newer AVR families, there is an alternative option enabled by this patch.
These chips map part of their program memory (a 32kB window) into data
memory address space. This patch leverages this feature and adds support
for placing const variables into the mapped window. No copy to RAM is done
for them.

Const variables are therefore loaded directly from flash (not consuming
RAM) while still being available to be used by any NuttX interface.

Linker script of breadxavr board is changed to make use of these changes.

Tested by verifying string addresses - parameters in printf call
in a custom application (and also by running the application and verifying
its output.)

Documentation tested by build.

Signed-off-by: Kerogit <kr.git@kerogit.eu>
2025-07-10 12:21:40 -03:00
Kerogit
5710b5495f boards/avr/avrdx/breadxavr: fix path in license header
This linker script was initially created as a copy of another script
and the path was left unchanged.

Signed-off-by: Kerogit <kr.git@kerogit.eu>
2025-07-10 12:21:40 -03:00
wangjianyu3
5079105e17 boards: net tcp backlog is enabled by default
The configuration NET_TCPBACKLOG is enabled by default.

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2025-06-26 09:32:54 -03:00
Kerogit
2c43595dfd boards/avr/avrdx/breadxavr: fix board LED constants
During initial development of AVR DA/DB support, the board LED code
and constants it uses were based on different AVR boards. The resulting
code therefore did not work for most indicated states.

This patch fixes LED status codes to match what the board LED code
expects. Tested by manually triggering reset_board function which
caused the board LED to blink (whereas it was not blinking before
the fix.)

Signed-off-by: Kerogit <kr.git@kerogit.eu>
2025-05-27 20:46:22 +08:00
Kerogit
034d76f28f boards/avr/avrdx/breadxavr: fix dependency in Kconfig
Button input driver support depends on AVRDx GPIO ISR multiplexer
but the configuration option did not enforce it.

Signed-off-by: Kerogit <kr.git@kerogit.eu>
2025-05-19 22:29:58 +08:00
Kerogit
6196327155 boards/avr/avrdx/breadxavr: replace board hello configuration with NSH
Unlike the Hello, world example, the NSH configuration can serve
as a starting point for testing other examples.

Signed-off-by: Kerogit <kr.git@kerogit.eu>
2025-05-19 22:29:58 +08:00
Kerogit
bf76231f3c boards/avr/avrdx/breadxavr: support for buttons handled by input driver
This patch registers board buttons in input driver as /dev/buttons
and provides functions required by the driver
2025-05-08 15:58:18 +08:00
Kerogit
ca7941eec7 arch/avr/avrdx: added support for serial driver
This patch adds support for using generic serial driver
with AVR DA/DB family of MCUs.
2025-05-08 15:58:18 +08:00
Kerogit
4000eaa1b8 boards/avr/avrdx/breadxavr: added AVR DA chip on breadboard
Example breadboard to have something to pair with AVR Dx chip
development
2025-05-08 15:58:18 +08:00