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

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

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

Coral3568如何軟硬件過濾can幀及優(yōu)化?

ZLG致遠(yuǎn)電子 ? 2023-12-08 15:52 ? 次閱讀

CAN總線調(diào)試時(shí),根據(jù)數(shù)據(jù)的重要性,接收端可以專注于接收重要消息,提高效率。CAN報(bào)文幀是用一個(gè)標(biāo)識(shí)符或一系列標(biāo)識(shí)符來過濾的??梢允褂肅AN總線軟件和芯片硬件過濾規(guī)則實(shí)現(xiàn)過濾功能。

c02d85f4-959e-11ee-9788-92fbcf53809c.jpg ?軟件過濾

struct can_filter filter[1];/* 規(guī)則:可以接收ID為0x200數(shù)據(jù)幀和錯(cuò)誤幀 */
filter[0].can_mask = CAN_SFF_MASK;filter[0].can_id = 0x200 & CAN_SFF_MASK;filter[0].can_mask |= CAN_EFF_FLAG;
if (setsockopt(s, SOL_CAN_RAW, CAN_RAW_FILTER, &filter, sizeof(filter))){perror("setsockopt failed");exit(EXIT_FAILURE);}

軟件的配置可以在系統(tǒng)中檢查:

root@host:/root# ls /proc/net/can/rcvlist_all rcvlist_err rcvlist_inv reset_statsrcvlist_eff rcvlist_fil rcvlist_sff stats
root@host:/root# cat /proc/net/can/rcvlist_filreceive list 'rx_fil': (any: no entry) (can0: no entry) device can_id can_mask function userdata matches ident can1 200 800007ff 0000000095327ce0 00000000674196b1 0 raw (can2: no entry)

此處rcvlist_*為CAN協(xié)議中的接收器:struct receiver,包含軟件的過濾規(guī)則。
c02d85f4-959e-11ee-9788-92fbcf53809c.jpg ?硬件過濾芯片手冊(cè):c0388e9a-959e-11ee-9788-92fbcf53809c.png

硬件過濾方式在驅(qū)動(dòng):drivers/net/can/rockchip/rockchip_canfd.c 中實(shí)現(xiàn),具體代碼:

static int rockchip_canfd_start(struct net_device *ndev){ ...... rockchip_canfd_write(rcan, CAN_INT_MASK, 0);
/* RECEIVING FILTER, accept all */ rockchip_canfd_write(rcan, CAN_IDCODE, 0); rockchip_canfd_write(rcan, CAN_IDMASK, CAN_RX_FILTER_MASK); rockchip_canfd_write(rcan, CAN_IDCODE0, 0); rockchip_canfd_write(rcan, CAN_IDMASK0, CAN_RX_FILTER_MASK); rockchip_canfd_write(rcan, CAN_IDCODE1, 0); rockchip_canfd_write(rcan, CAN_IDMASK1, CAN_RX_FILTER_MASK); rockchip_canfd_write(rcan, CAN_IDCODE2, 0); rockchip_canfd_write(rcan, CAN_IDMASK2, CAN_RX_FILTER_MASK); rockchip_canfd_write(rcan, CAN_IDCODE3, 0); rockchip_canfd_write(rcan, CAN_IDMASK3, CAN_RX_FILTER_MASK); rockchip_canfd_write(rcan, CAN_IDCODE4, 0); rockchip_canfd_write(rcan, CAN_IDMASK4, CAN_RX_FILTER_MASK); ......}

從以上代碼可以看出,每次執(zhí)行CAN軟件都會(huì)重新配置CAN控制器寄存器不過濾任何數(shù)據(jù)。通過2個(gè)寄存器來實(shí)現(xiàn)硬件過濾:CAN_IDCODEn、CAN_RX_FILTER_MASK
RK3568 CAN控制器有6個(gè)過濾器,其中第一個(gè)過濾器默認(rèn)使能,不受開關(guān)控制,其余過濾器需要使能對(duì)應(yīng)的過濾器。可以在can軟件運(yùn)行時(shí),再去配置硬件過濾方式,如:

root@host:/root# ip link set can1 type can bitrate 1000000root@host:/root# ip link set can1 uproot@host:/root# candump can1 &# 只接收0x123 id的幀,不受開關(guān)控制root@host:/root# io -4 0xfe58003c 0x123root@host:/root# io -4 0xfe580040 0x0# 只接收0x124 id的幀,需開關(guān)控制root@host:/root# io -4 0xfe580120 0x124root@host:/root# io -4 0xfe580124 0x0root@host:/root# io -4 0xfe58011c 0x1

c02d85f4-959e-11ee-9788-92fbcf53809c.jpg ?系統(tǒng)優(yōu)化1. 發(fā)送異常返回

系統(tǒng)CAN默認(rèn)發(fā)送隊(duì)列:txqueuelen:10,有線網(wǎng)口該數(shù)值為1000。更小的數(shù)值,實(shí)時(shí)性更強(qiáng)。

在大量數(shù)據(jù)發(fā)送時(shí),write函數(shù)經(jīng)常異常返回,大部分原因是由于系統(tǒng)發(fā)送隊(duì)列內(nèi)存不足,可以使用以下指令增大發(fā)送隊(duì)列:

root@host:/root# ip link set txqueuelen 500 dev can1

2. 接收數(shù)據(jù)丟失

接收隊(duì)列不足表現(xiàn)在read得到的數(shù)據(jù)不全,大部分情況為數(shù)據(jù)skb已經(jīng)提供到receiver 隊(duì)列中,但是應(yīng)用來不及取出,導(dǎo)致最終占滿所有可支配的內(nèi)存大小,數(shù)據(jù)更新到了隊(duì)列中錯(cuò)誤的位置。

可使用以下指令調(diào)整接收隊(duì)列大?。?/p>

root@host:/root# echo 1000000 > /proc/sys/net/core/rmem_maxroot@host:/root# echo 1000000 > /proc/sys/net/core/rmem_default

Coral-EVa為致遠(yuǎn)電子推出的Coral3568配套評(píng)估底板,同樣功能強(qiáng)大,接口豐富。Coral-EVa評(píng)估底板采用適配器供電,更方便實(shí)驗(yàn)室和研發(fā)辦公室使用,HDMI、DP、USB、CAN、RS485、RS232、TTL UART、3.5mm四線耳麥接口、Micro SD卡槽、SATA、M.2、LVDS LCD、MIPI_DSI、MIPI-CSI、RTC時(shí)鐘、蜂鳴器等功能一應(yīng)俱全。

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

    關(guān)注

    57

    文章

    2694

    瀏覽量

    463149
  • 硬件
    +關(guān)注

    關(guān)注

    11

    文章

    3211

    瀏覽量

    66063
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    4699

    瀏覽量

    87088
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于EDA 的嵌入式系統(tǒng)軟硬件劃分方法

    基于EDA 的嵌入式系統(tǒng)軟硬件劃分方法Hardware/Software Partitioning Method Based on Estimation of Distribution 摘要:針對(duì)嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)中的軟硬件
    發(fā)表于 12-05 16:34 ?26次下載

    基于USB的串行通信軟硬件設(shè)計(jì)

    本文是基于USB的串行通信軟硬件設(shè)計(jì)的詳細(xì)介紹
    發(fā)表于 10-17 17:38 ?127次下載
    基于USB的串行通信<b class='flag-5'>軟硬件</b>設(shè)計(jì)

    USB的串行通信軟硬件設(shè)計(jì)

    USB的串行通信軟硬件設(shè)計(jì)
    發(fā)表于 09-04 10:08 ?14次下載
    USB的串行通信<b class='flag-5'>軟硬件</b>設(shè)計(jì)

    基于FPGA的軟硬件協(xié)同測(cè)試設(shè)計(jì)影響因素分析與設(shè)計(jì)實(shí)現(xiàn)

    軟硬件的開發(fā)階段中,測(cè)試結(jié)果直接關(guān)系到這個(gè)軟硬件能否順利進(jìn)行調(diào)試應(yīng)用。其中,硬件的測(cè)試往往容易受外界因素的影響,如環(huán)境、計(jì)算機(jī)設(shè)備等,可以通過一些仿真軟件來避免外界環(huán)境的影響,但是其測(cè)試速度比較慢
    發(fā)表于 11-18 05:46 ?1878次閱讀

    軟硬件協(xié)同設(shè)計(jì)機(jī)遇與挑戰(zhàn)分析

    軟硬件協(xié)同設(shè)計(jì)是指對(duì)系統(tǒng)中的軟硬件部分使用統(tǒng)一的描述和工具進(jìn)行集成開發(fā),可完成全系統(tǒng)的設(shè)計(jì)驗(yàn)證并跨越軟硬件界面進(jìn)行系統(tǒng)優(yōu)化,軟硬件協(xié)同設(shè)計(jì)是
    發(fā)表于 11-25 03:45 ?669次閱讀

    基于FPGA芯片的軟硬件平臺(tái)的使用

    基于FPGA芯片的軟硬件平臺(tái)的使用
    發(fā)表于 07-01 09:35 ?20次下載

    為什么要從“軟硬件協(xié)同”走向“軟硬件融合”?

    軟件和硬件需要定義好交互的“接口”,通過接口實(shí)現(xiàn)軟硬件的“解耦”。例如,對(duì)CPU來說,軟硬件的接口是指令集架構(gòu)ISA:ISA之下的CPU處理器是硬件,指令集之上的各種程序、數(shù)據(jù)集、文件
    的頭像 發(fā)表于 12-07 14:23 ?2538次閱讀

    【新品發(fā)布】Coral3568金手指核心板

    經(jīng)典,無線旗艦 Coral3568金手指核心板是致遠(yuǎn)電子最新推出的高端核心板,延續(xù)? M3568核心板 (點(diǎn)擊了解詳情) 的強(qiáng)大性能和豐富接口,采用RK3568多核處理器擁有2GHz的四核64位Cortex-A55 CPU,同時(shí)
    的頭像 發(fā)表于 12-12 12:10 ?646次閱讀

    【產(chǎn)品應(yīng)用】如何在Coral3568平臺(tái)快速適配mipi顯示屏?

    電子推出的Coral3568配套評(píng)估底板,同樣功能強(qiáng)大,接口豐富。Coral-EVa評(píng)估底板采用適配器供電,更方便實(shí)驗(yàn)室和研發(fā)辦公室使用,HDMI、DP、USB、CAN、RS485、RS232、TTL
    的頭像 發(fā)表于 01-09 19:40 ?673次閱讀

    Coral3568金手指核心板

    經(jīng)典,無線旗艦 Coral3568金手指核心板是致遠(yuǎn)電子最新推出的高端核心板,延續(xù)? M3568核心板 (點(diǎn)擊了解詳情) 的強(qiáng)大性能和豐富接口,采用RK3568多核處理器擁有2GHz的四核64位Cortex-A55 CPU,同時(shí)
    的頭像 發(fā)表于 06-16 11:45 ?498次閱讀
    <b class='flag-5'>Coral3568</b>金手指核心板

    【新品發(fā)布】Coral3568金手指核心板

    ,無線旗艦Coral3568金手指核心板是致遠(yuǎn)電子最新推出的高端核心板,延續(xù)M3568核心板(點(diǎn)擊了解詳情)的強(qiáng)大性能和豐富接口,采用RK3568多核處理器擁有2
    的頭像 發(fā)表于 12-13 14:59 ?723次閱讀
    【新品發(fā)布】<b class='flag-5'>Coral3568</b>金手指核心板

    【產(chǎn)品應(yīng)用】如何在Coral3568平臺(tái)快速適配mipi顯示屏?

    Coral3568配套評(píng)估底板,同樣功能強(qiáng)大,接口豐富。Coral-EVa評(píng)估底板采用適配器供電,更方便實(shí)驗(yàn)室和研發(fā)辦公室使用,HDMI、DP、USB、CAN、RS
    的頭像 發(fā)表于 01-13 09:24 ?942次閱讀
    【產(chǎn)品應(yīng)用】如何在<b class='flag-5'>Coral3568</b>平臺(tái)快速適配mipi顯示屏?

    Coral3568金手指核心板

    ,無線旗艦Coral3568金手指核心板是致遠(yuǎn)電子最新推出的高端核心板,延續(xù)M3568核心板(點(diǎn)擊了解詳情)的強(qiáng)大性能和豐富接口,采用RK3568多核處理器擁有2
    的頭像 發(fā)表于 06-21 17:47 ?492次閱讀
    <b class='flag-5'>Coral3568</b>金手指核心板

    基于軟件模擬的SPI端口CAN控制卡的軟硬件設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于軟件模擬的SPI端口CAN控制卡的軟硬件設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-13 11:38 ?0次下載
    基于軟件模擬的SPI端口<b class='flag-5'>CAN</b>控制卡的<b class='flag-5'>軟硬件</b>設(shè)計(jì)

    軟硬件融合的概念和內(nèi)涵

    跟很多朋友交流,當(dāng)提到軟硬件融合的時(shí)候,他們會(huì)這么說:“軟硬件融合,難道不是顯而易見嗎?我感覺在二三十年前就已經(jīng)有這個(gè)概念了?!痹谒麄兊南敕ɡ?,其實(shí):軟硬件融合等同于軟硬件協(xié)同,甚至等
    的頭像 發(fā)表于 10-17 14:36 ?1358次閱讀
    <b class='flag-5'>軟硬件</b>融合的概念和內(nèi)涵