I have been working on an ArduPilot port for the Infineon CYT4BB7, a member of the TRAVEO™ T2G family. The port recently reached its first important milestone: ArduCopter successfully completed its first flight on the new platform.
This work started as part of a university unmanned-system competition. At first, the goal was simply to get ArduPilot running reliably on our custom hardware. As the project developed, however, it gradually became a more complete AP_HAL_Infineon implementation.
The current code is still experimental and has not been upstreamed, but it is now able to boot without a debugger, communicate with Mission Planner, read the flight sensors, store parameters, receive RC input and drive a multirotor in flight.
The platform
The CYT4BB7 contains one Cortex-M0+ core and two Cortex-M7 cores.
In the current implementation, the Cortex-M0+ performs the initial platform startup and releases the main Cortex-M7 core. ArduPilot then runs on the first Cortex-M7 under FreeRTOS.
The second Cortex-M7 has also been used experimentally for auxiliary processing, although it is not required by the current flight-tested version.
The software stack currently consists of:
AP_HAL_Infineon- FreeRTOS
- Infineon PDL and HAL
- A minimal custom CYT4BB7 BSP
- The GCC Arm toolchain
- ArduPilot’s Waf build system
Unlike the ChibiOS port, the current implementation does not build the platform layer as a separate static library. The required Infineon BSP, PDL, HAL and FreeRTOS source files are compiled directly through Waf together with the ArduPilot build.
This was the simplest way to preserve the working Infineon configuration while integrating it into ArduPilot’s normal build process.
What works today
The HAL currently includes:
- Scheduler and system timing
- UART with DMA
- SPI and I2C
- GPIO
- PWM motor output
- SBUS RC input
- ADC
- Work Flash parameter storage
- IMU, barometer and compass support
- MAVLink communication with Mission Planner
The most difficult parts of the port were not the individual peripheral drivers, but the platform-level details around them: multicore startup, the clock tree, DMA and cache coherency, linker layout, Flash storage and real-time task scheduling.
After resolving these issues, the system became stable enough to perform basic multirotor flight testing.
Building it
The repository includes the Waf integration and the required external dependencies. After configuring the board, ArduCopter can be built using the normal command:
./waf configure --board CYT4BB7
./waf copter
Repository:
handle233/ardupilot: ArduPilot running on Infineon CYT4BB7 / Traveo II
The port does not yet include an ArduPilot-compatible bootloader. The generated firmware must currently be programmed using a CYT4BB7-compatible debugger and development environment.
What comes next
Although this project was originally created for a competition, I plan to continue maintaining it and keeping it compatible with newer ArduPilot versions.
There is still a lot to improve, including the bootloader, automated builds, documentation, board-definition structure and long-term hardware testing.
I am sharing the port now because I would like to hear from other ArduPilot developers and anyone working with Infineon TRAVEO T2G devices. Feedback on the HAL structure, build integration and future direction would be very useful.
I would also be happy to collaborate with anyone interested in testing the port, improving it or bringing ArduPilot to other hardware in the same MCU family.
The code is available in the repository above. Questions, suggestions and contributions are welcome.
