======Google Summer of Code 2023: Zephyr projects====== [[:gsoc:google-summer-code-2023|Main GSoC Linux Foundation page: How to apply, deadlines, other workgroups, ...]] ===== Zephyr Introduction ===== What is Zephyr? The Zephyr Project is a Linux Foundation hosted Collaboration Project. It’s an open source collaborative effort uniting developers and users in building a best-in-class small, scalable, real-time operating system (RTOS) optimized for resource-constrained devices, across multiple architectures. The Zephyr Project is a neutral project where silicon vendors, OEMs, ODMs, ISVs, and OSVs can contribute technology to reduce costs and accelerate time to market for billions of connected embedded devices. The software is a perfect choice for simple connected sensors, LED wearables, modems, and small wireless gateways. Because Zephyr is modular and supports multiple architectures, developers can create a solution that meets their needs. As an open source project, the community evolves the project to support new hardware, developer tools, sensors, and device drivers. Improvements are frequently delivered to incorporate enhancements in security, device management capabilities, connectivity stacks, and file systems. ===== Zephyr Community ===== Website - www.zephyrproject.org Git - https://github.com/zephyrproject-rtos Mailing Lists - http://lists.linuxfoundation.org/mailman/listinfo/automotive-discussions Discord channel - https://discord.com/invite/Ck7jw53nU2 Code Licenses: mostly Apache 2.0, MIT for own code, otherwise as upstream Pre Read If you are New to Zephyr: https://github.com/maksimdrachov/zephyr-rtos-tutorial ===== Project Proposals ===== **To be updated** ==== Project #1 HTTP Server Implementation ==== 1 contributor full-size (350 hours). Zephyr has historically incorporated the [[https://github.com/civetweb/civetweb|CivetWeb]] embedded HTTP server. However, Zephyr's CivetWeb module was [[https://github.com/zephyrproject-rtos/zephyr/pull/46061|deprecated]] and subsequently module [[https://github.com/zephyrproject-rtos/zephyr/pull/46746|removed]] due to complications of maintaining a fork of a 3rd-party project in an external module. The project has specified many desired features for a new, fully-integrated, and in-tree [[https://github.com/zephyrproject-rtos/zephyr/issues/46758|replacement for CivetWeb]]. The proposed design will be able to take advantage of Zephyr's many existing building blocks. * [[https://docs.zephyrproject.org/latest/develop/test/ztest.html|ZTest Framework]] * [[https://docs.zephyrproject.org/latest/connectivity/networking/api/http.html|HTTP]], [[https://docs.zephyrproject.org/latest/connectivity/networking/api/websocket.html|WebSocket]], [[https://docs.zephyrproject.org/latest/services/misc.html#json|JSON]], and [[https://github.com/zephyrproject-rtos/mbedtls|mbedTLS]] libraries * [[https://docs.zephyrproject.org/latest/services/portability/posix.html|POSIX API]] support for socket, threads, and filesystem operations * [[https://docs.zephyrproject.org/latest/build/kconfig/index.html|Kconfig]] and [[https://docs.zephyrproject.org/latest/build/cmake/index.html|Build System]] to fine-tune built-in server options * [[https://docs.zephyrproject.org/latest/kernel/iterable_sections/index.html|Iterable Section]] support, for flexible specification of HTTP services and resources {{ :gsoc:gsoc-2023-httpd.png?400 | HTTP Server Layers}} An API layer diagram of the project is above. The GSoC contributor is responsible for the items shown in Grey. Please see GitHub links for full details. The goal of the GSoC project is the following: * Prototype the basic HTTP 2.0 server using POSIX APIs (complexity analysis, instrumentation & telemetry, performance benchmarks) * Port the basic HTTP server to Zephyr (initial Kconfig, tests, samples, documentation) * Test Plan and Tests to demonstrate 3 mandatory features: REST API, TLS, and Compressed Resources in Memory (CRiMe) * Test Plan and Tests to demonstrate 1 feature from: JSON support, Filesystem support, Web-based Dashboard, or OAuth * Generate test coverage reports using the [[https://docs.zephyrproject.org/latest/guides/test/ztest.html|Zephyr Test Framework]] * Demonstrate HTTP server functionality with one of Zephyr's many [[https://docs.zephyrproject.org/latest/boards/index.html|supported boards]] or [[https://docs.zephyrproject.org/latest/guides/networking/qemu_user_setup.html|Qemu]] The successful candidate must be able to demonstrate writing a simple socket-based program in C that presents a "Hello, world!" web page to the user with a WireShark capture of the network traffic between the client and host. Candidates must ensure that they have made a clear choice which feature they have chosen to implement (JSON support, Filesystem support, Web-based Dashboard, or OAuth) and explain how that feature would benefit the community. Difficulty: High. Mentors: * Chris Friedt - SWE / ASIC FW at Meta (cfriedt AT meta.com) - POSIX API Maintainer * Robert Lubos - SWE at Nordic Semiconductor (Robert.lubos AT nordicsemi.no) - Network Subsystem Maintainer Skills that are Required: Zephyr RTOS,C,CXX,Python,WireShark Code License: Apache 2.0. ==== Project #2 Implement a driver for Audio NXP Platform Driver in Zephyr ==== 1 contributor full-size (350 hours). [[https://www.sofproject.org/|Sound Open Firmware (SOF)]] is an open source audio Digital Signal Processing (DSP) firmware infrastructure and SDK. SOF provides infrastructure, real-time control pieces, and audio drivers as a community project. SOF developers have been working on moving from Xtensa OS (XTOS) to Zephyr RTOS as the real-time OS. [[https://thesofproject.github.io/latest/getting_started/nxp/sof_imx_user_guide.html?highlight=imx8|SOF has support for i.MX8QM, i.MX8QXP, i.MX8MP]]. The SOF community has moved the SOF Micro Kernel from XTOS to Zephyr, but still some work to do on the platform drivers. {{ :gsoc:sof_with_zephyr.png?nolink&600 |}} The scope of this project is to implement a NXP Audio Platform Driver ([[https://docs.nxp.com/bundle/GUID-487B2E69-BB19-42CB-AC38-7EF18C0FE3AE/page/GUID-2E331A3D-025C-4016-B086-59DFEE8E7D35.html|SAI]] and/or ESAI) in Zephyr. To achieve that, the contributor must: * Contribute any necessary improvements back to the Zephyr Project. * Contribute any necessary improvements back to the SOF. Mentor: * Iuliana Prodan - iuliana.prodan@nxp.com [[https://www.youtube.com/watch?v=9kPSG5q6gmA|LVC21F 106 Sound Open Firmware meets Zephyr]]