====== GSoC 2020: Sound Open Firmware project ====== [[:gsoc:google-summer-code-2020|Main GSoC Linux Foundation page: How to apply, deadlines, other workgroups, ...]] ====== Sound Open Firmware ====== Sound Open Firmware is an open source audio DSP firmware and SDK that provides audio firmware infrastructure and development tools for developers who are interested in audio or signal processing on modern DSPs ==== Proposal: Enhance SOF Linux kernel debugging support for i.MX8 platforms ==== Sound Open Firmware has multiple components but in order to understand the proposal one needs to firstly have a look at these two components: * SOF Linux kernel driver, this runs on the ARM core and it's the link between ALSA kernel layer and DSP. * SOF firmware, this runs on the DSP and it is responsible for audio processing, etc. The goal of this project is to enahance the Linux kernel driver debugging support. This includes: * add functionality to retrieve DSP traces when DSP panics. * add functionality to filter logs from DSP based on various parameters. * enhance and update documentation * add a serial console driver on DSP (this is optional) Github issues: * [[https://github.com/thesofproject/sof/issues/2172 | Refactor trace system]] Code license: GPL-2.0 OR BSD-3-Clause The project is considered successful if the code is accepted into SOF github tree. ===== Where to start? ===== Have a look at: * [[https://www.youtube.com/watch?v=vwDoEumA1Mo | Sound Open Firmware introduction]] * [[https://thesofproject.github.io/latest/introduction/index.html| Sound Open Firmware docs]] * [[https://github.com/thesofproject/sof/ | Sound Open Firmware github]] ===== Small ideas to work on to get familiar with the project ===== All the ideas below are just ways of exploring the project. ==== Get SOF binaries ==== * Follow tutorial here [[https://thesofproject.github.io/latest/getting_started/build-guide/build-from-scratch.html | Getting started]] in order to compile Linux kernel, SOF firmware, SOF topologies. ==== Create one Pull Request for the SOF repo ===== * Fork https://github.com/thesofproject/sof.git repo into your github account * Follow instructions here [[https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request | Create a Pull Request]] and learn how to create a PR. * Use checkpatch.pl to find small issues to fix * e.g ./scripts/checkpatch.pl --no-tree --strict -f src/lib/alloc.c * Keep in mind, a commit should fix only one type of error/warnings. If you need to fix multiple problems create multiple commits. * Learn [[https://chris.beams.io/posts/git-commit/ | how to create a good commit message]] ==== Create one patch for the Linux kernel ==== Watch this [[https://www.youtube.com/watch?v=LLBrBBImJt4 | Write and Submit your first Linux kernel Patch]]. Before sending the patch to community please send it to daniel.baluta@nxp.com for review. Make sure you only look into drivers/staging directory. ==== Use Qemu to get a feel of how things are working ==== * Qemu repo is at https://github.com/thesofproject/qemu/ we use branch sof-v4.2 * Build qemu by looking at [[https://www.alsa-project.org/wiki/Firmware | Firmware ]]. Look at chapter 'Build the Qemu DSP emulator from source.' * Try to boot sof-imx8.ri SOF binary with qemu * Use the following command ./xtensa-softmmu/qemu-system-xtensa -cpu imx8 -M adsp_imx8 -nographic -kernel ../sof.git/build_imx8_gcc/src/arch/xtensa/sof-imx8.ri * Look at [[https://www.alsa-project.org/wiki/Firmware#Using_the_Qemu_DSP_emulator | Using the Qemu DSP emulator]] and try to run a full system with Linux kernel and SOF firmware. ==== Join #sof channel on IRC ==== Use an IRC client like pidgin to join #sof channel on irc.freenode.net. There you can find support and quick answers. ===== Contact ===== If you are interested about this project please drop me an email at: Daniel Baluta You can also find me on IRC: _daniel_ on #alsa-soc OR #sof channel, on irc.freenode.net server [[http://webchat.freenode.net/ | Web IRC]]