1 |
Real-time audio processing for an embedded Linux system using a dual-kernel approachKulkarni, Nitin January 2017 (has links)
Professional audio processing systems such as digital musical instruments, audiomixers, etc. must operate with very tight constraints on overall processing latencyand CPU performance. Consequently, traditional implementations are still mostlybased on specialized hardware like Digital Signal Processors (DSP) and Real-TimeOperating Systems (RTOS) to meet such requirements. However, such systems areminimalistic in nature and they lack many features (e.g. network connectivity, widehardware support, etc.) that a general-purpose operating system such as Linuxoffers. Linux is a very popular choice for the operating system used in embeddeddevices, and many developers have started to use it for designing real-time systemswith relaxed timing constraints. However, none of the available solutions using astandard Linux kernel can satisfy the low-latency requirements of professional audiosystems.In this thesis, a dual kernel approach is employed to enable an embedded Linuxsystem to process audio with low roundtrip latency. The solution is developed usingthe Xenomai framework for real-time computation, which is based on a techniqueknown as interrupt pipeline (I-pipe). I-Pipe enables interrupt virtualization througha micro-kernel running between the Linux kernel and the interrupt controller hardware.The designed system includes an x86 Atom System-on-Chip (SoC), an XMOSmicrocontroller and audio converters to and from the analog domain. Custom kerneldrivers and libraries have been developed to expose the audio programming functionalitiesto programs running in user-space. As a result, the system can achieverobust real-time performance appropriate for professional audio applications, andat the same time it has all the advantages of a traditional Linux solution such ascompatibility with external devices and ease of programming. The real-time capabilityis measured by evaluating the performance in terms of worst case responsetime of the real-time tasks in comparison to the same metrics obtained under astandard Linux kernel. The overall roundtrip latency of audio processing is showedto be improved by almost an order of magnitude (around 2.5ms instead of 20ms). / Profesionella system för ljudbearbetning, som digitala musikinstrument, mixerbord,etc, arbetar med väldigt hårda krav på tidfördröjning och CPU-prestanda. Som enkonsekvens har dessa system traditionellt implementerats på specialiserad hårdvarasom specifika DSP-processor och speciella realtidsoperativsystem. Den typen avsystem är till sin natur minimalistiska och saknar många funktioner (till exempelnätverk och brett stöd för olika hårdvaror) som mer generella operativsystem,som Linux, kan erbjuda. Linux är ett väldigt populärt val av operativsystem förinbyggda system och många utvecklare har även börjat använda det till realtidssystemmed mindre hårda tidskrav. Det finns dock idag inte någon lösning med enstandard-linuxkärna som kan tillfredsställda de krav på låg fördröjning som krävsför användning i profesionella ljudsystem.I det här examensarbetet används en dubbelkärneuppsättning för att ge ettinbyggt Linuxsystem möjlighet att bearbeta digitalt ljud med låg fördröjning. Lösningenanvänder Xenomai-ramverket för realtidsberäkningar baserat på en teknikkallad interrupt pipeline (I-pipe). I-pipe ger möjlighet att virtualisera interruptgenom en mikrokärna som körs som ett lager mellan Linuxkärnan och hårdvaransinterruptcontroller.Det resulterande systemet inkluderar ett x86 Atom-enchipssystem, en XMOSmicrocontroller, och ljudkonverterare till och från analoga ljud in- och utgångar.Drivrutiner och bibliotek utvecklas för att ge direkt tillgång till ljudfunktionerfrån applikationer. Systemet ges därmed robust realtidsprestanda som gör detlämpligt för profesionella ljudtillämpningar samtidigt som det behåller alla fördelarfrån ett traditionellt Linuxsystem, som kompabilitet med extern hårdvara och enklareapplikationsutveckling. Systemets realtidsprestanda utvärderas som den maximalauppmätta tidfördröjning vid realtidsberäkningar jämfört med motsvarandeberäkningar på en standardlinuxkärna. Resultaten visade på en förbättring på nästanen storleksordning (ca 2,5ms mot 20ms).
|
Page generated in 0.0147 seconds