nuttx/Documentation/platforms
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 docs/qemu-armv8a: add doc for fastboot tcp 2025-06-19 10:10:01 +08:00
avr arch/avr/avrdx: do not copy const variables into RAM 2025-07-10 12:21:40 -03:00
ceva Documentation: add missing platforms to platforms/ and remove introduction/platforms 2023-10-22 19:06:44 +08:00
hc style: fix typos 2025-04-30 13:45:46 +08:00
mips style: fix typos 2025-04-30 13:45:46 +08:00
misco misco/lm32/boards/misoc: Migrate README.txt to RST 2025-05-08 03:04:04 +02:00
or1k Documentation: migrate the rest boards 2023-10-26 18:13:34 -03:00
renesas style: fix typos 2025-04-30 13:45:46 +08:00
risc-v Documentation/risc-v: Add LP_I2C docs for esp32[-c6] 2025-07-09 12:18:06 +08:00
sim boards/sim: add CAN support and configuration 2025-05-03 11:26:08 +08:00
sparc Documentation: migrate the rest boards 2023-10-26 18:13:34 -03:00
tricore style: fix typos 2025-04-30 13:45:46 +08:00
x86 Documentation: fix spelling 2025-05-15 11:33:41 +08:00
x86_64 boards/x86_64/qemu-intel64: add xHCI support to jumbo configs 2025-05-15 21:58:57 +08:00
xtensa Docs/espressif: Add crypto defconfig docs for esp32[-s2|-s3] 2025-07-09 12:13:06 +08:00
z16 Documentation: update broken links 2024-04-10 15:17:53 -03:00
z80 Documentation: update broken links 2024-04-10 15:17:53 -03:00
index.rst Documentation: migrate /arch 2023-10-26 00:08:54 +08:00