原创 Linux ALSA聲卡驅動之八:ASoC架構中的Platform

1.  Platform驅動在ASoC中的作用 前面幾章內容已經說過,ASoC被分爲Machine,Platform和Codec三大部件,Platform驅動的主要作用是完成音頻數據的管理,最終通過CPU的數字音頻接口(DAI)把音頻數據

原创 Linux中斷(interrupt)子系統之五:軟件中斷(softIRQ)

軟件中斷(softIRQ)是內核提供的一種延遲執行機制,它完全由軟件觸發,雖然說是延遲機制,實際上,在大多數情況下,它與普通進程相比,能得到更快的響應時間。軟中斷也是其他一些內核機制的基礎,比如tasklet,高分辨率timer等。 /*

原创 Linux時間子系統之五:低分辨率定時器的原理和實現

利用定時器,我們可以設定在未來的某一時刻,觸發一個特定的事件。所謂低分辨率定時器,是指這種定時器的計時單位基於jiffies值的計數,也就是說,它的精度只有1/HZ,假如你的內核配置的HZ是1000,那意味着系統中的低分辨率定時器的精度就

原创 Linux中斷(interrupt)子系統之二:arch相關的硬件封裝層

Linux的通用中斷子系統的一個設計原則就是把底層的硬件實現儘可能地隱藏起來,使得驅動程序的開發人員不用關注底層的實現,要實現這個目標,內核的開發者們必須把硬件相關的內容剝離出來,然後定義一些列標準的接口供上層訪問,上層的開發人員只要知道

原创 Linux ALSA聲卡驅動之七:ASoC架構中的Codec

1.  Codec簡介 在移動設備中,Codec的作用可以歸結爲4種,分別是: 對PCM等信號進行D/A轉換,把數字的音頻信號轉換爲模擬信號對Mic、Linein或者其他輸入源的模擬信號進行A/D轉換,把模擬的聲音信號轉變CPU能夠處

原创 Linux ALSA聲卡驅動之五:移動設備中的ALSA(ASoC)

1.  ASoC的由來 ASoC--ALSA System on Chip ,是建立在標準ALSA驅動層上,爲了更好地支持嵌入式處理器和移動設備中的音頻Codec的一套軟件體系。在ASoc出現之前,內核對於SoC中的音頻已經有部分的支

原创 翻譯:Linux的電源管理架構

設備電源管理 Copyright (c) 2010 Rafael J. Wysocki<[email protected]>, Novell Inc. Copyright (c) 2010 Alan [email protected]

原创 基於Android的Linux內核的電源管理:Early Suspend

1.      用戶空間的接口 在kernel/power/main.c中,定義了一組sysfs的屬性文件,其中一個定義是: power_attr(state);把這個宏展開後: staticstruct kobj_attribute

原创 Linux時間子系統之七:定時器的應用--msleep(),hrtimer_nanosleep()

我們已經在前面幾章介紹了低分辨率定時器和高精度定時器的實現原理,內核爲了方便其它子系統,在時間子系統中提供了一些用於延時或調度的API,例如msleep,hrtimer_nanosleep等等,這些API基於低分辨率定時器或高精度定時器來

原创 Linux時間子系統之六:高精度定時器(HRTIMER)的原理和實現

上一篇文章,我介紹了傳統的低分辨率定時器的實現原理。而隨着內核的不斷演進,大牛們已經對這種低分辨率定時器的精度不再滿足,而且,硬件也在不斷地發展,系統中的定時器硬件的精度也越來越高,這也給高分辨率定時器的出現創造了條件。內核從2.6.1

原创 Android Audio System線性音量和對數音量的轉換

Android的音頻系統的代碼中,應用程序對每個音頻流的音量做出調整後,最終會轉換爲一個係數K,所有的音頻數據在輸出到硬件之前,都要乘以係數K,只要應用程序發出調整音量的調用,中間層的Audio System就會重新計算係數K的值。對應

原创 自旋鎖spin_lock和raw_spin_lock

本文不打算詳細探究spin_lock的詳細實現機制,只是最近對raw_spin_lock的出現比較困擾,搞不清楚什麼時候用spin_lock,什麼時候用raw_spin_lock,因此有了這篇文章。 /*****************