精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

armv7 generic timer使用筆記

冬至子 ? 來源:小鱷魚 ? 作者:小鱷魚 ? 2023-09-27 15:10 ? 次閱讀

generic timer介紹

armv7-A架構中每個CPU核心都包含自己的私有定時器,所有cpu的定時器共享一個System counter, System counter負責產生計數,傳遞到每個核心的私有定時器,架構如下圖所示:

1.jpg

該定時器可以產生中斷,作為系統心跳使用,類似于cortex-M的systick,詳細的中斷號在DDI0471B_gic400_r0p1_trm.pdf中有說明,下面PPI中斷號的截圖說明:

1.jpg

gtimer寄存器介紹

armv7-A架構中generic timer寄存器如下圖所示:

1.jpg

在ARMv7-A中定義了不同的特權級別,分別是PL0, PL1, PL2,PL0是普通用戶模式,在PL1、PL2模式下分別有對應的定時器。

下面介紹PL1模式下的定時器,也就是svc、FIQ模式下的定時器,rt-thread的宏內核版本運行在svc模式下,所以我們著重研究PL1物理定時器的使用。

關鍵寄存器說明

CNTFRQ寄存器是定時器頻率值,這個需要根據實際的硬件情況設置,在全志平臺上是24M,這個必須設置, 操作寄存器的內聯匯編代碼:

asm volatile("MCR p15, 0 , %0, c14, c0, 0" : : "r" (Rt) : "memory" )

CNTPCT是物理計數器寄存器,這個寄存器是64位的,寄存器值會一直累加,根據CNTFRQ寄存器中的頻率進行累加,所以這個值可以作為時間tick來使用,在一些需要簡短的延時場景可以借助這個計數器。獲取計數器值的代碼:

uint64_t get_arch_counter(void)
{
uint32_t low=0, high = 0;
asm volatile("mrrc p15, 0, %0, %1, c14"

: "=r" (low), "=r" (high)
: "memory");
return (((uint64_t)high)<<32
}

CNTP_TVAL寄存器, 這個寄存器一般在開啟gtimer的中斷時使用。

寫入CNTP_TVAL寄存器時,硬件會自動把該值加上System Counter的值,一并寫入CNTP_CVAL寄存器中,作為下一次中斷的時基。內聯匯編偽代碼如下:

asm volatile("MCR p15, 0 , %0, c14, c2, 0" : : "r" (Rt) : "memory" )

特別說明

CNTP_CVAL = CNTP_TVAL + System Counter。

CNTP_CVAL寄存器,該寄存器是比較寄存器,當System Counter的值大于等于CNTP_CVAL的值時產生中斷,如果需要改寫此寄存器的值可以,通過寫入CNTP_TVAL來實現,避免讀改寫寄存器的繁瑣操作。

CNTP_CTL是PL1物理定時器的控制寄存器, 操作的內聯匯編代碼如下:

asm volatile("MCR p15, 0 , %0, c14, c2,

CNTP_CTL寄存器控制位說明:

1.jpg

其中bit0負責使能定時器,bit1是否打開中斷信號

PL1物理定時器的中斷號,在全志平臺是29,其他CPU平臺待驗證。

詳細gtimer操作代碼可以參考rt-thread源碼目錄中libcpu->cortex-a中的gtimer.c文件。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計數器
    +關注

    關注

    32

    文章

    2241

    瀏覽量

    93962
  • ARM處理器
    +關注

    關注

    6

    文章

    360

    瀏覽量

    41512
  • 定時器
    +關注

    關注

    23

    文章

    3216

    瀏覽量

    113652
  • 控制寄存器
    +關注

    關注

    0

    文章

    34

    瀏覽量

    11461
  • RT-Thread
    +關注

    關注

    31

    文章

    1238

    瀏覽量

    39414
收藏 人收藏

    評論

    相關推薦

    芯海科技應用筆記:CS32F0XX TIMER外設模塊指導

    紹的特定用戶示例做了工作原理與相關代碼介紹, 以方便用戶快速移。本應用筆記分為四部分:定時器特性概述、基本定時器功能介紹、高級定時器功能介紹、特定場景應用示例。*附件:應用筆記:CS32F0XX TIMER外設模塊指導.pdf
    發表于 05-16 10:52

    arm7 armv7 cortexm3它們是什么關系請問?

    arm7 armv7 cortexm3它們是什么關系請問?
    發表于 11-15 21:21

    Armv8-M應用筆記上使用TrustZone

    本應用筆記介紹CMSIS和MDK中可用的功能,以利用ARMv8-M體系結構中的安全域和非安全域。它包含幾個編程示例,其中包括一個RTOS應用程序,該應用程序顯示了非安全線程執行與ARMv8-M系統安全域提供的庫之間的交互。
    發表于 05-11 13:26

    基于ARMv7架構的Cortex系列

    基于ARMv7架構的Cortex系列由ARM公司在2006年推出,Cortex系列的推出滿足人們對性能日漸復雜的設計要求,根據不同需求,Cortex系列共三個不同的子系列...
    發表于 08-09 06:37

    Cortex-A53使用AArch32 Kernel,可以直接使用ARMv7的所支持的CPU嗎?

    CA53 run 32bit linux kernel, 發現arch/arm/kernel/perf_event_v7.c 只支持ARMv7 的 ca17, ca15, ca12, ca9
    發表于 08-29 14:11

    請問怎么理解ARMv7的Secure和Non-secure狀態

    我在看ARMv7異常部分,看到Vector tables發現和以前不一樣了,有Secure和Non-secure狀態(還有Hyp和Monitor),請問怎么理解這兩種狀態?讀那個寄存器可以知道當前ARM處于哪種狀態?
    發表于 09-01 15:46

    Armv7Armv8系統中跟蹤的高級視圖詳解

    本指南主要介紹Armv7系統和Armv8系統中跟蹤的高級視圖,最高可達Armv8.4版本。 該指南涵蓋: ?跟蹤是什么以及如何使用 ?跟蹤體系結構是如何定義的,以及它如何映射到不同的跟蹤組件實現 ?在Arm系統中可以看到哪些跟蹤
    發表于 08-02 06:11

    如何將軟件應用程序從ARMv5遷移到ARMv7-A/R

    5。 本應用筆記還假設您具有ARMv5的軟件開發經驗。 假設主目標平臺是圍繞ARMv7-A處理器構建的。 由于ARMv7-A和ARMv7-R
    發表于 08-29 06:51

    ARMv7的Cortex系列微處理器技術特點

    ARMv7的Cortex系列微處理器 隨著嵌入式技術應用領域的不斷擴展,對嵌入式系統的要求越來越高,而作為嵌入式系統核心的微處理器也面臨日益嚴竣的挑
    發表于 10-17 09:17 ?3255次閱讀
    <b class='flag-5'>ARMv7</b>的Cortex系列微處理器技術特點

    ARMv7ARMv7的體系結構參考手冊免費下載

    ARM? Architecture Reference Manual ARMv7-A and ARMv7-R edition
    發表于 09-28 08:00 ?26次下載
    <b class='flag-5'>ARMv7</b>和<b class='flag-5'>ARMv7</b>的體系結構參考手冊免費下載

    ES7P2131應用筆記

    電子發燒友網站提供《ES7P2131應用筆記.pdf》資料免費下載
    發表于 09-22 14:46 ?1次下載
    ES<b class='flag-5'>7</b>P2131應<b class='flag-5'>用筆記</b>

    ES7P2032應用筆記

    電子發燒友網站提供《ES7P2032應用筆記.pdf》資料免費下載
    發表于 09-22 11:22 ?0次下載
    ES<b class='flag-5'>7</b>P2032應<b class='flag-5'>用筆記</b>

    ARMv7-A工作模式介紹

    TF-A 一開始是為 ARMv8 準備的,ARMv8 最突出的特點就是支持 64 位指令,但是為了兼容原來的 ARMv7ARMv8提供了兩種指令集:AAarch64 和 AArch3
    的頭像 發表于 09-11 16:31 ?754次閱讀
    <b class='flag-5'>ARMv7</b>-A工作模式介紹

    HK32MCU應用筆記(十六)| HK32F103xC/D/E-Timer的應用及注意事項

    HK32MCU應用筆記(十六)| HK32F103xC/D/E-Timer的應用及注意事項
    的頭像 發表于 09-18 10:58 ?661次閱讀

    ARMv7安全引導的過程

    對于安全引導功能的實現和驗證過程各家芯片公司的方案都不一樣,這是由該芯片的啟動流程以及啟動所需鏡像文件來決定的,但都會遵循鏈式驗簽啟動的原則。 ARMv7架構并沒有使用ATF,系統的啟動流程與以前
    的頭像 發表于 11-07 15:25 ?644次閱讀
    <b class='flag-5'>ARMv7</b>安全引導的過程