0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

時鐘子系統(tǒng)中clock驅(qū)動實例

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-09-27 14:39 ? 次閱讀

clock驅(qū)動實例

clock驅(qū)動在時鐘子系統(tǒng)中屬于provider,provider是時鐘的提供者,即具體的clock驅(qū)動。

clock驅(qū)動在Linux剛啟動的時候就要完成,比initcall都要早期,因此clock驅(qū)動是在內(nèi)核中進行實現(xiàn)。 在內(nèi)核的drivers/clk目錄下,可以看到各個芯片廠商對各自芯片clock驅(qū)動的實現(xiàn):

圖片

下面以一個簡單的時鐘樹,舉例說明一個芯片的時鐘驅(qū)動的大致實現(xiàn)過程:

1、時鐘樹

通常來說,一個芯片的時鐘樹是比較固定的,例如,以下時鐘樹:

圖片

時鐘樹的 根節(jié)點一般是晶振時鐘 ,上圖根節(jié)點為24M晶振時鐘。根節(jié)點下面是PLL,PLL用于提升頻率。PPL0下又分頻給PERI、DSP和ISP。PLL1分頻給DDR和ENC。

對于PLL來說,PLL的頻率可以通過寄存器設(shè)置,但通常是固定的,所以PLL屬于 固定時鐘 。

對PERI、DSP等模塊來說,它們的頻率來自于PLL的分頻,因此這些模塊的時鐘屬于 分頻時鐘 。

2、設(shè)備樹

設(shè)備樹中表示一個時鐘源,應(yīng)有如下屬性,例如24M晶振時鐘:

clocks{
 osc24M:osc24M{
  compatible = "fixed-clock";
  #clock-cells = < 0 >;
  clock-output-name = "osc24M";
  clock-frequency = < 24000000 >;
 };
};
屬性說明
compatible驅(qū)動匹配名字
#clock-cells提供輸出時鐘的路數(shù)。#clock-cells為0時,代表輸出一路時鐘#clock-cells為1時,代表輸出2路時鐘。
#clock-output-names輸出時鐘的名字
#clock-frequency輸出時鐘的頻率

3、驅(qū)動實現(xiàn)

clock驅(qū)動編寫的基本步驟:

  1. 實現(xiàn)struct clk_ops相關(guān)成員函數(shù)
  2. 定義分配struct clk_onecell_data結(jié)構(gòu)體,初始化相關(guān)數(shù)據(jù)
  3. 定義分配struct clk_init_data結(jié)構(gòu)體,初始化相關(guān)數(shù)據(jù)
  4. 調(diào)用clk_register將時鐘注冊進框架
  5. 調(diào)用clk_register_clkdev注冊時鐘設(shè)備
  6. 調(diào)用of_clk_add_provider,將clk provider存放到of_clk_provider鏈表中管理
  7. 調(diào)用CLK_OF_DECLARE聲明驅(qū)動
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 驅(qū)動
    +關(guān)注

    關(guān)注

    12

    文章

    1790

    瀏覽量

    84908
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207912
  • Clocks
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    9601
  • 系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    1002

    瀏覽量

    21219
收藏 人收藏

    評論

    相關(guān)推薦

    關(guān)于Linux設(shè)備驅(qū)動input子系統(tǒng)的介紹

    對于輸入類設(shè)備如鍵盤、鼠標、觸摸屏之類的Linux驅(qū)動,內(nèi)核提供input子系統(tǒng),使得這類設(shè)備的處理變得非常便捷??傮w上來講,input子系統(tǒng)由三部分組成: 事件驅(qū)動input核心設(shè)備
    發(fā)表于 01-09 16:06 ?2663次閱讀

    Linux clock子系統(tǒng)驅(qū)動實例

    在Linux驅(qū)動,操作時鐘只需要簡單調(diào)用內(nèi)核提供的通用接口即可,clock驅(qū)動通常是由芯片廠商開發(fā)的,在Linux啟動時
    發(fā)表于 05-31 16:10 ?683次閱讀
    Linux <b class='flag-5'>clock</b><b class='flag-5'>子系統(tǒng)</b>及<b class='flag-5'>驅(qū)動</b><b class='flag-5'>實例</b>

    Linux reset子系統(tǒng)驅(qū)動實例

    上篇講了Linux clock驅(qū)動,今天說說Linux的reset驅(qū)動。
    發(fā)表于 05-31 16:16 ?912次閱讀
    Linux reset<b class='flag-5'>子系統(tǒng)</b>及<b class='flag-5'>驅(qū)動</b><b class='flag-5'>實例</b>

    子系統(tǒng)設(shè)計實例PDF格式

    子系統(tǒng)設(shè)計實例 [hide][[/hide]
    發(fā)表于 09-25 16:00

    FPGA數(shù)字電子系統(tǒng)設(shè)計與開發(fā)實例導(dǎo)航

    FPGA數(shù)字電子系統(tǒng)設(shè)計與開發(fā)實例導(dǎo)航
    發(fā)表于 09-26 12:43

    FPGA_數(shù)字電子系統(tǒng)設(shè)計與開發(fā)實例導(dǎo)航

    FPGA_數(shù)字電子系統(tǒng)設(shè)計與開發(fā)實例導(dǎo)航
    發(fā)表于 09-28 13:41

    SYSBIOS6驅(qū)動clock的timer配置問題如何解決

    現(xiàn)在使用C6748開發(fā),需要使用sy***ios6。在SYSBIOS6需要使用某一個timer來驅(qū)動系統(tǒng)時鐘,在sy***ios的cfg文件
    發(fā)表于 05-19 11:15

    子系統(tǒng)設(shè)計實例

    子系統(tǒng)設(shè)計實例將精選一些歷屆電子競賽的賽題,通過對它們的具體分析和設(shè)計、實施,將理論與實踐緊密的結(jié)合起來,通過具體的設(shè)計訓(xùn)練提高實際能力。 簡易數(shù)字頻
    發(fā)表于 07-28 18:24 ?69次下載

    FPGA_數(shù)字電子系統(tǒng)設(shè)計與開發(fā)實例導(dǎo)航

    FPGA_數(shù)字電子系統(tǒng)設(shè)計與開發(fā)實例導(dǎo)航,基于VHDL設(shè)計語言。
    發(fā)表于 05-11 15:54 ?24次下載

    三個命令生成的報告均可顯示Clock Skew的具體數(shù)值

    如果時鐘同時驅(qū)動I/O和Slice的邏輯資源,且負載小于2000時,可通過CLOCK_LOW_FANOUT屬性對相應(yīng)的時鐘net進行設(shè)置,
    的頭像 發(fā)表于 11-07 11:08 ?4664次閱讀
    三個命令生成的報告<b class='flag-5'>中</b>均可顯示<b class='flag-5'>Clock</b> Skew的具體數(shù)值

    Linux時間子系統(tǒng)之一:clock source(時鐘源)

    clock source用于為linux內(nèi)核提供一個時間基線,如果你用linux的date命令獲取當前時間,內(nèi)核會讀取當前的clock source,轉(zhuǎn)換并返回合適的時間單位給用戶空間。
    發(fā)表于 05-10 14:36 ?1819次閱讀

    為什么需要時鐘門控?時鐘門控終極指南

    時鐘門控(Clock Gating)** 是一種在數(shù)字IC設(shè)計某些部分不需要時關(guān)閉時鐘的技術(shù)。這里的“部分”可以是單個寄存器、模塊、子系統(tǒng)
    的頭像 發(fā)表于 06-29 15:58 ?1628次閱讀
    為什么需要<b class='flag-5'>時鐘</b>門控?<b class='flag-5'>時鐘</b>門控終極指南

    Linux reset子系統(tǒng)有什么功能

    Linux reset子系統(tǒng) reset子系統(tǒng)非常簡單,與clock子系統(tǒng)非常類似,但在驅(qū)動實現(xiàn)上,reset
    的頭像 發(fā)表于 09-27 14:06 ?618次閱讀
    Linux reset<b class='flag-5'>子系統(tǒng)</b>有什么功能

    Linux clock子系統(tǒng)是什么

    clock子系統(tǒng) Linux的時鐘子系統(tǒng)由CCF(common clock framework)框架管理, CCF向上給用戶提供了通用的
    的頭像 發(fā)表于 09-27 14:25 ?659次閱讀
    Linux <b class='flag-5'>clock</b><b class='flag-5'>子系統(tǒng)</b>是什么

    SOC設(shè)計Clock Gating的基本原理與應(yīng)用講解

    SOC(System on Chip,片上系統(tǒng))設(shè)計,時鐘信號的控制對于整個系統(tǒng)的性能和功耗至關(guān)重要。本文將帶您了解SOC設(shè)計的一種
    的頭像 發(fā)表于 04-28 09:12 ?1146次閱讀