This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
gsoc:2024-gsoc-zephyr [2024/01/12 18:37] till created |
gsoc:2024-gsoc-zephyr [2024/02/07 17:23] (current) kartben |
||
---|---|---|---|
Line 32: | Line 32: | ||
**To be updated** | **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]] |