ARM學習之時鐘體系結構
今天在宿舍學習的是S3C2440的系統時鐘體系,這部分的難點不是很多,所以相對來說輕鬆點,但還是把感悟記錄下來吧。
1.S3C2440的的時鐘體系有哪些?它們分別有什麼作用?
答:以前一直有個小疑問,你說,這CPU執行那麼快,外部的裝置執行的就比較慢,那它們的時鐘源怎麼匹配呢?哦,今天算是差不多弄清楚了。因為它們有不同的時鐘源。就S3C2440來說,
它有三種時鐘源:
(1)FCLK:用於CPU核。
(2)HCLK:用於AHB匯流排上的裝置,比如CPU核儲存器控制器、中斷控制器、LCD控制器、DMA和USB主機模組等高效能的裝置。
(3)PCLK:用於APB匯流排上的裝置,比如WATCHDOG、IIS、I2C、PWM定時器、MMC介面、ADC、UART、GPIO、RTC和SPI等低速裝置。
產生這些時鐘源的簡要流程可以這樣描述:
(1)系統剛上電的時候,FCLK即等於外部輸入的時鐘。一般是12M或者24M的晶振。
(2)然後用軟體的方式開啟MPLL(鎖相環電路,用於提高系統時脈頻率),把12M或者24M的時脈頻率提高到100-400M(針對於S3C2440)。
(3)再然後,通過設定一些暫存器,可以改變FCLK、HCLK、PCLk的時脈頻率比例(比如說1:2:2)
這樣,其他的兩個時鐘源也就提高了。
要明白的是,系統在執行的時候,是三個時鐘源一起在工作,分別為不同的裝置提供不同的時脈頻率。當然,有些裝置對這些頻率還不是很“滿意”、它會自己進行一些倍頻或者分頻的工作。
2.本質上,定時器的工作原理是什麼?
答:定時器的工作原理簡要說起來其實也很簡單。就是利用系統給的時鐘(一般是PCLK)進行計數,當數計滿了,就會產生一次中斷。我們想要所長時間進行一次中斷,把這個數計算好就行了。
其他:在敲程式碼的過程中,發現一個小問題。書上說:就是在CPU在轉到中斷服務的時候,LR儲存的是前一個工作模式的的即將執行的地址,就中斷而言,是當前PC+4。可是給的程式碼例程裡計算返回地址的時候用的是SUB lr,lr,#4—–是lr-4,這不又回到需要中斷的指令了。有問題。
後來,查了一些資料才知道,可能是書上寫錯了,這是我摘自一篇部落格的話:
IRQ異常發生時,因為這個異常是在指令執行時候發生的,PC的值等於當前執行指令加8,然後將這個值儲存在LR中。但是LR暫存器中儲存的是PC+8,指向的是後面的第二條指令,如果不進行減4處理,將會漏執行一條指令,所以PC恢復的時候就需要LR減4,所以正常從子程式返回的時候會使用如:
SUBS PC, LR,#4 返回到當前指令的下一條指令
相關文章
- ARM學習之中斷體系結構
- ARM的體系結構與程式設計系列部落格——ARM體系版本程式設計
- ARM的體系結構與程式設計系列部落格——ARM體系變種程式設計
- golang 學習之路之 struct 結構體GolangStruct結構體
- Oracle體系結構學習筆記Oracle筆記
- ASM學習筆記_體系結構ASM筆記
- 如何系統學習C 語言(中)之 結構體篇結構體
- 結構體學習結構體
- [嵌入式]ARM Cortex-A8體系結構
- DG學習筆記(2)_體系結構筆記
- 記下原來學習Oracle的筆記之——體系結構Oracle筆記
- PostgreSQL 資料庫學習 - 1.資料庫體系結構之儲存結構SQL資料庫
- Oracle體系結構之-物理結構Oracle
- Oracle體系結構之-記憶體結構Oracle記憶體
- 學習Rust 結構體Rust結構體
- ARM嵌入式體系結構與介面技術
- Hive學習筆記 1 Hive體系結構Hive筆記
- 【JZ2440】【知識點0】【ARM指令集體系結構和ARM系列】
- Linux學習(三)之系統目錄結構Linux
- 層模式——面向模式體系結構學習筆記模式筆記
- Oracle體系結構之記憶體結構(SGA、PGA)Oracle記憶體
- Linux 系統時鐘和硬體時鐘Linux
- ARM的體系結構與程式設計系列部落格——ARM處理器系列介紹程式設計
- InnoDB學習(七)之索引結構索引
- GO 學習筆記->結構體Go筆記結構體
- Golang 學習——結構體 struct (一)Golang結構體Struct
- Golang 學習——結構體 struct (二)Golang結構體Struct
- go語言學習-結構體Go結構體
- 【CUDA學習】GPU硬體結構GPU
- 硬體時鐘與系統時鐘同步問題
- 【實時時鐘RTC】MSP430系統實時時鐘RTC學習日誌(完善中)
- ARM學習之Nand FLash控制器NaN
- ARM學習之GPIO實現流水燈
- 資料結構基礎學習之時間複雜度分析資料結構時間複雜度
- linux學習筆記之小談時鐘時間,使用者CPU時間,系統CPU時間 .Linux筆記
- 資料結構學習之佇列資料結構佇列
- Yii學習系列之yii大致結構
- CUDA 學習筆記之gpu結構筆記GPU