Difference between revisions of "BeagleBoard/GSoC/alaaemad-2023-proposal"

From eLinux.org
Jump to: navigation, search
(Proposed method of Implementation)
 
(5 intermediate revisions by the same user not shown)
Line 9: Line 9:
 
* Code: https://github.com/BelaPlatform/Bela
 
* Code: https://github.com/BelaPlatform/Bela
 
* Proposal : https://elinux.org/BeagleBoard/GSoC/alaaemad-2023-proposal
 
* Proposal : https://elinux.org/BeagleBoard/GSoC/alaaemad-2023-proposal
* Wiki: [N/A]
 
 
* GSoC:  
 
* GSoC:  
  
Line 33: Line 32:
  
 
===Description===
 
===Description===
In 10-20 sentences, what are you making, for whom, why and with what technologies (programming languages, etc.)? (We are looking for open source SOFTWARE submissions.)
+
 
 +
As part of this project, I will develop and/or update kernel audio drivers for some soundcards currently available for the BeagleBoard series of SBCs. The objective is to have support for the latest TI kernel (> 5.10) and for some of the most recent TI SoC, such as the Sitara AM6xxx series that is on the SK-AM62 board and the TDA4VM that is on the BeagleBone AI-64.
 +
 
 +
;What is Bela?
 +
As given on the [https://learn.bela.io/get-started-guide/say-hello-to-bela/#what-is-bela official website], Bela is a hardware and software system for creating beautiful interaction with sensors and sound. Bela consists of a Bela cape on top of a BeagleBone Black computer (uptil now).
 +
Bela has a lot of analog and digital inputs and outputs for hooking up sensors and controlling other devices, and most importantly Bela has '''stereo audio i/o'''  allowing you to interact with the world of sound. <br>
 +
Both Bela systems use the same Bela software. It uses a customised Debian distribution which - most notably - uses a '''Xenomai kernel''' instead of a stock kernel. ''Xenomai'' is ''co-kernel'' for Linux which allows to achieve hard '''real-time performance''' on Linux machines (http://xenomai.org/). It thus takes advantage of features of the BeagleBone computers and can achieve extremely fast audio and sensor processing times.
 +
 
 +
;Applications of Bela:
 +
Bela is ideal for creating anything interactive that uses sensors and sound. So far, Bela has been used to create:
 +
#musical instruments and audio effects
 +
#kinetic sculptures
 +
#wearable devices
 +
#interactive sound installations
 +
and many more applications that are listed [https://learn.bela.io/get-started-guide/say-hello-to-bela/#what-is-bela here]
 +
 
 +
;Why Porting multi-channel sound card drivers to recent kernels?
 +
 
 +
* The Bela and BelaMini capes feature a TLV320AIC3104 codec (stereo I/O) controlled via I2C and connected to the McASP clock and data lines. This could be used in older kernels and architectures (e.g.: up to 4.14 on Sitara AM3358) with the simple-audio-card driver and a relevant device tree fragment. It has to be tested whether it still works on more recent kernels and SoCs.
 +
 
 +
* A multi-channel version (BelaMiniMultichannelExpander) combines 1x TLV320AIC3104 and 3xTLV320AIC3106 to achieve 8in/8out; this is supported via a Bela-specific library but there is no kernel support for it yet.
 +
 
 +
* The Bela cape Rev C adds an ES9080Q 8-channel DAC which is also connected to the McASP; this is supported via a user-space Bela-specific library, but there is no kernel support for it yet.
 +
 
 +
* The CTAG capes have an AD1938 codec (4in / 8out) which is controlled via SPI, has an on-board crystal oscillator, and are connected to the McASP data and clock lines. This has its own device driver which has been fixed up a few times over time (most recently here, AFAIK) but its features are limited and needs to be tidied up and tested on newer kernels.
 +
 
 +
===Proposed method of Implementation===
 +
 
 +
During this project I will:
 +
 
 +
#
 +
#
 +
#
 +
#
 +
 
 +
== Implementation Details ==
 +
 
 +
*
  
 
===Timeline===
 
===Timeline===
Line 71: Line 107:
  
 
===Experience and approach===
 
===Experience and approach===
In 5-15 sentences, convince us you will be able to successfully complete your project in the timeline you have described.
+
I have 4+ years of experience with software development. I hold a Professional Master's Degree specializing in Embedded Systems.
 +
I have 2+ years of experience with C/C++ and Embedded Systems and good experience with Linux Kernel. I was Linux Kernel mentee in Linux Kernel Mentorship Program. This project helps the applicants choose bugs to fix, work through the problem found, and help get the issue resolved in the Linux kernel by producing a fix.
  
 
===Contingency===
 
===Contingency===
What will you do if you get stuck on your project and your mentor isn’t around?
+
I believe that if I get stuck on my project and my mentor isn’t around, I will use the resources that are available to me and look for the information that I need to continue the work.
  
 
===Benefit===
 
===Benefit===
If successfully completed, what will its impact be on the BeagleBoard.org community? Include quotes from BeagleBoard.org community members who can be found on http://beagleboard.org/discuss and http://bbb.io/gsocchat.
+
 
 +
I believe that the project is very important for Beagle Bone Audio Applications. It will provide support for the latest TI kernel (> 5.10) and for some of the most recent TI SoC, such as the Sitara AM6xxx series that is on the SK-AM62 board and the TDA4VM that is on the BeagleBone AI-64.
  
 
==Misc==
 
==Misc==
 
* For hello_world of cross-compilation, sent a PR to the mentioned upstream [https://github.com/jadonk/gsoc-application/pull/168]
 
* For hello_world of cross-compilation, sent a PR to the mentioned upstream [https://github.com/jadonk/gsoc-application/pull/168]

Latest revision as of 07:49, 2 April 2023


Proposal for Porting multi-channel sound card drivers to recent kernels

Status

  • Pre-application phase

Proposal

  • Completed all the general requirements
  • Completed "Hello World" of cross-compilation mentioned in the requirements list.

About you

  • IRC: alaaemad
  • Github: https://github.com/alaa-emad
  • School: Cairo University
  • Country: Egypt
  • Primary language: English, Arabic
  • Typical work hours: 8 AM - 5 PM (GMT + 2 Cairo time)
  • This is the first time I am participating in GSoC.

About your project

Project name: Porting multi-channel sound card drivers to recent kernels

Description

As part of this project, I will develop and/or update kernel audio drivers for some soundcards currently available for the BeagleBoard series of SBCs. The objective is to have support for the latest TI kernel (> 5.10) and for some of the most recent TI SoC, such as the Sitara AM6xxx series that is on the SK-AM62 board and the TDA4VM that is on the BeagleBone AI-64.

What is Bela?

As given on the official website, Bela is a hardware and software system for creating beautiful interaction with sensors and sound. Bela consists of a Bela cape on top of a BeagleBone Black computer (uptil now). Bela has a lot of analog and digital inputs and outputs for hooking up sensors and controlling other devices, and most importantly Bela has stereo audio i/o allowing you to interact with the world of sound.
Both Bela systems use the same Bela software. It uses a customised Debian distribution which - most notably - uses a Xenomai kernel instead of a stock kernel. Xenomai is co-kernel for Linux which allows to achieve hard real-time performance on Linux machines (http://xenomai.org/). It thus takes advantage of features of the BeagleBone computers and can achieve extremely fast audio and sensor processing times.

Applications of Bela

Bela is ideal for creating anything interactive that uses sensors and sound. So far, Bela has been used to create:

  1. musical instruments and audio effects
  2. kinetic sculptures
  3. wearable devices
  4. interactive sound installations

and many more applications that are listed here

Why Porting multi-channel sound card drivers to recent kernels?
  • The Bela and BelaMini capes feature a TLV320AIC3104 codec (stereo I/O) controlled via I2C and connected to the McASP clock and data lines. This could be used in older kernels and architectures (e.g.: up to 4.14 on Sitara AM3358) with the simple-audio-card driver and a relevant device tree fragment. It has to be tested whether it still works on more recent kernels and SoCs.
  • A multi-channel version (BelaMiniMultichannelExpander) combines 1x TLV320AIC3104 and 3xTLV320AIC3106 to achieve 8in/8out; this is supported via a Bela-specific library but there is no kernel support for it yet.
  • The Bela cape Rev C adds an ES9080Q 8-channel DAC which is also connected to the McASP; this is supported via a user-space Bela-specific library, but there is no kernel support for it yet.
  • The CTAG capes have an AD1938 codec (4in / 8out) which is controlled via SPI, has an on-board crystal oscillator, and are connected to the McASP data and clock lines. This has its own device driver which has been fixed up a few times over time (most recently here, AFAIK) but its features are limited and needs to be tidied up and tested on newer kernels.

Proposed method of Implementation

During this project I will:

Implementation Details

Timeline

Provide a development timeline with a milestone each of the 11 weeks and any pre-work. (A realistic timeline is critical to our selection process.)

Mar 29 Applications open, Students register with GSoC, work on proposal with mentors
Apr 13 Proposal complete, Submitted to https://summerofcode.withgoogle.com
May 17 Proposal accepted or rejected
Jun 07 Pre-work complete, Coding officially begins!
Jun 17 Milestone #1, Introductory YouTube video
June 24 Milestone #2
June 30 Milestone #3
July 12 18:00 UTC Milestone #4, Mentors and students can begin submitting Phase 1 evaluations
July 16 18:00 UTC Phase 1 Evaluation deadline
July 23 Milestone #5
July 30 Milestone #6
Aug 06 Milestone #7
August 10 Milestone #8, Completion YouTube video
August 16 - 26 18:00 UTC Final week: Students submit their final work product and their final mentor evaluation
August 23 - 30 18:00 UTC Mentors submit final student evaluations

Experience and approach

I have 4+ years of experience with software development. I hold a Professional Master's Degree specializing in Embedded Systems. I have 2+ years of experience with C/C++ and Embedded Systems and good experience with Linux Kernel. I was Linux Kernel mentee in Linux Kernel Mentorship Program. This project helps the applicants choose bugs to fix, work through the problem found, and help get the issue resolved in the Linux kernel by producing a fix.

Contingency

I believe that if I get stuck on my project and my mentor isn’t around, I will use the resources that are available to me and look for the information that I need to continue the work.

Benefit

I believe that the project is very important for Beagle Bone Audio Applications. It will provide support for the latest TI kernel (> 5.10) and for some of the most recent TI SoC, such as the Sitara AM6xxx series that is on the SK-AM62 board and the TDA4VM that is on the BeagleBone AI-64.

Misc

  • For hello_world of cross-compilation, sent a PR to the mentioned upstream [2]