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