在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

CAPL編程的進階應用 | Checksum算法的實現

北匯信息POLELINK ? 2022-10-11 09:29 ? 次閱讀

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

CRC與Checksum區別

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

01

兩者存放位置不同

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

02

兩者應用場景不同

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

Checksum的應用場景

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

01

確保數據正確打包

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

01

實現數據加密

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

03

提高數據的可信度

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

在CAPL中Checksum信號實現

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

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

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

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

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

總結

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

注:圖片來自于Vector。

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

    關注

    88

    文章

    3628

    瀏覽量

    93817
收藏 人收藏

    評論

    相關推薦

    Vector推出一套基于Visual Studio Code的免費插件

    在汽車軟件開發過程中,除使用MATLAB開發算法外,專業開發者也偏向使用Visual Studio Code來開發代碼,其中軟件測試用例的編寫是確保系統穩定性和可靠性的重要環節。傳統的CAPL腳本
    的頭像 發表于 11-24 14:15 ?462次閱讀
    Vector推出一套基于Visual Studio Code的免費插件

    【「從算法到電路—數字芯片算法的電路實現」閱讀體驗】+內容簡介

    內容簡介這是一本深入解讀基礎算法及其電路設計,以打通算法研發到數字IC設計的實現屏障,以及指導芯片設計工程師從底層掌握復雜電路設計與優化方法為目標的專業技術書。任何芯片(如WiFi芯片、5G芯片
    發表于 11-21 17:14

    【「從算法到電路—數字芯片算法的電路實現」閱讀體驗】+介紹基礎硬件算法模塊

    作為嵌入式開發者往往比較關注硬件和軟件的協調。本書介紹了除法器,信號發生器,濾波器,分頻器等基本算法的電路實現,雖然都是基礎內容,但是也是最常用到的基本模塊。 隨著逆全球化趨勢的出現,過去的研發
    發表于 11-21 17:05

    【「從算法到電路—數字芯片算法的電路實現」閱讀體驗】+一本介紹基礎硬件算法模塊實現的好書

    作為嵌入式開發者往往比較關注硬件和軟件的協調。本書介紹了除法器,信號發生器,濾波器,分頻器等基本算法的電路實現,雖然都是基礎內容,但是也是最常用到的基本模塊,本書的內容比較對本人胃口。 我們先來
    發表于 11-20 13:42

    名單公布!【書籍評測活動NO.46】從算法到電路 | 數字芯片算法的電路實現

    :elecfans123)領取書籍進行評測,如在5個工作日內未聯系,視為放棄本次試用評測資格! 《從算法到電路——數字芯片算法的電路實現》 是一本深入解讀基礎算法及其電路設計,以打通
    發表于 10-09 13:43

    C加密算法實現

    電子發燒友網站提供《C加密算法實現.pdf》資料免費下載
    發表于 09-20 11:10 ?1次下載
    C加密<b class='flag-5'>算法</b>的<b class='flag-5'>實現</b>

    TI電量計Checksum功能的介紹

    電子發燒友網站提供《TI電量計Checksum功能的介紹.pdf》資料免費下載
    發表于 09-05 11:19 ?0次下載
    TI電量計<b class='flag-5'>Checksum</b>功能的介紹

    神經網絡的基本原理及Python編程實現

    神經網絡作為深度學習算法的基本構建模塊,模擬了人腦的行為,通過互相連接的節點(也稱為“神經元”)實現對輸入數據的處理、模式識別和結果預測等功能。本文將深入探討神經網絡的基本原理,并結合Python編程
    的頭像 發表于 07-03 16:11 ?700次閱讀

    FPGA能實現什么樣的算法

    FPGA功能如此強大,請問用FPGA能實現或者比較適合實現什么樣的算法
    發表于 05-26 20:18

    UM0560手冊上說明發送數據時的checksum XOR (N,[N+1 data bytes])是什么意思?

    想用STM8S自帶的bootloader 通過CAN升級軟件,有誰知道UM0560手冊上說明發送數據時的checksum XOR (N,[N+1 data bytes])是什么意思?如果發送128個數據這個checksum=XOR(127^128),還是最后2個數據異或?
    發表于 04-07 07:40

    CAPL腳本使用介紹

    CAPL中也有類似于C語言中的回調函數的機制,如檢測報文周期和錯誤幀的函數中就可以使用,當周期超界或者總線出現錯誤幀就會自動調用回調函數執行一些操作
    的頭像 發表于 04-01 11:23 ?2188次閱讀

    使用ST-LINK Utility進行編程勾選Full Flash Memory Checksum和設置讀出保護后LSE不起振的原因?

    使用ST-LINK Utility對F105RB進行編程,在編程中勾選了Full Flash Memory Checksum,最后操作OP字節設置讀出保護,發現LSE晶振不起振了,而沒有勾選的全部
    發表于 03-12 06:35

    RK3568驅動指南|驅動基礎進階篇-進階5 自定義實現insmod命令實驗

    RK3568驅動指南|驅動基礎進階篇-進階5 自定義實現insmod命令實驗
    的頭像 發表于 02-20 14:10 ?720次閱讀
    RK3568驅動指南|驅動基礎<b class='flag-5'>進階</b>篇-<b class='flag-5'>進階</b>5 自定義<b class='flag-5'>實現</b>insmod命令實驗

    求助,關于PSOC4模擬EEPROM的checksum問題求解

    咨詢個問題,當我們用PSOC4的Em_EEPROM組件時,工程生成的Hex1文件的checksum是不包含了EEPROM的部分吧(通過Custom Linker Script調用cm0gcc.ld
    發表于 02-02 08:48

    RK3568驅動指南|驅動基礎進階篇-進階8 內核運行ko文件總結

    RK3568驅動指南|驅動基礎進階篇-進階8 內核運行ko文件總結
    的頭像 發表于 01-31 14:58 ?1176次閱讀
    RK3568驅動指南|驅動基礎<b class='flag-5'>進階</b>篇-<b class='flag-5'>進階</b>8 內核運行ko文件總結
    主站蜘蛛池模板: 欧美性色视频| 国产亚洲综合视频| 国语对白一区二区三区| 黄网免费| 婷婷综合网站| 国模私拍一区二区| 人人入人人爱| 天堂福利视频在线观看| 神马影视午夜| www.妖精视频| 狠狠噜天天噜日日噜| 日本韩国做暖暖小视频| 人人人人澡| 国产亚洲欧美视频| 精品国产影院| 两性色午夜视频免费国产| 四虎永久在线精品2022| 中日韩毛片| 日本一区二区不卡视频| 888米奇在线视频四色| 91久久福利国产成人精品| 男人资源站| 手机在线看| 午夜精品久久久久久99热| 欧日韩视频777888| 日日做日日摸夜夜爽| 好吊妞视频988在线播放| 91男女视频| 亚洲一区二区免费视频| 777黄色片| 在线成人欧美| 亚洲欧美日韩另类精品一区二区三区| 中文字幕卡二和卡三的视频| 天堂最新版资源www在线| 欧美xxxxx性视频| 免费一级大片| 就要爱综合| 午夜在线影视| 天天操天天干天天插| 欧美成人免费草草影院| 91大神在线精品网址|