![[AutoSar]BSW_Com09 CAN driver 模塊FULL(BASIC)CAN、FIFO選擇](http://pic.xiahunao.cn/yaotu/[AutoSar]BSW_Com09 CAN driver 模塊FULL(BASIC)CAN、FIFO選擇)
目錄關鍵詞平臺說明一、縮寫和定義二、Hardware Object、MailBox 定義三、FIFO 和 Dedicated Buffer3.1 使用范圍3.2 在vector 和EB 中的配置四、FULL CAN 和Basic CAN五、Tx BufferTx FIFOTx Queue5.1 Tx Buffer5.2 FIFO buffer5.2.1 Tx FIFO buffer5.2.2 Tx Queue buffer5.3 混合模式Tx Buffer Tx FIFO buffer5.4 混合模式Tx Buffer Tx Queue buffer六 Rx Buffer 和Rx FIFO6.1 Rx Buffer6.2Rx FIFO七、不同報文類型如何選擇FULL CAN或者BASIC CAN7.1 應用報文7.2 網絡管理報文7.3 標定報文7.4 診斷報文八、注意事項關鍵詞嵌入式、C語言、autosar、OS、BSW平臺說明項目ValueOSautosar OSautosar廠商vector EB芯片廠商TI 英飛凌編程語言CC編譯器HighTec (GCC)autosar版本4.3.1回到總目錄一、縮寫和定義abbreviations定義Hardware Object Handle (HOH)HRH 和HTH 的統稱Hardware Receive Handle (HRH)由CAN驅動程序定義和提供。每個HRH通常只代表一個Hardware Object。HRH可用于優化軟件過濾。Hardware Transmit Handle (HTH)由CAN驅動程序定義和提供。每個HTH通常只表示一個或多個Hardware Object這些對象被配置為硬件傳輸緩沖Hardware ObjectCAN硬件對象定義為CAN硬件單元/ CAN控制器的CAN RAM內的PDU緩沖區。可以直接理解為一個Hardware Object 就是一個L-PDUData Length CodeDLCL-PDU中SDU 的長度Physical Channel物理通道表示從CAN控制器到CAN網絡的接口。CAN硬件單元的不同物理通道可以訪問不同的網絡。可以理解為一個網關CAN controller一個can TX OR RX 連接的節點CAN Hardware unit一個或者多個CAN controller 一個或者多個CAN RAM area二、Hardware Object、MailBox 定義我們可以將Hardware Object 理解為存放CAN L-PDU 的buffer里面有且只有一個CAN message 包含 PCI CAN ID DLC SDUdata[AutoSar]BSW_Com02 PDU詳解。而MailBox就是一個 Hardware Object屬于CAN controller 上的物理空間。三、FIFO 和 Dedicated Buffer每個CAN module [AutoSar]BSW_Com08 CAN driver 模塊介紹及參數配置說明 (一)都有屬于自己的 RAM。在MCAL 中被分為了FIFO buffer 和Dedicated Buffer。一般CAN module RAM 如下FIFO 機制如下:3.1 使用范圍Dedicated Buffer 用于FULL CAN Hareware Object與HRH/HTH一一對應FIFO用于 basic can即一個HRH/HTH對應多個HarewareObject。但是Dedicated Buffer FIFO buffer 不能超過芯片硬件的CANTx BufferRx Buffer。3.2 在vector 和EB 中的配置vectorEB四、FULL CAN 和Basic CAN我們可以通過CanHandleType 來配置為FULL CAN 還是 Basic CAN其實就是選擇HOH 的類型。區別1.功能支持Basic CAN有一個或者多個Hardware ObjectL-PDUs 與其對應并且 一個Hardware Object L-PDUs 對應某個范圍內的 CAN message ID。Full CAN只能有一個Hardware Object L-PDUs與其對應并且 一個Hardware Object L-PDUs 對應一個 CAN message ID。2.性能區別Basic CAN采用硬件濾波減少不必要的中斷節約CPU負載。L_PDU 到了上層 canif后是軟件濾波。Full CAN比較占用CPU負載但是如果硬件資源足夠優先選擇FULL CAN。五、Tx BufferTx FIFOTx Queue5.1 Tx Buffer與FULL CAN 的 hardware object 一一對應即為Dedicated Buffer。ID 越小優先級越高。5.2 FIFO bufferFIFO buffer 包括Tx FIFO和Tx Queue5.2.1 Tx FIFO buffer按照“先進先出”的方式來進行發送忽略CAN ID優先級一般為了防止出現優先級反轉現象不建議使用FIFO模式。5.2.2 Tx Queue buffer與Tx buffer 一樣ID越小優先級越高。5.3 混合模式Tx Buffer Tx FIFO buffer1.分別取出Tx Buffer中ID最小的message_A和Tx FIFO buffer 中最老的messag_B。2.判定message_A和messag_B哪個ID小就優先發哪個。5.4 混合模式Tx Buffer Tx Queue buffer1.分別取出Tx Buffer中ID最小的message_A和Tx Queue buffer中ID最小的messag_B。2.判定message_A和messag_B哪個ID小就優先發哪個。六 Rx Buffer 和Rx FIFO6.1 Rx Buffer和Tx Buffer一樣在FULL CAN 中與單個message ID對應。當老的數據沒有處理完新的數據不會被處理。6.2Rx FIFO遵循先進先出的原理一般有兩個FIFO Rx FIFO 0 and Rx FIFO 1 can be configured to hold up to 64 elements each.當FULL 的時候有兩種處理模式**Blocking Mode**如果FIFO滿了只有等到數據處理完成之后才可以放入新的數據一般推薦使用該方式**Overwrite Mode**表示如果FIFO已經滿了新來的數據可以覆蓋掉最老的數據。可能會導致數據丟失。七、不同報文類型如何選擇FULL CAN或者BASIC CAN7.1 應用報文推薦使用FULL CAN因為一般不需要緩存使用最新收到的報文就行。但是要注意 需要發送的報文數量必須 hardware object如果超出則要考慮部分使用 basic can形成 basic full 的組合方式。即 5.3 5.4 章節所述。7.2 網絡管理報文因為網絡管理報文為一個范圍推薦使用basic can。7.3 標定報文因為標定報文為一個固定ID推薦使用full can。7.4 診斷報文推薦使用basic CAN。診斷報文對時序和完整性有嚴格要求不允許丟失因此要用FIFO。八、注意事項1.在hardware object的配置過程中建議先將FULL CAN類型的HOH統一配置在前Basic CAN類型的HOH配置在后以免造成生成的代碼中Maibox使用錯亂。回到總目錄