日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

CAN報(bào)文發(fā)送有優(yōu)先級(jí)嗎?

冬至子 ? 來(lái)源:開(kāi)心果 Need Car ? 作者:開(kāi)心果 Need Car ? 2022-11-15 14:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

QA1:CAN報(bào)文發(fā)送,有優(yōu)先級(jí)嗎?

:有。以英飛凌tc3xx系列為例,MCMCAN模塊有多個(gè)硬件發(fā)送緩沖區(qū),也就是說(shuō)同一時(shí)刻可以緩存多個(gè)待發(fā)送的報(bào)文,這些報(bào)文放入待發(fā)送的緩沖區(qū)以后,會(huì)置位發(fā)送Pending標(biāo)志,等待發(fā)送,誰(shuí)先發(fā)送呢?在回答這個(gè)問(wèn)題之前,我們先說(shuō)待發(fā)送的報(bào)文在硬件緩存區(qū)中的存儲(chǔ)方式:Dedicated Tx Buffers 、Tx FIFO、 Tx Queue。

對(duì)于Dedicated Tx Buffers與 Tx Queue兩種存儲(chǔ)方式,根據(jù)lowest Message ID原則發(fā)送,即:發(fā)送的CanID數(shù)值越小,優(yōu)先級(jí)越高。具體發(fā)送順序示例如下:

圖片

對(duì)于Tx FIFO存儲(chǔ)方式,報(bào)文的發(fā)送順序由進(jìn)入FIFO緩存區(qū)的先后順序決定,即:先進(jìn)先出,具體發(fā)送順序如下:

圖片

如果使用Dedicated Tx Buffers與 Tx Queue兩種存儲(chǔ)方式,優(yōu)先級(jí)低的報(bào)文(比如:網(wǎng)絡(luò)管理報(bào)文、診斷報(bào)文、標(biāo)定報(bào)文等,優(yōu)先級(jí)比應(yīng)用報(bào)文低),是不是永遠(yuǎn)得不到發(fā)送了?不是,我們要清楚:發(fā)送的硬件緩存區(qū)不止一個(gè),而是多個(gè)(比如:tc397有32個(gè)發(fā)送緩沖區(qū)),足以在某一時(shí)刻緩存多個(gè)待發(fā)送的報(bào)文。是否存在某一時(shí)刻(如下t1),發(fā)送報(bào)文的個(gè)數(shù)超過(guò)硬件緩存區(qū)個(gè)數(shù)?這種可能性是存在的,這也是為什么會(huì)有發(fā)送報(bào)文丟幀的原因。

圖片

為了避免發(fā)送丟幀或者周期性報(bào)文抖動(dòng)問(wèn)題,我們可以將相同周期性報(bào)文的發(fā)送做一個(gè)Offset處理, 避免周期性相同的報(bào)文以同一個(gè)基準(zhǔn)時(shí)間計(jì)時(shí)

比如:通信啟動(dòng)后,周期性報(bào)文Msg01(周期10ms)在t0時(shí)刻開(kāi)始周期性發(fā)送;而周期性報(bào)文Msg02(周期10ms)在t1時(shí)刻開(kāi)始周期性發(fā)送,這樣即可避免兩者在某一時(shí)刻的發(fā)送重疊,如下所示:

圖片

QA2:Tx FIFO發(fā)送方式可能引發(fā)的問(wèn)題有什么?

答: 對(duì)于CAN報(bào)文,使用FIFO方式發(fā)送,我能想到的場(chǎng)景:診斷中,發(fā)送診斷指令使用FIFO緩存,保證診斷指令請(qǐng)求的順序。不知道大家在何種情況下使用過(guò)Tx FIFO,還請(qǐng)大家給普及。

這里思考到了一種工況,可能會(huì)因使用FIFO發(fā)送方式,導(dǎo)致報(bào)文的發(fā)送延遲,具體如下所示:

假設(shè):CAN BUS上有兩個(gè)節(jié)點(diǎn):ECU1::CAN1和ECU2::CAN1,ECU1::CAN1使用Tx FIFO緩存待發(fā)送數(shù)據(jù),ECU2::CAN1使用Dedicated Tx Buffers方式緩存待發(fā)送數(shù)據(jù)。

在某一時(shí)刻,ECU1::CAN1的Buffer Index0待發(fā)送報(bào)文的CAN ID = 0x30,ECU2::CAN1待發(fā)送的6個(gè)報(bào)文的CAN ID <0x30,所以,每次總線仲裁,都會(huì)優(yōu)先發(fā)送ECU2::CAN1緩存的報(bào)文,而ECU1::CAN1因?yàn)榭偩€仲裁失敗,導(dǎo)致ECU1::CAN1 FIFO中的高優(yōu)先級(jí)報(bào)文無(wú)法及時(shí)發(fā)送出去,如下所示:

圖片

所以,在使用Tx FIFO方式時(shí),需要注意此工況。

QA3:程序應(yīng)先處理發(fā)送報(bào)文還是應(yīng)該先處理接收?qǐng)?bào)文?

:TBD。為什么是未定義呢?在實(shí)際的項(xiàng)目開(kāi)發(fā)中,先處理Rx報(bào)文還是先處理Tx報(bào)文確實(shí)沒(méi)有明確規(guī)定,在項(xiàng)目不出問(wèn)題之前,沒(méi)有人會(huì)留意兩者的處理順序。

這里我們討論一下先處理Rx Msg,再處理Tx Msg的情況,實(shí)質(zhì)就是討論Task中,Com_MainFunctionRx()/Com_MainFunctionTx()的處理順序。

假設(shè):Com_MainFunctionRx()/Com_MainFunctionTx()均在5ms的Task中,且先處理Com_MainFunctionRx(),再處理Com_MainFunctionTx(),如果此節(jié)點(diǎn)收/發(fā)的報(bào)文數(shù)量不多,任務(wù)在規(guī)定的時(shí)間內(nèi)處理完(t1時(shí)刻之前),不會(huì)引發(fā)問(wèn)題,如下所示:

圖片

如果當(dāng)前節(jié)點(diǎn)接收的報(bào)文數(shù)量較多,Com_MainFunctionRx()消耗了任務(wù)處理的大部分時(shí)間,導(dǎo)致Com_MainFunctionTx()處理被Delay,可能會(huì)導(dǎo)致本節(jié)點(diǎn)發(fā)送報(bào)文的周期抖動(dòng)問(wèn)題,比如:本來(lái)10ms的Tx Msg,由于延遲導(dǎo)致Tx Msg>10ms + 容差值,假設(shè)容差值±10%(1ms),比如:實(shí)際Tx Msg周期13ms,導(dǎo)致通信出問(wèn)題。

圖片

對(duì)于一個(gè)節(jié)點(diǎn),接收?qǐng)?bào)文數(shù)量存在不確定性,比如:接收的報(bào)文類型如果有事件性應(yīng)用報(bào)文、高周期應(yīng)用報(bào)文(如:1ms周期性應(yīng)用報(bào)文)等。

那么Com_MainFunctionRx()的處理時(shí)間就會(huì)存在一定的不確定性。相對(duì)于接收?qǐng)?bào)文,節(jié)點(diǎn)發(fā)送報(bào)文的數(shù)量相對(duì)比較確定,發(fā)送所消耗的時(shí)間也比較確定,所以,從處理順序上來(lái)說(shuō), 先處理確定的發(fā)送再處理不確定的發(fā)送比較合理 ,這樣可以確保發(fā)送報(bào)文的時(shí)間。

而對(duì)于接收,即使超一點(diǎn)時(shí)間,如果Task沒(méi)有超過(guò)Deadline Time,對(duì)程序的運(yùn)行也不會(huì)造成太大影響。

再者,對(duì)于CAN報(bào)文,發(fā)送報(bào)文還需要進(jìn)行總線仲裁,仲裁失敗也會(huì)存在一定的延時(shí)(參考QA2)。

注意 :上述假設(shè)OS所使用的基準(zhǔn)計(jì)數(shù)器是可信的,即:基礎(chǔ)計(jì)數(shù)器準(zhǔn)確,一般由GPT或者STM驅(qū)動(dòng)。

QA4:周期型報(bào)文Offset的作用是啥?

答: 降低同一時(shí)刻,多個(gè)發(fā)送報(bào)文的Burst Send問(wèn)題。這個(gè)問(wèn)題屬于QA1的延申。

一個(gè)節(jié)點(diǎn),發(fā)送的報(bào)文類型可以有多種(QA1提到)。其中,節(jié)點(diǎn)外發(fā)的應(yīng)用報(bào)文從幾個(gè)到幾十個(gè)不等。應(yīng)用報(bào)文又分為事件型、周期型、混合型。以周期型應(yīng)用報(bào)文為例,可能有5ms、10ms、20ms、50ms等周期。

如果本節(jié)點(diǎn)外發(fā)的報(bào)文數(shù)量較大,在某一時(shí)刻會(huì)存在大量并發(fā)請(qǐng)求。比如:MsgA Cycle =5ms,MsgB Cycle = 10ms,MsgC Cycle = 10ms,如果MsgA的發(fā)送時(shí)刻為5ms、10ms、15ms、20ms、25ms、30ms.....MsgB、MsgC的發(fā)送時(shí)刻為10ms、20ms、30ms.....,在time=10ms、time=30ms......等時(shí)刻,MsgA 、MsgB、MsgC會(huì)同時(shí)請(qǐng)求發(fā)送,節(jié)點(diǎn)要發(fā)送的報(bào)文數(shù)量越多,某一時(shí)刻(如下圖time = 10ms 時(shí)刻),請(qǐng)求發(fā)送的報(bào)文數(shù)量可能就越多。

圖片

在某一時(shí)刻,發(fā)送報(bào)文數(shù)量過(guò)多會(huì)帶來(lái)什么問(wèn)題呢?這就是QA3中的問(wèn)題,會(huì)使得某個(gè)發(fā)送報(bào)文發(fā)送延遲,使得其發(fā)送周期出現(xiàn)抖動(dòng),即:超過(guò)該周期報(bào)文的允許誤差值,一般來(lái)說(shuō),≤100ms的周期性應(yīng)用報(bào)文允許的偏差為3%,>100ms的周期性應(yīng)用報(bào)文允許的偏差為1%(看OEM要求)。

既然應(yīng)用報(bào)文會(huì)Burst Send,如何降低這種并發(fā)請(qǐng)求行為呢? 偏移相同周期報(bào)文的發(fā)送時(shí)機(jī) ,比如:MsgBOffset 5 ms,MsgC Offset 10ms,這樣兩者的發(fā)送就不會(huì)重疊,如下所示:

圖片

那偏移不同周期的應(yīng)用報(bào)文有用嗎?因?yàn)橹芷谛詧?bào)文發(fā)送取決于Com_MainFunctionTx()所在任務(wù)周期,Offset Value = n * Cycle(n為非負(fù)整數(shù),Cycle指Com_MainFunctionTx()的任務(wù)周期),所以,Offset Value是Com_MainFunctionTx()任務(wù)周期的整數(shù)倍。

這樣,即使設(shè)置MsgA、MsgB的Offset Value不同,也不能避免某一時(shí)刻(如:time = 10ms時(shí)刻),兩者的并發(fā)請(qǐng)求,如下所示:

圖片

審核編輯:劉清

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

    關(guān)注

    59

    文章

    3097

    瀏覽量

    473583
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    407

    瀏覽量

    45923
  • STM
    STM
    +關(guān)注

    關(guān)注

    1

    文章

    559

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    使用CY8C4147AZI-S475的CAN通信功能,CAN驅(qū)動(dòng)會(huì)如何處理?

    現(xiàn)在使用CY8C4147AZI-S475的CAN通信功能,如果CAN發(fā)出了一個(gè)低優(yōu)先級(jí)報(bào)文出去,但是沒(méi)發(fā)送成功或者出現(xiàn)錯(cuò)誤需要重發(fā),此時(shí)也
    發(fā)表于 02-21 07:37

    搶占優(yōu)先級(jí)和子優(yōu)先級(jí)

    優(yōu)先級(jí)相同的情況下,幾個(gè)子優(yōu)先級(jí)不同的中斷同時(shí)到來(lái),那么高子優(yōu)先級(jí)的中斷優(yōu)先級(jí)被響應(yīng)。 3)在搶占式
    發(fā)表于 12-03 07:11

    can協(xié)議 發(fā)送自動(dòng)重傳的問(wèn)題

    報(bào)文?,F(xiàn)在問(wèn)題來(lái)了,如果發(fā)送郵箱有空郵箱,也就是可以發(fā)送第2幀數(shù)據(jù),那么在自動(dòng)重傳中的第一幀數(shù)據(jù),和后來(lái)過(guò)來(lái)的第2幀數(shù)據(jù)哪個(gè)先發(fā)送呢??(因?yàn)槭峭粋€(gè)
    發(fā)表于 01-02 10:23

    cortex M搶占優(yōu)先級(jí)和子優(yōu)先級(jí)什么用

    Cortex M內(nèi)核中每個(gè)中斷都有一個(gè)8位的優(yōu)先級(jí)設(shè)置寄存器這個(gè)8位的寄存器可以分為搶占優(yōu)先級(jí)和子優(yōu)先級(jí)兩個(gè)部分(通過(guò)設(shè)置優(yōu)先級(jí)組設(shè)置)搶占優(yōu)先級(jí)
    發(fā)表于 01-25 06:07

    nano版本開(kāi)啟tshell的情況下線程優(yōu)先級(jí)低于tshell線程優(yōu)先級(jí)的無(wú)法運(yùn)行怎么解決?

    nano版本在開(kāi)發(fā)的時(shí)候?qū)⑿奶?b class='flag-5'>報(bào)文線程的優(yōu)先級(jí)設(shè)置得比 tshell 的優(yōu)先級(jí)還低發(fā)現(xiàn)心跳報(bào)文線程沒(méi)有運(yùn)行,仿真發(fā)現(xiàn)不但沒(méi)有進(jìn)入心跳報(bào)文線程
    發(fā)表于 02-22 13:56

    CANOpen系列教程05_ CAN總線同步與位填充、優(yōu)先級(jí)的決定

    CANOpen系列教程05_CAN總線同步與位填充、優(yōu)先級(jí)的決定
    的頭像 發(fā)表于 03-06 16:13 ?7216次閱讀

    cortex M內(nèi)核優(yōu)先級(jí)設(shè)置

    Cortex M內(nèi)核中每個(gè)中斷都有一個(gè)8位的優(yōu)先級(jí)設(shè)置寄存器這個(gè)8位的寄存器可以分為搶占優(yōu)先級(jí)和子優(yōu)先級(jí)兩個(gè)部分(通過(guò)設(shè)置優(yōu)先級(jí)組設(shè)置)搶占優(yōu)先級(jí)
    發(fā)表于 12-01 11:51 ?4次下載
    cortex M內(nèi)核<b class='flag-5'>優(yōu)先級(jí)</b>設(shè)置

    2.FreeRTOS中斷優(yōu)先級(jí)和任務(wù)優(yōu)先級(jí)

    FreeRTOS中斷優(yōu)先級(jí)和任務(wù)優(yōu)先級(jí)架構(gòu):Cortex-M3版本:FreeRTOS V9.0.0前言:最開(kāi)始,我并沒(méi)有搞清楚什么是中斷優(yōu)先級(jí)和任務(wù)優(yōu)先級(jí),但看了部分資料后發(fā)現(xiàn)這兩個(gè)并
    發(fā)表于 12-04 20:21 ?14次下載
    2.FreeRTOS中斷<b class='flag-5'>優(yōu)先級(jí)</b>和任務(wù)<b class='flag-5'>優(yōu)先級(jí)</b>

    STM32F103芯片中斷優(yōu)先級(jí)以及FreeRTOS優(yōu)先級(jí)設(shè)置

    STM32F103只用了4個(gè)位來(lái)表達(dá)優(yōu)先級(jí),因此最多支持16級(jí)的可編程優(yōu)先級(jí)(0~15),15為最低優(yōu)先級(jí)
    發(fā)表于 01-25 18:59 ?1次下載
    STM32F103芯片中斷<b class='flag-5'>優(yōu)先級(jí)</b>以及FreeRTOS<b class='flag-5'>優(yōu)先級(jí)</b>設(shè)置

    uC/OS-II學(xué)習(xí)筆記——優(yōu)先級(jí)反轉(zhuǎn)與優(yōu)先級(jí)繼承機(jī)制

    優(yōu)先級(jí)反轉(zhuǎn),是指某同步資源被較低優(yōu)先級(jí)的進(jìn)程/線程所擁有,較高優(yōu)先級(jí)的進(jìn)程/線程競(jìng)爭(zhēng)該同步資源未獲得該資源,而使得較高優(yōu)先級(jí)進(jìn)程/線程反而推遲被調(diào)度執(zhí)行的現(xiàn)象。
    發(fā)表于 02-09 10:33 ?3次下載
    uC/OS-II學(xué)習(xí)筆記——<b class='flag-5'>優(yōu)先級(jí)</b>反轉(zhuǎn)與<b class='flag-5'>優(yōu)先級(jí)</b>繼承機(jī)制

    中斷優(yōu)先級(jí)處理的原則及配置 搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)的區(qū)別

    首先我們需要知道什么是中斷優(yōu)先級(jí):中斷優(yōu)先級(jí)是CPU響應(yīng)中斷的先后順序
    的頭像 發(fā)表于 05-18 15:10 ?3.2w次閱讀
    中斷<b class='flag-5'>優(yōu)先級(jí)</b>處理的原則及配置 搶占<b class='flag-5'>優(yōu)先級(jí)</b>和響應(yīng)<b class='flag-5'>優(yōu)先級(jí)</b>的區(qū)別

    FreeRTOS任務(wù)的優(yōu)先級(jí)示例

    任務(wù)的優(yōu)先級(jí):0~24之間。數(shù)字越大,任務(wù)優(yōu)先等級(jí)越高。高優(yōu)先級(jí)的任務(wù)優(yōu)先執(zhí)行。
    的頭像 發(fā)表于 09-15 11:13 ?4081次閱讀

    Free RTOS的優(yōu)先級(jí)翻轉(zhuǎn)

    優(yōu)先級(jí)翻轉(zhuǎn)簡(jiǎn)介:就是高優(yōu)先級(jí)的任務(wù)運(yùn)行起來(lái)的效果好像成了低優(yōu)先級(jí),而低優(yōu)先級(jí)比高優(yōu)先級(jí)先運(yùn)行;
    的頭像 發(fā)表于 02-10 15:31 ?2669次閱讀
    Free RTOS的<b class='flag-5'>優(yōu)先級(jí)</b>翻轉(zhuǎn)

    什么是優(yōu)先級(jí)反轉(zhuǎn)

    假設(shè)現(xiàn)在有三個(gè)任務(wù)TaskA(優(yōu)先級(jí)高)、TaskB(優(yōu)先級(jí)中)、TaskC(優(yōu)先級(jí)低),一個(gè)信號(hào)量(Semaphore),此信號(hào)量用于任務(wù)之間爭(zhēng)奪某個(gè)資源。在某一時(shí)刻,高優(yōu)先級(jí)的Ta
    的頭像 發(fā)表于 04-24 13:01 ?3609次閱讀
    什么是<b class='flag-5'>優(yōu)先級(jí)</b>反轉(zhuǎn)

    CAN報(bào)文為什么會(huì)發(fā)送失?。?/a>

    CAN總線調(diào)試過(guò)程中出現(xiàn)報(bào)文發(fā)送失敗。很多工程師都對(duì)此只知其一不知其二,今天我們就以CAN報(bào)文發(fā)送
    的頭像 發(fā)表于 04-12 08:25 ?4444次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>報(bào)文</b>為什么會(huì)<b class='flag-5'>發(fā)送</b>失?。? />    </a>
</div>                    </div>
                    <div   id=
    灵武市| 明光市| 景泰县| 沧源| 定南县| 巴塘县| 邢台市| 西乌珠穆沁旗| 沧源| 南汇区| 岫岩| 崇文区| 连江县| 景德镇市| 西平县| 德钦县| 溧阳市| 长兴县| 乌拉特中旗| 咸宁市| 东宁县| 河西区| 武宣县| 阜南县| 凌源市| 老河口市| 甘肃省| 垦利县| 长海县| 响水县| 东安县| 南平市| 焉耆| 永寿县| 秦安县| 凤阳县| 武安市| 佛学| 栾城县| 仁怀市| 津南区|