Zephyr’s support for many MCUs and boards, together with Devicetree overlays, Kconfig configuration fragments and west, allowed the same application codebase to run across the pre-silicon and production platforms.
The application logic was kept as operating-system-independent as possible, with an OS abstraction layer handling platform-specific APIs. The pre-silicon platform used upstream Zephyr, while the production platform used a downstream Zephyr version.
Each platform had its own hardware abstraction, Devicetree and Kconfig configuration, but the application code remained the same. The pre-silicon platform could also be used to test newer Zephyr versions before they were adopted by the production firmware.
For the hardware setup, the team used a Raspberry Pi Pico connected to a custom PMIC evaluation kit through I2C and interrupt lines. The Pico represented the MCU used in the production system, while the evaluation kit provided access to the actual PMIC hardware.
A battery was also connected to provide power and fuel-gauge information. The Raspberry Pi Pico was selected because of its availability, cost, memory, peripheral support and suitable CPU performance.
The team then used Zephyr’s Twister test runner and Pytest to automate hardware-in-the-loop validation.
Twister read the test plan from a YAML file, compiled the application for the Raspberry Pi Pico, flashed the board and then invoked the Pytest harness. Pytest controlled a USB-C switch connected to the host PC, allowing the test setup to automatically connect and disconnect a charger or another USB-C device from the PMIC evaluation kit.
One example was a plug-in and plug-out test. The test connected a charger, waited for USB Power Delivery negotiation, read the voltage and current on the VBUS line, disconnected the charger and repeated the process several times.
All test cycles had to pass. Twister collected the results from compilation, flashing and Pytest and reported a final pass or fail result.
The setup was also integrated into GitHub Actions using a self-hosted device connected to the hardware in the lab. Whenever a pull request was created or merged, the hardware-in-the-loop test ran automatically.
The test was used as a merge gate, meaning a pull request could not be merged if the test failed. Logs and results were stored as GitHub artifacts so developers could investigate failures without needing direct access to the lab setup.
The unified firmware stack removed the need to manually synchronize separate repositories. It also made the bugs found during pre-silicon testing more relevant to the final production system and reduced the number of issues that appeared again during bring-up.
In one project, both the hardware and the RTOS were changing. The team expected this to create a difficult bring-up process and potentially affect the project schedule.
The pre-silicon platform was available months before the final silicon. It allowed the team to port the firmware from the proprietary RTOS to Zephyr and run real production firmware test cases before the hardware arrived.
Despite the scale of the changes, the team reached production readiness on schedule.
The session concluded that a widely supported open source RTOS such as Zephyr can help align early testing platforms with final production systems. Devicetree and Kconfig make it possible to move the same application across supported boards without changing the application code.
It also highlighted that pre-silicon testing is most valuable when the code closely matches the production firmware, and that investing early in automated hardware-in-the-loop testing can save significant time during silicon bring-up.
Qualcomm is continuing to expand its adoption of Zephyr across projects using microcontrollers, application processors and virtual machines. The team also plans to upstream USB Type-C Power Delivery, fuel-gauge and charger drivers, open source parts of the application, and make future PMIC evaluation boards available as developer kits.
Watch the session here. Check out the OSS NA 2026 playlist here.
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.