成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

痞子衡嵌入式:嵌入式Cortex-M系統(tǒng)中斷延遲及其測(cè)量方法簡(jiǎn)介

不知名網(wǎng)友 / 1141人閱讀

摘要:今天痞子衡給大家分享的是系統(tǒng)中斷延遲及其測(cè)量方法。至此,系統(tǒng)中斷延遲及其測(cè)量方法痞子衡便介紹完畢了,掌聲在哪里歡迎訂閱歡迎訂閱文章會(huì)同時(shí)發(fā)布到我的博客園主頁主頁知乎主頁微信公眾號(hào)平臺(tái)上。


  大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是Cortex-M系統(tǒng)中斷延遲及其測(cè)量方法。

  在嵌入式領(lǐng)域里,實(shí)時(shí)性是個(gè)經(jīng)常被我們掛在嘴邊的概念,這里的實(shí)時(shí)性主要強(qiáng)調(diào)得是當(dāng)外界事件發(fā)生時(shí),系統(tǒng)是否能在規(guī)定的時(shí)間范圍內(nèi)予以響應(yīng)處理,這個(gè)時(shí)間閾值越小,系統(tǒng)的實(shí)時(shí)性就越高。當(dāng)然關(guān)于這個(gè)實(shí)時(shí)性,也有軟硬之分,硬實(shí)時(shí)要求的是設(shè)定的時(shí)間閾值內(nèi)必須完成響應(yīng),而軟實(shí)時(shí)則僅需根據(jù)任務(wù)的優(yōu)先級(jí)盡可能快地完成響應(yīng)即可。

  無論是 RTOS 環(huán)境還是裸機(jī)環(huán)境下,系統(tǒng)最原始的實(shí)時(shí)性保障其實(shí)來自于 MCU 內(nèi)核的中斷響應(yīng)能力,關(guān)于中斷響應(yīng)能力有一個(gè)重要指標(biāo)叫中斷延遲時(shí)間,今天我們就來聊一聊 Cortex-M 內(nèi)核的中斷延遲及其測(cè)量方法:

一、什么是系統(tǒng)中斷延遲?

  所謂中斷延遲,即從中斷請(qǐng)求 IRQ 信號(hào)置起開始到內(nèi)核進(jìn)入執(zhí)行該中斷 ISR 第一條指令時(shí)的間隔,如下圖所示, 箭頭范圍內(nèi)的 11 個(gè)周期就是中斷延遲時(shí)間。關(guān)于這個(gè)概念,ARM 公司專家 Joseph Yiu 的一篇博客 《Cortex-M內(nèi)核系統(tǒng)中斷延遲入門指南》 介紹得很詳細(xì)。

  為什么會(huì)有中斷延遲?其實(shí)這是無法避免的,當(dāng)內(nèi)核在執(zhí)行 main thread 代碼時(shí),來了中斷事件,NVIC 里對(duì)應(yīng) IRQ 信號(hào)被置起,內(nèi)核接到 NVIC 通知后壓棧保存現(xiàn)場(chǎng)(以便中斷 ISR 處理完成時(shí)回到被打斷的 main thread 地方),然后再從中斷向量表里取出對(duì)應(yīng)中斷 ISR 來執(zhí)行,這一系列動(dòng)作是需要時(shí)間的。

  Cortex-M 家族發(fā)展至今,已有 M0/M0+/M1/M3/M4/M7/M23/M33/M35P/M55 等多款內(nèi)核,這些內(nèi)核的中斷延遲時(shí)間不一,如下表所示。注意表中的數(shù)值單位是內(nèi)核的時(shí)鐘周期,并且是在零等待內(nèi)存系統(tǒng)條件下結(jié)果(即代碼鏈接在零等待內(nèi)存里)。

  • Note1: 一般來說 MCU 內(nèi)部與內(nèi)核同頻的 SRAM 是標(biāo)準(zhǔn)的零等待內(nèi)存。
  • Note2: 許多運(yùn)行頻率超過 100MHz 的微控制器會(huì)搭配非常慢的 Flash 存儲(chǔ)器(例如 30 - 50MHz),雖然可以使用 Flash 訪問加速硬件來提高性能,但中斷延遲仍然受到 Flash 存儲(chǔ)系統(tǒng)等待狀態(tài)的影響。

二、如何測(cè)量系統(tǒng)中斷延遲?

  測(cè)量 Cortex-M 的中斷延遲方法有很多,任何一個(gè)帶中斷的 MCU 外設(shè)模塊都可以用來測(cè)中斷延遲,Cortex-M 中斷延遲時(shí)間跟觸發(fā)中斷的具體外設(shè)模塊類型基本上是無關(guān)的(最多受一點(diǎn)該外設(shè)中斷信號(hào)同步周期的影響)。

  利用 GPIO 模塊來測(cè)量 Cortex-M 的中斷延遲是最簡(jiǎn)單的方法,選擇兩個(gè) GPIO,一個(gè)配置為輸入(GPIO_IN),另一個(gè)配置為上拉輸出(GPIO_OUT,初態(tài)設(shè)為高),開啟 GPIO_IN 的邊沿中斷(比如下降沿),在 GPIO_IN 邊沿中斷 ISR 里翻轉(zhuǎn)兩次 GPIO_OUT,然后用示波器測(cè)量?jī)蓚€(gè) GPIO 信號(hào)邊沿間隔得出中斷延遲時(shí)間。

uint32_t s_pin_low  = 0x0;uint32_t s_pin_high = 0x1;void GPIO_IN_IRQHandler(void){    GPIO_OUT->DR = s_pin_low;    GPIO_OUT->DR = s_pin_high;    ClearInterruptFlag(GPIO_IN);    __DSB();}

  需要注意的是在如上 GPIO_IN_IRQHandler 函數(shù)偽代碼里,我們對(duì) GPIO_OUT 做了兩次翻轉(zhuǎn),這是有必要的。我們隨便選擇一個(gè) CM7 芯片去實(shí)際編譯(IAR環(huán)境下,無優(yōu)化)可以看到如下匯編代碼,每一次翻轉(zhuǎn)實(shí)際上由四條指令組成,我們作為計(jì)時(shí)基準(zhǔn)的 GPIO_OUT 第一個(gè)邊沿其實(shí)是 ISR 里執(zhí)行了第一句翻轉(zhuǎn)代碼后的時(shí)刻,而中斷延遲是不包含第一句翻轉(zhuǎn)代碼執(zhí)行時(shí)間的。因?yàn)橹噶盍魉€優(yōu)化等復(fù)雜情況,我們就不從理論上計(jì)算四條指令實(shí)際消耗時(shí)鐘周期數(shù),直接再翻轉(zhuǎn)一次 GPIO_OUT,測(cè)量 GPIO_OUT 低電平時(shí)間即認(rèn)為是這四條指令執(zhí)行時(shí)間。

  因此最終中斷延遲時(shí)間 td = t1 - t2,其中 t1、t2 是我們可以測(cè)量出來的時(shí)間。此外,td 時(shí)間內(nèi)包含了 tx,這個(gè) tx 是 I/O 跳變信號(hào)到芯片內(nèi)部 IRQ 置起的時(shí)間,這個(gè)時(shí)間是芯片系統(tǒng)所需的同步時(shí)間,因芯片設(shè)計(jì)而異,本應(yīng)不被計(jì)算在系統(tǒng)中斷延遲內(nèi),但因?yàn)檫@個(gè)時(shí)間無法測(cè)量,故而就放在中斷延遲里了,也算是一點(diǎn)小小誤差吧。

  下一篇我們將在實(shí)際 Cortex-M 芯片上用這種方法去實(shí)測(cè)中斷延遲,敬請(qǐng)期待。

  至此,Cortex-M系統(tǒng)中斷延遲及其測(cè)量方法痞子衡便介紹完畢了,掌聲在哪里~~~

歡迎訂閱

文章會(huì)同時(shí)發(fā)布到我的 博客園主頁、CSDN主頁知乎主頁、微信公眾號(hào) 平臺(tái)上。

微信搜索"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機(jī)上第一時(shí)間看了哦。

??最后歡迎關(guān)注痞子衡個(gè)人微信公眾號(hào)【痞子衡嵌入式】,一個(gè)專注嵌入式技術(shù)的公眾號(hào),跟著痞子衡一起玩轉(zhuǎn)嵌入式。

痞子衡嵌入式-微信二維碼 痞子衡嵌入式-微信收款二維碼 痞子衡嵌入式-支付寶收款二維碼

??衡杰(痞子衡),目前就職于恩智浦MCU系統(tǒng)部門,擔(dān)任嵌入式系統(tǒng)應(yīng)用工程師。

??專欄內(nèi)所有文章的轉(zhuǎn)載請(qǐng)注明出處:http://www.cnblogs.com/henjay724/

??與痞子衡進(jìn)一步交流或咨詢業(yè)務(wù)合作請(qǐng)發(fā)郵件至 [email protected]

??可以關(guān)注痞子衡的Github主頁 https://github.com/JayHeng,有很多好玩的嵌入式項(xiàng)目。

??關(guān)于專欄文章有任何疑問請(qǐng)直接在博客下面留言,痞子衡會(huì)及時(shí)回復(fù)免費(fèi)(劃重點(diǎn))答疑。

??痞子衡郵箱已被私信擠爆,技術(shù)問題不推薦私信,堅(jiān)持私信請(qǐng)先掃碼付款(5元起步)再發(fā)。


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/125365.html

相關(guān)文章

  • STM32學(xué)習(xí)筆記 第一章 ARM處理器

    摘要:處理器擁有的寄存器組。主堆棧指針復(fù)位后缺省使用的堆棧指針,用于操作系統(tǒng)內(nèi)核以及異常處理例程包括中斷服務(wù)例程。進(jìn)程堆棧指針由用戶的應(yīng)用程序代碼使用。堆棧指針的最低兩位永遠(yuǎn)是,這意味著堆??偸亲止?jié)對(duì)齊的。 ...

    ruicbAndroid 評(píng)論0 收藏0
  • 基于STM32Cube MX開發(fā)的TencentOS-Tiny軟件包

    摘要:基于開發(fā)的軟件包導(dǎo)師汪禮超學(xué)員崔林威摘要騰訊物聯(lián)網(wǎng)操作系統(tǒng)是騰訊面向物聯(lián)網(wǎng)領(lǐng)域開發(fā)的實(shí)時(shí)操作系統(tǒng),具有低功耗,低資源占用,模塊化,可裁剪等特性。圖中斷函數(shù)處理進(jìn)行生成工程配置,按如下界面進(jìn)行配置,最后點(diǎn)擊,并點(diǎn)擊。 ...

    shiyang6017 評(píng)論0 收藏0
  • ACPI Specification 第三章 ACPI概念

    摘要:兼容的電池設(shè)備需要智能電池子系統(tǒng)接口由操作系統(tǒng)直接通過嵌入式控制器接口控制或接口。這允許任何操作系統(tǒng)提供一個(gè)標(biāo)準(zhǔn)的總線枚舉器,它可以直接與系統(tǒng)中的嵌入式控制器通信,從而允許系統(tǒng)中的其他驅(qū)動(dòng)程序與系統(tǒng)中的嵌入式控制器通信并使用它們的資源。 目錄 第三章 ACPI 概念... 2 3.1系統(tǒng)電源...

    roadtogeek 評(píng)論0 收藏0
  • RTOS系列——初識(shí)入式實(shí)時(shí)操作系統(tǒng)

    摘要:嵌入式實(shí)時(shí)操作系統(tǒng)是一個(gè)特殊的程序通常稱為內(nèi)核,它可以創(chuàng)建,銷毀,控制所有任務(wù)。顯示處理函數(shù)運(yùn)行過程中,定時(shí)器產(chǎn)生中斷,系統(tǒng)進(jìn)入定時(shí)器中斷程序?qū)鞲衅鳂?biāo)志位置。實(shí)時(shí)操作系的子系統(tǒng)將再后續(xù)持續(xù)更新。 ...

    不知名網(wǎng)友 評(píng)論0 收藏0
  • 自從我這樣擼代碼以后,公司網(wǎng)頁的瀏覽量提高了107%!

    摘要:假如我們底層的連接得到重用,這時(shí)候的情況會(huì)是這樣子很明顯,在獲取的請(qǐng)求中,減少了一次握手往返。在使用持久連接后,避免了一次握手往返總延遲減少為。其代價(jià)往往是不能充分利用網(wǎng)絡(luò)連接,造成服務(wù)器緩沖開銷,有可能導(dǎo)致客戶端更大的延遲。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由騰訊IVWEB團(tuán)隊(duì) 發(fā)表于云+社區(qū)專欄作者:yangchunwen HTTP協(xié)議是前端性能乃...

    sutaking 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<