walnux/Documentation
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
..
_extensions Documentation: port warnings_filter Sphinx extension from Zephyr 2023-11-28 09:18:29 -08:00
_static docs: reduce main content max width from 1200px to 1000px 2021-03-26 23:41:45 -05:00
_templates Documentation: support versioned docs 2020-11-26 10:58:44 -08:00
applications docs/syslogd: Update syslogd docs to reflect implementation 2025-06-18 01:34:22 +08:00
components drivers/sensors/l86xxx: Make some dependency patches and update documentation 2025-07-09 09:45:21 +02:00
contributing docs/contributing: Add a commit message template 2025-06-03 17:33:24 +08:00
debugging Documentation: fix spelling 2025-05-15 11:33:41 +08:00
faq DOC: Add how to get application on NSH 2024-06-06 02:39:56 +08:00
guides docs: Update the ELF guides 2025-06-11 23:11:08 +08:00
implementation WIP: Documentation: replace first person perspectives 2025-05-19 20:21:33 +08:00
introduction WIP: Documentation: replace first person perspectives 2025-05-19 20:21:33 +08:00
logos style: fix typos 2025-04-30 13:45:46 +08:00
platforms arch/avr/avrdx: do not copy const variables into RAM 2025-07-10 12:21:40 -03:00
quickstart doc: update GDB python plugin path 2025-02-18 11:16:17 -03:00
reference Documentation: Fix a typo in scheduler docs 2025-06-02 23:09:02 +08:00
ReleaseNotes Documentation: add NuttX-12.10.0 release notes 2025-06-27 20:20:40 +08:00
standards Documentation: review supported POSIX interfaces in NuttX 2025-06-12 10:13:52 -03:00
.gitignore docs/tags: Introduce tagging feature to the documentation. 2025-04-29 09:18:25 +02:00
conf.py docs: Update the ELF guides 2025-06-11 23:11:08 +08:00
glossary.rst rename doc/ -> Documentation/ 2020-08-24 10:29:55 -07:00
index.rst Documentation: review supported POSIX interfaces in NuttX 2025-06-12 10:13:52 -03:00
known-warnings.txt fs: Add VFS docs 2024-02-20 18:28:09 -08:00
legacy_README.md Documentation: fix spelling 2025-05-15 11:33:41 +08:00
make.bat Documentation: Remove all tail spaces from *.rst and *.html 2020-10-18 10:51:22 -07:00
Makefile docs/tags: Introduce tagging feature to the documentation. 2025-04-29 09:18:25 +02:00
Pipfile docs: Fix pipenv lockfile for older Python versions 2025-06-11 23:11:08 +08:00
Pipfile.lock build(deps): bump tornado from 6.4.2 to 6.5.1 in /Documentation 2025-06-12 19:09:47 +08:00
substitutions.rst Remove the double blank line from source files 2022-02-20 20:10:14 +01:00