On the linum-stm32h753bi, Ethernet throughput collapses in proportion to what the display panel is showing. With the LTDC scanning a black screen a 1.2 MiB TCP transfer to a wired peer takes 0.7 s; solid white takes 20 to 55 s and noise over 130 s, all at the same negotiated 100BASE-TX full duplex, with the same bytes read from the same SDRAM. The display's switching couples into the PHY hard enough to corrupt 100BASE-TX signalling, and TCP grinds through the losses at whatever rate survives. 10BASE-T signals at 2.5 V with Manchester coding at a tenth of the frequency, and does not care: black, white and noise all move at the link rate. The same transfer that took five minutes with the display rendering takes 5.6 seconds. Restricting the ANAR advertisement is deliberately not the same as disabling autonegotiation. A forced MCR leaves the partner to parallel detection, which cannot sense duplex and picks half, a genuine mismatch, verified here to stall bulk traffic completely. Advertising only 10BASE-T full duplex keeps the negotiation and lands both ends on the same mode. Also fix the never-compiled !CONFIG_STM32_AUTONEG path, which still called stm32_phywrite(); this driver has only ever had mdio_write(). And say what was negotiated at link-up: a duplex mismatch looks exactly like a bad cable, and nothing else reports which of the two it is. The vnc configuration of the linum board enables the new option, and its packet pool sizing from a few commits ago stays: at any link speed, 24 buffers of 196 bytes was never going to stream a display. Assisted-by: Claude:opus-5 Signed-off-by: Jorge Guzman <jorge.gzm@gmail.com> |
||
|---|---|---|
| .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 | ||
| .codespell-ignore-lines | ||
| .codespellrc | ||
| .editorconfig | ||
| .gitignore | ||
| .gitmessage | ||
| .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.