国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

CAPL編程的進(jìn)階應(yīng)用 | Checksum算法的實(shí)現(xiàn)

北匯信息POLELINK ? 2022-10-11 09:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:北城舊巷
小編:吃不飽

CRC與Checksum區(qū)別

相信大家在CAN Msg或者ETH PDU中經(jīng)常會(huì)看到Checksum這種信號(hào)。提到Checksum,就必須要說(shuō)明一下CRC校驗(yàn),很多工程師會(huì)概念混淆,認(rèn)為兩者是同一個(gè)東西,實(shí)則它們有很大的區(qū)別。

01

兩者存放位置不同

CRC校驗(yàn):循環(huán)冗余檢查(CRC)是一種數(shù)據(jù)傳輸檢錯(cuò)功能,對(duì)數(shù)據(jù)進(jìn)行多項(xiàng)式計(jì)算,并將得到的結(jié)果附在幀的后面,接收設(shè)備也執(zhí)行類(lèi)似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。通過(guò)CRC概念可以得知,CRC存放在CRC場(chǎng),而Checksum存放在數(shù)據(jù)場(chǎng)之中,一般在數(shù)據(jù)場(chǎng)的第一個(gè)字節(jié)或者最后一個(gè)字節(jié)。
28fc3230-486e-11ed-b116-dac502259ad0.png圖1 標(biāo)準(zhǔn)數(shù)據(jù)幀格式

02

兩者應(yīng)用場(chǎng)景不同

在CAN報(bào)文幀中,CRC校驗(yàn)是發(fā)送器根據(jù)發(fā)送的bit進(jìn)行多項(xiàng)式計(jì)算校驗(yàn),結(jié)果放在15bit長(zhǎng)度的CRC位。接收器也是用相同的多項(xiàng)式計(jì)算總線(xiàn)上的數(shù)據(jù),與接收到的校驗(yàn)值進(jìn)行比較,相同則表示幀正確接收,并在ACK時(shí)隙中發(fā)送顯性狀態(tài),覆蓋發(fā)送器的隱性位;如果不同接收節(jié)點(diǎn)在ACK界定符之后發(fā)送錯(cuò)誤幀。
292be750-486e-11ed-b116-dac502259ad0.png圖2 CRC校驗(yàn)原理CRC校驗(yàn)是為了保證數(shù)據(jù)從一個(gè)CAN收發(fā)器發(fā)送到另外一個(gè)收發(fā)器的信號(hào)完整性,而數(shù)據(jù)場(chǎng)中Checksum校驗(yàn)算法是為了校驗(yàn)數(shù)據(jù)被正確的打包與解包,并且Checksum算法是可以自行制定的,計(jì)算規(guī)則的靈活度高。

Checksum的應(yīng)用場(chǎng)景

對(duì)于Checksum而言,它的應(yīng)用場(chǎng)景有以下三點(diǎn):

01

確保數(shù)據(jù)正確打包

有些ECU內(nèi)部的變量在傳遞到CAN收發(fā)器之前就有可能發(fā)生錯(cuò)誤,這種類(lèi)型的錯(cuò)誤CAN收發(fā)器是無(wú)法檢測(cè)到的。報(bào)文中的信號(hào)和Checksum校驗(yàn)是在應(yīng)用層完成的,將報(bào)文中的各個(gè)字節(jié)進(jìn)行校驗(yàn),報(bào)文和Checksum一起發(fā)送,并且在接收節(jié)點(diǎn)進(jìn)行解析,從而確保數(shù)據(jù)鏈路完整和數(shù)據(jù)正確打包。

01

實(shí)現(xiàn)數(shù)據(jù)加密

CAN網(wǎng)絡(luò)是開(kāi)放性的,CAN節(jié)點(diǎn)可以隨時(shí)加入到總線(xiàn)當(dāng)中,為了保證通信的安全性,ECU傳輸?shù)年P(guān)鍵控制信號(hào)需要進(jìn)行加密,報(bào)文的發(fā)送方和接收方使用相同的Checksum算法作為數(shù)據(jù)加密的密鑰。接收方對(duì)比秘鑰,如果不同,此條報(bào)文的數(shù)據(jù)不被使用,從而避免被其他節(jié)點(diǎn)的數(shù)據(jù)影響。Checksum算法不在DBC等數(shù)據(jù)庫(kù)文件中說(shuō)明,可以單獨(dú)保密,從而確保了數(shù)據(jù)的加密。

03

提高數(shù)據(jù)的可信度

一幀報(bào)文在多個(gè)字節(jié)中可能出現(xiàn)位錯(cuò)誤,一般情況下CRC8校驗(yàn)的錯(cuò)誤率為1/256,crc16校驗(yàn)的錯(cuò)誤率為1/65536,crc32校驗(yàn)的錯(cuò)誤率為1/(65536*65536)。通過(guò)Checksum校驗(yàn)可以提高數(shù)據(jù)的可信度。由于Checksum的作用,其也常應(yīng)用在車(chē)載以太網(wǎng)當(dāng)中。

在CAPL中Checksum信號(hào)實(shí)現(xiàn)

通常情況下,Checksum和LiveCounter信號(hào)是成對(duì)出現(xiàn)的。在CANoe中使用仿真節(jié)點(diǎn)與真實(shí)控制器交互,需要將LiveCounter和Checksum信號(hào)仿真,這樣才能成功通信。LiveCounter長(zhǎng)度為4bit,它是用于報(bào)文發(fā)送計(jì)數(shù)的生命信號(hào),每發(fā)送一幀報(bào)文后就對(duì)該LiveCounter位加1,會(huì)在0~15之間循環(huán)增加。在報(bào)文其他信號(hào)沒(méi)有改變時(shí),LiveCounter實(shí)時(shí)更新使得Checksum信號(hào)跟著更新,提高校驗(yàn)的準(zhǔn)確性。那么LiveCounter信號(hào)該如何仿真呢?下面以CAN總線(xiàn)DBC為例,介紹在CAPL中實(shí)現(xiàn)LiveCounter和Checksum校驗(yàn)仿真。

CAPL是CANoe和CANalyzer中可用的類(lèi)C的編程語(yǔ)言。CAPL中程序塊的執(zhí)行由事件控制,在專(zhuān)用的編譯器中開(kāi)發(fā)和編譯,這樣可以訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)中的所有對(duì)象以及系統(tǒng)變量,被汽車(chē)電子工程師們廣泛使用。

下圖為L(zhǎng)iveCounter計(jì)算的代碼,為了保證數(shù)據(jù)的準(zhǔn)確性,進(jìn)行一次Checksum計(jì)算,這樣就可以實(shí)現(xiàn)LiveCounter信號(hào)的仿真。
294e6bfe-486e-11ed-b116-dac502259ad0.png圖3 LiveCounter計(jì)算代碼下圖為示例報(bào)文中各個(gè)信號(hào)位置排布關(guān)系,在此報(bào)文中,Checksum校驗(yàn)方式為前七個(gè)字節(jié)異或運(yùn)算,將運(yùn)算結(jié)果存放到最后一個(gè)字節(jié)。排布圖中共有8個(gè)信號(hào),它們的格式為Motorola格式,也就是俗稱(chēng)的大端模式。
296dd994-486e-11ed-b116-dac502259ad0.png圖4 報(bào)文中信號(hào)排布

CAPL只能訪(fǎng)問(wèn)到報(bào)文中的信號(hào),無(wú)法訪(fǎng)問(wèn)到報(bào)文中的每個(gè)字節(jié),要進(jìn)行Checksum計(jì)算,需要根據(jù)信號(hào)排布把前七個(gè)字節(jié)的真實(shí)值重新組合存放在一個(gè)byte類(lèi)型的數(shù)組當(dāng)中,然后對(duì)這個(gè)數(shù)組異或運(yùn)算獲取的結(jié)果為該報(bào)文中Checksum信號(hào)值。

對(duì)于不同長(zhǎng)度的信號(hào),需要聲明不同類(lèi)型的數(shù)組來(lái)存放不同的信號(hào)。byte類(lèi)型長(zhǎng)度為1字節(jié),聲明兩個(gè)byte *[8]類(lèi)型的數(shù)組(*為省略的數(shù)組名稱(chēng))分別存放長(zhǎng)度小于一字節(jié)的信號(hào)和重組后每個(gè)字節(jié)的真實(shí)值;int類(lèi)型長(zhǎng)度為2字節(jié),聲明int *[8]類(lèi)型的數(shù)組存放長(zhǎng)度為1-2字節(jié)的信號(hào);long類(lèi)型長(zhǎng)度為4字節(jié),聲明long *[8]類(lèi)型的數(shù)組存放長(zhǎng)度為2-4字節(jié)的信號(hào)。下圖為Checksum中信號(hào)長(zhǎng)度小于1字節(jié)的字節(jié)重組示例代碼。
29a81b4a-486e-11ed-b116-dac502259ad0.png圖5 Checksum字節(jié)重組示例代碼另外,參與Checksum計(jì)算的是信號(hào)的真實(shí)值而不是物理值,如果信號(hào)中有偏移量和比例因子,在賦值時(shí)需要將信號(hào)加上偏移量,并除以比例因子以獲得真實(shí)值。
2a24616e-486e-11ed-b116-dac502259ad0.png圖6 信號(hào)描述為了保證和真實(shí)控制器通信正常,Checksum數(shù)據(jù)必須準(zhǔn)確,Checksum計(jì)算步驟一般寫(xiě)成無(wú)返回值函數(shù)(void),在LiveCounter信號(hào)改變或者其他信號(hào)改變時(shí)調(diào)用計(jì)算。正確計(jì)算的LiveCounter和Checksum信號(hào)曲線(xiàn)如下圖所示。
2a3c4aea-486e-11ed-b116-dac502259ad0.png圖7 LiveCounter和Checksum信號(hào)曲線(xiàn)

總結(jié)

本文重點(diǎn)描述了CRC和Checksum信號(hào)的區(qū)別以及Checksum信號(hào)在CAPL中實(shí)現(xiàn)的方法。CAPL編程作為CANoe的靈魂,使CANoe滿(mǎn)足仿真、分析、測(cè)試和診斷的各種復(fù)雜的要求,同時(shí)使CANoe的功能得以不斷擴(kuò)展。
北匯信息作為Vector中國(guó)的合作伙伴,致力于為中國(guó)汽車(chē)客戶(hù)提供優(yōu)質(zhì)的工具支持、解決方案以及測(cè)試服務(wù)。

注:圖片來(lái)自于Vector。

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

    關(guān)注

    90

    文章

    3716

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    【扔物線(xiàn)】Jetpack Compose:從上手到進(jìn)階再到高手資源課程

    未來(lái)安卓必備技能:Compose 上手、進(jìn)階、成神指南 隨著安卓應(yīng)用開(kāi)發(fā)的快速進(jìn)步,Jetpack Compose 成為未來(lái)安卓開(kāi)發(fā)者必須掌握的技能之一。Compose 是 Android 官方推出
    的頭像 發(fā)表于 03-06 11:39 ?61次閱讀

    SM4算法實(shí)現(xiàn)分享(一)算法原理

    ,Xi、Yi、rki為字,i=0,1,2,…,31。則本算法的加密實(shí)現(xiàn)為: 本算法的解密實(shí)現(xiàn)與加密實(shí)現(xiàn)結(jié)構(gòu)是相同的,不同的只是提供的輪
    發(fā)表于 10-30 08:10

    復(fù)雜的軟件算法硬件IP核的實(shí)現(xiàn)

    具體方法與步驟 通過(guò) C 語(yǔ)言實(shí)現(xiàn)軟件算法,并驗(yàn)證了算法的有效性以后,就可以進(jìn)行算法的 HDL 轉(zhuǎn)化工作了。通過(guò)使用 Altium Designer 的 CHC 編譯器(C to H
    發(fā)表于 10-30 07:02

    TCORDIC算法實(shí)現(xiàn)正余弦函數(shù)

    TCORDIC算法,由低延遲CORDIC算法和Taylor展開(kāi)組成。Taylor展開(kāi)計(jì)算作為CORDIC算法的補(bǔ)充,能夠結(jié)合CORDIC算法和Taylor展開(kāi)方式來(lái)計(jì)算浮點(diǎn)正余弦函數(shù),
    發(fā)表于 10-29 06:30

    如何使用恢復(fù)算法來(lái)實(shí)現(xiàn)開(kāi)平方運(yùn)算

    本文主要描述如何使用恢復(fù)算法來(lái)實(shí)現(xiàn)開(kāi)平方運(yùn)算。 簡(jiǎn)介 開(kāi)平方的恢復(fù)算法其實(shí)與除法的恢復(fù)算法十分相似。首先我們假設(shè)X為輸入的操作數(shù)(它應(yīng)該為正數(shù)),而他的平方根可以表示為Qn=0.q1
    發(fā)表于 10-24 13:33

    數(shù)據(jù)濾波算法的具體實(shí)現(xiàn)步驟是怎樣的?

    ? 數(shù)據(jù)濾波算法在電能質(zhì)量在線(xiàn)監(jiān)測(cè)裝置中的具體實(shí)現(xiàn),需圍繞 “ 數(shù)據(jù)采集→預(yù)處理→算法執(zhí)行→參數(shù)適配→效果驗(yàn)證→結(jié)果輸出 ” 的全流程展開(kāi),核心是結(jié)合裝置硬件特性(采樣率、ADC 精度)和干擾類(lèi)型
    的頭像 發(fā)表于 10-10 16:45 ?813次閱讀

    嵌入式從入門(mén)到進(jìn)階,怎么學(xué)?

    ); 驅(qū)動(dòng)開(kāi)發(fā)字符設(shè)備驅(qū)動(dòng)(LED 驅(qū)動(dòng))、設(shè)備樹(shù)(描述硬件)、GPIO 控制(按鍵中斷驅(qū)動(dòng)); 實(shí)踐寫(xiě)一個(gè) 控制 LED 的驅(qū)動(dòng)模塊,實(shí)現(xiàn)用戶(hù)態(tài)控制; 內(nèi)核進(jìn)階內(nèi)核裁剪(瘦身系統(tǒng))、內(nèi)存管理
    發(fā)表于 09-02 09:44

    PPEC電源DIY套件:圖形化算法編程,解鎖電力電子底層算法實(shí)踐

    開(kāi)關(guān)電源拓?fù)涞拇罱ㄅc驗(yàn)證。 2、進(jìn)階調(diào)試與優(yōu)化 ▌電源參數(shù)可調(diào): 通過(guò)PPEC Workbnch 電力電子智能化設(shè)計(jì)平臺(tái)調(diào)節(jié)輸出電壓、電流、開(kāi)關(guān)頻率等,實(shí)現(xiàn)恒壓/恒流模式切換。 ▌底層算法可視化自定義
    發(fā)表于 08-14 11:30

    在STM32F103c8上做DLQR最優(yōu)控制算法的C編程資料

    這是我近期做的一個(gè)項(xiàng)目--基于STM32F103c8的DLQR控制算法的C編程,涉及DLQR最優(yōu)控制算法、嵌入式STM32F103編程、CMSIS-DSP庫(kù)使用。? ??附有完整的程序
    發(fā)表于 07-23 15:30 ?0次下載

    基于FPGA實(shí)現(xiàn)FOC算法之PWM模塊設(shè)計(jì)

    哈嘍,大家好,從今天開(kāi)始正式帶領(lǐng)大家從零到一,在FPGA平臺(tái)上實(shí)現(xiàn)FOC算法,整個(gè)算法的框架如下圖所示,如果大家對(duì)算法的原理不是特別清楚的話(huà),可以先去百度上學(xué)習(xí)一下,本教程著重介紹
    的頭像 發(fā)表于 07-17 15:21 ?3491次閱讀
    基于FPGA<b class='flag-5'>實(shí)現(xiàn)</b>FOC<b class='flag-5'>算法</b>之PWM模塊設(shè)計(jì)

    基于FPGA的壓縮算法加速實(shí)現(xiàn)

    本設(shè)計(jì)中,計(jì)劃實(shí)現(xiàn)對(duì)文件的壓縮及解壓,同時(shí)優(yōu)化壓縮中所涉及的信號(hào)處理和計(jì)算密集型功能,實(shí)現(xiàn)對(duì)其的加速處理。本設(shè)計(jì)的最終目標(biāo)是證明在充分并行化的硬件體系結(jié)構(gòu) FPGA 上實(shí)現(xiàn)算法時(shí),可
    的頭像 發(fā)表于 07-10 11:09 ?2389次閱讀
    基于FPGA的壓縮<b class='flag-5'>算法</b>加速<b class='flag-5'>實(shí)現(xiàn)</b>

    免費(fèi)分享Arduino入門(mén)+進(jìn)階(全套例程+書(shū)籍)

    Arduino是一款開(kāi)源電子原型平臺(tái),由硬件(單片機(jī)開(kāi)發(fā)板)和軟件(編程環(huán)境)組成,旨在讓非專(zhuān)業(yè)用戶(hù)也能輕松入門(mén)電子制作和編程。它的核心思想是簡(jiǎn)化硬件開(kāi)發(fā),通過(guò)直觀(guān)的編程和模塊化設(shè)計(jì),讓用戶(hù)快速
    的頭像 發(fā)表于 05-22 11:40 ?1123次閱讀
    免費(fèi)分享Arduino入門(mén)+<b class='flag-5'>進(jìn)階</b>(全套例程+書(shū)籍)

    RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階7 向系統(tǒng)中添加一個(gè)系統(tǒng)調(diào)用

    RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階7 向系統(tǒng)中添加一個(gè)系統(tǒng)調(diào)用
    的頭像 發(fā)表于 05-21 14:15 ?709次閱讀
    RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)<b class='flag-5'>進(jìn)階</b>篇-<b class='flag-5'>進(jìn)階</b>7 向系統(tǒng)中添加一個(gè)系統(tǒng)調(diào)用

    AlphaEvolve:一款基于Gemini的編程Agent,用于設(shè)計(jì)高級(jí)算法

    構(gòu)思創(chuàng)新理念。如今,Google 進(jìn)一步擴(kuò)展這些能力,將其應(yīng)用于解決數(shù)學(xué)基礎(chǔ)領(lǐng)域和現(xiàn)代計(jì)算中高度復(fù)雜的難題。 AlphaEvolve 是一款由大語(yǔ)言模型驅(qū)動(dòng)的進(jìn)化式編程代理,致力于通用算法的發(fā)現(xiàn)與優(yōu)化。該平臺(tái)將 Gemini 模型的創(chuàng)造性問(wèn)題解決能力與驗(yàn)證答案的自動(dòng)評(píng)估系
    的頭像 發(fā)表于 05-19 11:19 ?1741次閱讀
    AlphaEvolve:一款基于Gemini的<b class='flag-5'>編程</b>Agent,用于設(shè)計(jì)高級(jí)<b class='flag-5'>算法</b>

    Altium Designer PCB設(shè)計(jì)高級(jí)進(jìn)階

    對(duì)PCB設(shè)計(jì)的高級(jí)進(jìn)階的內(nèi)容進(jìn)行相關(guān)的介紹 純分享貼,有需要可以直接下載附件獲取完整資料! (如果內(nèi)容有幫助可以關(guān)注、點(diǎn)贊、評(píng)論支持一下哦~)
    發(fā)表于 04-27 16:40