在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    2288

    瀏覽量

    96137
  • ARM處理器
    +關注

    關注

    6

    文章

    361

    瀏覽量

    42488
  • 定時器
    +關注

    關注

    23

    文章

    3290

    瀏覽量

    117444
  • 控制寄存器
    +關注

    關注

    0

    文章

    34

    瀏覽量

    11627
  • RT-Thread
    +關注

    關注

    32

    文章

    1375

    瀏覽量

    41601
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    芯??萍紤?b class='flag-5'>用筆記: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 ?3721次閱讀
    <b class='flag-5'>ARMv7</b>的Cortex系列微處理器技術特點

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

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

    ES7P2131應用筆記

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

    ARMv7-A工作模式介紹

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

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

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

    ARMv7安全引導的過程

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

    ES7P0213應用筆記

    電子發燒友網站提供《ES7P0213應用筆記.pdf》資料免費下載
    發表于 01-16 15:26 ?0次下載
    ES<b class='flag-5'>7</b>P0213應<b class='flag-5'>用筆記</b>
    主站蜘蛛池模板: 日韩成人免费观看 | 色综合88| 伊人小婷婷色香综合缴缴情 | 狠狠五月深爱婷婷网免费 | 国产三片高清在线观看 | 久草资源在线播放 | 亚洲好骚综合 | 亚洲精品亚洲人成毛片不卡 | 免费在线观看理论片 | 亚洲精品美女久久久久网站 | 丁香花在线影院观看在线播放 | 午夜性福利 | 夜夜爽网站 | 午夜视频网址 | 国模吧一区二区三区精品视频 | 天天碰夜夜操 | 五月天伦理| avtt亚洲一区中文字幕 | 成年免费大片黄在线观看免费 | www.日本三级 | 98色花堂永久地址国产精品 | 69精品在线观看 | 99久久精品费精品国产一区二 | 深点再深一点好爽好多水 | 国产精品一区电影 | 久久影院午夜伦手机不四虎卡 | 国产福利网站 | 日韩一级高清 | 国产三级精品视频 | 精品精品国产自在久久高清 | 欧美视频免费一区二区三区 | 最近2018中文字幕免费看在线 | 亚洲成人在线播放 | 插菊综合网 | 国产一级特黄在线播放 | 午夜cao | 午夜色片 | 天天干在线播放 | 第四色激情 | 久久全国免费久久青青小草 | 手机看片中文字幕 |