This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
gsoc:2025-gsoc-zephyr [2025/02/11 13:48] IulianaProdan created |
gsoc:2025-gsoc-zephyr [2025/03/19 07:06] (current) dbaluta [Project 2: Port CUPS and Printer Applications to Zephyr] |
||
---|---|---|---|
Line 5: | Line 5: | ||
====== Zephyr ====== | ====== Zephyr ====== | ||
- | Sound Open Firmware (SOF) is an open source audio digital signal processing firmware and driver infrastructure. | + | Zephyr RTOS is a lightweight and flexible real-time operating system tailored for embedded systems and devices with limited resources, like microcontrollers. |
- | Is the first fully open source BSD/MIT-licensed audio firmware. The SOF firmware and drivers are platform- and architecture-agnostic. | + | Developed as a collaborative project hosted by the Linux Foundation, Zephyr supports multiple architectures and is released under the Apache License 2.0. |
- | The SOF project provides firmware source code, tools, and debug capabilities for developers to innovate and enhance production devices for all Linux based operating systems. | + | Zephyr is commonly used in IoT applications and other embedded systems where efficiency and reliability are essential. |
- | ==== Sound Open Firmware Community ==== | + | |
- | Website - https://www.sofproject.org/ | + | ==== Zephyr Community ==== |
- | Git - https://github.com/thesofproject/ | + | Website - https://www.zephyrproject.org/ |
- | Documentation - https://thesofproject.github.io/latest/index.html | + | Git - https://github.com/zephyrproject-rtos/zephyr/ |
- | Discord - https://discord.com/invite/Ck7jw53nU2 (see #sof channel) | + | Documentation - https://docs.zephyrproject.org/latest/index.html |
- | Watch this if you are new to SOF - [[https://www.youtube.com/watch?v=vwDoEumA1Mo | Sound Open Firmware introduction]] | + | Discord - https://discord.com/invite/Ck7jw53nU2 |
- | Code Licenses - BSD/MIT | + | Getting Started Guide - https://docs.zephyrproject.org/latest/develop/getting_started/index.html |
+ | |||
+ | Code Licenses - Apache 2.0 | ||
===== Project Proposals ===== | ===== Project Proposals ===== | ||
- | ===== Project 1: Enhancing the SOF Demo GUI for Improved Usability and Functionality ===== | + | ===== Project 1: Running Open-Source ML Models on HiFi4 DSP with Zephyr RTOS ===== |
+ | **Machine-Learning-related project** | ||
//1 contributor medium-size (175 hours)// | //1 contributor medium-size (175 hours)// | ||
Line 33: | Line 35: | ||
//Level of difficulty//: Intermediate | //Level of difficulty//: Intermediate | ||
- | [[https://www.sofproject.org/|Sound Open Firmware (SOF)]] is an open source audio digital signal processing (DSP) firmware and an SDK that together provide infrastructure and development tools for developers working on audio or signal processing. | + | [[https://docs.zephyrproject.org/latest/index.html|Zephyr]] is an open-source, real-time operating system (RTOS) optimized for resource-constrained devices, making it ideal for IoT and embedded systems. It supports multiple architectures and has a modular design. |
- | More on this, you can find here: https://thesofproject.github.io/latest/introduction/index.html | + | |
- | SOF has support for NXP, Intel, AMD and Mediatek targets. | + | For machine learning (ML) with Zephyr, developers can integrate frameworks like [[https://github.com/tensorflow/tflite-micro|TensorFlow Lite for Microcontrollers (TFLM)]] or [[https://github.com/edgeimpulse|Edge Impulse]]. |
+ | These allow small, efficient ML models to run on devices with limited CPU and memory resources. | ||
- | SOF comes with a set of runtime tools - command line applications that can be used to exchange data with running firmware and a demo GUI. | + | The i.MX series from NXP features powerful DSP cores that can offload computational workloads from the main CPU. |
- | The current GUI, while functional, lacks some modern usability features and doesn’t fully exploit the potential of SOF’s advanced capabilities. | + | This project will focus on leveraging Zephyr RTOS to manage ML workloads on these DSPs efficiently. It will require porting or optimizing existing ML frameworks for the DSP, designing APIs for seamless integration, and demonstrating an end-to-end ML pipeline running on Zephyr. Potential deliverables include support for TFLM on the DSP, and a sample application showcasing the implementation. |
- | {{ :gsoc:sof_gui.jpeg?200 |}} | + | |
- | This project aims to improve and enhance the SOF Demo GUI, which is used to demonstrate and control SOF components on hardware. The goal is to add new features, improve the user interface, and enhance the overall usability and functionality of the GUI. | ||
- | This project will focus on creating a new version of the GUI with the following key improvements: | + | **Expected Outcomes:** |
- | - Redesign the GUI to make it more intuitive and user-friendly; | + | * Integration of ML inference frameworks (such as TFLM) on NXP DSPs running Zephyr |
- | - Implement a modern and responsive design using the latest GTK features; | + | * Sample applications demonstrating ML inference (e.g., speech recognition, anomaly detection) |
- | - Display a real-time frequency spectrum to visualize the audio signal's frequency content; | + | * Documentation and tutorials for deploying ML workloads on NXP DSPs |
- | - Provide step-by-step tutorials to guide new users through the features of the GUI. | + | * Submit pull requests to Zephyr’s upstream repository |
- | This will involve working with the existing codebase, implementing new features, and optimizing the current functionalities. | ||
- | This project will provide a more powerful and user-friendly tool for demonstrating and controlling SOF components, benefiting developers and users in the audio processing community. The enhancements will make it easier for new users to get started with SOF, while providing advanced features for experienced users. | + | **Skills Required:** |
+ | * %%C/C++%% programming | ||
+ | * Embedded systems and real-time operating systems (Zephyr) | ||
+ | * Familiarity with TensorFlow Lite Micro or similar lightweight ML frameworks | ||
+ | * Familiarity with version control systems (e.g., Git) | ||
- | **Expected Outcomes:** | + | **Mentors:** |
- | * A significantly improved SOF Demo GUI with enhanced usability and functionality. | + | * Iuliana Prodan <iuliana.prodan@nxp.com> |
- | * Comprehensive documentation and tutorials to help users understand and utilize the new features. | + | * George Stefan <george.stefan@nxp.com> |
- | * A robust and well-tested codebase that can be easily maintained and extended in the future. | + | * Daniel Baluta <daniel.baluta@gmail.com> |
- | * Submit all enhancements back to the [[https://github.com/thesofproject/sof|SOF]] | + | * Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> |
+ | |||
+ | ===== Project 2: Port CUPS and Printer Applications to Zephyr===== | ||
+ | |||
+ | //1 contributor full-size (350 hours)// | ||
+ | |||
+ | //Level of difficulty//: Intermediate | ||
+ | |||
+ | Probably many of you have already thought about that one can take an SBC, install Linux and [[https://openprinting.github.io/cups|CUPS]] or a Printer Application on it, and connect this to an old printer which is still mechanically perfect but needs a driver which is not available any more for some operating systems. Suddenly the printer turns into a modern, driverless IPP printer which can be used with any operating system. | ||
+ | |||
+ | But it is a little awkward having a little box dangling behind the printer which also occupies a power outlet. Also one can perhaps also make use of much cheaper SBC. | ||
+ | |||
+ | Imagine you could buy a tiny board for a few dollars and put it somewhere inside the printer and grab its power from the printer's power supply. | ||
+ | |||
+ | Such tiny boards are often not powerful enough to run Linux, but there is also the much more lightweight [[https://www.zephyrproject.org/|Zephyr]] operating system. This is a system for IoT applications on low-footprint hardware. | ||
+ | |||
+ | And this scenario does not only serve for cheap DIY solutions to save old printers, it also can be a base for cost-effective printer firmware development. | ||
+ | |||
+ | This project is about investigating whether one could run the components of the free software printing stack, as [[https://openprinting.github.io/cups|CUPS]], [[https://github.com/michaelrsweet/pappl/|PAPPL]], [[https://github.com/OpenPrinting/libcupsfilters|libcupsfilters]], ... under the Zephyr operating system, and actually let this tiny print server execute printer drivers and print on legacy printers. Also the handling of print data and the need of resources here needs to be investigated. Can we hold several pages? Can we use [[https://ghostscript.com/|Ghostscript]]? Or do we have to stream raster print data from the client to the printer? | ||
+ | |||
+ | Most desirable is to do this with PAPPL (Printer APPlication Library), as it is designed to emulate a driverless IPP printer in software, including the so-called "Gadget" mode to appear as an IPP-over-USB device when connecting the power supply USB port of the SBC with the client computer's USB. | ||
+ | |||
+ | Code License: Apache 2.0, MIT (licenses of the OpenPrinting projects) | ||
**Skills Required:** | **Skills Required:** | ||
- | * Python programming | + | * %%C/C++%% programming |
- | * C programming | + | * Embedded systems and real-time operating systems (Zephyr) |
- | * GTK and GUI development | + | |
* Familiarity with version control systems (e.g., Git) | * Familiarity with version control systems (e.g., Git) | ||
**Mentors:** | **Mentors:** | ||
- | * Iuliana Prodan - iuliana.prodan@nxp.com | + | * Till Kamppeter <till@linux.com> (Project lead [[https://www.openprinting.org/|OpenPrinting]]) |
- | * George Stefan - george.stefan@nxp.com | + | * Iuliana Prodan <iuliana.prodan@nxp.com> |
+ | * Zephyr Developers TBD | ||