Apache NuttX is a mature, real-time embedded operating system (RTOS) https://nuttx.apache.org/
Find a file
Michal Lenc ef469bac7f samv7: ensure the correct location of message RAM
The message RAM does not behave correctly if lower 16 bits of
buffer address overflow (upper 16 bits are set once in matrix driver
for the entire CAN driver). For example message RAM starting at
0x2040fc20 would not work for buffers that go beyond 0x20410000 and
MCAN would sent data located at 0x20400000 to the network. The same
issue would occur even if TX buffers would start directly at 0x20410000.
The upper 16 bits would still have 0x2040 value because of RX buffers
located in 0x2040ffff range.

This commit ensures the RAM is always located at the beginning of
the data section and thus the overflow mentioned above should never occur.
The alternative would be to use larger alignment, but the message RAM
can have up to 4352 words and this would cause a significant padding.

The RAM is also initialized to zero to ensure valid parity/ECC checksums.
The address issue is not described anywhere in the manual, so it is
possible this is caused by some incorrect configuration, but the context
of the registers looks valid.

This commit also fixes the compilation errors when the driver is run
without data cache.

Signed-off-by: Michal Lenc <michallenc@seznam.cz>
2025-02-10 15:43:54 -03:00
.github .github/ISSUE_TEMPLATE: Add host_info command section into bug report template 2025-01-21 09:11:17 +08:00
arch samv7: ensure the correct location of message RAM 2025-02-10 15:43:54 -03:00
audio Fix some minor style issues 2024-11-20 10:51:07 +01:00
binfmt macro/align: Use ALIGN_UP and ALIGN_DOWN uniformly 2025-01-12 16:48:35 +08:00
boards samv7: ensure the correct location of message RAM 2025-02-10 15:43:54 -03:00
cmake [cmake] savedefconfig.cmake: fix EOL changes to defconfig files on Windows 2025-01-23 02:34:50 +08:00
crypto crypto/xform.c: migrate to SPDX identifier 2024-12-19 14:48:18 +08:00
Documentation Documentation: Add XIAO nRF52840 Board 2025-02-10 15:42:53 -03:00
drivers rptun/ivshmem: RPTUN_IVSHMEM should depends on DEV_SIMPLE_ADDRENV 2025-02-07 17:40:38 +08:00
dummy build: add initial cmake build system 2023-07-08 13:50:48 +08:00
fs fs/spinlock: replace no sched_lock() version to improve the performance 2025-01-24 11:48:23 +08:00
graphics move readv/writev to the kernel 2024-10-30 17:07:54 +08:00
include include/stdlib.h: define system()'s prototype for the flat build 2025-02-07 09:03:14 +08:00
libs gdbstub: fix memory binary upload on latest GDB 2025-02-09 11:45:43 +08:00
mm Fix Kconfig style 2025-01-23 23:01:54 +08:00
net bug fix: can_datahandler wrong return value 2025-01-30 11:37:29 -03:00
openamp Remove all jira and changeid information from the kernel 2024-11-06 02:04:03 +08:00
pass1 Revert "build depend:Revert Make.dep intermediate ddc file" 2024-09-15 19:29:47 +08:00
sched clock/clock_adjtime.c: fix compile errors 2025-02-06 09:22:44 +08:00
syscall syscall: add missing epoll API 2025-01-24 01:30:02 +08:00
tools nxgdb/mm: fix regular expression to parse log 2025-02-07 08:18:14 +08:00
video Revert "build depend:Revert Make.dep intermediate ddc file" 2024-09-15 19:29:47 +08:00
wireless bluetooth: miss carrier_[on/off] in bt_netdev 2025-02-10 09:01:03 +01:00
.asf.yaml
.gitignore gitignore: add Emacs auto-save files 2025-01-15 16:10:22 +08:00
.pre-commit-config.yaml Created pre-commit config file 2024-08-19 21:40:56 +02:00
.yamllint
AUTHORS AUTHORS: add Yamamoto Takashi 2024-11-04 22:29:22 +08:00
CMakeLists.txt Revert "kconfiglib/mark: It should use pip instead of apt install" 2025-01-13 19:12:25 -03:00
CONTRIBUTING.md Contributing and PR template fix. 2024-10-12 08:12:05 +08:00
INVIOLABLES.md
Kconfig debug symbol level: Use config instead 2024-12-04 22:36:45 +08:00
LICENSE libc string:Separate code. 2024-10-23 09:49:19 +08:00
Makefile tools: migrate to SPDX identifier 2024-09-10 23:11:11 +08:00
NOTICE Remove the double blank line from source files 2022-02-20 20:10:14 +01:00
README.md Gathering community recommendations 2023-10-28 13:55:56 +08:00
ReleaseNotes Documentation: move ReleaseNotes 2023-09-26 20:41:00 +08:00

POSIX Badge License Issues Tracking Badge Contributors GitHub Build Badge Documentation Badge

Apache NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller environments, the primary governing standards in NuttX are POSIX and ANSI standards. Additional standard APIs from Unix and other common RTOSs (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).

For brevity, many parts of the documentation will refer to Apache NuttX as simply NuttX.

Getting Started

First time on NuttX? Read the Getting Started guide! If you don't have a board available, NuttX has its own simulator that you can run on terminal.

Documentation

You can find the current NuttX documentation on the Documentation Page.

Alternatively, you can build the documentation yourself by following the Documentation Build Instructions.

The old NuttX documentation is still available in the Apache wiki.

Supported Boards

NuttX supports a wide variety of platforms. See the full list on the Supported Platforms page.

Contributing

If you wish to contribute to the NuttX project, read the Contributing guidelines for information on Git usage, coding standard, workflow and the NuttX principles.

License

The code in this repository is under either the Apache 2 license, or a license compatible with the Apache 2 license. See the License Page for more information.