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

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

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

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

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

clock驅動實例

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

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

圖片

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

1、時鐘樹

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

圖片

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

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

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

2、設備樹

設備樹中表示一個時鐘源,應有如下屬性,例如24M晶振時鐘:

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

3、驅動實現(xiàn)

clock驅動編寫的基本步驟:

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

    關注

    12

    文章

    1840

    瀏覽量

    85293
  • Linux
    +關注

    關注

    87

    文章

    11304

    瀏覽量

    209518
  • Clocks
    +關注

    關注

    0

    文章

    5

    瀏覽量

    9627
  • 系統(tǒng)
    +關注

    關注

    1

    文章

    1017

    瀏覽量

    21347
收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

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

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

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

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

    SYSBIOS6驅動clock的timer配置問題如何解決

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

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

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

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

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

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

    如果時鐘同時驅動I/O和Slice的邏輯資源,且負載小于2000時,可通過CLOCK_LOW_FANOUT屬性對相應的時鐘net進行設置,
    的頭像 發(fā)表于 11-07 11:08 ?4850次閱讀
    三個命令生成的報告<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,轉換并返回合適的時間單位給用戶空間。
    發(fā)表于 05-10 14:36 ?1966次閱讀

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

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

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

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

    SOC設計Clock Gating的基本原理與應用講解

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

    深度解析linux時鐘子系統(tǒng)

    linux內(nèi)核實現(xiàn)了一個CLK子系統(tǒng),用于對上層提供各模塊(例如需要時鐘信號的外設,USB等)的時鐘驅動接口,對下層提供具體SOC的
    的頭像 發(fā)表于 09-29 16:46 ?469次閱讀
    深度解析linux<b class='flag-5'>時鐘</b><b class='flag-5'>子系統(tǒng)</b>