S5pv210 時鐘體系分析

来源:https://www.cnblogs.com/GyForever1004/archive/2018/02/13/8447294.html
-Advertisement-
Play Games

S5PV210 時鐘體系 如下麵時鐘結構圖所示,S5PV210 中包含 3 大類時鐘域, 分別是主系統時鐘域(簡稱 MSYS)、顯示相關的時鐘域(簡稱 DSYS)、 外圍設備的時鐘域(簡稱 PSYS)。 ~~~~ 1) MSYS:用來給 cortex a8 處理器、DRAM 控制器、3D、IRAM、 ...


S5PV210 時鐘體系

如下麵時鐘結構圖所示,S5PV210 中包含 3 大類時鐘域, 分別是主系統時鐘域(簡稱 MSYS)、顯示相關的時鐘域(簡稱 DSYS)、 外圍設備的時鐘域(簡稱 PSYS)。

1) MSYS:用來給 cortex a8 處理器、DRAM 控制器、3D、IRAM、IROM、INTC(中斷控制器)等提供時鐘;
2) DSYS:用來給顯示相關的部件提供時鐘,包括 FIMC、FIMD、JPEG 和 multimedia IPs;
3) PSYS:用來給外圍設備提供時鐘,如 i2s、spi、i2c、uart 等。

Mini210S 外接的晶振頻率(簡稱 Fin)為 24MHz,通過時鐘控制邏輯 PLL 可以提高系統時鐘。
S5PV210 共有 4 個倍頻器,即 PLL, 包括 APLL(供 MSYS 使用),MPLL(供 DSYS 使用),EPLL(供 PSYS使用),VPLL(供 video 相關的時鐘使用)。 3 大類時鐘域中,可以使用不同的分頻,使其給不同部件輸出所需要的時鐘,各類時鐘的關係如下圖:

晶元手冊上給出了參考值, 我們按照參考值設置即可, 各類時鐘的參考值如下圖:

時鐘初始化程式

#define APLL_MDIV        0x7d
#define APLL_PDIV        0x3
#define APLL_SDIV        0x1
#define MPLL_MDIV        0x29b
#define MPLL_PDIV        0xc
#define MPLL_SDIV        0x1

#define set_pll(mdiv, pdiv, sdiv)   (1<<31 | mdiv<<16 | pdiv<<8 | sdiv)
#define APLL_VAL        set_pll(APLL_MDIV,APLL_PDIV,APLL_SDIV)
#define MPLL_VAL        set_pll(MPLL_MDIV,MPLL_PDIV,MPLL_SDIV)


void clock_init()
{
    /* 1 設置各種時鐘開關, 暫時不使用 PLL */
    CLK_SRC0 = 0x0;

    /* 2 設置鎖定時間,使用預設值即可 */
    APLL_LOCK = 0x0000FFFF;
    MPLL_LOCK = 0x0000FFFF;
    
    /* 3 設置分頻 */
    CLK_DIV0 = 0x14131440;
    
    /* 4 設置 PLL */
    APLL_CON0 = APLL_VAL;
    MPLL_CON = MPLL_VAL;
    
    /* 5 設置各種時鐘開關,啟用 PLL */
    CLK_SRC0 = 0x10001111;
}

程式分析:

第一步 設置各種時鐘開關,暫時不使用 PLL

在未設置 PLL 和各種分頻繫數之前,我們不能使用 PLL, 為了保險起見, 暫時直接使用頻率較低的外接的 24MHz 晶振,待設置好 PLL 和分頻繫數後再重新設置各種時鐘開關。

第二步 設置鎖定時間

設置 PLL 後,時鐘從 Fin 提升到目標頻率時,需要一定的時間,即鎖定時間,使用預設值即可。

第三步 設置分頻

與分頻相關的寄存器是 CLK_DIV0,見下圖:

根據手冊中給出的參考值來設置該寄存器。

ARMCLK = 1000MHz = MOUT_MSYS / (APLL_RATIO + 1),經過在第四和第五步的設置後, MOUT_MSYS會被設置為 1000MHz,所以 APLL_RATIO=0 即可
SCLKA2M = 200MHz = SCLKAPLL / (A2M_RATIO + 1),由於 SCLKAPLL = 1000MHz,所以 A2M_RATIO=4。
HCLK_MSYS = 200MHz = ARMCLK / (HCLK_MSYS_RATIO + 1),所以 HCLK_MSYS_RATIO=4
PCLK_MSYS = 100MHz = HCLK_MSYS / (PCLK_MSYS_RATIO + 1),所以 PCLK_MSYS_RATIO=1
HCLK_DSYS = 166MHz = MOUT_DSYS / (HCLK_DSYS_RATIO + 1), 經過在第四和第五步的設置後,MOUT_DSYS =667MHz, 所以 HCLK_DSYS_RATIO=3
PCLK_DSYS = 83MHz = HCLK_DSYS / (PCLK_DSYS_RATIO + 1),所以 PCLK_DSYS_RATIO=1
HCLK_PSYS = 133Mhz = MOUT_PSYS / (HCLK_PSYS_RATIO + 1), 經過在第四和第五步的設置後,MOUT_PSYS =667MHz 所以 HCLK_PSYS_RATIO=4
PCLK_PSYS = 66Mhz = HCLK_PSYS / (PCLK_PSYS_RATIO + 1), 所以 HCLK_PSYS_RATIO=1

第四步 設置 PLL

PLL 即倍頻器,用來放大運行頻率。 設置好分頻後,我們就需要設置 PLL 了。 APLL 和 MPLL 的啟動是通過分別設置 APLL_CON0 和 MPLL_CON 寄存器,我們逐個來設置。

APLL_CON0

APLL_CON0 負責設置 APLL, FINPLL=24MHz,經過 APLL 後,我們將輸出 FOUT=1000Mhz 的時鐘頻率, FOUT 的計算公式如下:

FOUT=MDIV*FIN/(PDIV*2^(SDIV-1)) = 1000 MHz

由於 FIN=24MHz,FOUT=1000MHz,我們可以這樣取值: MDIV= 0x7d, PDIV= 0x3, SDIV=1。這 3 個值並不是固定死的,只要能使 FOUT=1000Mhz,任意搭配都是可以的。

MPLL_CON

MPLL_CON 寄存器負責設置 MPLL,經過 MPLL 後,我們將輸出 FOUT=667Mhz 的時鐘頻率, FOUT 的計算公式如下:

FOUT=MDIV*FIN/(PDIV*2^SDIV) = 667 MHz

由於 FIN=24MHz,FOUT=667MHz,我們可以這樣取值: MDIV=0x29B,PDIV= 0xC, SDIV=1。這 3 個值並不是固定死的,只要能使 FOUT=667Mhz,任意搭配都是可以的。

第五步 設置各種時鐘開關

參考 S5PV210 時鐘結構圖,設置各種時鐘開關:

APLL_SEL = 1,使用 FOUTAPLL
MPLL_SEL = 1,使用 FOUTMPLL
EPLL_SEL = 1, 使用 FOUTEPLL
VPLL_SEL = 1,使用 FOUTVPLL
MUX_MSYS_SEL = 0, 使用 SCLKAPLL
MUX_DSYS_SEL = 0, 使用 SCLKMPLL
MUX_PSYS_SEL = 0,使用 SCLKMPLL
ONENAND_SEL = 1, 使用 HCLK_DSYS
所以 CLK_SRC0 = 0x10001111;

以上程式,通過設置時鐘相關的寄存器,達到了初始化時鐘的目的(實際上我們並不需要設置好所有部件的工作時鐘,我們只需設置好我們需要使用的硬體部件的工作時鐘即可)。

本篇文章參考:《友善之臂210手冊》


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 上一篇主要介紹了進程和線程的一些基本知識,現在回歸正題,我們來學一下線程的使用,本篇主要是使用新建線程和線程池的方式。 線程 先來介紹簡單的線程使用:使用new方法來創建線程,至於撤銷線程,我們不必去管(我也不知道怎麼去管XD),因為CLR已經替我們去管理了。 創建 先來看一個簡單的使用線程的例子: ...
  • 寫在開頭 今天就放假了,照理說應該寫今年的總結了,但是回頭一看,很久沒有寫過技術類的文字了,還是先不吐槽了。 關於文件緩存 寫了很多的代碼,常常在寫EXE(定時任務)或者寫小站點(數據的使用和客戶端調用之間)都需要用到緩存,數據在記憶體和文本都保留一個整體。 當然也可以寫到資料庫,不過個人覺得不方便查 ...
  • 在現在的軟體編程中,不可避免的會用到多線程或者其他方式來實現非同步的目的,那麼,線程是個什麼東西,如何使用?這些都是需要去學習與摸索的東西。不過在學習線程之前,還是有一些知識需要掌握的,雖說都是書本上的東西,但是還是對線程的學習有一定的作用的。 進程 目的 現在的電腦存在很多的操作系統(OS),大部 ...
  • 系統啟動流程 systemd Unit 類型 服務管理 ` 運行級別 CentOS7 引導啟動順序 service unit 文件格式 設置內核參數 啟動排錯 破解CentOS7 的root 口令 修複GRUB2 ...
  • ramdisk ramdisk文件的製作: mkinitrd ...
  • Linux 組成 終端terminal 互動式介面 命令提示符 執行命令 執行外部命令 命令別名 命令格式 簡單命令 date 顯示日期和時間 d: 顯示字元串所指的日期與時間。字元串前後必須加上雙引號; s: 根據字元串來設置日期與時間。字元串前後必須加上雙引號; u: 顯示GMT; date d ...
  • Nginx的安裝 點擊進入 "Ngunx官網下載穩定版本頁面" 找到 Pre Built Packages for Stable version ,選擇與自己系統相關的操作,如 CentOS 7 ,則選擇 To set up the yum repository for RHEL/CentOS, c ...
  • 嵌入式開發中,大家免不了需要模擬調試代碼,線上調試是排除bug最有效直接的方式,今天我們要聊的是調試里最基礎的東西,即介面標準。ARM內核原生支持2種業界通用的介面標準,分別是JTAG和SWD。本節課豹哥先給大家詳細講講JTAG介面。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...