linux裝置驅動程式之時鐘管理(3)----我的那塊兒蛋糕

來源:互聯網
上載者:User

linux裝置驅動程式之時鐘管理(3)----我的那塊兒蛋糕

21世紀不缺什麼了?不缺程式員了,不缺屌絲程式員了,滿山遍野的程式員,各種培訓機構,每個月都有n多個程式員橫空出世,他們一代代的替換著那些遠離這個行業的人。話說程式員有很多境界,比如像我這種,就屬於比較浮躁的程式員,以為自己會的東西不少,其實什麼都不會。

時間長了,發現自己真的什麼也沒有,哎,難到真的什麼也沒有嘛?不是,至少屌絲程式員好有一個夢,每天可能還能吃上一塊兒蛋糕。

最近祖國三大軍區都有演戲,什麼遠程彈道飛彈,巨浪,東風全上了,儼然要有跟小日本火拚的姿態,趁著還是和平的時候,多吃兩塊蛋糕吧,不知道明天還有沒有機會吃到。

那時鐘管理這邊,怎麼去拿到那個蛋糕著?

80行 你看見了,那個dev_id其實就是所屬裝置的name啦

81行 又套一層,哎,短小又精悍的函數啊。不廢話,進入。。

68行 鎖住互斥鎖,這個互斥鎖是全域的,給你好看:

69行根據 那個兩個id調用clk_find函數尋找我們需要的clk,沒什麼可說的,直接進入

40行 一個for迴圈,在clocks這個全域的鏈表裡遍曆,所有的鎖都連結在上面呢

42-46行,如果dev_id匹配,那麼match+=2

47-50行,如果con_id匹配,那麼match+=1

如果mach大於零,說明之後有一個匹配上了,如果match=3,兩個條件都匹配,這是最完美的情況了,如果不是,那麼繼續迴圈吧。

我們從注釋上可以看出,匹配的優先程度是:dev+con > dev only > con only

好的,返回到clk_get_sys函數

第70-71 如果沒有找到cl設定為NULL

72行 釋放鎖

73行 返回要找的clk

這個過程也很簡單,沒有想象的那麼複雜。

呵呵。。時鐘時擷取到了,有沒有興趣看一下他們的使能,禁止,設定頻率的那幾個函數?其實也非常簡單,他們都是平台相關的,還是以三星的s3c2410為例子看一個函數吧,其它的函數都跟它類似,不用多講了就,咱們看一個常用的,上代碼:

這是一個三星平台的通用函數,其它的,諸如2410,6410等等吧,都是可以用的,因為它與具體的板級脫離開 ,都是用一個函數指標實現的具體操作。

90-90行 判斷一個clk的有效性,體現出了健壯性函數的一個很好的例子

92行,你看到了又調用了它本身,分明他媽的是個嵌套嘛,不過你看一個參數,呵呵。。明白了吧,使能一個裝置的clock,一定要保定它父裝置的clock是使能的啊。

94-99行 你看到了啊。。使能的時候是要禁止中斷的哦,親。

97行,直接調用了clk結構中的enable函數,這個是在具體的板級檔案中實現的 ,對於咱們這兒就是s3c2410-clock.c,好的,進去看看嘍,親。

你看到了哦,親,他們的enable函數都指向了同一個函數s3c2410_clkcon_enable,你沒有個疑問嗎?這個函數好強大哦,什麼樣的使能它都能處理?進去看看不就知道啦。走你:

呵呵。。有木有恍然大悟?呵呵。。好吧,你成才了。。呵呵。。看到了,就是靠這個控制標誌clk->ctrlbit,在寫控制器中時鐘控制器的相應位來實現的,親,記得給好評哦,講的我都累了。

我歇會兒啊,聽聽歌。。你可以繼續學習了。我得休息下了,睡會兒。哭泣,美女走了!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.