一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

armv7 generic timer使用筆記

冬至子 ? 來源:小鱷魚 ? 作者:小鱷魚 ? 2023-09-27 15:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

generic timer介紹

armv7-A架構(gòu)中每個(gè)CPU核心都包含自己的私有定時(shí)器,所有cpu的定時(shí)器共享一個(gè)System counter, System counter負(fù)責(zé)產(chǎn)生計(jì)數(shù),傳遞到每個(gè)核心的私有定時(shí)器,架構(gòu)如下圖所示:

1.jpg

該定時(shí)器可以產(chǎn)生中斷,作為系統(tǒng)心跳使用,類似于cortex-M的systick,詳細(xì)的中斷號(hào)在DDI0471B_gic400_r0p1_trm.pdf中有說明,下面PPI中斷號(hào)的截圖說明:

1.jpg

gtimer寄存器介紹

armv7-A架構(gòu)中g(shù)eneric timer寄存器如下圖所示:

1.jpg

在ARMv7-A中定義了不同的特權(quán)級(jí)別,分別是PL0, PL1, PL2,PL0是普通用戶模式,在PL1、PL2模式下分別有對(duì)應(yīng)的定時(shí)器。

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

關(guān)鍵寄存器說明

CNTFRQ寄存器是定時(shí)器頻率值,這個(gè)需要根據(jù)實(shí)際的硬件情況設(shè)置,在全志平臺(tái)上是24M,這個(gè)必須設(shè)置, 操作寄存器的內(nèi)聯(lián)匯編代碼:

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

CNTPCT是物理計(jì)數(shù)器寄存器,這個(gè)寄存器是64位的,寄存器值會(huì)一直累加,根據(jù)CNTFRQ寄存器中的頻率進(jìn)行累加,所以這個(gè)值可以作為時(shí)間tick來使用,在一些需要簡(jiǎn)短的延時(shí)場(chǎng)景可以借助這個(gè)計(jì)數(shù)器。獲取計(jì)數(shù)器值的代碼:

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寄存器, 這個(gè)寄存器一般在開啟gtimer的中斷時(shí)使用。

寫入CNTP_TVAL寄存器時(shí),硬件會(huì)自動(dòng)把該值加上System Counter的值,一并寫入CNTP_CVAL寄存器中,作為下一次中斷的時(shí)基。內(nèi)聯(lián)匯編偽代碼如下:

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

特別說明

CNTP_CVAL = CNTP_TVAL + System Counter。

CNTP_CVAL寄存器,該寄存器是比較寄存器,當(dāng)System Counter的值大于等于CNTP_CVAL的值時(shí)產(chǎn)生中斷,如果需要改寫此寄存器的值可以,通過寫入CNTP_TVAL來實(shí)現(xiàn),避免讀改寫寄存器的繁瑣操作。

CNTP_CTL是PL1物理定時(shí)器的控制寄存器, 操作的內(nèi)聯(lián)匯編代碼如下:

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

CNTP_CTL寄存器控制位說明:

1.jpg

其中bit0負(fù)責(zé)使能定時(shí)器,bit1是否打開中斷信號(hào)。

PL1物理定時(shí)器的中斷號(hào),在全志平臺(tái)是29,其他CPU平臺(tái)待驗(yàn)證。

詳細(xì)gtimer操作代碼可以參考rt-thread源碼目錄中l(wèi)ibcpu->cortex-a中的gtimer.c文件。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2291

    瀏覽量

    96426
  • ARM處理器
    +關(guān)注

    關(guān)注

    6

    文章

    361

    瀏覽量

    42630
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3298

    瀏覽量

    118976
  • 控制寄存器
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    11654
  • RT-Thread
    +關(guān)注

    關(guān)注

    32

    文章

    1409

    瀏覽量

    41966
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    芯??萍紤?yīng)用筆記:CS32F0XX TIMER外設(shè)模塊指導(dǎo)

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

    arm7 armv7 cortexm3它們是什么關(guān)系請(qǐng)問?

    arm7 armv7 cortexm3它們是什么關(guān)系請(qǐng)問?
    發(fā)表于 11-15 21:21

    Armv8-M應(yīng)用筆記上使用TrustZone

    本應(yīng)用筆記介紹CMSIS和MDK中可用的功能,以利用ARMv8-M體系結(jié)構(gòu)中的安全域和非安全域。它包含幾個(gè)編程示例,其中包括一個(gè)RTOS應(yīng)用程序,該應(yīng)用程序顯示了非安全線程執(zhí)行與ARMv8-M系統(tǒng)安全域提供的庫(kù)之間的交互。
    發(fā)表于 05-11 13:26

    基于ARMv7架構(gòu)的Cortex系列

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

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

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

    請(qǐng)問怎么理解ARMv7的Secure和Non-secure狀態(tài)

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

    Armv7Armv8系統(tǒng)中跟蹤的高級(jí)視圖詳解

    本指南主要介紹Armv7系統(tǒng)和Armv8系統(tǒng)中跟蹤的高級(jí)視圖,最高可達(dá)Armv8.4版本。 該指南涵蓋: ?跟蹤是什么以及如何使用 ?跟蹤體系結(jié)構(gòu)是如何定義的,以及它如何映射到不同的跟蹤組件實(shí)現(xiàn) ?在Arm系統(tǒng)中可以看到哪些跟蹤
    發(fā)表于 08-02 06:11

    如何將軟件應(yīng)用程序從ARMv5遷移到ARMv7-A/R

    5。 本應(yīng)用筆記還假設(shè)您具有ARMv5的軟件開發(fā)經(jīng)驗(yàn)。 假設(shè)主目標(biāo)平臺(tái)是圍繞ARMv7-A處理器構(gòu)建的。 由于ARMv7-A和ARMv7-R
    發(fā)表于 08-29 06:51

    ARMv7的Cortex系列微處理器技術(shù)特點(diǎn)

    ARMv7的Cortex系列微處理器 隨著嵌入式技術(shù)應(yīng)用領(lǐng)域的不斷擴(kuò)展,對(duì)嵌入式系統(tǒng)的要求越來越高,而作為嵌入式系統(tǒng)核心的微處理器也面臨日益嚴(yán)竣的挑
    發(fā)表于 10-17 09:17 ?3770次閱讀
    <b class='flag-5'>ARMv7</b>的Cortex系列微處理器技術(shù)特點(diǎn)

    ARMv7ARMv7的體系結(jié)構(gòu)參考手冊(cè)免費(fèi)下載

    ARM? Architecture Reference Manual ARMv7-A and ARMv7-R edition
    發(fā)表于 09-28 08:00 ?30次下載
    <b class='flag-5'>ARMv7</b>和<b class='flag-5'>ARMv7</b>的體系結(jié)構(gòu)參考手冊(cè)免費(fèi)下載

    ES7P2131應(yīng)用筆記

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

    ARMv7-A工作模式介紹

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

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

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

    ARMv7安全引導(dǎo)的過程

    對(duì)于安全引導(dǎo)功能的實(shí)現(xiàn)和驗(yàn)證過程各家芯片公司的方案都不一樣,這是由該芯片的啟動(dòng)流程以及啟動(dòng)所需鏡像文件來決定的,但都會(huì)遵循鏈?zhǔn)津?yàn)簽啟動(dòng)的原則。 ARMv7架構(gòu)并沒有使用ATF,系統(tǒng)的啟動(dòng)流程與以前
    的頭像 發(fā)表于 11-07 15:25 ?1293次閱讀
    <b class='flag-5'>ARMv7</b>安全引導(dǎo)的過程

    ES7P0213應(yīng)用筆記

    電子發(fā)燒友網(wǎng)站提供《ES7P0213應(yīng)用筆記.pdf》資料免費(fèi)下載
    發(fā)表于 01-16 15:26 ?0次下載
    ES<b class='flag-5'>7</b>P0213應(yīng)<b class='flag-5'>用筆記</b>