Commit graph

28 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
14e446628e Documentation/platforms/avr: document options of keeping const vars in flash
This patch adds a document that describes why const variables need to be
copied into the RAM in AVR architecture for normal program flow in NuttX.
It then describes options of accessing them directly from the flash without
need to do any copying.

Patch was tested by building the documentation.

Signed-off-by: Kerogit <kr.git@kerogit.eu>
2025-07-10 12:21:40 -03:00
Matteo Golin
9897ef3cdb docs/arduino-mega2560: Migrate README.txt to RST
Migrated legacy README.txt documentation to RST format.

Signed-off-by: Matteo Golin <matteo.golin@gmail.com>
2025-06-03 17:34:50 +08:00
Matteo Golin
170a86c4a5 docs/avr: Re-structure documentation
Re-structure the AVR documentation to have pages for the chip families,
and their own board listings.
2025-06-03 17:34:50 +08:00
Matteo Golin
ef04b4ccb6 boards/avr/atmega: Added Elegoo Mega2560r3 board support
Preliminary support for the Elegoo Mega2560r3 board by Elegoo with NSH
configuration.
2025-05-31 00:29:18 +08:00
Matteo Golin
6bcb8965cf docs/avr/at90usb: Migrate README.txt
Migrated teensy 2.0 README.txt to RST format. Moved common tool-chain
information to the chip page and provided back-link.

Signed-off-by: Matteo Golin <matteo.golin@gmail.com>
2025-05-25 18:47:41 +08:00
Matteo Golin
d0665bcda8 docs/avr/at90usb/micropendous3: Migrate README.txt
Migrated the README.txt files to RST format.

Signed-off-by: Matteo Golin <matteo.golin@gmail.com>
2025-05-25 18:47:41 +08:00
Kerogit
631732e647 Documentation/platforms/avr: move documents to fix table of contents
The document context-switch-notes.rst was leaking into "Supported Platforms"
table of contents. To fix this, it was moved to separate common directory
and referenced from AVR index.rst

Similar to that, the gpio_intr_mux.rst document was leaking into list
of supported AVR families. This too was fixed by moving it to separate
docs directory.

The change was tested by building the Documentation using make html

Signed-off-by: Kerogit <kr.git@kerogit.eu>
2025-05-19 22:29:58 +08:00
Kerogit
6f22e249a4 Documentation/platforms/avr: added information about UART usage
This patch adds instructions on how to enable UART on AVR DA/DB chips

Signed-off-by: Kerogit <kr.git@kerogit.eu>
2025-05-19 22:29:58 +08:00
Kerogit
8126a8119f arch/avr: reworked eliminating unused sections with GCC
After a mailing list suggestion, the indirection that enabled
ARCH_TOOLCHAIN_GCC only when user requested it is removed.

The indirection was a safety measure for chips and boards with linker
scripts that (possibly) do not handle keeping for example .vectors
section even if the linker considers it unreferenced.

Instead, all existing configurations now disable
CONFIG_DEBUG_OPT_UNUSED_SECTIONS to prevent the linker from removing
any code. (Preserving previous behaviour.) This can be removed again
at some point after making sure that corresponding linker script
only removes code that is truly unused.

Signed-off-by: Kerogit <kr.git@kerogit.eu>
2025-05-19 22:29:58 +08:00
Kerogit
83872330ed Documentation/platforms/avr: provide more information for breadxavr board
This patch adds additional information to breadxavr board for AVR DA family
development. The text now covers how to use Button input driver and also
adds some information about using the hardware.

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
Lars Kruse
ccc974b224 WIP: Documentation: replace first person perspectives
Documentation containing first person perspective phrasing may be
understood as belonging to a single person project (instead of a
community project).
2025-05-19 20:21:33 +08:00
Lars Kruse
57a7cb503a Documentation: fix spelling 2025-05-15 11:33:41 +08:00
Kerogit
1a8fba827a arch/avr/src/avrdx: added support for AVR128DA64 and AVR128DB64 chips
This patch adds definitions for listed chips. No other changes are needed
as the chips are similar to the previously supported AVR128DA28 and all
that is needed is some definitions for extra peripherals.
2025-05-08 15:58:18 +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
065910c7d3 arch/avr/src/avrdx: added I/O interrupt multiplexer
AVR DA/DB family chips have single interrupt vector for all changes
on an I/O port. This poses problem when multiple drivers want to claim
the same interrupt (might happen for example with button and discrete
joystick drivers using pins on the same port.)

The I/O multiplexer solves it by providing interface similar
to irq_attach. However, it allows registration of multiple handlers
for the same interrupt vector with additional information recording
which pins should be serviced by each handler.

Only handler for pins that triggered the interrupt is then called.
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
bce6ef6aad arch/avr/avrdx: provide tickless OS option
This patch adds tickless OS support for AVR architecture in alarm mode.
Currently, only devices from AVR DA/DB family are supported.
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
Kerogit
66f6bb45ab arch/avr/avrdx: initial support for AVRnDx chips
Initial support adds chip specific files like Kconfig, flags for the compiler,
and basic functionality like system timer. Some files are stubs derived
from corresponding ATmega files but without the functionality they are
supposed to add (to be done in later patches)

Part of the work is altered copies of corresponding files for ATMega MCUs.

Initially supported is AVR128DA28.
2025-05-08 15:58:18 +08:00
Lars Kruse
b333ad3ab5 style: fix typos
Thanks, codespell!
2025-04-30 13:45:46 +08:00
Emmanuel Ferdman
4847587cf2 Documentation: update broken links 2024-04-10 15:17:53 -03:00
Alan Carvalho de Assis
e0051240fb Documentation: Add docummentation to AVR32DEV1/UC3B-CPU board.
This commit add documentation to the UC3B-CPU board, this is
board is a clone of Atmel AVR32DEV1.

Signed-off-by: Alan C. Assis <acassis@gmail.com>
2024-02-18 17:29:48 -08:00
Nathan Hartman
26e4dd5638 Documentation: Fix various typos 2023-11-23 16:38:19 -08:00
raiden00pl
56529d2944 Documentation: migrate the rest boards
- migrated /README are removed from /boards

- there are a lot of READMEs that should be further converted to rst.
  At the moment they are moved to Documentation/platforms and included in rst files
2023-10-26 18:13:34 -03:00
raiden00pl
88b7ce80a0 Documentation: add missing platforms to platforms/ and remove introduction/platforms 2023-10-22 19:06:44 +08:00
Alan Carvalho de Assis
b91042e5a0 avr: Add support to Atmega mega1284p_xplained board 2023-03-21 16:30:44 +02:00