91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

3天內不再提示

系統(tǒng)里面有多少個Timer?

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者:Baron ? 2022-06-29 09:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

說明:

本文講述的是armv8-aarch64、armv9架構在設計模式上,本文帶有一些個人的見解,如有不同的見解,可以評論區(qū)或微信群參與討論。

思考:

1、一個大的系統(tǒng)里,有多少個Timer?這些Timer的作用分別是什么?這些Timer有什么區(qū)別?它們的精確度有什么不同嗎?

2、Linux Kernel的Tick使用的是哪個Timer?watchdog是用的哪個Timer?

3、一個ARM Core里有又多少個Timer?不同軟件系統(tǒng)中的Timer的使用方式有何不同嗎?

4、應用程序中的 setitimer()這樣的函數(shù)是否會調用到底層程序?

5、應用程序要讀取當前系統(tǒng)時間戳的時候,是否需要調用到kernel space? 在glibc中是否就可以實現(xiàn)了?

6、什么是arch timer?什么是SOC Timer、apb timer、memory-mapped timer?

7、對于arch timer,又分為物理timer和虛擬timer?那么什么時候使用物理timer,什么時候使用虛擬timer?為什么?

8、EL1和S-EL1中使用的arch timer是如何隔離的?(這里所說的隔離是指寄存器如何隔離的,中斷如何隔離的)9、EL3 Physical Timer對應的寄存器為什么是xxxEL1, 不應該是xxxEL3嗎?

1、系統(tǒng)里面有多少個Timer?

7d4eeb96-f73f-11ec-ba43-dac502259ad0.png

如上圖所示,在一個SOC中一定/可能存在:

core timer(也叫arch timer),每個core中都有這個Timer

SOC Timer(也叫apb timer、memory-mapped Timer),可能會有多個,可以存在以下這樣的:

(1) 、一個專門給Non-secure 使用的timer

(2) 、一個專門給Secure 使用的timer

(3) 、一個專門用于特定用途的timer

(4) 、綁定core的Timer,例如8個timer,固定某個timer給某個core使用

2、每一個core里面又有多少個Timer

2.1、四個物理Timer

7d6acfd2-f73f-11ec-ba43-dac502259ad0.png

EL1 Physical Timer不區(qū)分secure和non-secure,但在ATF的switch cpucontext的時候,會保存和恢復相關寄存器,所以從軟件視角來看是有兩套寄存器,也就是有non-secure EL1PhysicalTimer和secure EL1PhysicalTimer,這也是最最理想的設計方案。然而非常非常非常非常的遺憾的是,寄存器通過軟件switch cpucontext可以變成2套,但中斷呢?中斷是無法同時給non-secure和secure同時使用的,也無法做到中斷在Security State之間的隔離。既然這樣,說明這樣的硬件是一個"非常嚴重"的問題,那么我們看下軟件是怎么使用的呢?

(1)Linux Kernel正常使用,在讀取counter值、counter頻率的同時,也會設置CTL、CVAL、TVAL等相關寄存器,也會觸發(fā)和處理30中斷(EL1 Physical Timer的默認中斷號是30);

(2)optee中,僅僅是讀取counter值、counter頻率的同時,就可以計算時間戳了。optee不會讀取CTL、CVAL、TVAL等相關寄存器,當然也不會觸發(fā)和處理30中斷了。

以上便是軟件基于“硬件缺陷”而進行的設計,自然也不會出現(xiàn)什么問題。然后你說ARM Timer有缺陷就有缺陷了?你真的懂它們的設計嗎?事實上ARM的設計中,也考慮了上面描述的問題。你仔細看看它的EL3PhysicalTimer,他的寄存器的名字竟然是xxx_EL1(而不是xxx_EL3),也就是說它本身就是想給secure security用的(EL3也屬于secure security)。另外我也參考了具體的arm core trm手冊,發(fā)現(xiàn)EL3PhysicalTimer所對應的中斷號(29號中斷)的signal configuration描述為"Secure EL1 Pyhsical Timer"。我們再查一下BL32(Secure EL1)的參考程序trusted-firmware-a/bl32/tsp/tsp_timer.c, 它操作的也正是EL3PhysicalTimer。

總結:

(1)、EL1PhysicalTimer不區(qū)分secure和non-secure,在secure和non-secure之間也無法做到隔離。一般情況下它是給NS-EL1使用的。當然S-EL1如果是僅僅讀取counter和頻率獲取當前時間戳,也是可以用的,但這不應該是建議的。因為這樣造車non-secure也可以竊取到secure側的時間戳。

(2)、EL3PhysicalTimer的本意就是想給secure用的,包括EL3和S-EL1

EL2 Physical Timer給non-secure EL2使用的

S-EL2 Physical Timer給secure EL2使用的

EL3 Physical Timer給Secure使用的,包括EL3和S-EL1

2.2、三個虛擬Timer

7d7f9d0e-f73f-11ec-ba43-dac502259ad0.png

EL1VirtualTimer主要是給EL1 OS(guest os)使用的,那么對于一個操作系統(tǒng),它到底是使用 EL1PhysicalTimer還是使用 EL1VirtualTimer ? 由宏控決定,在編譯的時候就決定了。例如你這個OS沒有跑在VM中,那么就使用 EL1PhysicalTimer,如果你這個OS是要跑在VM中的,那么就使用 EL1VirtualTimer

7d92ed50-f73f-11ec-ba43-dac502259ad0.png

EL2PhysicalTimer是很好理解的,就是給EL2管理程序使用的嘛,但是 EL2VirtualTimer是給誰用的呢? 這里就需要一點虛擬化的概念了, EL2VirtualTimer是給Host App使用的。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器

    關注

    31

    文章

    5608

    瀏覽量

    129968
  • Timer
    +關注

    關注

    1

    文章

    64

    瀏覽量

    13563

原文標題:圖解SOC中的Timer(一):系統(tǒng)里有哪些Timer?

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    智能顯示模塊可以存儲多少個畫面?智能模塊最大能顯示多少個頁面?

    智能顯示模塊可以存儲多少個畫面?智能模塊最大能顯示多少個頁面?
    發(fā)表于 02-26 09:52

    洗衣機變頻電機和伺服電機哪個里面有磁鐵?

    對于"洗衣機變頻電機和伺服電機哪個里面有磁鐵"這個問題,答案可能會讓你意外,因為這兩者都含有永磁鐵,而且都大量使用。
    的頭像 發(fā)表于 01-09 10:21 ?354次閱讀
    洗衣機變頻電機和伺服電機哪個<b class='flag-5'>里面有</b>磁鐵?

    請問WWDT和IWDT在保護系統(tǒng)面有哪些不同?

    WWDT和IWDT在保護系統(tǒng)面有哪些不同?
    發(fā)表于 12-10 06:43

    弱電智能化中究竟有多少個子系統(tǒng)?

    在當今科技日新月異的時代,弱電智能化系統(tǒng)已成為現(xiàn)代建筑不可或缺的一部分。它不僅提升了建筑的功能性和實用性,還極大地提高了居住和工作的舒適性與安全性。弱電智能化系統(tǒng)是一復雜的集成系統(tǒng),
    的頭像 發(fā)表于 11-24 09:57 ?949次閱讀
    弱電智能化中究竟有<b class='flag-5'>多少個子系統(tǒng)</b>?

    RT_USING_TIMER_SOFT宏定義是否一定要開啟?

    在文檔中心,介紹定時器中,介紹可以在建立定時器時通過 Flag:RT_TIMER_FLAG_SOFT_TIMER 來建立一 軟件定時器。 在Studio的Setting中,又有一使能軟件定時器
    發(fā)表于 09-29 07:11

    當I/O上電初始配置為準高電平時,需要多少個下拉電阻來保持I/O低電平?

    當I/O上電初始配置為準高電平時,需要多少個下拉電阻來保持I/O低電平?
    發(fā)表于 08-26 07:40

    當I/O上電初始配置為準高電平時,需要多少個下拉電阻來保持I/O低電平呢?

    當I/O上電初始配置為準高電平時,需要多少個下拉電阻來保持I/O低電平?
    發(fā)表于 08-21 07:54

    cybt343026-01 scan的話,最多能scan到多少個?

    我想問一下cybt343026-01的模塊,scan的話,最多能scan到多少個?
    發(fā)表于 07-07 08:14

    CYW20719 最多有多少個外部中斷?

    CYW20719 最多有多少個外部中斷?
    發(fā)表于 07-01 07:16

    CYW20820 GATT服務器可以支持多少個來自GATT客戶端的同時連接嗎?

    有人能告訴我 CYW20820 GATT 服務器可以支持多少個來自 GATT 客戶端的同時連接嗎?
    發(fā)表于 06-30 07:47

    TIMER定時器

    TIMER0和TIMER7定時器載波相位有偏差,如何解決
    發(fā)表于 06-06 14:41

    求助,做一波形圖顯示控件,要求調用excel表里面存的時間作為波形圖的x值。

    我在做畢設的時候,要讀取excel表格里面的數(shù)值,然后做到最后一步就是調用excel表里面的時間,把那個時間作為X軸的值。 現(xiàn)在就是能夠索引并讀取出來了,但是每次索引后,波形圖就不顯示上一
    發(fā)表于 05-16 22:16

    定時模塊app_timer用法及常見問題—nRF5 SDK模塊系列二

    app_timer是大家經(jīng)常用到的一庫,app_timer的功能就是定時,也就是說,你在某一時刻啟動一app timer并設定超時時間,
    的頭像 發(fā)表于 05-12 16:13 ?806次閱讀
    定時模塊app_<b class='flag-5'>timer</b>用法及常見問題—nRF5 SDK模塊系列二

    MIMX9352CVVXM處理器上最多可以同時使用多少個LPSPI實例?

    1. [i]MIMX9352CVVXM 處理器上最多可以同時使用多少個 LPSPI 實例? 2. [i]我們嘗試分配所有可用的 LPSPI 實例(總共 8 ),但 LPSPI4 和 LPSPI5
    發(fā)表于 03-20 06:49

    STM32G0B1VE芯片的CAN過濾器分為掩碼模式和列表模式,在列表模式下,可過濾多少個ID呢?

    STM32G0B1VE芯片的CAN過濾器分為掩碼模式和列表模式,在列表模式下,可過濾多少個ID呢?芯片手冊中未有詳細說明
    發(fā)表于 03-12 07:16