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> |
||
|---|---|---|
| .github | ||
| arch | ||
| audio | ||
| binfmt | ||
| boards | ||
| cmake | ||
| crypto | ||
| Documentation | ||
| drivers | ||
| dummy | ||
| fs | ||
| graphics | ||
| include | ||
| libs | ||
| mm | ||
| net | ||
| openamp | ||
| pass1 | ||
| sched | ||
| syscall | ||
| tools | ||
| video | ||
| wireless | ||
| .asf.yaml | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| .yamllint | ||
| AUTHORS | ||
| CMakeLists.txt | ||
| CONTRIBUTING.md | ||
| INVIOLABLES.md | ||
| Kconfig | ||
| LICENSE | ||
| Makefile | ||
| NOTICE | ||
| README.md | ||
| ReleaseNotes | ||
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.