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

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

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

3天內不再提示

CAPL編程的進階應用 | Checksum算法的實現(xiàn)

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

掃碼添加小助手

加入工程師交流群

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

CRC與Checksum區(qū)別

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

01

兩者存放位置不同

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

02

兩者應用場景不同

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

Checksum的應用場景

對于Checksum而言,它的應用場景有以下三點:

01

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

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

01

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

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

03

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

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

在CAPL中Checksum信號實現(xiàn)

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

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

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

CAPL只能訪問到報文中的信號,無法訪問到報文中的每個字節(jié),要進行Checksum計算,需要根據(jù)信號排布把前七個字節(jié)的真實值重新組合存放在一個byte類型的數(shù)組當中,然后對這個數(shù)組異或運算獲取的結果為該報文中Checksum信號值。

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

總結

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

注:圖片來自于Vector。

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

    關注

    90

    文章

    3716

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【扔物線】Jetpack Compose:從上手到進階再到高手資源課程

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

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

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

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

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

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

    TCORDIC算法,由低延遲CORDIC算法和Taylor展開組成。Taylor展開計算作為CORDIC算法的補充,能夠結合CORDIC算法和Taylor展開方式來計算浮點正余弦函數(shù),
    發(fā)表于 10-29 06:30

    如何使用恢復算法實現(xiàn)開平方運算

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

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

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

    嵌入式從入門到進階,怎么學?

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

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

    開關電源拓撲的搭建與驗證。 2、進階調試與優(yōu)化 ▌電源參數(shù)可調: 通過PPEC Workbnch 電力電子智能化設計平臺調節(jié)輸出電壓、電流、開關頻率等,實現(xiàn)恒壓/恒流模式切換。 ▌底層算法可視化自定義
    發(fā)表于 08-14 11:30

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

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

    基于FPGA實現(xiàn)FOC算法之PWM模塊設計

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

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

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

    免費分享Arduino入門+進階(全套例程+書籍)

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

    RK3568驅動指南|驅動基礎進階篇-進階7 向系統(tǒng)中添加一個系統(tǒng)調用

    RK3568驅動指南|驅動基礎進階篇-進階7 向系統(tǒng)中添加一個系統(tǒng)調用
    的頭像 發(fā)表于 05-21 14:15 ?719次閱讀
    RK3568驅動指南|驅動基礎<b class='flag-5'>進階</b>篇-<b class='flag-5'>進階</b>7 向系統(tǒng)中添加一個系統(tǒng)調用

    AlphaEvolve:一款基于Gemini的編程Agent,用于設計高級算法

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

    Altium Designer PCB設計高級進階

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