parthitce opened a new pull request, #19041: URL: https://github.com/apache/nuttx/pull/19041
## Summary This PR adds support for the TriCore architecture used in the Infineon AURIX TC3X (TC1.6P core) and TC4X (TC1.8P core) SoC families. It also adds support for two evaluation boards, the AURIX Lite Kit TC375 and the AURIX Lite Kit TC4D7. The TriCore code that was in apache/nuttx before this change depends on the iLLD vendor SDK that has to be downloaded at build time. That arrangement does not fit an upstream tree and breaks any offline build. The chip-per-name directory layout under arch/tricore/src and boards/tricore was built around that iLLD path and only ever held two boards that do not build on current master and are not in CI. This PR removes the iLLD path along with those legacy directories and replaces them with a family-first layout under arch/tricore/src: common, aurix (shared peripherals), tc3x and tc4x. The new port uses direct SFR access and works with both GNU GCC (tricore-elf-gcc) and the HighTec LLVM compiler. ## Impact - Users: a new architecture port. Two boards are available: a2g-tc375-lite and a3g-tc4d7-lite. Each board has an nsh defconfig for GCC and an nsh-llvm defconfig for HighTec LLVM. - Build: adds Make and CMake support for tricore-elf-gcc and for the HighTec clang toolchain. No other architecture is touched. - Hardware: only UART is wired in this initial port. GPIO pinmuxing is available for follow-up drivers. Other peripherals (SPI, MCAN, QSPI, and so on) will follow in upcoming series. - Documentation: Documentation/platforms/tricore is refreshed to match the new layout, toolchains and drivers. - Security: no security-relevant changes outside the new arch. - Compatibility: the iLLD-based TriCore configurations are removed. The two boards that lived under the old layout (KIT_A2G_TC397_5V_TFT and TRIBOARD_TC4X9_COM) do not build on current master and have no test list entry, so no working user is affected. ## Testing Host machine: Linux x86_64. Toolchains: - GNU GCC: tricore-elf-gcc 11.3.1 - HighTec LLVM: clang 10.2.0 (uses a HighTec license through $RLM_LICENSE) - OpenOCD: tricore-openocd with the Infineon AURIX patches, used for flashing real hardware Boards used on real hardware: - AURIX Lite Kit TC375 (a2g-tc375-lite) - AURIX Lite Kit TC4D7 (a3g-tc4d7-lite) Hardware boot and NSH: - Both boards flashed through OpenOCD one-shot. - NSH banner reached on the on-board USB serial console (ASCLIN0 at 115200, 8N1). - uname -a returns the correct build identifier and board name on both boards. ostest with CONFIG_TESTING_OSTEST=y and CONFIG_TESTING_OSTEST_LOOPS=2: - TC375 Lite Kit: PASSED 6, FAILED 0, no panic or assert, clean user_main exit. - TC4D7 Lite Kit: PASSED 6, FAILED 0, no panic or assert, clean user_main exit. Subtests exercised by ostest include mutex_test, sched_lock, cond_test, cancel_test (pthread_join against a cancelled thread), robust_test (robust mutexes), the round-robin scheduler test with two get_primes threads, and task_restart. The thread-heavy workload exercises the CSA allocator on every task and thread creation. Style and compliance: - tools/checkpatch.sh -g <range> -m on the 12-commit range: All checks pass. Full boot and ostest logs from both boards are kept in the local test output directory. Signed-off-by: Saravanan Sekar <[email protected]> Signed-off-by: Parthiban Nallathambi <[email protected]> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
