nuttx/boards
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
..
arm board/weact-stm32h743 Add sdcard support 2025-07-07 23:43:32 +08:00
arm64 arch/arm64/fvp-v8r: enable Cmake 2025-06-30 17:12:38 +08:00
avr arch/avr/avrdx: do not copy const variables into RAM 2025-07-10 12:21:40 -03:00
dummy
hc/m9s12 boards/hc/m9s12: migrate to SPDX identifier 2024-11-12 22:20:59 +08:00
mips boards: net tcp backlog is enabled by default 2025-06-26 09:32:54 -03:00
misoc/lm32/misoc boards/misoc/lm32: migrate to SPDX identifier 2024-11-12 22:20:59 +08:00
or1k/mor1kx/or1k boards/defconfig: remove unused config about dd 2025-04-20 00:41:26 +08:00
renesas boards: net tcp backlog is enabled by default 2025-06-26 09:32:54 -03:00
risc-v arch/risc-v: Add LP I2C for esp32[-c6] 2025-07-09 12:18:06 +08:00
sim/sim/sim boards: net tcp backlog is enabled by default 2025-06-26 09:32:54 -03:00
sparc style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
tricore/tc3xx/tc397 style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
x86/qemu/qemu-i486 qemu-i486: Simplify Make.defs by include Toolchain.defs 2025-01-27 02:28:39 +08:00
x86_64/intel64/qemu-intel64 boards/qemu-intel64/qemu.ld: add .lbss, .ldata and .lrodata to approriate sections 2025-07-07 23:45:15 +08:00
xtensa boards/xtensa/esp32s3/esp32s3-box: Fix ILI9342C color inversion 2025-07-09 12:18:23 +08:00
z16/z16f/z16f2800100zcog boards/z16/z16f: migrate to SPDX identifier 2024-11-12 22:20:59 +08:00
z80 boards: net tcp backlog is enabled by default 2025-06-26 09:32:54 -03:00
.gitignore
Board.mk
boardctl.c libc/elf: rename modlib to libelf 2025-04-11 09:43:22 +08:00
CMakeLists.txt boards: migrate to SPDX identifier 2024-11-12 22:20:59 +08:00
dummy.c boards: migrate to SPDX identifier 2024-11-12 22:20:59 +08:00
Kconfig arch/avr/avrdx: do not copy const variables into RAM 2025-07-10 12:21:40 -03:00
Makefile boards: migrate to SPDX identifier 2024-11-12 22:20:59 +08:00