linux时钟与电源管理,SOC的时钟和电源管理
SOC的時鐘和電源管理
(2013-04-27 18:58:07)
標簽:
it
dm3730
時鐘
linux
電源
現在的SOC,因為多用做手持設備,所以在節省能源方面都不遺余力。我看原因到不是為了降低碳排放,而是為了讓一塊電池能夠用的時間更長。當然,這自然就減少了能源消耗。
節電的首要措施,當然就是芯片本省的能耗,那么低壓運行自然節省能耗,且不降低運算能力!然而,越是低壓,對電路要求就越高,因為此時0和1的差距就越小。
降低運行時的時鐘頻率,也可以節省能耗。不幸的是,降低頻率將直接影響性能。因此,一般的設計都是在CPU比較空閑時,降低頻率。這就開始需要有軟件的配合了。
能夠通過軟件關閉某個當前不被使用的部件的電源,是另外一個方法。現代SOC的硬件設計,都是將芯片劃分為幾個,甚至幾十個電源域(Domain)。每個域有自己的開關,軟件可以控制。一般的設計,都存在一個永不斷電的域(只要主電源在供電),通常叫Wakeup域。處在這個域內的部件,任何時候都在工作,以期探測到某個事件的發生,喚醒其它模塊。就是打開其它模塊的開關,重新開啟它們。
降低能耗所采用的辦法里面,關閉時鐘或是改變時鐘頻率,是最復雜的手段。關閉時鐘,但是并不關閉電源!能耗也會比較明顯地降低,當然不如直接關閉電源更節省,但是它有優點,恢復起來極快!因此,在時鐘極其管理這里,SOC都非常復雜。至少對于我這個只懂服務器的人來講如此。過去的服務器那里有能用軟件控制開關時鐘的說法?我是一無所知!
一塊單板(SOC)里面的所有時鐘,基本上構成一顆樹。就是說有一個或兩個外部驅動時鐘,通過一些倍分運算,最后生成很多時鐘信號。因為每個控制器,外設,都需要一個或多個時鐘驅動。例如Beagleboard-xm單板,采用兩個外部時鐘驅動:一個32KHz的低頻驅動,一個26MHz的高頻驅動。而它所用的DM3730上的HS
USB控制器,需要六個時鐘驅動。
每個時鐘,有一個信號源,做為它產生時鐘信號的基礎。也就是說,它有一個父時鐘。它還可能有個開關,以控制是否輸出時鐘信號。它還可能有一個倍頻和/或分頻(除)器,輸出特定(和父不同)的頻率信號。它也還可能有個旁路信號源,就是在它沒有設置完成(通常是剛啟動)時,它直接輸出這個信號。當然,這個旁路源,通常也就是它的基礎信號源。不過有個別時鐘,它有另外一個不同的旁路信號源!
SOC的每個外設用兩個時鐘驅動,是比較好的省電方案。一個負責驅動接口,另外一個負責內部工作。例如計數器,停止它的接口時鐘,它一樣在計數,只是此時外部模塊(如CPU)無法讀到計數器內容而已。只有停止了負責它內部工作的時鐘,它才停止計數。當然,也可以只有一個時鐘,既負責驅動接口,也負責驅動內部工作。
Linux內核里面有時鐘,和時鐘域的概念。我始終不能完全理解一個時鐘域。按照TI手冊定義,是共用一個時鐘開關。那么每個帶有開關功能(Gate)的時鐘和它的后代,就構成一個時鐘域。但是這個理解有很大問題,因為手冊說,時鐘域不能跨電源域。但是按照有開關的父時鐘這個定義上去,最后發現大家都屬于一個時鐘域了,因為大家都是被某兩個外部時鐘的其中之一所驅動。所以,我看不如干脆理解成一個電源域內的所有時鐘就好了。
五一假期,沒有打算去哪里。看看能否將LINUX官方內核在Beagleboard-xm上啟動時,USB報出的時鐘告警問題解決。
分享:
喜歡
0
贈金筆
加載中,請稍候......
評論加載中,請稍候...
發評論
登錄名: 密碼: 找回密碼 注冊記住登錄狀態
昵???稱:
評論并轉載此博文
發評論
以上網友發言只代表其個人觀點,不代表新浪網的觀點或立場。
總結
以上是生活随笔為你收集整理的linux时钟与电源管理,SOC的时钟和电源管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装linux18双系统,Win10 安
- 下一篇: agp接口常用于什么(Vivado使用心