假設我們正在研究由高分辨率計時器組成的實時Linux系統和硬件,那麼具有RTC是否會影響系統的實時性?
這裡它說它減少了CPU和內存的使用,但是有什麼方法可以比較兩者之間的差異嗎?
假設我們正在研究由高分辨率計時器組成的實時Linux系統和硬件,那麼具有RTC是否會影響系統的實時性?
這裡它說它減少了CPU和內存的使用,但是有什麼方法可以比較兩者之間的差異嗎?
您鏈接的文章很完整,完全是胡說八道。 “實時時鐘”中的“實時”(用於指代本文中介紹的硬件設備的類型)和“實時系統”中的“實時”是完全不同的術語。前者意味著使用長壽命的鈕扣/硬幣型電池來存儲當前日曆時間(通常是非常差的近似值,而不是像要求的鏈接文章所述的高精度),並且無需外部電源就可以提前。後者意味著對事件的響應具有從事件發生時間到響應時間的潛伏期的嚴格限制。
文章中的其他一些內容確立了它應被視為不可信的地方:
100年幾乎可以忽略不計。在100年內約為1秒
1秒大約是317 ppt(是的,這是每萬億的分量)。使用任何現有的商用時鐘技術都無法獲得這種時鐘穩定性。即使每年達到1秒,也至少需要一個OCXO,這需要一個高功率,始終開啟的烤箱來調節溫度。可以使用由長壽命鈕扣電池供電的設備來獲得它的想法是可笑的。
數字時鐘,考勤系統,數碼相機等實時系統
這些都不是實時系統。
實時系統是在指定的時間內響應內部或外部事件/刺激的東西,該時間通常以毫秒或微秒為單位。它需要精度較低的計時器而不是RTC。
您的問題的答案是“否”,它不會影響系統的實時性。
如果您的系統在重置後具有RTC且處於脫機狀態,則可以在日誌中輸入正確的日期。如果您需要仔細查看日誌,並且時間戳不正確會使您,您的軟件開發人員和客戶發瘋,並且在一般情況下進行調查幾乎是不可能的。
您提到的文章中的容易或困難,低或高是一種個人見解。如果您以前從未做過並且沒有明確的系統要求和工作說明,那將是困難且昂貴的。當您知道需要什麼以及使用哪種最佳設備時,它既便宜又便宜。
在大多數係統中,RTC外設相對於其他形式的計時的唯一真正優勢是,當系統的其餘部分進入睡眠狀態或在某些情況下通電時,RTC的時間測量將不受影響。完全關閉。實際上,許多RTC外設的設計方式使其無法用於大多數目的,而不是記錄大約一天中的時間。例如,許多RTC外圍設備(可能是多數,但可能不是絕大多數)僅限於以一秒為增量報告時間,並且其中許多有時至少需要在設置警報或-在某些情況下-甚至只是試圖閱讀時間。因此,使用RTC的通常方法是簡單地將其值複製到啟動時更有用的時鐘,在設置“ wall time”時進行設置,而在其餘時間忽略它。
使用47位紋波計數器可以將RTC芯片可以實現的所有有用目的以最低的成本和功耗實現,該計數器的位可以異步強制為48位電池供電的RAM(存儲一個“增量”值),一個32位警報寄存器和一個相等比較器,其比較器的低位與比較器的高位進行門控(因此,除非或直到高位匹配,否則低位將不被檢查),一個簡單的去抖動器(一系列緩慢的反相器和一個NAND,一個異步可重置的喚醒鎖存器以及用於異步讀出時鐘的電路。在遞增時讀取時鐘可能會產生假結果,但是如果任何兩個連續的讀取都匹配,則兩者會確保正確無誤,並且任何四個連續的讀取都將保證包含兩個匹配的(因此是正確的),除非在第一次和最後一次之間的間隔超過1/32768秒。設置警報可能會產生虛假的喚醒事件,但是序列重要性:
應充分容易地處理所有邊緣情況,以適合於通用計時用途。不幸的是,無論出於何種原因,RTC外設都從未採用這種方式設計,而是更加複雜且用處不大。
這似乎是圍繞“實時”一詞使用的術語問題。
實時時鐘是一種用於穩定/準確(在一定公差範圍內)計時的設備,因此主機系統可以使用它來將事件/動作與發生的時間和日期相關聯。
您可以認為實時時鐘類似於與計算機連接的數字手錶的內部。它具有獨立供電的時間基準,旨在保持穩定和合理的準確性。就像數字手錶一樣,它不會因為主機關閉而丟失當前時間。實時時鐘主要是為了方便安裝在計算機上,因此用戶不必在每次啟動系統時都重新輸入當前時間和日期,也不必進行頻繁的調整來補償漂移。
實時時鐘的替代方法是使用由系統時鐘驅動的軟件和內部計時器。這樣的方法是可行的(原始的IBM PC就是這樣),但並不是特別穩定。在操作系統關閉,掛起或崩潰的任何時候,它也會丟失日期/時間的跟踪。
將“實時”一詞應用於計算機系統或應用程序時,它表示的是一種在很短的確定性時間內(通常只有幾毫秒,有時甚至更少)對現實事件做出響應的系統,具有同時輸入的定義順序。實時系統用於諸如機器控制,機器人,模擬和遊戲之類的事情。儘管實時應用程序可以利用當前時間和日期信息,但是應用程序並不是“實時的”,因為它利用了當前時間和日期。
如上所述,實時時鐘的目的是可靠地跟踪當前日期和時間,通常只跟踪秒和秒。一個好的人將具有最小的漂移(每天增加或丟失的秒數)。實時時鐘通常沒有高分辨率。與現代CPU時鐘相比,它們的基本時鐘通常運行得很慢。這是為了最大程度地減少功耗(消耗其獨立電源),以便在長時間關閉主機電源後,時鐘將繼續可靠地保持時間。
高分辨率計時器與當前時間或日期無關;它的目的是以某種精度(也許微秒或更短)測量時間間隔。為此,它必須基於穩定的高頻時鐘-通常是計算機系統時鐘。高分辨率計時器通常也不關心長時間的漂移,因為通常的目的是測量較短時間的時間。高分辨率計時器沒有與實時時鐘相同的功耗問題,因為在關閉主機電源時,它們沒有工作要做。
如果您要與互聯網上的其他計算機進行安全通信,則需要一個實時時鐘(並非100%一定要使用,但是如果您沒有本地時間參考,則需要信任其他東西),並且除非您知道日期,否則您將無法信任證書。
因此,不,您不需要所有“實時”系統。但是,根據您的應用程序,您可能仍希望將RTC設為低功耗狀態下獲取良好時機的最節能方式。
我認為使用實時時鐘的主要原因是精確的時間間隔。常規時鐘通常會用電容器進行修整,並可能由於多種因素(例如時鐘時序電路的電容/電阻失調,時鐘時序電路的不確定性)失控而導致頻率差異較大。既可以達到性能的雙重目的,又經常有可編程邏輯來劃分時間,而這又會引入錯誤。
通常,RTC可以與計時器和看門狗等配合使用,從而可以保證或良好地假設,以規則的精確間隔(甚至可以與各種事物保持同步)執行給定的過程或代碼。使用常規時鐘很難做到這一點。否則您需要在生產中非常小心時鐘是準確的。您會看到諸如音頻之類的東西,以及使用rtc代替高速系統時鐘可能不需要的東西。
至於RTC的含義,我不能肯定地說。我知道Linux是嵌入式世界中流行的工具,但是我不確定Linux在所有實時應用程序中的表現如何。多線程可以使執行時間不確定,但是當硬件大大超過性能要求時,即使在實時應用程序中,許多解決方案也可以正常工作。
然後是關鍵任務和低性能應用程序。這裡需要做的一件事是確定性的並且通常是較低複雜度的解決方案。在這裡可以明顯地使用RTC。 Linux可能提供對與其耦合的中斷的特殊訪問。在我看來,對於確定性實時,您不僅需要rtc,而且還需要中斷或操作系統。訪問它們。